PyObjC 6.0 released

I’ve uploaded PyObjC 6.0 to PyPI. This is a major feature release, the two most important changes are the addition of support for frameworks and APIs introduced in macOS 10.15 (Catalina), and the removal of support for Python 2.7.

PyPI has wheels for 64-bit builds of Python 3.6, 3.7 and 3.8. The source should still work with 32-bit builds of Python, but those are no longer tested.

At the time of writing the source code is still in the branch “pyobjc-6-branch”.

The full list of changes:

  • Removed Python 2 support from the C extension in pyobjc-core

  • Reformatted code in pyobjc-core:

    • Use “black” for Python code
    • Use “clang-format” for Objective-C code

    As a side-effect of this all usage of “NS_DURING” and “PyObjC_DURING” has been replaced by the expansion of those macros, mostly because “clang-format” doesn’t understand these kinds of blocks.

    Replacing PyObjC_DURING by its expansion also reduces the knowledge needed to understand what’s going on w.r.t. the Python GIL.

    The macro PyObjC_DURING, and its siblings, have been removed as well.

  • Updated bindings for macOS 10.15 (Xcode 11.0)

  • The userspace driver frameworks introduced in macOS 10.15 (DriverKit and related frameworks) will not be exposed through PyObjC. Please let me know if you have a good use case for using these frameworks with Python.

  • Add new framework wrappers for all other new frameworks in macOS 10.15:

    • AuthenticationServices
    • CoreHaptics
    • CoreMotion
    • DeviceCheck
    • ExecutionPolicy
    • FileProvider
    • FileProviderUI
    • LinkPresentation
    • OSLog
    • PencilKit
    • PushKit
    • QuickLookThumbnailing
    • Speech
    • SoundAnalysis
    • SystemExtensions
  • Add new framework wrappers for a number of older frameworks:

    • MetalKit (new in macOS 10.11)
  • Issue #271: Fix crash when creating NSData objects on macOS 10.15

P.S. This release is later than I’d like for various reasons, but mostly because I’ve spent less time at my computer the last couple of weeks.

Ronald Oussoren @ronaldoussoren