python3.13 support + docker
Python 3.13 had been released. There is no build for such version of the docker images
@thresheek Would it be possible for SysEng to bump our Python language versions without a Unit release, or would that be a bit of a pain? 🙏
I think we can do the following:
- Bump Python version to 3.13+3.12 in the
masterbranch - Backport those commits to the
packagingbranch - Do a new PR to Docker Library to pick up those changes.
A couple of things that are potentially breaking someone's workflows, as we typically publish two latest language runtime versions:
- we'd drop 3.11 from the library definition (published images like
unit:1.33.0-python3.11andunit:python3.11will stay as is, albeit not easily discoverable) - we'd move
unit:python3andunit:pythontags to 3.13 instead of a current 3.12
One thing to consider in general 3.13 release. Default Python 3.13 has similar behaviour like 3.12 however there is new 3.13t version that has changes to GIL (threading mechanism). If this version would be supported by Unit it should be tested. However it's considered as an experimental feature.
@thresheek Would it be possible to avoid the potential of breakage by instead:
- Keeping 3.11 on the
packagingbranch (so Docker Library publishes 3.11, 3.12, and 3.13) - Keeping
unit:pythonat its current 3.12, so it only revs when we do our next full Unit release?
@imkebe I'm super excited about the GIL removal, but we'll probably not post images to Docker Hub while it's still experimental. I do encourage you to try it locally, though, and report back!
@callahad That is what I wanted to say - GIL is a experimental build so don't bother to include it in a Unit supported at the moment. That will come with python 3.14
The current implementation of the "library" definition sorts the versions and assigns non-versioned variants to whatever the latest is.
We can cheat a bit and provide the manually edited file, of course, however it's not very nice from etical POV since we also publish "this file is generated via ..." line in there...
Fair enough. I'm fine with splitting the difference: publish 3.11, 3.12, and 3.13; and allow unit:python to point to 3.13.
If you're implicitly pointing at the latest version of Python, you get the latest version of Python.
Python 3.13 is now supported via Docker.