Releases: indygreg/python-build-standalone
Releases Β· indygreg/python-build-standalone
20220630
Need help choosing which build to use? See documentation at https://gregoryszorc.com/docs/python-build-standalone/20220630/running.html.
- CPython 3.10.4 upgraded to 3.10.5.
- OpenSSL upgraded from 1.1.1o to 1.1.1p.
- SQLite upgraded from 3.38.5 to 3.39.0.
- setuptools upgraded from 62.3.2 to 62.6.0.
- pip upgraded from 21.1.1 to 21.1.2.
- Changed tkinter link settings on macOS to fix a segfault (#132). This fixes a regression from the 20220222 release.
20220528
Need help choosing which build to use? See documentation at https://python-build-standalone.readthedocs.io/en/latest/running.html.
- CPython 3.9.12 upgraded to 3.9.13
- setuptools upgraded from 62.1.0 to 62.3.2
- pip upgraded from 22.0.4 to 22.1.1
- SQLite upgraded from 3.38.3 to 3.38.5
- OpenSSL upgraded from 1.1.1n to 1.1.1o
- SQLite extension loading feature is now enabled
- ncurses and libffi license texts were refreshed to be in sync with their current version. This only effectively changed copyright years.
- readline license is now annotated as
GPL-3.0-only
instead of the deprecatedGPL-3.0
SPDX expression. - Clang toolchains are now downloaded from https://github.com/indygreg/toolchain-tools instead of built from source.
- Documentation updates around target triples and which distributions to use.
20220502
Need help choosing which build to use? See documentation at https://python-build-standalone.readthedocs.io/en/latest/running.html.
- 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.
20220318
20220227
- SQLite upgraded from 3.37.2.0 to 3.38.0.0.
- setuptools upgraded from 60.8.2 to 60.9.3.
- The
_tkinter
extension module now links against theQuartzCore
framework on macOS. The extension module likely worked before but the missing link annotation could result in problems if the build artifacts were relinked. - Windows distributions now properly annotate their dependence on
pathcch
andshlwapi
. - The release machinery has been overhauled.
- Install only archives are now created at release time instead of in CI.
install_only.tar.gz
archives are now published for every released target architecture.- The full
.tar.zst
archives now have a-full
suffix to denote them as such. - The release artifact filename now has the form
cpython-<version>+<tag>-<triple>-<build>-<archive variant>
instead ofcpython-<version>-<triple>-<build>-<archive variant>-<timestamp>
. - There are
*.sha256
files published for each release archive containing the SHA-256 of that archive. - There is a
SHA256SUMS
file published containing the SHA-256 of every file in the release.
20220222
- Python extension suffix in
PYTHON.json
files are now correct when cross-compiling. - CPython distributions upgraded from 3.9.7 to 3.9.10 and 3.10.0 to 3.10.2.
- setuptools upgraded from 58.1.0 to 60.8.2.
- pip upgraded from 21.2.4 to 22.0.3.
- Windows Python 3.8 distributions now work on Windows 7.
shlwapi
links annotation removed from Windows CPython 3.9 distributions.- Windows distributions now all use libffi 3.4.2. This is different from official CPython distributions, which only use libffi 3.4.2 on Python 3.11+.
- tcl/tk upgraded from 8.6.10 to 8.6.12.
- Tix has been removed from macOS due to compilation errors.
- SQLite upgraded from 3.36.0 to 3.37.2.
- OpenSSL upgraded from 1.1.1l to 1.1.1m.
- ncurses upgraded from 6.2 to 6.3.
- readline upgraded from 8.1 to 8.1.2.
- binutils upgraded from 2.37 to 2.38.
- clang upgraded from 13.0.0 to 13.0.1.
- Added target triples
x86_64_v2-unknown-linux-gnu
,x86_64_v3-unknown-linux-gnu
,x86_64_v4-unknown-linux-gnu
,x86_64_v2-unknown-linux-musl
,x86_64_v3-unknown-linux-musl
, andx86_64_v4-unknown-linux-musl
. These targets contain more x86-64 instructions for more modern CPUs and result in faster performance of the Python interpreter. The trade-off is that these binaries won't run on ~every x86-64 CPU manufactured. Most x86-64 CPUs in use today supportv2
and CPUs manufactured since the Intel Haswell era supportv3
.v4
requires AVX-512 instructions and requires a CPU manufactured in the past few years.
20211017
x86_64-apple-darwin
distributions are now compiled against macOS SDK 11.1 (downgraded from 11.3). This restores build compatibility with Xcode present in many macOS 10.15 environments.- LLVM/Clang upgraded from 12.0.1 to 13.0.0.
PYTHON.json
files now properly annotate system library and framework linking requirements for the Python core. Previously, only extensions had their link requirements annotated. This missing annotations meant that it was possible for some libraries to not be linked explicitly and for there to be missing libraries/symbols at link time.xcb-proto
upgraded from 1.13 to 1.14.1.- Linux binaries no longer use
pthread_yield()
, ensuring they re-link with glibc 2.34, which deprecated this symbol. (Due to glibc symbol visibility, older distributions will run on glibc 2.34+: they just couldn't be re-linked against 2.34+.)
This release was made a few days after 20211012 and is more tested than that release. It's release notes may be worth reading.
20211012
- Initial release with CPython 3.10 final (3.10.0)
- CPython 3.9.6 upgraded to 3.9.7.
- CPython 3.8.11 upgraded to 3.8.12.
- pip upgraded from 21.1.3 to 21.2.4.
- setuptools upgraded from 57.4.0 to 58.1.0.
- OpenSSL upgraded from 1.1.1k to 1.1.1l.
- libedit upgraded from 20210714-3.1 to 20210910-3.1.
- gdbm upgraded from 1.18.1 to 1.21.
- macOS builds are all now produced on macOS 11 against the 11.3 SDK. x86_64 builds still target macOS 10.9+.
- Cross-compiled Linux distributions should now have a functional pip install.
- Windows distributions no longer have
pip.exe
executables since they didn't work. - CPython 3.10 builds use libedit instead of readline as the backend for the
readline
extension. This effectively removes a GPL dependency. - CPython 3.10 no longer contains the
_gdbm
extension. - CPython 3.10 builds no longer link against any GPL licensed components and should no longer be subject to copyleft licensing.
This was a significant release. But it was superseded a few days later by 20211017. This release wasn't as well tested and it is encouraged to use the 20211017
release instead.
20210724
- CPython 3.8 upgraded from 3.8.10 to 3.8.11.
- CPython 3.9 upgraded from 3.9.5 to 3.9.6.
- LLVM/Clang upgraded from 12.0.0 to 12.0.1.
- libedit upgraded from 20210216-3.1 to 20210714-3.1.
- LibreSSL upgraded from 3.2.5 to 3.3.3.
- pip upgraded from 21.1.1 to 21.1.3.
- setuptools upgraded from 56.1.0 to 57.4.0.
- SQLite upgraded from 3.35.5 to 3.36.0.
- Shebangs in scripts have been rewritten so they should now pick up the Python distribution in the archive. This means
pip3
and other Python scripts should now work correctly. CoreFoundation
is properly listed as atkinter
dependency in macOS distributions.- ELF binaries in Linux distributions have a
/
inDT_NEEDED
to force relative path loading. - macOS distributions now reference
/private/etc/ssl
as the OpenSSL directory. - macOS distributions no longer build libedit and ncurses and instead use the system installed libraries.
- There are now various
*-install_only-*.tar.gz
release artifacts containing a gzipped tar archive of just the Python installation. These artifacts can be more readily consumed by tools just wanting to run a Python interpreter.
20210506
- CPython upgraded from 3.8.9 to 3.8.10 and 3.9.4 to 3.9.5
- LLVM/Clang upgraded from 11.1.0 to 12.0.0
- SQLite upgraded from 3.35.4 to 3.35.5
- pip upgraded from 20.0.1 to 21.1.1
- setuptools upgraded from 56.0.0 to 56.1.0
reallocarray()
is now disabled in musl Linux distributions to provide linking compatibility with older versions of musl libc lacking this symbol