PyOxidizer 0.23.0
The documentation for this release is at https://gregoryszorc.com/docs/pyoxidizer/0.23.0/.
Backwards Compatibility Notes
- The minimum Rust version has been changed from 1.60 to 1.61 to facilitate
use of features required by some Rust crates.
Bug Fixes
- Default macOS Python distributions should no longer crash when running
tkinter. This fixes a regression introduced in the 0.20 release. - The paths to Python modules when using Python 3.10 is now properly resolved.
Before, buggy version string parsing caused various code to look for Python
modules in a3.1
directory instead of3.10
. (#569, #600). - Changed interpreter initialization logic around
sys.meta_path
handling to
be more resistant to additional entries. Ifsite
is imported during
interpreter initialization, a.pth
file insite-packages
could have
the side-effect of registering additional entries onsys.meta_path
.
Before, this could confuse our interpreter initialization code and result in
OxidizedFinder not found on sys.meta_path[0] (this should never happen)
errors. Our overly strict code is now more tolerant of unknown entries on
sys.meta_path
and this error should no longer occur. (#602)
Changes
- Default CPython distributions upgraded. CPython 3.8.13 -> 3.8.15; 3.9.13 ->
3.9.15; 3.10.4 -> 3.10.8.
See https://github.com/indygreg/python-build-standalone/releases/tag/20220630,
https://github.com/indygreg/python-build-standalone/releases/tag/20220802,
https://github.com/indygreg/python-build-standalone/releases/tag/20221002, and
https://github.com/indygreg/python-build-standalone/releases/tag/20221106
for additional changes. - PyO3 Rust crate(s) upgraded from 0.16.5 to 0.17.1.
- The mechanism for passing custom arguments to the linker for exporting
symbols from built executables has transitioned from using.cargo/config
files to emittingcargo:rustc-link-arg=FLAG
lines from Cargo build
scripts. There should be no change in behavior. Generated Rust projects with a
.cargo/config
overridingrustflags
to pass linker arguments can safely
delete these lines, as they are no longer necessary. SETUPTOOLS_USE_DISTUTILS=stdlib
is now unconditionally set when invoking
Python packaging tools. Previously, it was only set when statically linking
libpython. The new behavior ensures that we consistently use the distutils
from the Python stdlib and not the distutils in setuptools. The reason for
this change was to work around a change in behavior in modern
setuptools/distutils resulting in extension module building failing due to
new failures resolving the path toPython.h
.