Skip to content

Releases: indygreg/python-build-standalone

20220630

01 Jul 00:50
Compare
Choose a tag to compare

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

28 May 22:17
Compare
Choose a tag to compare

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 deprecated GPL-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

03 May 04:57
Compare
Choose a tag to compare

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 in libpython. After, these symbols should not be visible/bindable outside libpython 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

19 Mar 00:40
Compare
Choose a tag to compare
  • CPython upgraded from 3.10.2 to 3.10.3.
  • CPython upgraded from 3.9.10 to 3.9.11.
  • CPython upgraded from 3.8.12 to 3.8.13.
  • OpenSSL upgraded from 1.1.1m to 1.1.1n.
  • Pip upgraded from 22.0.3 to 22.0.4.
  • SQLite upgraded from 3.38.0 to 3.38.1.

20220227

27 Feb 18:35
Compare
Choose a tag to compare
  • 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 the QuartzCore 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 and shlwapi.
  • 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 of cpython-<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

26 Feb 18:29
Compare
Choose a tag to compare
  • 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, and x86_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 support v2 and CPUs manufactured since the Intel Haswell era support v3. v4 requires AVX-512 instructions and requires a CPU manufactured in the past few years.

20211017

17 Oct 21:34
Compare
Choose a tag to compare
  • 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

13 Oct 01:06
Compare
Choose a tag to compare
  • 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

25 Jul 00:03
Compare
Choose a tag to compare
  • 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 a tkinter dependency in macOS distributions.
  • ELF binaries in Linux distributions have a / in DT_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

06 May 20:21
Compare
Choose a tag to compare
  • 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