On Jul 29, 2018, at 17:36, Victor Stinner <vstinner@redhat.com> wrote:
Supporting 2 Python versions, like 3.6 and 3.7, means to double the size of the repository, but also double the tests for tha QA team (each time a new package version is released, usually for bugfixes). What if you want to support 3 Python versions in parallel, if not more?
The Debian (and Ubuntu of course) ecosystem supports this, although given how distro releases line up with Python releases, it doesn’t happen too often. OTOH, I’ve been dormant in Debuntu for over a year.
This dual support serves a good purpose of making it easier for users and upstream to port to the new versions of Python, if and when that’s necessary. But it does require several archive-wide steps during the process. (Let’s only care about Python 3 obviously :).
Enable the new version of Python (i.e. “supported” but not “default”). At this point, many architecture independent libraries will Just Work since we usually do a pretty good job of keeping Python source code compatible between releases. Not always, though, e.g. when <ahem> deprecation warnings for new reserved words aren’t surfaced by default. This is why PEP 3147 was written.
Rebuild all architecture dependent libraries in the archive. This increases the size of all distro packages containing shared libraries since we have to include .so’s for e.g. both Python 3.6 and 3.7. this is why PEP 3149 was written.
Switch the default Python to the new version. This doesn’t require recompilations or changes to most Python packages.
Remove the old Python version. Again, we have to rebuild architecture dependent packages, but this reduces the size of distro packages since we’re removing .so files.
Sometimes this transition happens within the span of a single distro release, and other times (IIRC) it spans releases.
... in the meanwhile, macOS is stuck at Python 2.7 :-) macOS users: how much do like Python 2.7 in 2018?
Sadly, there are so many things wrong with the way macOS distributes its /usr/bin/python, we should be actively discouraging people from using it. Most people I know use distros like Homebrew or just compile Python from source.
Another issue is the Python binary compiled in debug mode, known as python-dbg (or python-debug or python-debuginfo).
Yep, from a distro perspective, that’s painful for sure.
Cheers, -Barry