Default python

There probably is a good reason for it, but I am drawing blank trying to understand it.

Basically, why there's an effort to set python3.13 as a default version (https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=292105) when there's already 3.15.0 released? Why not skip 3.13 and go to 3.14 or even 3.15 as since the effort takes time, by the time it is finished 3.15 will already have several releases. 3.13 has already stopped providing bugfixes, so we setting up default version that it is already in a maintenance mode.

I understand there were complications with 3.11 -> 3.12 which added a lot of delay to get 3.12, but why not catch up now and skip a version or two?
 
Ok that's a valid concern regarding 3.15 especially since it was released few days ago, but what about 3.14?

I think all packages would be updated by now to work with 3.14, the 3.14.0 was released a year ago so by now all maintained packages should be updated.
 
Ok that's a valid concern regarding 3.15 especially since it was released few days ago, but what about 3.14?

I think all packages would be updated by now to work with 3.14, the 3.14.0 was released a year ago so by now all maintained packages should be updated.
I don't think they are. But I'm not on the Python team.
 
I found a site that seems to be tracking compatibility: http://pyreadiness.org/3.14/

Note that this is not accurate and only goes by the metadata specified in package, but I went through the top 120 and some on top 120-240 and the ones that are not marked as supported are either python independent or actually do have wheels even for version 3.15, the only exception I found was psexec which had wheel for 3.14.
 
5541 wow that's a lot. But going through them will be the same effort whether it is 3.13 or 3.14. Most packages are plain python code which should work with any python version without modification. And python community is generally very quick to update them (most of the time it is just generating wheels for new version if the package has some binaries).
Python 3.14 was released a year ago and has 11 months left until it stops being maintained (except for security bugfixes only). The python 3.13 that work is currently being done already stop receiving bugfixes. If there are packages that no longer work with it, they are not maintained and probably should be removed from ports too.
I also remember that in the past FreeBSD ports' default version was closer to latest version than right now.
 
It would be worth reading loong discussion at PR 285957 thoroughly.
How long it takes even for single minor version upgrade and how much efforts were required can be seen there. Larger step would require more.

PYTHON PROJECT SHOULD STOP CHANGING BUT ADDING SOMETHING NEW TO KEEP AND ASSURE 100% BACKWARD COMPATIBILITIES!
If this is achieved, simple switch of branch should ALWAYS 100% work, sanely.
 
Python had a lot of issues when doing migration from 2.x to 3.x they gave 12 years to convert and no one did anything until the final year when 2.7 would be deprecated. That was lesson learned for them that this approach didn't work so they said they won't do it anymore. And you can see that for example GIL removal isn't done in Python 4.x it's being introduced right now.
Though as I recall the python 3.12 issue was purely FreeBSD ports getting itself owned. No one else seemed to have this issue. It was because ports thought it was a good idea to separate built-in packages into separate ports. Then when those were deprecated and removed suddenly it was a problem how to handle that without breaking older versions.
 
Forced rewrites as of backward incompatibilities are too much of pains for codes used decades. 😅
Of course, "written and used once and disposed" scripts are different story. Would be OK to choose "the best fit language available at the moment".

Well, the really bad aspect is that Python is also a dynamically typed language. A lot of errors, especially errors from changed APIs, are caught by a good static type system. Not here, it'll compile all kinds of nonsense happily.
 
Back
Top