Upcoming Release 2.2

In this document, we track the per version changes and comments for the upcoming Nuitka 2.2 as a draft about hot-fixes of the current stable release as 2.1.6 as well.

Nuitka Release 2.2 (Draft)

This a draft of the release notes for 2.2, which is supposed to contains the usual additions of new packages supported out of the box and will aim at scalability.

Bug Fixes

  • Standalone: Added support for pypdfium2 package. Fixed in 2.1.1 already.

  • Standalone: Make cefpython3 work on Linux. Fixed in 2.1.1 already.

  • ArchLinux: Need to add linker option for it to be usable with their current Arch Python package. Fixed in 2.1.1 already.

  • Fix, ctypes.CDLL optimization was using mis-spelled argument name for use_last_error, such that keyword argument calls using it were statically optimized into TypeError at compile-time. Fixed in 2.1.1 already.

  • Fix, list.insert was not properly annotating exceptions. Raises by producing the inserted value raised or the index were not annotated, and therefore could fail to be caught locally. Fixed in 2.1.1 already.

  • Standalone: Added support for selenium package. Fixed in 2.1.2 already.

  • Standalone: Added support for hydra package. Fixed in 2.1.2 already.

  • Standalone: Updated dotenv workaround for newer version. Fixed in 2.1.3 already.

  • Fix, PySide6 slots were not moved between threads anymore. Need to make function renames visible in owning class as well. Fixed in 2.1.3 already.

  • Standalone: Added support for win32com.server.register. Fixed in 2.1.3 already.

  • Standalone: Handle “string” import errors of uvicorn gracefully. Fixed in 2.1.3 already.

  • Fix, the dill-compat plugin needs to still expose the compiled type names as built-ins so pickle finds them.

  • Standalone: Added support for gruut package. Fixed in 2.1.3 already.

  • Standalone: Added support for newer toga to also include toga_winforms metadata. Fixed in 2.1.3 already.

  • Standalone: Added support for newer tensorflow package. Fixed in 2.1.4 already.

  • Standalone: Fix, matplotlib needs emit dependency on the backend included, otherwise it could be missing at run-time in some cases. Fixed in 2.1.4 already.

  • Onefile: Respect XDG_CACHE_HOME variable on non-Windows platforms. The cached location might not be configured to be ~/.cache on some systems, respect that. Fixed in 2.1.4 already.

  • Python2: Some cases of list.insert were not properly handling all index types. Fixed in 2.1.4 already.

  • Fix, optimized list.remove failed to handle tuple arguments properly. Removing tuple values from lists, could give errors. Fixed in 2.1.4 already.

  • Standalone: Added missing implicit dependencies for pyarrow.datasets. Fixed in 2.1.4 already.

  • Standalone: Added support for dask.dataframe module. Fixed in 2.1.4 already.

  • Standalone: Added DLLs for tensorrt_libs package. Fixed in 2.1.4 already.

  • Standalone: Added missing metadata of numpy for xarray package. Fixed in 2.1.4 already.

  • Standalone: Added support for newer scipy. Fixed in 2.1.5 already.

  • Standalone: Fix, older gcc could give warning about C code to work with PYTHONPATH and that caused build errors on older systems. Fixed in 2.1.5 already.

  • Fix, 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.

  • Standalone: Added data files for names package. Fixed in 2.1.5 already.

  • Standalone: Added data files for randomname package. Fixed in 2.1.5 already.

  • Standalone: Fix, the standalone standard library scan was not fully ignoring git folders, sub folders were still looked at and could cause issues. Fixed in 2.1.5 already.

  • Standalone: Added support for newer transformers. Fixed in 2.1.5 already.

  • Standalone: Add support for newer bitsandbytes. Fixed in 2.1.5 already.

  • Scons: Fix, when locating binaries, do not use directories but only files.

    A directory named gcc could be confused for being a gcc binary, but that is of course non-sense. Fixed in 2.1.6 already.

  • Windows: Fix, by default scan only for .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.

  • Fix, the __compiled__.containing_dir should be an absolute path. For it to be useful after a change of directory is done in the program that is necessary. Fixed in 2.1.6 already.

  • Standalone: Added support for more parts of networkx package. Fixed in 2.1.6 already.

New Features

  • For Nuitka package configuration, we now have 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.

  • For the experimental @pyqtSlot decorator, we also should handle the @asyncSlot just the same. Added in 2.1.1 already.

  • Added new kind of warning of 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.

Optimization

  • ArchLinux: Enable static libpython by default, it is usable indeed. Added in 2.1.2 already.

  • Anti-Bloat: Avoid unittest usage in antlr package.

  • Anti-Bloat: Avoid IPython in celery package. Added in 2.1.2 already.

  • Anti-Bloat: Avoid using setuptools in transformers package for more modules. Added in 2.1.3 already.

  • Anti-Bloat: Avoid testing packages for newer tensorflow package as well. Added in 2.1.4 already.

  • Optimization: Avoid recompiling azure package which is not performance relevant. Added in 2.1.4 already.

  • Avoid GUI plugin owned packages from backend plugins unless the corresponding plugin is actually active. Added in 2.1.4 already.

  • Anti-Bloat: Avoid setuptools in deepspeed package. Added in 2.1.4 already.

  • Anti-Bloat: Avoid setuptools in transformers package. Added in 2.1.4 already.

  • Anti-Bloat: Avoid scipy usage causing torch or cupy usage. Added in 2.1.4 already.

Organisational

  • UI: Catch wrong values for --jobs value sooner, negative and non-integer values error exit immediately. Added in 2.1.1 already.

  • UI: Nicer usage name when invoked with python -m nuitka

    The recommended form of calling of Nuitka should not have an ugly invocation reference __main__.py instead put the python -m nuitka notion there.

  • Plugins: Remove obsolete plugins from standard plugin documentation. Removed in 2.1.4 already.

  • UI: For Python debug mode compilation, do not about static libpython at all, this is misleading, often it doesn’t work for that configuration, and it’s only a distraction, since debugging Python reference counts is not about performance. Changed in 2.1.4 already.

  • UI: Catch newlines in spec values. They break code C code generation potentially and they also are likely copy&paste mistakes, that won’t do what the user expects. Added in 2.1.4 already.

Tests

  • Tests: Fix, cannot assume setuptools to be installed, some RPM based systems don’t have it.

Summary

This release is not yet done, but is supposed to focus again on scalability.