Log Message: py-pyobjc: updated to 11.0 Version 11.0 The major change in this release is experimental support for free-threading (PEP \ 703) which was introduced as an experimental feature in Python 3.13. This required fairly significant changes in the core of PyObjC to change C \ Python API use and PyObjC internal APIs (mostly related to the use of borrowed \ references). Dropped support for Python 3.8. PyObjC 11 supports Python 3.9 and later. Updated metadata for the macOS 15.2 SDK, including bindings for the following \ frameworks: MediaExtension DeviceDiscoveryExtension Added minimal bindings to the Carbon framework. At this time only some functions and constants related to hotkeys are available. \ Please file an issue if you have a usecase for other APIs. Struct wrappers now support a number of functions from copy: copy.replace() (new \ in Python 3.13), copy.copy() and copy.deepcopy(). The __pyobjc_copy__ method has been removed from struct wrappers. This was never \ a public API. Use copy.deepcopy() instead. objc.FSRef.from_path`() now supports os.PathLike values as its arguments (as \ well as strings). Experimental support for the free-threading mode introduced in Python 3.13. The core bridge and framework bindings claim compatibility with free-threading \ as introduced as an experimental feature in Python 3.13. The support in PyObjC is also an experimental feature: I’ve reviewed code for \ free-threading issues and adjusted it where needed, but the code has seen only \ light testing w.r.t. concurrency. Some functionality that’s explicitly not thread-safe: Defining an Objective-C class with the same name in multiple threads concurrently. Splitting calls to alloc and init and calling init multiple times concurrently. E.g.: import threading from Cocoa import NSObject v = NSObject.alloc() t_list = [] for _ in range(2): t = threading.Thread(target=lambda: v.init()) t_list.append(t) t.start() for t in t_list: t.join() The internal mapping from Python values to their active Objective-C proxy value \ now uses weak references. This should not affect user code, other than being a \ bit more efficient. The internal interfaces for updating this mapping, and the reverse mapping from \ Objective-C values to their active Python proxy was changed to remove a small \ race condition. This was required for free threading support, but could in \ theory also bit hit when using the GIL. The data structure for mapping Python values to their Objective-C proxy has been \ rewritten to support free threading. This also simplifies the code, and should \ be small performance improvement for the regular build of Python. The TypeError raised when passing a non-sequence value to some APIs implemented \ in C now has a __cause__ with more detailed information. This is a side effect of dropping the use of PySequence_Fast in the \ implementation of PyObjC. Removed objc.options._nscoding_version, a private option that is no longer used. Changing the __block_signature__ of a block value when the current value of the \ signature is not None is no longer possible. Please file an issue if you have a use case for changing the signature of a block. Fix compatibility with Python 3.14 (alpha 3) Removed private function objc._sizeOfType because its unused. Fix memory leak when using Python callables as blocks. The memory leak also resulted in leaking a reference to the callable (and hence \ anything kept alive by that reference). The generic __new__ implementation now works as intended when registering \ methods that other than init... methods. Dropped ‘%n’ support in handling printf-format strings for variadic \ functions and methods. Two reasons for that: 1) supporting this properly should return the value \ writing to the %n location (requiring significant changes) and 2) Apple’s \ libraries require using static strings for ‘%n’ to work (at least on some \ platforms and versions of the OS) Fix manual bindings for AVAudioPCMBuffer methods for getting channel data \ (floatChannelData, int16ChannelData and int32ChannelData) fix broken bindings for CGWindowListCreateImageFromArray. The private __is_magic attribute on objc.objc_object has been renamed to \ __pyobjc_magic_coookie__. Various fixes to edge case behaviour that were found while improving test coverage.