This release had focus on new features and new optimization. There is a also a large amount of compatibility with things newly added to support anti-bloat better, and workaround problems with newer package versions that would otherwise need source code at run-time.
Windows: Using older MSVC before 14.3 was not working anymore. Fixed in 2.0.1 already.
Compatibility: The dill-compat
plugin didn’t work for functions with closure variables taken. Fixed in 2.0.1 already.
Windows: Fix, sometimes kernel32.dll
is actually reported as a dependency, remove assertion against that. Fixed in 2.0.1 already.
UI: The help output for --output-filename
was not formatted properly. Fixed in 2.0.1 already.
Standalone: Added support for the scapy
package. Fixed in 2.0.2 already.
Standalone: Added PonyORM
implicit dependencies. Fixed in 2.0.2 already.
Standalone: Added support for cryptoauthlib
, betterproto
, tracerite
, sklearn.util
, and qt_material
packages. Fixed in 2.0.2 already.
Standalone: Added missing data file for scipy
package. Fixed in 2.0.2 already.
Standalone: Added missing DLLs for speech_recognition
package. Fixed in 2.0.2 already.
Standalone: Added missing DLL for gmsh
package. Fixed in 2.0.2 already.
UI: Using reporting path in macOS dependency scan error message, otherwise these contain home directory paths for no good reason. Fixed in 2.0.2 already.
UI: Fix, could crash when compiling directories with trailing slashes used. At least on Windows, this happened for the “/” slash value. Fixed in 2.0.2 already.
Module: Fix, convenience option --run
was not considering --output-dir
directory to load the result module. Without this, the check for un-replaced module was always triggering for module source in current directory, despite doing the right thing and putting it elsewhere. Fixed in 2.0.2 already.
Python2: Avoid values for __file__
of modules that are unicode and solve a TODO that restores consistency over modules mode __file__
values. Fixed in 2.0.2 already.
Windows: Fix, short paths with and without dir name cached wrongly, which could lead to shorted paths even where not asked for them. Fixed in 2.0.2 already.
Fix, comparing list values that changed could segfault. This is a bug fix Python did, that we didn’t follow yet and that became apparent after using our dedicated list helpers more often. Fixed in 2.0.2 already.
Standalone: Added support for tiktoken
package. Fixed in 2.0.2 already.
Standalone: Fix, namespace packages had wrong runtime __path__
value. Fixed in 2.0.2 already.
Python3.11: Fix, was using tuples from freelist of the wrong size
size-1
but we did not follow that and then used a tuple one bit larger than necessary.Fixed in 2.0.2 already.
macOS: Fix, need to allow non-existent and versioned dependencies of DLLs to themselves. Fixed in 2.0.2 already.
Windows: Fix PGO (Profile Guided Optimization) build errors with MinGW64, this feature is not yet ready for general use, but these errors shouldn’t happen. Fixed in 2.0.2 already.
Plugins: Fix, do not load importlib_metadata
unless really necessary.
The pkg_resources
plugin used to load it, and that then had harmful effects for our handling of distribution information in some configurations. Fixed in 2.0.3 already.
Plugins: Avoid warnings from plugin evaluated code, it could happen that a UserWarning
would be displayed during compilation. Fixed in 2.0.3 already.
Fix, loading pickles with compiled functions in module mode was not working. Fixed in 2.0.3 already.
Standalone: Added data files for h2o
package. Fixed in 2.0.3 already.
Fix, variable assignment from variables that started to raise were not recognized. When a variable assignment from a variable became a raise expression, that wasn’t caught and propagated as it should have been. Fixed in 2.0.3 already.
Make the NUITKA_PYTHONPATH
usage more robust. Fixed in 2.0.3 already.
Fix, PySide2/6 argument name for slot connection and disconnect should be slot
, wasn’t working with keyword argument calls. Fixed in 2.0.3 already.
Standalone: Added support for paddle
and paddleocr
packages. Fixed in 2.0.4 already.
Standalone: Added support for diatheke
. Fixed in 2.0.4 already.
Standalone: Added support for zaber-motion
package. Fixed in 2.0.4 already.
Standalone: Added support for plyer
package. Fixed in 2.0.4 already.
Fix, added handling of OSError
for metadata read, otherwise corrupt packages can have Nuitka crashing. Fixed in 2.0.4 already.
Fix, need to annotate potential exception exit when making a fixed import from hard module attribute. Fixed in 2.0.4 already.
Fix, didn’t consider Nuitka project options with --main
and --script-path
. This is of course the only way Nuitka-Action does call it, so they didn’t work there at all. Fixed in 2.0.4 already.
Scons: Fix, need to close progress bar when about to error exit. Otherwise error outputs will be garbled by incomplete progress bar. Fixed in 2.0.4 already.
Fix, need to convert relative from imports to hard imports too, or else packages needed to be followed are not included. Fixed in 2.0.5 already.
Standalone: Added pygame_menu
data files. Fixed in 2.0.6 already.
Windows: Fix, wasn’t working when compiling on network mounted drive letters. Fixed in 2.0.6 already.
Fix, the .pyi
parser was crashing on some comments with a leading from
in the line, recognize these better. Fixed in 2.0.6 already.
Actions: Fix, some yaml configs could fail to load plugins. Fixed in 2.0.6 already.
Standalone: Added support for newer torch
packages that otherwise require source code.
Fix, inline copies of tqdm
etc. left sub-modules behind, removing only the top level sys.modules
entry may not be enough.
constants
in Nuitka package configurations. We can now using when
clauses, define variable values to be defined, e.g. to specify the DLL suffix, or the DLL path, based on platform dependent properties.relative_path
, suffix
, prefix
in DLL Nuitka package configurations allowed to be an expression rather than just a constant value.python_version_str
and python_version_full_str
, to use them when constructing e.g. DLL paths in Nuitka Package Configuration.iterate_modules
for producing the submodules of a given package, for using in expressions of Nuitka package configuration.module
attribute to __compiled__
values
So far it was impossible to distinguish non-standalone, i.e. accelerated mode and module compilation by looking at the __compiled__
attribute, so we add an indicator for module mode that closes this gap.appdirs
and importlib
for use in Nuitka package config expressions.nofollow
configuration is for rare use cases only.extension_std_suffix
and extension_suffix
for use in expressions, to e.g. construct DLL suffix patterns from it.delvewheel
plugin now puts the version of that packaging tool used by a particular module in the report rather than tracing it to the user, that in the normal case won’t care. This is more for debugging purposes of Nuitka.sys.exit
into exception raise of SystemExit
.
This should make a bunch of dead code obvious to Nuitka, it can now tell this aborts execution of a branch, potentially eliminating imports, etc.altair
package. Added in 2.0.3 already.kubernetes
for tensorflow
unless used otherwise. Added in 2.0.3 already.tqdm
. Added in 2.0.3 already.IPython
in fire
package. Added in 2.0.3 already.Cython
for pydantic
package. Added in 2.0.3 already.triton
in newer torch
as well. Added in 2.0.5 already.setuptools
via setuptools_scm
in pyarrow
.setuptools
which we want to avoid, all of Cython
, cython
, pyximport
, paddle.utils.cpp_extension
, torch.utils.cpp_extension
were added for better reports of the actual causes.winlibs
that Nuitka itself downloaded. As these packages break very easily, we need to control if it’s a working set of ccache
, make
, binutils
and gcc with all the necessary workarounds and features like LTO
working on Windows properly.optipng
and jpegoptim
calls as necessary. Previously this was manual steps for the website to be applied.no-auto-follow
values, for silently ignoring it there is a dedicated string ignore
that must be used.dest_path
and relative_path
. Users were uncertain if a leading dot made sense, but we now disallow it for clarity.Credits.rst
file to be on the website and maintain it there rather than syncing of from the Nuitka repository.With sys.exit
being optimized, we were able to make our trick to avoid following nuitka
because of accidentally finding the setup
as an import more simple.
Scons: Don’t scan for ccache
on Windows, the winlibs
package contains it nowadays, and since it’s now required to be used, there is no point for this code anymore.
Minor cleanups coming from trying out ruff
as a linter on Nuitka, it found a few uses of not using not in
, but that was it.
This release added much needed tools for our Nuitka Package configuration, but also cleans up scalability and optimization that was supposed to work, but did not yet, or not anymore.
The usability improved again, as it does always, but the big improvements for scalability that will implement existing algorithms more efficient, are yet to come, this release was mainly driven by the need to get torch
to work in its latest version out of the box with stable Nuitka, but this couldn’t be done as a hotfix