Skip to content

Raise Minimum Required Version of Python #2634

@ITProKyle

Description

@ITProKyle

Overview

With the next major release of Runway, I would like to raise the minimum required version of Python to align with Runway's dependencies, Python's release/EoL schedule, and enable our developers to innovate with the newest features of Python.

Context

Status of Python versions

Currently Runway's minimum required version of Python is 3.9.
Python 3.9 enters it's end of life 2025-10.

Even though 3.9 is still ~1 year from end of life, it is already being dropped from some of Runway's dependencies.
Although it is only used to generate documentation, Sphinx is the most impactful of these.

Python 3.9 also lacks numerous improvements to type annotations.
The gaps are reduced in size by typing_extensions, there are still syntax shortcomings that cannot be overcome.

Goals

  • Utilize the latest features of Python to improve Runway's codebase.
  • Provide great type annotations in Runway's codebase.

Non-Goals

  • Follow macOS system Python as the minimum required version.
  • Follow Linux system or package installable Python as the minimum required version.
  • Use the absolute latest version of Python (3.13) as the minimum required version.

Proposed Solution

Previous discussions among Runway's maintainers landed us on 3.10 as the version to move forward with.
However, I would like to reopen this discussion as I was recently reminded of some of the drawbacks when attempting to lower the minimum required version of another package I maintain from 3.11 to 3.10 so that it would be usable here.

I would like to propose raising the minimum required version of Python to 3.11.

What's new in Python 3.11

Some of the key changes in 3.11 that would impact Runway's codebase include:

Alternative Solutions

3.10

What's new in Python 3.10

Some of the key changes in 3.10 that would impact Runway's codebase include:

Note that any of the proposed minimum Python versions benefit from these changes with this being the lowest of the three.

3.12

What's new in Python 3.12

I am not going to go into detail here because, while I feel using 3.12 > 3.11 is better it may overly limit Runway's user base due to it still being fairly new.

Impact

  • users of Runway may need to install a newer version of Python
    • pyenv provides an easy way to do this
    • for those using older versions of Python, dependency management tools (e.g. pip and poetry) will not allow the installation of the newest major release of Runway even if explicitly requested

Metadata

Metadata

Assignees

Labels

featureRequest or pull request for a new featurepriority:highHigh priority issue or pull requeststatus:acceptedIssue or pull request accepted by maintainer

Projects

Status

To do

Relationships

None yet

Development

No branches or pull requests

Issue actions