This release contains a large amount of performance work, that should specifically be useful on Windows, but also generally. A bit of scalability work has been applied, and as usual many bug fixes and small improvements, many of which have been in hotfixes.
dotenv. Do not insist on compiled package directories that may not be there in case of no data files. Fixed in 1.2.1 already.ctypes.CDLL node attributes the winmode argument to Python2, which is wrong, it was actually added with 3.8. Fixed in 1.2.1 already.cl.exe crashes or clcache bugs. When these are reported by the linker, it now suggests to use the --clean-cache=ccache which will remove it, otherwise there would be no way to cure it. Added in 1.2.1 already.folium package. Added in 1.2.1 already.branca package. Added in 1.2.1 already.try that had exiting finally branches were tracing values only assigned in the try block incorrectly. Fixed in 1.2.2 already.libstdc++ for Alpine to not use the system one which is required by its other binaries, much like we already do for Anaconda. Fixed in 1.2.2 already.pytorch. One of our workarounds no longer applies. Fixed in 1.2.2 already.opencv-python. Fixed in 1.2.3 already.pytorch_lightning, it was not finding metadata for rich package. Fixed in 1.2.4 already.
For the release we found that pytorch_lightning may not find rich installed. Need to guard version() checks in our package configuration.dash package. Fixed in 1.2.4 already.clcache entry after a delay, this works around Virus scanners giving access denied while they are checking the file. Naturally you ought to disable those for your build space, but new users often don’t have this. Fixed in 1.2.4 already.scipy 1.9.2 changes. Fixed in 1.2.4 already.gcc as well and suggest to clean cache as well. This has been observed to happen at least on Windows and should help resolve the ccache situation there.clcache fails to acquire the global lock, simply ignore that. This happens sporadically and barely is a real locking issue, since that would require two compilations at the same time and for that it largely works.f_locals set to the actual mapping used in their frame. This makes Nuitka usable with the multidispatch package which tries to find methods there while the class is building.tk-inter automatic detection. This was fixed in 1.2.6 already.lark package. Fixed in 1.2.6 already.pkgutil.iter_modules without arguments was given wrong compiled package names. Fixed in 1.2.6 already.clr DLLs changes. Fixed in 1.2.7 already.tensorflow.compat namespace not being available. Fixed in 1.2.7 already.tkextrafont. Fixed in 1.2.7 already.timm package. Fixed in 1.2.7 already.tls to list of sensible plugins. This enables at least pyqt6 plugin to do networking with SSL encryption.sklearn.cluster.fcopyfile is no longer available on newest OS version, and include files for sendfile have changed.--disable-cache that accepts all and cache names like ccache, bytecode and on Windows, dll-dependencies with selective values.The clcache is implied in ccache for simplicity.
--disable-cache Nuitka may now also be called with --clean-cache in a compilation or without a filename argument, and then it will erase those caches current data before making a compilation.--macos-app-mode option for application bundles that should run in the background (background) or are only a UI element (ui-element).when allows now to check if a plugin is active. This allowed us to limit console warnings to only packages whose plugin was activated.tk-inter no longer will you be asked about PySide6 plugin, as that is not what you are using apparently.tk-inter as well, so it will now point out that wx and the Qt bindings should be removed for best results, if they are included in the compilation.Resources folder of application bundles.PyObject_Size variant, that will be slightly faster and avoids DLL usage for len and size hints, e.g. in container creations.malloc related macros and functions of Python, and instead of the fasted form generally. This avoids Python DLL calls that on Windows can be particularly slow.frozenset there was not need to check for hashable values, and some branches could be replaced with e.g. defining our own EllipsisType for use in short paths.--jobs much like C compilation already is. For large programs this will give big savings in overall execution time. Added in 1.2.7 already.pytest for dash package compilation.dotenv, pyvista, python_utils, and trimesh package compilation.rdkit improving compile time for standalone by a lot. Fixed in 1.2.7 already.keras testing framework when using that package.numpy plugin functionality was moved to Nuitka package configuration, and as a result, the plugin is now deprecated and devoid of functionality. On non-Windows, this removes unused duplications of the numpy.core DLLs.--help output. These are there often only for historic reasons, e.g. when an option was renamed. They should not bother users reading them.pyside2 and pyqt5 plugins.description values during their automatic check.--version output to include the C compiler selection. It is doing that respecting your other options, e.g. --clang, etc. so it will be helpful in debugging setup issues.
UI: Some error messages were using %r rather than '%s' to output file paths, but that escaped backslashes on Windows, making them look worse, so we changed away from this.--output-dir actually controls.Foundation module requires bundle mode to be usable.--follow-imports and --nofollow-imports on command line rather than erroring out. Simply use what was given last, this allows overriding what was given in project options tests should the need arise.--include-package-data before compilation, removing the ability to use pattern. This makes it easier to recognize mistakes without a long compilation and plugins can know them this way too.pythonw binary on Windows.--mingw64 mode. It had been like this, but the --help output didn’t say so.main_module tag. It cannot happen that a module name matches, and still thinks of itself as __main__ during compilation, so that idea was unnecessary.dict.copy(), for deep copy (needed e.g. when there are escaping mutable keyword argument constant values in say a function call), and for **kw value preparation in the called function (checking argument types), we have had diverged copies, that are now unified in a single Jinja2 template for optimization.Test suffix, so in Visual Code selector they are more distinct from Nuitka code modules.if branches at call side.PyDev annotations, we don’t need those anymore for a long time already.arglist, actually tuples are sufficient and naturally better to use.--diff output usable for interactive usage.The major achievement of this release was the removal of the long lived numpy plug-in, replacing it with package based configuration, that is even more optimal and works perfectly across all platforms on both important package installation flavors.
This release has a lot of consolidation efforts, but also as a result of 3.11 investigations, addresses a lot of issues, that have crept in over time with Python3 releases since 3.7, each time, something had not been noticed. There will more need for investigation of relative performance losses, but this should address the most crucial ones, and also takes advantage of optimization that had become with 3.10 already.
There is also some initial results from cleanups with the composite node tree structure, and how it is managed. Generated “child(ren) having” mixins, allow for faster traversal of the node tree.
Some technical things also improved in Scons. Using multiple cores in LTO with MSVC with help this a lot, although for big compilations --lto=no probably has to be recommended still.
More anti-bloat work on more packages rounds up the work.
For macOS specifically, the WebEngine support is crucial to some users, and the new --macos-app-mode with more GUI friendly default resolves long standing problems in this area.
And for MSYS2 and FreeBSD, support has been re-activated, so now 4 OSes work extremely well (others too likely), and on those, most Python flavors work well.
The performance and scalability improvements are going to be crucial. It’s a pity that 3.11 is not yet supported, but we will be getting there.