PyObjC 7.3 released

With WWDC and beta of a new major release of macOS approaching fast it is high time to push out a new release for PyObjC. PyObjC 7.3 is primarily a bugfix release, with one minor feature.

I expect this to be the last release for PyObjC 7.x and will start working on PyObjC 8 soon.

  • issue 356: Explicitly error out when building for unsupported architectures

    “python setup.py build” will now fail with a clear error when trying to build PyObjC for a CPU architecture that is no longer supported (such as 32-bit Intel)

  • issue 319: Use memset instead of bzero in C code to clear memory

    Based on a PR by GitHub user stbdang.

  • issue 348: Fix platform version guard for using protocols in MetalPerformanceShaders bindings

  • issue 344: Fix test for CFMessagePortCreateLocal

    The tests didn’t actually test calling the callback function for CFMessagePortCreateLocal.

  • issue 349: Change calls to htonl in pyobjc-core to avoid compiler warning

    The original code had a 32-bit assumption (using ‘long’ to represent a 32-bit value), and that causes problems for some users build from source.

  • issue 315: Fix binding for SecAddSharedWebCredential (Security framework)

    Trying to use this function will no longer crash Python.

  • issue 357: Calling Metal.MTLCopyAllDevices() no longer crashes

    The reference count of the result of this function was handled incorrect, causing access to an already deallocated value when the Python reference was garbage collected.

  • issue 260: Add manual bindings for AXValueCreate and AXValueGetValue in ApplicationServices

    Calling these crashed in previous versions.

  • issue 320, 324: Fix the type encoding for a number of CoreFoundation types in the Security bindings

  • issue 336: Add core support for “final” classes

    It is now possible to mark Objective-C classes as final, that is to disable subclassing for such classes.

    This is primarily meant to be used in framework bindings for matching Objective-C semantics.

The “final” feature adds two new APIs:

  1. A keyword argument “final” when defining a new class

        class MyClass (NSObject, final=True):
            pass
    
  2. An read-write attribute __objc_final__ on all subclasses of NSObject.

Note that this is a separate concept from typing.final.

Ronald Oussoren @ronaldoussoren