🐍🧪 Python 3.13.0 is due out in October 2024 and work is underway to implement experimental support for PEP 703 "Making the Global Interpreter Lock Optional in CPython".
As the Steering Council noted in their acceptance of the PEP, to succeed it's important to have community support.
I wrote a little guide on how you can help test out the beta in your project, and help us find bugs in CPython:
The macOS installer joins the Windows installer in adding an option to install free-threaded binaries as python3.13t, making it even easier to try it out.
I have an open PR to #CPython, adding support for dict views (those you get from e.g. dict.items(), plus ABC mapping views) to pprint.
Problem is, this is an old PR that has seen a lot of churn as I better grokked the original code and ways to simplify my own. It has taken a fair bit of review time by core devs. So I'd like to have more eyes checking it before I ask for another core dev review.
2024-03-19, ogłoszono dwie dziury bezpieczeństwa na liście mailingowej, poświęconej problemom bezpieczeństwa Pythona: "quoted zip-bomb" i "TemporaryDirectory symlink dereference during cleanup". Obie miały dotykać wszystkich aktualnych wydań CPythona.
Tego samego dnia, wydano nowe wersje Pythona 3.10, 3.9 i 3.8. Co ciekawe, nie było wydań dla 3.11 i 3.12.
2024-04-02, w końcu otagowano Pythona 3.11.9. Początkowo, podpis dla archiwum się nie sprawdzał. Dziś już jest OK, ale wydania dalej nie ogłoszono. Co jednak najbardziej mnie zaskoczyło, to brak poprawek dla dwóch ogłoszonych wcześniej problemów! Czyżby nieudane wydanie?
Przyjrzałem się sprawie bliżej… i okazało się, że oba problemy były już poprawione w poprzednim wydaniu 3.11.8 (i 3.12.2), więc ogłoszenie było błędne. Wzdych.
With 13 patches, the list is now maybe(!!) compatible with PEP 703 implementation.
I annotated "maybe" because we can not be sure until the GIL is truly disabled.
Now that @github Actions supports macOS M1 runners, we've added them to the CPython CI, and have finally promoted aarch64-apple-darwin to the top support tier!
This means CI failures block releases, cannot be merged to main or must be fixed or reverted immediately, and the whole core dev team is responsible rather than one or two.
https://github.com/python/cpython/issues/111968
There is a concept of object pool for object allocation in CPython, aka free list.
The free list currently exists per interpreter with default build CPython.
For PEP 703, it should exist per thread to avoid race conditions and lock competition.
Now CPython supports both per-thread and per-interpreter freelist in a seamless way without touching the runtime implementation.
Discussing design with Sam Gross and Eric Snow was quite an exciting experience.
Ever wonder what CPython is made of? 🤔 SBOMs are like a list of ingredients for software which lets Python users track vulnerabilities in the runtime and its dependencies with confidence instead of guesswork.
Not only has Brandt Bucher opened a PR to add #JIT compiling to #CPython, he's done it via poetry!
'Twas the night before Christmas, when all through the code
Not a core dev was merging, not even Guido;
The CI was spun on the PRs with care
In hopes that green check-markings soon would be there;
The buildbots were nestled all snug under desks,
Even PPC64 AIX;
Doc-writers, triage team, the Council of Steering,
Had just stashed every change and stopped engineering,
This weekend I landed a CPython PR that I'm very happy about (with the help of @ambv and Dennis Sweeney):
I switched the storage of all the names of Unicode code points in the unicodedata modules to using a different data structure, a "directed acyclic word graph". This makes the compiled module 440 KiB smaller. I did the same thing in PyPy a year ago, quite happy that it now made it to CPython too.
CPython Object System Internals: Understanding the Role of PyObject (codeconfessions.substack.com)
Understand how objects are implemented in CPython and how CPython emulates Inheritance and Polymorphism in C using struct embedding