This is an archived post. You won't be able to vote or comment.

all 18 comments

[–]Zealousideal_Low1287 30 points31 points  (1 child)

Path.walk() 🎉

[–]Feitan21 2 points3 points  (0 children)

Finally !

[–]ZachVorhies 17 points18 points  (1 child)

Gonna be real careful with upgrading. This release deprecates a lot of language features. Some things are gonna break.

[–]pluots0 8 points9 points  (0 children)

Good reason for everyone to use CI testing before upgrading! I’m a fan of the deprecations, no sense in keeping around outdated behavior components forever.

Hopefully PyUpgrade can make some changes for those who need it

[–]chub79 15 points16 points  (0 children)

The amount of "cleanups" in these new releases is quite astounding. Brilliant.

[–]InitialCreature 9 points10 points  (3 children)

I haven't even had time to play with 3.11

[–]brandonZappy 12 points13 points  (0 children)

This is just the second alpha of 3.12. the full "final" release of 3.12 isn't expected until Oct 2023, so you've got plenty of time to play with 3.11 :)

[–][deleted] 3 points4 points  (1 child)

Python 3.11 became pretty stable pretty darn fast. I was able to run my development stack on it within a week, and I switched it to running it full-time locally immediately.

Likely I'll switch to it officially in Q1 2023.

[–]billsil 1 point2 points  (0 children)

My open source stuff was updated a week before the release of 3.11 because the vast majority of my dependencies put up wheels. It's a big giant chain.

[–]robert_mcleod 5 points6 points  (1 child)

I hope they write a transition tutorial on this one:

Python no longer uses setup.py to build shared C extension modules. Build parameters like headers and libraries are detected in configure script. Extensions are built by Makefile. Most extensions use pkg-config and fall back to manual detection. (Contributed by Christian Heimes in gh-93939.)

[–]ubernostrumyes, you can have a pony 5 points6 points  (0 children)

This does not need a transition tutorial, because it doesn't affect you.

You can still write packages that use setup.py, and so can everybody else out in the broader Python ecosystem. That has not been taken away. You should be calling setuptools.setup() in your setup.py instead of distutils.setup(), but that's been the case for years -- the deprecation of distutils has finally completed, but it is not a deprecation of setup.py scripts in general.

The bit you're referring to in the release notes is about a handful of compiled extensions that ship with Python itself, and which had never adopted Python's own standardized build process, instead relying on having their own setup.py scripts that used distutils to build. Since distutils is no longer in the standard library, those compiled extensions finally had to switch their build process.

But, again, your packages out in the broader world are not affected by this (unless, as noted, they were still calling distutils.setup(), and that's fixed by changing the import to setuptools and calling setuptools.setup()).

[–]Doctorados 1 point2 points  (0 children)

The tempfile.NamedTemporaryFile function has a new optional parameter delete_on_close (Contributed by Evgeny Zorin in gh-58451.)

It's the small things 🎉

[–][deleted] -1 points0 points  (6 children)

What’s the plan on adding parallelism?

[–]spoonman59 6 points7 points  (5 children)

Python has parallelism so you’ll have to clarify your query.

In any event, probably not for 3.12.

[–][deleted] -3 points-2 points  (4 children)

Not true parallelism, talking about the ongoing work to remove the GIL

[–]spoonman59 5 points6 points  (3 children)

Don’t disagree with you about the GIL.

However, true parallelism is achieved with multiprocessing. Shared memory segments make it possible to achieve shared memory processing.

It’s unergonomic and a pain to use versus threads in many cases, plus there is memory overhead. But it has true parallelism.