I’m happy to announce the 11.0 release of PyObjC, slightly delayed from the normal major release in October.
This release has two major features:
Support for the macOS 15.2 SDK, including new bindings for the frameworks MediaExtension and DeviceDiscoveryExtension
Experimental support for GIL-less operation in the free-threaded build of Python 3.13
The latter feature is an important reason for the delay: Supporting GIL-less operation required reworking parts of the internals of PyObjC, both to rely on other locks than the GIL and to avoid CPython APIs that are known to be problematic when the GIL isn’t present (“borrowed references” for anyone familiar with the CPython API).
Free-threaded support is experimental at this point in time and has seen only limited testing for multi-threading. I’ve also focussed on getting the basics right, and have not worked at optimizing free-threading support. Expect improvements in future releases.
With PyObjC 11 I’m dropping support for Python 3.8, given that that’s gone out of support by the CPython team.
Finally, there’s a number of bug fixes and smaller features mentioned in the changelog.