This release focused on compatibility and significant optimization progress for loops, such as list operations within. The main line of change is to be able to support Python 3.12 in the next release.
pypdfium2
package. Fixed in 2.1.1 already.cefpython3
work on Linux. Fixed in 2.1.1 already.ctypes.CDLL
optimization used a misspelled argument name for use_last_error
, such that keyword argument calls were statically optimized into TypeError
at compile-time. Fixed in 2.1.1 already.list.insert
was not properly annotating exceptions. Raises by producing the inserted value raised or the index was not annotated and, therefore, could fail to be caught locally. Fixed in 2.1.1 already.selenium
package. Fixed in 2.1.2 already.hydra
package. Fixed in 2.1.2 already.dotenv
workaround for newer version. Fixed in 2.1.3 already.win32com.server.register
. Fixed in 2.1.3 already.uvicorn
gracefully. Fixed in 2.1.3 already.dill-compat
plugin needs also needs to expose the compiled type names as built-ins for the pickle
module to find them.gruut
package. Fixed in 2.1.3 already.toga
to also include toga_winforms
metadata. Fixed in 2.1.3 already.tensorflow
package. Fixed in 2.1.4 already.matplotlib
needs to emit a dependency on the backend to be included. Otherwise it could be missing at run-time in some cases. Fixed in 2.1.4 already.XDG_CACHE_HOME
variable on non-Windows platforms. Some users might configure that to not to be ~/.cache
, respect that. Fixed in 2.1.4 already.list.insert
were not properly handling all index types. Fixed in 2.1.4 already.list.remove
failed to handle tuple arguments properly. Removing tuple values from lists could cause errors. Fixed in 2.1.4 already.pyarrow.datasets
. Fixed in 2.1.4 already.dask.dataframe
module. Fixed in 2.1.4 already.tensorrt_libs
package. Fixed in 2.1.4 already.numpy
for xarray
package. Fixed in 2.1.4 already.scipy
. Fixed in 2.1.5 already.gcc
could give warning about C code to work with PYTHONPATH
which caused build errors on older systems. Fixed in 2.1.5 already.locals
representing nodes could not be cloned, and as a result, some code re-formulations failed to compile in try
constructs. Fixed in 2.1.5 already.names
package. Fixed in 2.1.5 already.randomname
package. Fixed in 2.1.5 already.transformers
. Fixed in 2.1.5 already.bitsandbytes
. Fixed in 2.1.5 already.PATH
that was named gcc
could be mistaken to be a gcc
binary causing errors. Fixed in 2.1.6 already..bin
and .exe
binaries for Nuitka Package Configuration EXE dependency patterns. This was the intended value, but it had not taken effect yet. Fixed in 2.1.6 already.__compiled__.containing_dir
should be an absolute path. For it to be usable after a change of directory is done by the program that is required. Fixed in 2.1.6 already.networkx
package. Fixed in 2.1.6 already.\\some-hostname\unc-test
as they are common in some VM setups.sspilib
that prevented requests-ntlm
from working on Windows.co_qualname
attribute was not actually the qualified name, but the same as co_name
only.lib
directory as a system directory, because then those DLLs that are not included.huggingface_hub.utils.tqdm
ended up being a module and not the class it’s supposed to be.libc++
and libz
DLLs cannot be found anymore, we need to ignore that actively as our code insists on full resolution to catch bugs.zaber_motion
was not really working.pyviz_comms
.panel
package.bokeh
package.scipy
for Anaconda.no-follow
from a parent module cannot affect its child modules, as they can end up being followed to only after them.dill-compat
plugin in module mode cannot assume the main module name to be the one from compile time, need to look the actual one up at runtime.tensorflow.function
JIT
With preserved source code of decorated functions and we can provide it at run-time to tensorflow
JIT so it can do its tracing executions.change_class
similar to change_function
to replace a full class definition with something else, this can be used to modify classes to become stubs or even unusable.@pyqtSlot
decorator, we also should handle the @asyncSlot
the same way. Added in 2.1.1 already.plugin
category and use it in the Nuitka Package Configuration to inform matplotlib
users to select a GUI backend via plugin selection. Added in 2.1.4 already.zig
as CC value. Due to it not supporting C11 fully yet, we need to use the C++ workaround and cannot compile for Python 3.11 or higher yet.__compiled__
value, we now have a __compiled__.main
that is the name of the compiled module. For modules, Nuitka determines this at run time; in other modes, it is the name of the main module.set
specific API in contains tests, rather than generic sequence one.value in something
tests for known set
and list
values to use frozenset
and tuple
respectively.append
tests by a significant amount.list.remove
, such that it is not using a Python DLL call where that is slow.unittest
usage in antlr
package.IPython
in celery
package. Added in 2.1.2 already.setuptools
in transformers
package for more modules. Added in 2.1.3 already.tensorflow
package as well. Added in 2.1.4 already.azure
package which is not performance relevant. Added in 2.1.4 already.matploblib
backends unless the corresponding plugin is actually active. Added in 2.1.4 already.setuptools
in deepspeed
package. Added in 2.1.4 already.setuptools
in transformers
package. Added in 2.1.4 already.scipy
usage causing torch
or cupy
usage. Added in 2.1.4 already.keras
testing modules as unittest
bloat.no_docstrings
issue for torio
package.IPython
from imgui_bundle
package.dask
is used.unitest
usage in tf_keras
package as well.IPython
from bokeh
package..bin
suffix to the binary avoids that entirely.{VERSION}
in specs to be resolved to four digits.
That made it hard for users, who will be surprised to see 1.0
become 1.0.0.0
when that is only needed for Windows version information really.--jobs
value sooner, negative and non-integer values error exit immediately. Added in 2.1.1 already.python -m nuitka
The recommended form of invocation of Nuitka should not have an ugly invocation reference mentioning __main__.py
instead put the python -m nuitka
notion there.isort
and black
can corrupt outputs, catch that.setuptools
to be installed, some RPM based systems don’t have it.--execute-with-pythonpath
option, we don’t use that anymore at all.The JIT mechanism added for tensorflow
should be possible to generalize and will be applied to other JITs, like numba
and others in the future as well.
The road to Python 3.12 is not fully complete, but the end feels closer now, and the subsequent release hopefully will add the official support for it.