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.1directory instead of3.10. (#569, #600). - Changed interpreter initialization logic around
sys.meta_pathhandling to
be more resistant to additional entries. Ifsiteis imported during
interpreter initialization, a.pthfile insite-packagescould 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_pathand 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=FLAGlines from Cargo build
scripts. There should be no change in behavior. Generated Rust projects with a
.cargo/configoverridingrustflagsto pass linker arguments can safely
delete these lines, as they are no longer necessary. SETUPTOOLS_USE_DISTUTILS=stdlibis 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.