- CPython 3.9 upgraded from 3.9.11 to 3.9.12
- CPython 3.10 upgraded from 3.10.3 to 3.10.4
- setuptools upgraded from 60.9.3 to 62.1.0.
- Python 3.8 distributions on macOS no longer use most weakly linked symbols. Previously, CPython weakly linked some symbols only present on macOS 10.10+. (Our x86-64 builds target macOS 10.9.) However, CPython doesn't have proper runtime guards for using the weakly linked symbols until 3.9. If Python attempted to resolve a weakly linked symbol (e.g. by attempting to call a function), the program could crash. This should no longer occur. We believe Python 3.9 and 3.10 correctly handle weakly linked symbols. What this means in practice is our Python 3.8 x86-64 builds should no longer crash when run on older macOS versions. See #122 for more context.
- LLVM/Clang upgraded from 13.0.1 to 14.0.3.
- CPython license file was synchronized from the latest version of 3.10.
- Distributions for Apple targets no longer link against a custom zlib and instead always use the system zlib library. Before, there were multiple copies of zlib being used by these distributions.
- musl libc upgraded from 1.2.2 to 1.2.3.
- SQLite upgraded from 3.38.1 to 3.38.3.
- zlib upgraded from 1.2.11 to 1.2.12.
- Linux and macOS distributions no longer export symbols from dependencies. Previously,
libpython
would export thousands of symbols belonging to dependencies like SQLite and OpenSSL. Another binary loaded into the process could potentially resolve these symbols to the copy inlibpython
. After, these symbols should not be visible/bindable outsidelibpython
and other binaries that use them directly. See #114 for more context. - The Rust code for validating Python distributions has been significantly overhauled. The most notable change is macOS Mach-O binaries now have their symbols validated against macOS SDKs. We now parse
.tbd
YAML files in the macOS SDKs and ensure that every symbol referenced by Mach-O binaries is provided by all macOS versions the binary purports to support. Symbol validation against macOS 10.9 is not performed because its SDK doesn't have TBD files. - Various missing dependencies in the
Makefile
based build system have been fixed. - The Clang toolchain has been put on a diet and no longer includes LLVM projects that we don't utilize. This makes Clang builds faster and smaller.