<?xml version='1.0' encoding='UTF-8'?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://nuitka.net/</id>
  <title>Nuitka Blog - Posted in 2022</title>
  <updated>2026-06-17T17:31:32.435971+00:00</updated>
  <link href="https://nuitka.net/"/>
  <link href="https://nuitka.net/blog/2022/atom.xml" rel="self"/>
  <generator uri="https://ablog.readthedocs.io/" version="0.11.6">ABlog</generator>
  <entry>
    <id>https://nuitka.net/posts/nuitka-release-13.html</id>
    <title>Nuitka Release 1.3</title>
    <updated>2022-12-28T09:58:00+01:00</updated>
    <author>
      <name>Kay Hayen</name>
    </author>
    <content type="html">&lt;section id="nuitka-release-1-3"&gt;

&lt;p&gt;This is to inform you about the new stable release of &lt;a class="reference external" href="https://nuitka.net"&gt;Nuitka&lt;/a&gt;. It is the extremely compatible Python compiler,
&lt;a class="reference external" href="/doc/download.html"&gt;“download now”&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;section id="bug-fixes"&gt;
&lt;h2&gt;Bug Fixes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;macOS: Framework build of PySide6 were not properly supporting the
use of WebEngine. This requires including frameworks and resources in
new ways, and actually some duplication of files, making the bundle
big, but this seems to be unavoidable to keep the signature intact.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added workaround for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;dotenv&lt;/span&gt;&lt;/code&gt;. Do not insist on
compiled package directories that may not be there in case of no data
files. Fixed in 1.2.1 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Python3.8+: Fix, the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;ctypes.CDLL&lt;/span&gt;&lt;/code&gt; node attributes the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;winmode&lt;/span&gt;&lt;/code&gt;
argument to Python2, which is wrong, it was actually added with 3.8.
Fixed in 1.2.1 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Windows: Attempt to detect corrupt object file in MSVC linking. These
might be produced by &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;cl.exe&lt;/span&gt;&lt;/code&gt; crashes or &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;clcache&lt;/span&gt;&lt;/code&gt; bugs. When
these are reported by the linker, it now suggests to use the
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--clean-cache=ccache&lt;/span&gt;&lt;/code&gt; which will remove it, otherwise there would
be no way to cure it. Added in 1.2.1 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added data files for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;folium&lt;/span&gt;&lt;/code&gt; package. Added in 1.2.1
already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added data files for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;branca&lt;/span&gt;&lt;/code&gt; package. Added in 1.2.1
already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, some forms &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;try&lt;/span&gt;&lt;/code&gt; that had exiting &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;finally&lt;/span&gt;&lt;/code&gt; branches were
tracing values only assigned in the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;try&lt;/span&gt;&lt;/code&gt; block incorrectly. Fixed
in 1.2.2 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Alpine: Fix, Also include &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;libstdc++&lt;/span&gt;&lt;/code&gt; 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.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added support for latest &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pytorch&lt;/span&gt;&lt;/code&gt;. One of our
workarounds no longer applies. Fixed in 1.2.2 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added support for webcam on Windows with
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;opencv-python&lt;/span&gt;&lt;/code&gt;. Fixed in 1.2.3 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added support for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pytorch_lightning&lt;/span&gt;&lt;/code&gt;, it was not
finding metadata for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;rich&lt;/span&gt;&lt;/code&gt; package. Fixed in 1.2.4 already.&lt;/p&gt;
&lt;p&gt;For the release we found that &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pytorch_lightning&lt;/span&gt;&lt;/code&gt; may not find
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;rich&lt;/span&gt;&lt;/code&gt; installed. Need to guard &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;version()&lt;/span&gt;&lt;/code&gt; checks in our package
configuration.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added data files for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;dash&lt;/span&gt;&lt;/code&gt; package. Fixed in 1.2.4
already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Windows: Retry replace &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;clcache&lt;/span&gt;&lt;/code&gt; 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.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added support for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;scipy&lt;/span&gt;&lt;/code&gt; 1.9.2 changes. Fixed in 1.2.4
already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Catch corrupt object file outputs from &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;gcc&lt;/span&gt;&lt;/code&gt; as well and suggest to
clean cache as well. This has been observed to happen at least on
Windows and should help resolve the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;ccache&lt;/span&gt;&lt;/code&gt; situation there.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Windows: In case &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;clcache&lt;/span&gt;&lt;/code&gt; 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.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Compatibility: Classes should have the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;f_locals&lt;/span&gt;&lt;/code&gt; set to the actual
mapping used in their frame. This makes Nuitka usable with the
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;multidispatch&lt;/span&gt;&lt;/code&gt; package which tries to find methods there while the
class is building.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Anaconda: Fix, newer Anaconda versions have TCL and Tk in new places,
breaking the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;tk-inter&lt;/span&gt;&lt;/code&gt; automatic detection. This was fixed in
1.2.6 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Windows 7: Fix, onefile was not working anymore, a new API usage was
not done in a compatible fashion. Fixed in 1.2.6 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added data files for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;lark&lt;/span&gt;&lt;/code&gt; package. Fixed in 1.2.6
already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pkgutil.iter_modules&lt;/span&gt;&lt;/code&gt; without arguments was given wrong
compiled package names. Fixed in 1.2.6 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added support for newer &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;clr&lt;/span&gt;&lt;/code&gt; DLLs changes. Fixed in
1.2.7 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added workarounds for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;tensorflow.compat&lt;/span&gt;&lt;/code&gt; namespace not
being available. Fixed in 1.2.7 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added support for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;tkextrafont&lt;/span&gt;&lt;/code&gt;. Fixed in 1.2.7
already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Python3: Fix, locals dict test code testing if a variable was present
in a mapping could leak references. Fixed in 1.2.7 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added support for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;timm&lt;/span&gt;&lt;/code&gt; package. Fixed in 1.2.7
already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Plugins: Add &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;tls&lt;/span&gt;&lt;/code&gt; to list of sensible plugins. This enables at
least &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pyqt6&lt;/span&gt;&lt;/code&gt; plugin to do networking with SSL encryption.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added implicit dependencies of &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;sklearn.cluster&lt;/span&gt;&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;FreeBSD: Fix, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;fcopyfile&lt;/span&gt;&lt;/code&gt; is no longer available on newest OS
version, and include files for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;sendfile&lt;/span&gt;&lt;/code&gt; have changed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;MSYS2: Add back support for MSYS Posix variant. Now onefile works
there too.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, when picking up data files from command line and plugins,
different exclusions were applied. This has been unified to get
better coverage for avoiding to include DLLs and the like as data
files. DLLs are not data files and must be dealt with differently
after all.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="new-features"&gt;
&lt;h2&gt;New Features&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;UI: Added new option for cache disabling &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--disable-cache&lt;/span&gt;&lt;/code&gt; that
accepts &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;all&lt;/span&gt;&lt;/code&gt; and cache names like &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;ccache&lt;/span&gt;&lt;/code&gt;, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;bytecode&lt;/span&gt;&lt;/code&gt; and on
Windows, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;dll-dependencies&lt;/span&gt;&lt;/code&gt; with selective values.&lt;/p&gt;
&lt;div class="admonition note"&gt;
&lt;p class="admonition-title"&gt;Note&lt;/p&gt;
&lt;p&gt;The &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;clcache&lt;/span&gt;&lt;/code&gt; is implied in &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;ccache&lt;/span&gt;&lt;/code&gt; for simplicity.&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;UI: With the same values as &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--disable-cache&lt;/span&gt;&lt;/code&gt; Nuitka may now also
be called with &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--clean-cache&lt;/span&gt;&lt;/code&gt; in a compilation or without a
filename argument, and then it will erase those caches current data
before making a compilation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;macOS: Added &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--macos-app-mode&lt;/span&gt;&lt;/code&gt; option for application bundles that
should run in the background (&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;background&lt;/span&gt;&lt;/code&gt;) or are only a UI
element (&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;ui-element&lt;/span&gt;&lt;/code&gt;).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Plugins: In the Nuitka Package Configuration files, the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;when&lt;/span&gt;&lt;/code&gt;
allows now to check if a plugin is active. This allowed us to limit
console warnings to only packages whose plugin was activated.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Plugins: Can now mark a plugin as a GUI toolkit responsible with the
consequence that other toolkit detector plugins are all disabled, so
when using &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;tk-inter&lt;/span&gt;&lt;/code&gt; no longer will you be asked about &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;PySide6&lt;/span&gt;&lt;/code&gt;
plugin, as that is not what you are using apparently.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Plugins: Generalized the GUI toolkit detection to include
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;tk-inter&lt;/span&gt;&lt;/code&gt; as well, so it will now point out that &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;wx&lt;/span&gt;&lt;/code&gt; and the Qt
bindings should be removed for best results, if they are included in
the compilation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Plugins: Added ability to provide data files for macOS &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;Resources&lt;/span&gt;&lt;/code&gt;
folder of application bundles.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;macOS: Fix, Qt WebEngine was not working for framework using Python
builds, like the ones from PyPI. This adds support for both PySide2
and PySide6 to distribute those as well.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;MSYS2: When asking a CPython installation to compress from the POSIX
Python, it crashed on the main filename being not the same.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Scons: Fix, need to preserve environment attached modes when
switching to WinLibs gcc on Windows. This was observed with MSYS2,
but might have effects in other cases too.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="optimization"&gt;
&lt;h2&gt;Optimization&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Python3.10+: When creating dictionaries, lists, and tuples, we use
the newly exposed dictionary free list. This can speedup code that
repeatedly allocates and releases dictionaries by a lot.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Python3.6+: Added fast path to dictionary copy. Compact dictionaries
have their keys and values copied directly. This is inspired by a
Python3.10 change, but it is applicable to older Python as well, and
so we did.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Python3.9+: Faster compiled object creation, esp. on Python platforms
that use a DLLs for libpython, which is a given on Windows. This
makes up for core changes that went unnoticed so far and should
regain relative speedups to standard Python.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Python3.10+: Faster float operations, we use the newly exposed float
free list. This can speed up all kinds of float operations that are
not doable in-place by a lot.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Python3.8+: On Windows, faster object tracking is now available, this
previously had to go through a DLL call, that is now removed in this
way as it was for non-Windows only so far.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Python3.7+: On non-Windows, faster object tracking is now used, this
was regressed when adding support for this version, becoming equally
bad as all of Windows at the time. However, we now managed to restore
it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Optimization: Faster deep copy of mutable tuples and list constants,
these were already faster, but e.g. went up from 137% gain factor to
201% on Python3.10 as a result. We now use guided a deep copy, which
then has the information, what types it is going to copy, removing
the need to check through a dictionary.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Optimization: Also have own allocator function for fixed size
objects. This accelerates allocation of compiled cells, dictionaries,
some iterators, and lists objects.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;More efficient code for object initialization, avoiding one DLL calls
to set up our compiled objects.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Have our own &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;PyObject_Size&lt;/span&gt;&lt;/code&gt; variant, that will be slightly faster
and avoids DLL usage for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;len&lt;/span&gt;&lt;/code&gt; and size hints, e.g. in container
creations.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Avoid using non-optimal &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;malloc&lt;/span&gt;&lt;/code&gt; 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.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Scalability: Generated child mixins are now used for the generated
package metadata hard import nodes calls, and for all instances of
single child tuple containers. These are more efficient for creation
and traversal of the tree, directly improving the Python compile
time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Scalability: Slightly more efficient compile time constant property
detections. For &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;frozenset&lt;/span&gt;&lt;/code&gt; there was not need to check for
hashable values, and some branches could be replaced with e.g.
defining our own &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;EllipsisType&lt;/span&gt;&lt;/code&gt; for use in short paths.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Windows: When using MSVC and LTO, the linking stage was done with
only one thread, we now use the proper options to use all cores. This
is controlled by &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--jobs&lt;/span&gt;&lt;/code&gt; much like C compilation already is. For
large programs this will give big savings in overall execution time.
Added in 1.2.7 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Anti-Bloat: Remove the use of &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pytest&lt;/span&gt;&lt;/code&gt; for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;dash&lt;/span&gt;&lt;/code&gt; package
compilation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Anti-Bloat: Remove the use of IPython for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;dotenv&lt;/span&gt;&lt;/code&gt;, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pyvista&lt;/span&gt;&lt;/code&gt;,
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;python_utils&lt;/span&gt;&lt;/code&gt;, and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;trimesh&lt;/span&gt;&lt;/code&gt; package compilation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Anti-Bloat: Remove IPython usage in &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;rdkit&lt;/span&gt;&lt;/code&gt; improving compile time
for standalone by a lot. Fixed in 1.2.7 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Anti-Bloat: Avoid &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;keras&lt;/span&gt;&lt;/code&gt; testing framework when using that
package.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="organizational"&gt;
&lt;h2&gt;Organizational&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Plugins: The &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;numpy&lt;/span&gt;&lt;/code&gt; 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 &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;numpy.core&lt;/span&gt;&lt;/code&gt; DLLs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;User Manual: Added information about macOS entitlements and Windows
console. These features are supported very well by Nuitka, but needed
documentation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;UI: Remove alternative options from &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--help&lt;/span&gt;&lt;/code&gt; output. These are
there often only for historic reasons, e.g. when an option was
renamed. They should not bother users reading them.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Plugins: Expose the mnemonics option to plugin warnings function, and
use it for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pyside2&lt;/span&gt;&lt;/code&gt; and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pyqt5&lt;/span&gt;&lt;/code&gt; plugins.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Quality: Detect trailing/leading spaces in Nuitka package
configuration &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;description&lt;/span&gt;&lt;/code&gt; values during their automatic check.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;UI: Detect the CPython official flavor on Windows by comparing to
registry paths and consider real prefixes, when being used in
virtualenv more often, e.g. when checking for CPython on Apple.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;UI: Enhanced &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--version&lt;/span&gt;&lt;/code&gt; output to include the C compiler
selection. It is doing that respecting your other options, e.g.
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--clang&lt;/span&gt;&lt;/code&gt;, etc. so it will be helpful in debugging setup issues.&lt;/p&gt;
&lt;p&gt;UI: Some error messages were using &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;%r&lt;/span&gt;&lt;/code&gt; rather than &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;'%s'&lt;/span&gt;&lt;/code&gt; to
output file paths, but that escaped backslashes on Windows, making
them look worse, so we changed away from this.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;UI: Document more clearly what &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--output-dir&lt;/span&gt;&lt;/code&gt; actually controls.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;macOS: Added options hint that the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;Foundation&lt;/span&gt;&lt;/code&gt; module requires
bundle mode to be usable.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;UI: Allow using both &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--follow-imports&lt;/span&gt;&lt;/code&gt; and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--nofollow-imports&lt;/span&gt;&lt;/code&gt;
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.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Reports: Include plugin reasons for pre and post load modules
provided. This solves a TODO and makes it easier to debug plugins.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;UI: Handle &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--include-package-data&lt;/span&gt;&lt;/code&gt; 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.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;GitHub: Migration workflows to using newer actions for Python and
checkout. Also use newer Ubuntu LTS for Linux test runner.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;UI: Catch user error of running Nuitka with the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pythonw&lt;/span&gt;&lt;/code&gt; binary on
Windows.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;UI: Make it clear that &lt;strong&gt;MSYS2&lt;/strong&gt; defaults to &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--mingw64&lt;/span&gt;&lt;/code&gt; mode. It
had been like this, but the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--help&lt;/span&gt;&lt;/code&gt; output didn’t say so.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;GitHub: Updated contribution guidelines for better readability.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;GitHub: Use organisation URLs everywhere, some were still pointing to
the personal rather than the organisation one. While these are
redirected, it is not good to have them like this.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Mastodon: Added link to &lt;a class="reference external" href="https://fosstodon.org/&amp;#64;kayhayen"&gt;https://fosstodon.org/&amp;#64;kayhayen&lt;/a&gt; to the PyPI
package and User Manual.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="cleanups"&gt;
&lt;h2&gt;Cleanups&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Nodes for hard import calls of package meta data now have their base
classes fully automatically created, replacing what was previously
manual code. This aims at making them more consistent and easier to
add.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;When adding the new Scons file for C compiler version output, more
values that are needed for both onefile and backend compilation were
moved to centralized code, simplifying these somewhat again.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Remove unused &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;main_module&lt;/span&gt;&lt;/code&gt; tag. It cannot happen that a module
name matches, and still thinks of itself as &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;__main__&lt;/span&gt;&lt;/code&gt; during
compilation, so that idea was unnecessary.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Generate the dictionary copy variants from template code rather than
having manual duplications. For &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;dict.copy()&lt;/span&gt;&lt;/code&gt;, for deep copy
(needed e.g. when there are escaping mutable keyword argument
constant values in say a function call), and for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;**kw&lt;/span&gt;&lt;/code&gt; 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.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Plugins: Also allow providing generators for providing extra DLLs
much like we already do for data files.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Naming of basic tests now makes sure to use a &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;Test&lt;/span&gt;&lt;/code&gt; suffix, so in
Visual Code selector they are more distinct from Nuitka code modules.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Rather than populating empty dictionaries, helper code now uses
factory functions to create them, passing keys and values, and
allowing values to be optional, removing noisy &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;if&lt;/span&gt;&lt;/code&gt; branches at
call side.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Removed remaining &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;PyDev&lt;/span&gt;&lt;/code&gt; annotations, we don’t need those anymore
for a long time already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cleanup, avoid lists objects for ctypes defined functions and their
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;arglist&lt;/span&gt;&lt;/code&gt;, actually tuples are sufficient and naturally better to
use.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Spelling cleanups were resumed, as an ongoing action.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="tests"&gt;
&lt;h2&gt;Tests&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Added construct test that demonstrates the mutable constant argument
passing for lists to see the performance gains in this area too.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Made construct runner &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--diff&lt;/span&gt;&lt;/code&gt; output usable for interactive usage.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Repaired Nuitka Speedcenter, but it’s not yet too usable for general
consumption. More work will be needed there, esp. to make comparisons
more accessible for the general public.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="summary"&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;The major achievement of this release was the removal of the long lived
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;numpy&lt;/span&gt;&lt;/code&gt; 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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;Some technical things also improved in Scons. Using multiple cores in
LTO with MSVC with help this a lot, although for big compilations
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--lto=no&lt;/span&gt;&lt;/code&gt; probably has to be recommended still.&lt;/p&gt;
&lt;p&gt;More &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;anti-bloat&lt;/span&gt;&lt;/code&gt; work on more packages rounds up the work.&lt;/p&gt;
&lt;p&gt;For macOS specifically, the WebEngine support is crucial to some users,
and the new &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--macos-app-mode&lt;/span&gt;&lt;/code&gt; with more GUI friendly default resolves
long standing problems in this area.&lt;/p&gt;
&lt;p&gt;And for &lt;strong&gt;MSYS2&lt;/strong&gt; and &lt;strong&gt;FreeBSD&lt;/strong&gt;, support has been re-activated, so now
4 OSes work extremely well (others too likely), and on those, most
Python flavors work well.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
</content>
    <link href="https://nuitka.net/posts/nuitka-release-13.html"/>
    <summary>This is to inform you about the new stable release of Nuitka. It is the extremely compatible Python compiler,
“download now”.</summary>
    <category term="Nuitka" label="Nuitka"/>
    <category term="Python" label="Python"/>
    <category term="compiler" label="compiler"/>
    <published>2022-12-28T09:58:00+01:00</published>
  </entry>
  <entry>
    <id>https://nuitka.net/posts/python311-support.html</id>
    <title>Python 3.11 and Nuitka</title>
    <updated>2022-12-10T11:29:24+01:00</updated>
    <author>
      <name>Kay Hayen</name>
    </author>
    <content type="html">&lt;section id="python-3-11-and-nuitka"&gt;

&lt;p&gt;In my &lt;a class="reference external" href="/posts/all-in-with-nuitka.html"&gt;all in with Nuitka&lt;/a&gt; post, I
promised to give you an update on the current status of Python 3.11
support and Nuitka, and this is the report on my busy bee activities
there.&lt;/p&gt;
&lt;section id="what-is-now"&gt;
&lt;h2&gt;What is now&lt;/h2&gt;
&lt;p&gt;Current Nuitka 1.2 and likely the coming 1.3 release, will react pretty
hefty to attempts to compile with Python3.11, so this command:&lt;/p&gt;
&lt;div class="highlight-bash notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;python3.11&lt;span class="w"&gt; &lt;/span&gt;-m&lt;span class="w"&gt; &lt;/span&gt;nuitka&lt;span class="w"&gt; &lt;/span&gt;tests/basics/Asserts.py
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Gives the following output:&lt;/p&gt;
&lt;div class="highlight-default notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;Nuitka&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;WARNING&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;The&lt;/span&gt; &lt;span class="n"&gt;version&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;3.11&amp;#39;&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;currently&lt;/span&gt; &lt;span class="n"&gt;supported&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt; &lt;span class="n"&gt;Expect&lt;/span&gt;
&lt;span class="n"&gt;Nuitka&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;WARNING&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;problems&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;
&lt;span class="n"&gt;FATAL&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;The&lt;/span&gt; &lt;span class="n"&gt;Python&lt;/span&gt; &lt;span class="n"&gt;version&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;3.11&amp;#39;&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;supported&lt;/span&gt; &lt;span class="n"&gt;by&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;1.2.7&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;but&lt;/span&gt; &lt;span class="n"&gt;an&lt;/span&gt; &lt;span class="n"&gt;upcoming&lt;/span&gt; &lt;span class="n"&gt;release&lt;/span&gt; &lt;span class="n"&gt;will&lt;/span&gt; &lt;span class="n"&gt;add&lt;/span&gt; &lt;span class="n"&gt;it&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/section&gt;
&lt;section id="what-you-can-do"&gt;
&lt;h2&gt;What you can do?&lt;/h2&gt;
&lt;p&gt;As a mere mortal, what you can and should do is to consider becoming a
&lt;a class="reference external" href="https://nuitka.net/doc/commercial.html"&gt;subscriber of Nuitka commercial&lt;/a&gt;, even if you do not need the
IP protection features it mostly has. All essential packaging and
performance features are free, and I have put incredible amounts of
works in this, and I need to now make a living off it.&lt;/p&gt;
&lt;p&gt;And working on 3.11 support, just so tings then continue to work, mostly
on my own deserves financial support. Once a year, for weeks on end, I
am re-implementing features that a collective of developers came up
with.&lt;/p&gt;
&lt;p&gt;Otherwise, unless you are CPython core developer responsible for the
changes, I am afraid, not a lot. Having to know both Nuitka and CPython
details is a tall ask. I might be the only one to do this for a while. I
will however strive to get more people involved each time.&lt;/p&gt;
&lt;p&gt;That is not to say this does not happen. Not too long ago, I merged
proposed changes that will help Nuitka with 3.12 compatibility. This
would be nice if it was more frequent, and the fact that it is not, is
probably my fault entirely.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="what-was-done"&gt;
&lt;h2&gt;What was done?&lt;/h2&gt;
&lt;p&gt;In the summer, with release candidates, there was some refactoring done
that aimed at making Nuitka compile, at least with less errors. One of
the changes that was addressed at the time was the reduction of
exception state to only a value.&lt;/p&gt;
&lt;p&gt;In Python during an exception, you typically have a exception “type”,
“value”, and a “traceback”. And these used to be sort of independent
objects, which then through a process called “normalization” got
aligned. E.g. when raising an exception, you would simply put a
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;ZeroDivisionError&lt;/span&gt;&lt;/code&gt; as a type, and a string as the value, and only on
normalization, which was attempted to be done as late as possible, the
actual exception object was created.&lt;/p&gt;
&lt;p&gt;For 3.11 now, in some parts (but not all of course), this got reduced,
and making Nuitka cope with that was a bigger task, and even one that
had then introduced a regression to pre-3.11, i.e. affecting other
versions. I had to make a hotfix because of this for the release that
included these changes. This is of course, due to also cleaning up the
code that was changed, to reduce e.g. duplications that were considered
harmless in the past.&lt;/p&gt;
&lt;p&gt;Now, during the 1.3 releases cycle, many more changes have been
addressed. The CPython core is using now “interpreter frames”, which are
lightweight non-objects, and does only create a frame when an exception
is needed. Nuitka on the other hand used to cache frame objects, that it
also created only when needed. Adapting the interactions with the frame
stack appears somewhat solved, but actually poses some bugs when dealing
with generators that raise exceptions, and is currently being analysed.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="the-process"&gt;
&lt;h2&gt;The Process&lt;/h2&gt;
&lt;p&gt;When the goal is getting 3.11 supported (or any later Python, this will
repeat forever), in a first step it just doesn’t compile on the C level
anymore. First, all kinds of changes need to be addressed that show when
compiling on the C level. Or extra time spent to disable some things to
migrate only later (which I tend to not do), but the unfortunate truth
is, that at that point, running with 3.11 to find out things, is not yet
an option.&lt;/p&gt;
&lt;p&gt;Once compiled 3.11 started being executable, it was hard crashing (worst
case) and asserting (good case) like hell. Many assumptions made proved
to be untrue, or things that used to be true, are no more true. That is
pretty normal when you mingle with internal details of course.&lt;/p&gt;
&lt;p&gt;Right now reference leaks are being seen with generators, and so are
crashes. This is probably the same issue, where some link between
objects, some reference to an object is taken, and what is most likely,
in other instance, it is lost, which then causes corrupted objects.
These are among the hardest things to debug in Python, often the symptom
only shows later. Many times development in this phase is about adding
assertions. This is where we are now.&lt;/p&gt;
&lt;p&gt;The next phase then is to run the CPython 3.10 test suite compiled with
3.11 and compare its results to running with plain 3.11, and expect it
to be the same. It is normal for CPython 3.10 tests to fail with 3.11,
and this does two things.&lt;/p&gt;
&lt;p&gt;Either the test passes where it should not, then 3.11 added extra
checks, e.g. making it illegal to provide certain types of inputs that
were legal in the past, or it fails where 3.11 does not, then it
highlights a behavior change or a mistake in the migration. Another case
of course is it crashing. Then some bug in e.g. frame handling or
exception handling might cause that.&lt;/p&gt;
&lt;p&gt;During this phase it is esp. initially very hard to assess where we
stand. Often one bug affects many tests with different symptoms. We we
just look for things that are easy to analyse.&lt;/p&gt;
&lt;p&gt;In the next phase, the 3.11 test suite is used in the same way. This
will often uncover new features, new behaviors, newly allowed things.
For example Nuitka might reject an input, but that is correct for 3.10,
but not for 3.11 anymore, this this will be added.&lt;/p&gt;
&lt;p&gt;This phase has not even started.&lt;/p&gt;
&lt;p&gt;One interesting case is new test coverage. Often is has happened in the
past that something was incompatible with 3.10 already, but that has
never been seen. Of course, in this instance, the modification will be
backported, this is often revealed when running the 3.11 tests compiled
with 3.11 and comparing the result with pure 3.10.&lt;/p&gt;
&lt;p&gt;And this is also not even started. Once the test suite is adapted for
Nuitka’s needs (avoiding random outputs, to make tests comparable e.g.)
this could be started, and would enhance 3.10 compatibility already with
its findings.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="intermediate-results"&gt;
&lt;h2&gt;Intermediate Results&lt;/h2&gt;
&lt;p&gt;Once the Python3.11 more or less well passed the 3.10 test suite without
big issues, experimental support for it will be added. The warning from
above will be given, but the error will cease.&lt;/p&gt;
&lt;p&gt;But only once the CPython 3.11 test suite is completely passing, it will
be added as supported officially. Again, not all tests have to pass
perfectly for this, cosmetic things are not counted of course.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="when"&gt;
&lt;h2&gt;When&lt;/h2&gt;
&lt;p&gt;Very hard to predict. Supporting existing Nuitka is also a side tracking
thing, that makes it unclear how much time I will have for it. But the
worst things with debugging is that I just never know how much time it
will be. In past releases, the time has varied. I do not know at this
time, what will have to be done for support of 3.11, it clearly is one
of the harder ones. But I am hoping these core changes were the bulk of
the work.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="benefits-for-older-python-too"&gt;
&lt;h2&gt;Benefits for older Python too&lt;/h2&gt;
&lt;p&gt;When I noticed that the dictionary implementation had heavily changed,
and Nuitka’s “illegal” friendship (accessing internal details of it)
caused it to not compile, step one was to compare current details with
3.10 and find that there are a bunch of things that were added over
time. For example one fast branch that was added to 3.10, Nuitka now has
it too, for 3.6 or higher. So we are also back-porting some speed
improvements.&lt;/p&gt;
&lt;p&gt;Also the allocator of 3.11 changed, and as a result, the allocator for
all older Python will be way faster to use, esp. with platforms that use
DLLs.&lt;/p&gt;
&lt;p&gt;There are other benefits, e.g. 3.10 is exposing free lists (re-usable
objects without going through allocation) it is using, allowing Nuitka
to accelerate dictionary object creation esp. on Windows, and so on.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="expected-results"&gt;
&lt;h2&gt;Expected results&lt;/h2&gt;
&lt;p&gt;People tend to expect that gains from Nuitka and enhancements of CPython
stack up. The truth of the matter is, no they do not. CPython is
applying some tricks that Nuitka already did. Not using its bytecode
will then become less of a benefit, but that’s OK, this is not what
Nuitka is about.&lt;/p&gt;
&lt;p&gt;We need to get somewhere else entirely anyway, in terms of speed up. I
will be talking about PGO and C types a lot in the coming year, that is
at least the hope. That is where the “all in” part kicks in.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="final-words"&gt;
&lt;h2&gt;Final Words&lt;/h2&gt;
&lt;p&gt;Look ma, I posted about something that is not complete. I am getting
better.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
</content>
    <link href="https://nuitka.net/posts/python311-support.html"/>
    <summary>In my all in with Nuitka post, I
promised to give you an update on the current status of Python 3.11
support and Nuitka, and this is the report on my busy bee activities
there.</summary>
    <category term="Nuitka" label="Nuitka"/>
    <category term="Python" label="Python"/>
    <category term="compiler" label="compiler"/>
    <published>2022-12-10T11:29:24+01:00</published>
  </entry>
  <entry>
    <id>https://nuitka.net/posts/all-in-with-nuitka.html</id>
    <title>All in with Nuitka</title>
    <updated>2022-12-09T08:22:42+01:00</updated>
    <author>
      <name>Kay Hayen</name>
    </author>
    <content type="html">&lt;section id="all-in-with-nuitka"&gt;

&lt;p&gt;After more than 10 years of working on the Python compiler Nuitka, and
at the age of 50, I have finally decided to take the plunge. My projects
“Nuitka” and “Nuitka commercial” are now my &lt;em&gt;day job&lt;/em&gt;, and I quit my
work in the Air Traffic Community, after working on &lt;a class="reference external" href="https://en.wikipedia.org/wiki/ARTAS"&gt;ARTAS&lt;/a&gt; (a software to create an Air
Situation Picture from radar and other sensors) for 20 years.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="why-now"&gt;
&lt;h1&gt;Why now?&lt;/h1&gt;
&lt;p&gt;That is very good question. I feel I could have done this a long time
ago, and my heart was torn for a while, and also I prepared this for a
while now. Listing back to interviews from 4 years ago, it seems though
as if it had not been on the radar (pun intended).&lt;/p&gt;
&lt;p&gt;So then I launched Nuitka commercial around 1.5 years ago, first as
vapor ware, with early bird customers, and meanwhile it has matured to a
point, where it is the obvious solution to many corporate users, with
big guys picking it up and small business as well. From startups, big
name technology giants, universities, mid sized companies, and from
individuals, I have all kinds of support.&lt;/p&gt;
&lt;p&gt;I liked my old job very much, but it was getting old, and I felt like
Nuitka needs me to fulfil my mission. And my wife needed my help with
driving her to work, which was getting the load to high, something had
to give. And it seems nothing related to what is called Nuitka (my wife,
and the compiler share the name) was going to be that.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="what-will-change"&gt;
&lt;h1&gt;What will change?&lt;/h1&gt;
&lt;p&gt;Already, ever since I launched Nuitka commercial, Nuitka has become way
more of a out of the box experience. It just works, and covers more
packages than ever before, and steps have been taken, to make it
possible to extend this even further with your help. Sure there are
still shortcoming.&lt;/p&gt;
&lt;p&gt;But Nuitka has become very polished, and shows this very much that I
also love details and doing things correctly. I have conducted Nuitka
from day one as an attempt to create a software that would be usable to
the enterprise with a million lines of code, that they cannot check for
unsupported language features, so Nuitka is just fully compatible, to a
level of absurdity.&lt;/p&gt;
&lt;p&gt;Having conducted Nuitka on a level of where a corporate business can
throw it’s code at Nuitka and have it just work, and reliably, this will
only improve now.&lt;/p&gt;
&lt;p&gt;Naturally bugs have happened once in a while, but I was always more
careful. You know, like if this was for safety critical software, on
which lives might depend. Hard to not be affected by that stance.&lt;/p&gt;
&lt;p&gt;So lets talk about other ways I plan to expand.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="nuitka-package-configuration"&gt;
&lt;h1&gt;Nuitka Package Configuration&lt;/h1&gt;
&lt;p&gt;Extending Nuitka with tweaks for package has become increasingly
simpler. Many previous plugins, e.g. for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;torch&lt;/span&gt;&lt;/code&gt;, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;tensorflow&lt;/span&gt;&lt;/code&gt;, and
most recently &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;numpy&lt;/span&gt;&lt;/code&gt;, and definitely also the Qt binding ones in the
future, have been or will be converted to Yaml configuration applied by
generic plugins that deal with DLLs, data-files, tweaks (called
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;anti-bloat&lt;/span&gt;&lt;/code&gt;) etc.&lt;/p&gt;
&lt;p&gt;Adding stuff there is simple, and as of recently, there is even
documentation for it. This is going to be explained in a series of posts
detailing Nuitka Package Configuration, under the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;package_config&lt;/span&gt;&lt;/code&gt;
tag.&lt;/p&gt;
&lt;p&gt;I must say it’s so much fun, I love working with it. But the goal is for
this to have you join it, and PRs are indeed starting to come in more
frequently it seems from first glance, but I need to make this more
known.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="streaming"&gt;
&lt;h1&gt;Streaming&lt;/h1&gt;
&lt;p&gt;I have experimented with streaming in the past, and I absolutely love
it. Without my day job, effectively working two jobs at the same time, I
expect to have the time to do more of them in December and then on a
regular basis.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="python-3-11"&gt;
&lt;h1&gt;Python 3.11&lt;/h1&gt;
&lt;p&gt;There will be a separate post on this issue later this week. I am
scrambling to add support for it and it feels very far already. Many
basic tests already work, but more debugging will be needed. I hope
Nuitka 1.3 will add support for it, at least on the usual experimental
level.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="how-you-can-help"&gt;
&lt;h1&gt;How you can help?&lt;/h1&gt;
&lt;p&gt;Please become a &lt;a class="reference external" href="https://nuitka.net/doc/commercial.html"&gt;subscriber of Nuitka commercial&lt;/a&gt;, even if you do not need the
IP protection features it mostly has. All essential packaging and
performance features are free, and I have put incredible amounts of
works in this, and I need to now make a living off it.&lt;/p&gt;
&lt;p&gt;Right now, I am far from being able to sustain my income from it, and I
am taking a risk with this effort, hoping for support from you.&lt;/p&gt;
&lt;p&gt;Nuitka commercial makes creating a Windows Service a blast. It has a
PySide2 that is compatible with Nuitka (I did make PySide6 compatible
myself, and backported it to PySide2), so if you need to stay on old
software. And for IP protection, it is just incredibly important to not
ship bytecode at all, and with Nuitka commercial, it protects your data
and files at runtime too.&lt;/p&gt;
&lt;p&gt;I am bad at marketing, but good at software, which is one more reason to
purchase it. You know you love these kinds of people. Was that good
marketing? Also, there are share buttons on this page. Please try them
out and let people know about this.&lt;/p&gt;
&lt;p&gt;In future postings, I will make it a regular thing to ask for help with
some of the technical tasks. Stay tuned, there might be something that
you can help with.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="becoming-more-active"&gt;
&lt;h1&gt;Becoming more active&lt;/h1&gt;
&lt;p&gt;I am the kind of person that would much rather do good stuff than to
talk about it, like when it finally supports Python 3.11, normal old me
would just mention it maybe on Twitter once, and have it in the
changelog only.&lt;/p&gt;
&lt;p&gt;I need to get away from that. I need to resume TWN (This week in Nuitka)
and have all plans to do it. Obviously I can get caught up in things,
and may just always do it later when there is more or better news.&lt;/p&gt;
&lt;/section&gt;
</content>
    <link href="https://nuitka.net/posts/all-in-with-nuitka.html"/>
    <summary>After more than 10 years of working on the Python compiler Nuitka, and
at the age of 50, I have finally decided to take the plunge. My projects
“Nuitka” and “Nuitka commercial” are now my day job, and I quit my
work in the Air Traffic Community, after working on ARTAS (a software to create an Air
Situation Picture from radar and other sensors) for 20 years.</summary>
    <category term="NTW" label="NTW"/>
    <category term="Nuitka" label="Nuitka"/>
    <category term="Python" label="Python"/>
    <category term="compiler" label="compiler"/>
    <category term="package_config" label="package_config"/>
    <category term="stream" label="stream"/>
    <published>2022-12-09T08:22:42+01:00</published>
  </entry>
  <entry>
    <id>https://nuitka.net/posts/nuitka-release-12.html</id>
    <title>Nuitka Release 1.2</title>
    <updated>2022-11-26T09:23:00+01:00</updated>
    <author>
      <name>Kay Hayen</name>
    </author>
    <content type="html">&lt;section id="nuitka-release-1-2"&gt;

&lt;p&gt;This is to inform you about the new stable release of &lt;a class="reference external" href="https://nuitka.net"&gt;Nuitka&lt;/a&gt;. It is the extremely compatible Python compiler,
&lt;a class="reference external" href="/doc/download.html"&gt;“download now”&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This release contains a large amount of new compatibility features and a
few new optimization, while again consolidating what we have.
Scalability should be better in many cases.&lt;/p&gt;
&lt;section id="bug-fixes"&gt;
&lt;h2&gt;Bug Fixes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added implicit dependency of &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;thinc&lt;/span&gt;&lt;/code&gt; backend. Fixed in
1.1.1 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Python3.10: Fix, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;match&lt;/span&gt;&lt;/code&gt; statements with unnamed star matches could
give incorrect results. Fixed in 1.1.1 already.&lt;/p&gt;
&lt;blockquote&gt;
&lt;div&gt;&lt;div class="highlight-python notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="k"&gt;match&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
   &lt;span class="k"&gt;case&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="k"&gt;_&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
         &lt;span class="o"&gt;...&lt;/span&gt; &lt;span class="c1"&gt;# y had wrong value here.&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Python3.9+: Fix, file reader objects must convert to &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str&lt;/span&gt;&lt;/code&gt; objects.
Fixed in 1.1.1 already.&lt;/p&gt;
&lt;blockquote&gt;
&lt;div&gt;&lt;div class="highlight-python notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c1"&gt;# This was the `repr` rather than a path value, but it must be usable&lt;/span&gt;
&lt;span class="c1"&gt;# like that too.&lt;/span&gt;
&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;importlib&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;resources&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;files&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;package_name&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;joinpath&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;lala&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added data file of &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;echopype&lt;/span&gt;&lt;/code&gt; package. Fixed in 1.1.1
already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Anti-Bloat: Remove non-sense warning of compiled &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pyscf&lt;/span&gt;&lt;/code&gt;. Fixed in
1.1.1 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;macOS: Fix, in LTO mode using &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;incbin&lt;/span&gt;&lt;/code&gt; can fail, switch to source
mode for constants resources. Fixed in 1.1.2 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Add support for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;sv_ttk&lt;/span&gt;&lt;/code&gt; module. Fixed in 1.1.2
already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;macOS: Fix, was no longer correcting &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;libpython&lt;/span&gt;&lt;/code&gt; path, this was a
regression preventing CPython for creating properly portable binary.
Fixed in 1.1.2 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;macOS: Fix, main binary was not included in signing command. Fixed in
1.1.3 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added implicit dependency of &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;orjson&lt;/span&gt;&lt;/code&gt;. Due to
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;zoneinfo&lt;/span&gt;&lt;/code&gt; not being automatically included anymore, this was
having a segfault. Fixed in 1.1.3 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added support for new &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;shapely&lt;/span&gt;&lt;/code&gt;. Fixed in 1.1.4
already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;macOS: Ignore extension module of non-matching architecture. Some
wheels contain extension modules for only &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;x86_64&lt;/span&gt;&lt;/code&gt; arch, and others
contain them only for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;arm64&lt;/span&gt;&lt;/code&gt;, preventing the standalone build.
Fixed in 1.1.4 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added missing &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;sklearn&lt;/span&gt;&lt;/code&gt; dependencies. Fixed in 1.1.4
already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, packages available through relative import paths could be
confused with the same ones imported by absolute paths. This should
be very hard to trigger, by normal users, but was seen during
development. Fixed in 1.1.4 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Apply import hacks for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pywin32&lt;/span&gt;&lt;/code&gt; modules only on
Windows, otherwise it can break e.g. macOS compilation. Fixed in
1.1.4 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Windows: More robust DLL dependency caching, otherwise e.g. a Windows
update can break things. Also consider plugin contribution, and
Nuitka version, to be absolutely sure, much like we already do for
bytecode caching. Fixed in 1.1.4 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Fix, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;seaborn&lt;/span&gt;&lt;/code&gt; needs the same workaround as &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;scipy&lt;/span&gt;&lt;/code&gt;
for corruption with MSVC. Fixed in 1.1.4 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;UI: Fix, the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;options-nanny&lt;/span&gt;&lt;/code&gt; was no longer functional and therefore
failed to warn about non working options and package usages. Fixed in
1.1.5 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;macOS: Do not use extension modules of non-matching architecture.
Fixed in 1.1.5 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Windows: Fix, resolving symlinks could fail for spaces in paths.
Fixed in 1.1.6 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added missing DLL for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;lightgbm&lt;/span&gt;&lt;/code&gt; module. Fixed in 1.1.6
already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Compatibility: Respect &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;super&lt;/span&gt;&lt;/code&gt; module variable. It is now possible
to have a module level change of &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;super&lt;/span&gt;&lt;/code&gt; but still get compatible
behavior with Nuitka. Fixed in 1.1.6 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Compatibility: Make sure we respect &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;super&lt;/span&gt;&lt;/code&gt; overloads in the
builtin module. Fixed in 1.1.6 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, the anti-bloat replacement code for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;numpy.testing&lt;/span&gt;&lt;/code&gt; was
missing a required function. Fixed in 1.1.6 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;importlib.import_module&lt;/span&gt;&lt;/code&gt; static optimization was mishandling
a module name of &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;.&lt;/span&gt;&lt;/code&gt; with a package name given. Fixed in 1.1.6
already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;macOS: Fix, some extension modules use wrong suffixes in self
references, we need to not complain about this kind of error. Fixed
in 1.1.6 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, do not make &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;ctypes.wintypes&lt;/span&gt;&lt;/code&gt; a hard import on non-Windows.
Nuitka asserted against it failing, where some code handles it
failing on non-Windows platforms. Fixed in 1.1.6 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added data files for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;vedo&lt;/span&gt;&lt;/code&gt; package. Fixed in 1.1.7
already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Plugins: Fix, the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;gi&lt;/span&gt;&lt;/code&gt; plugin did always set &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;GI_TYPELIB_PATH&lt;/span&gt;&lt;/code&gt;
even if already present from user code. Also it did not handle errors
to detect its value during compile time. Fixed in 1.1.7 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added missing dependencies for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;sqlalchemy&lt;/span&gt;&lt;/code&gt; to have all
SQL backends working. Fixed in 1.1.7 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added support Nixpkgs’s default non-writable &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;HOME&lt;/span&gt;&lt;/code&gt; directory.
Fixed in 1.1.8 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, distribution metadata name and package name need not align, need
to preserve the original looked up name from
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;importlib.metadata.distribution&lt;/span&gt;&lt;/code&gt; call. Fixed in 1.1.8 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Windows: Fix, catch usage of unsupported &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;CLCACHE_MEMCACHED&lt;/span&gt;&lt;/code&gt; mode
with MSVC compilation. It is just unsupported.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Windows: Fix, file version was spoiled from product version if it was
the only version given.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Windows: The default for file description in version information was
not as intended.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Plugins: Workaround for PyQt5 as contained in Anaconda providing
wrong paths from the build machine.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;macOS: After signing a binary with a certificate, compiling the next
one was crashing on a warning about initially creating an ad-hoc
binary.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, detect case of non-writable cache path, make explaining error
exit rather than crashing attempting to write to the cache.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;macOS: Added support for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pyobjc&lt;/span&gt;&lt;/code&gt; in version 9.0 or higher.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="new-features"&gt;
&lt;h2&gt;New Features&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Python3.11: For now prevent the execution with 3.11 and give a
warning to the user for a not yet supported version. This can be
overridden with &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--experimental=python311&lt;/span&gt;&lt;/code&gt; but at this times will
not compile anything yet due to required and at this time missing
core changes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;macOS: Added option &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--macos-sign-notarization&lt;/span&gt;&lt;/code&gt; that signs with
runtime signature, but requires a developer certificate from Apple.
As its name implies, this is for use with notarization for their App
store.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;DLLs used via &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;delvewheel&lt;/span&gt;&lt;/code&gt; were so far only handled in the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;zmq&lt;/span&gt;&lt;/code&gt;
plugin, but this has been generalized to cover any package using it.
With that, e.g. &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;shapely&lt;/span&gt;&lt;/code&gt; just works. This probably helps many
other packages as well.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;__compiled__&lt;/span&gt;&lt;/code&gt; and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;__compiled_constant__&lt;/span&gt;&lt;/code&gt; attributes to
compiled functions.&lt;/p&gt;
&lt;p&gt;With this, it can be decided per function what it is and bridges like
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pyobjc&lt;/span&gt;&lt;/code&gt; can use it to create better code on their side for
constant value returning functions.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;support_info&lt;/span&gt;&lt;/code&gt; check to Nuitka package format. Make it clear
that &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pyobjc&lt;/span&gt;&lt;/code&gt; is only supported after &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;9.0&lt;/span&gt;&lt;/code&gt; by erroring out if it
has a too low version. It will not work at all before that version
added support in upstream. Also using this to make it clear that
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;opencv-python&lt;/span&gt;&lt;/code&gt; is best supported in version 4.6 or higher. It
seems e.g. that video capture is not working with 4.5 at this time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--report-template&lt;/span&gt;&lt;/code&gt; which can be used to provide Jinja2
templates to create custom reports, and refer to built-in reports, at
this time e.g. a license reports.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="optimization"&gt;
&lt;h2&gt;Optimization&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Trust the absence of a few selected hard modules and convert those to
static raises of import errors.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For conditional nodes where only one branch exits, and the other does
not, no merging of the trace collection should happen. This should
enhance the scalability and leads to more static optimization being
done after these kinds of branches on variables assigned in such
branches.&lt;/p&gt;
&lt;div class="highlight-python notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;condition1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
   &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
   &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="ne"&gt;KeyError&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;condition2&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
   &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;

&lt;span class="c1"&gt;# Here, &amp;quot;a&amp;quot; is known to be assigned, but before it was only &amp;quot;maybe&amp;quot;&lt;/span&gt;
&lt;span class="c1"&gt;# assigned, like &amp;quot;b&amp;quot; would have to be since, the branch may or may&lt;/span&gt;
&lt;span class="c1"&gt;# not have been taken.&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Do not merge tried blocks that are aborting with an exception handler
that is not aborting. This is very similar to the change for
conditional statements, again there is a control flow branch, that
may have to be merged with an optional part, but sometimes that part
is not optional from the perspective of the code following.&lt;/p&gt;
&lt;div class="highlight-python notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
   &lt;span class="o"&gt;...&lt;/span&gt; &lt;span class="c1"&gt;# potentially raising, but not aborting code&lt;/span&gt;
   &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;something&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="c1"&gt;# this aborts&lt;/span&gt;
&lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="ne"&gt;Exception&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
   &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;

&lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
   &lt;span class="o"&gt;...&lt;/span&gt; &lt;span class="c1"&gt;# potentially raising, but not aborting code&lt;/span&gt;
&lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="ne"&gt;Exception&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
   &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;

&lt;span class="c1"&gt;# Here, &amp;quot;a&amp;quot; is known to be assigned, but before it was only &amp;quot;maybe&amp;quot;&lt;/span&gt;
&lt;span class="c1"&gt;# assigned, like &amp;quot;b&amp;quot; would have to be since, the branch may or may&lt;/span&gt;
&lt;span class="c1"&gt;# not have been taken.&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Exception matches were annotating a control flow escape and an
exception exit, even when it is known that no error is possible to be
happening that comparison.&lt;/p&gt;
&lt;div class="highlight-python notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
   &lt;span class="o"&gt;...&lt;/span&gt;
&lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="ne"&gt;ImportError&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="c1"&gt;# an exception match is done here, that cannot raise&lt;/span&gt;
   &lt;span class="o"&gt;...&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Trust &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;importlib.metadata.PackageNotFoundError&lt;/span&gt;&lt;/code&gt; to exist, with this
some more metadata usages are statically optimized. Added in 1.1.4
already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Handle constant values from trusted imports as trusted values. So
far, trusted import values were on equal footing to regular
variables, which on the module level could mean that no optimization
was done, due to control flow escapes happening.&lt;/p&gt;
&lt;div class="highlight-python notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c1"&gt;# Known to be False at compile time.&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;typing&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;TYPE_CHECKING&lt;/span&gt;
&lt;span class="o"&gt;...&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;TYPE_CHECKING&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
   &lt;span class="kn"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;something&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;normally_unused_unless_type_checking&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;In this code example above, the static optimization was not done
because the value may be changed on the outside. However, for trusted
constants, this is no longer assumed to be happening. So far only
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;if&lt;/span&gt; &lt;span class="pre"&gt;typing.TYPE_CHECKING:&lt;/span&gt;&lt;/code&gt; using code had been optimized.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;macOS: Use sections for main binary constants binary blob rather than
C source code (which we started in a recent hotfix due to LTO issues
with incbin) and onefile payload. The latter enables notarization of
the onefile binary as well and makes it faster to unpack as well.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Windows: Do not include DLLs from SxS. For PyPI packages these are
generally unused, and self compiled modules won’t be SxS
installations either. We can add it back where it turns out needed.
This avoids including &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;comctl32&lt;/span&gt;&lt;/code&gt; and similar DLLs, which ought to
come from the OS, and might impede backward compatibility only.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Disabled C compilation of very large &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;azure&lt;/span&gt;&lt;/code&gt; modules.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The per module usage information of other modules was only updated in
first pass was used in later passes. But since they can get optimized
away, we have to update every time, avoiding to still include unused
modules.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Anti-Bloat: Fight the use of &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;dask&lt;/span&gt;&lt;/code&gt; in &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;xarray&lt;/span&gt;&lt;/code&gt; and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pint&lt;/span&gt;&lt;/code&gt;,
adding a mode controlling its use. This is however still incomplete
and needs more work.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, the anti-bloat configuration for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;rich.pretty&lt;/span&gt;&lt;/code&gt; introduced a
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;SyntaxError&lt;/span&gt;&lt;/code&gt; that went unnoticed. In the future compilation will
abort when this happens.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added support for including DLLs of &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;llvmlite.binding&lt;/span&gt;&lt;/code&gt;
package.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Anti-Bloat: Avoid using &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pywin32&lt;/span&gt;&lt;/code&gt; through &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pkg_resources&lt;/span&gt;&lt;/code&gt; import.
This seems rather pointless and follows an optimization done for the
inline copy of Nuitka already, the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;ctypes&lt;/span&gt;&lt;/code&gt; code path works just
fine, and this may well be the only reason why &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pywin32&lt;/span&gt;&lt;/code&gt; is
included, which is by itself relatively large.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cache directory contents when scanning for modules. The &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;sys.path&lt;/span&gt;&lt;/code&gt;
and package directories were listed over and over, wasting time
during the import analysis.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Optimization: Was not caching not found modules, but retrying every
time for each usage, potentially wasting time during import analysis.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Anti-Bloat: Initial work to avoid &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pytest&lt;/span&gt;&lt;/code&gt; in patsy, it is however
incomplete.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="organizational"&gt;
&lt;h2&gt;Organizational&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;User Manual: Explain how to create 64/32 bits binaries on Windows,
with there being no option to control it, this can otherwise be a bit
unobvious that you have to just use the matching Python binary.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;UI: Added an example for a cached onefile temporary location spec to
the help output of &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--onefile-tempdir-spec&lt;/span&gt;&lt;/code&gt; to make cached more
easy to achieve in the proper way.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;UI: Quote command line options with space in value better, no need to
quote an affected command line option in its entirety, and it looks
strange.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;macOS: Catch user error of disabling the console without using the
bundle mode, as it otherwise it has no effect.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;macOS: Warn about not providing an icon with disabled console,
otherwise the dock icon is empty, which just looks bad.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Debian: Also need to depend on &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;glob2&lt;/span&gt;&lt;/code&gt; packages which the yaml
engine expects to use when searching for DLLs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Debian: Pertain inline copies of modules in very old builds, there is
e.g. no &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;glob2&lt;/span&gt;&lt;/code&gt; for older releases, but only recent Debian releases
need very pure packages, our backport doesn’t have to do it right.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;macOS: More reliable detection of Homebrew based Python. Rather than
checking file system via its &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;sitecustomize&lt;/span&gt;&lt;/code&gt; contents. The
environment variables are only present to some usages.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Installations with pip did not include all license, README files,
etc. which however was intended. Also the attempt to disable bytecode
compilation for some inline copies was not effective yet.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Renamed &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pyzmq&lt;/span&gt;&lt;/code&gt; plugin to &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;delvewheel&lt;/span&gt;&lt;/code&gt; as it is now absolutely
generic and covers all uses of said packaging technique.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Caching: Use cache directory for cached downloads, rather than
application directory, which is just wrong. This will cause all
previously cached downloads to become unused and repeated.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Quality: Updated development requirements to latest &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;black&lt;/span&gt;&lt;/code&gt;,
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;isort&lt;/span&gt;&lt;/code&gt;, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;yamllint&lt;/span&gt;&lt;/code&gt;, and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;tqdm&lt;/span&gt;&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Visual Code: Added recommendation for extension for Debian packaging
files.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added warning for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;PyQt5&lt;/span&gt;&lt;/code&gt; usage, since its support is very
incomplete. Made the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;PyQt6&lt;/span&gt;&lt;/code&gt; warning more concrete. It seems only
Qt threading does not work, which is of course still significant.
Instead PySide2 and PySide6 are recommended.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;UI: Have dedicated options group for onefile, the spec for the
temporary files is not a Windows option at all anymore. Also move the
warnings group to the end, people need to see the inclusion related
group first.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;User Manual: Explain how to create 64/32 bits binaries on Windows,
which is not too obvious.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="cleanups"&gt;
&lt;h2&gt;Cleanups&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Moved PySide plugins DLL search extra paths to the Yaml
configuration. In this way it is not dependent on the plugin being
active, avoiding cryptic errors on macOS when they are not found.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Plugins: Avoid duplicate link libraries due to casing. We are now
normalizing the link library names, which avoids e.g. &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;Shell32&lt;/span&gt;&lt;/code&gt; and
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;shell32&lt;/span&gt;&lt;/code&gt; to be in the result.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cleanups to prepare a PyLint update that so otherwise failed due to
encountered issues.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Plugins: Pass so called build definitions for generically. Rather
than having dedicated code for each, and plugins can now provide them
and pass their index to the scons builds.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Onefile: Moved file handling code to common code reducing code
duplication and heavily cleaning up the bootstrap code generally.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Onefile: The CRC32 checksum code was duplicated between constants
blob and onefile, and has moved to shared code, with an actual
interface to take the checksum.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Spelling cleanups resumed, e.g. this time more clearly distinguishing
between &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;run&lt;/span&gt; &lt;span class="pre"&gt;time&lt;/span&gt;&lt;/code&gt; and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;runtime&lt;/span&gt;&lt;/code&gt;, the first is when the program
executes, but the latter can be an environment provided by a C
compiler.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="tests"&gt;
&lt;h2&gt;Tests&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Tests: Added test that applies anti-bloat configuration to all found
modules.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Tests: Tests: Avoid including unused &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;nuitka.tools&lt;/span&gt;&lt;/code&gt; code in
reflected test, which should make it faster. The compiler itself
doesn’t use that code.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="summary"&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;This release is again mainly a consolidation of previous release, as
well as finishing off existing features. Optimization added in previous
releases should have all regressions fixed now, again with a strong
series of hotfixes.&lt;/p&gt;
&lt;p&gt;New optimization was focused around findings with static optimization
not being done, but still resulting in general improvements. Letting
static optimization drive the effort is still paying off.&lt;/p&gt;
&lt;p&gt;Scalability has seen improvements through some of the optimization, this
time a lot less anti-bloat work has been done, and some things are only
started. The focus will clearly now shift to making this a community
effort. Expect postings that document the Yaml format we use.&lt;/p&gt;
&lt;p&gt;For macOS specifically, with the sections work, onefile should launch
faster, should be more compatible with signing, and can now be used in
notarization, so for that platform, things are more round.&lt;/p&gt;
&lt;p&gt;For Windows, a few issues with version information and onefile have been
addressed. We should be able to use memory mapped view on this platform
too, for faster unpacking of the payload, since it doesn’t have to go
through the file anymore.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
</content>
    <link href="https://nuitka.net/posts/nuitka-release-12.html"/>
    <summary>This is to inform you about the new stable release of Nuitka. It is the extremely compatible Python compiler,
“download now”.</summary>
    <category term="Nuitka" label="Nuitka"/>
    <category term="Python" label="Python"/>
    <category term="compiler" label="compiler"/>
    <published>2022-11-26T09:23:00+01:00</published>
  </entry>
  <entry>
    <id>https://nuitka.net/posts/nuitka-release-11.html</id>
    <title>Nuitka Release 1.1</title>
    <updated>2022-10-16T10:56:00+02:00</updated>
    <author>
      <name>Kay Hayen</name>
    </author>
    <content type="html">&lt;section id="nuitka-release-1-1"&gt;

&lt;p&gt;This is to inform you about the new stable release of &lt;a class="reference external" href="https://nuitka.net"&gt;Nuitka&lt;/a&gt;. It is the extremely compatible Python compiler,
&lt;a class="reference external" href="/doc/download.html"&gt;“download now”&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This release contains a large amount of new compatibility features,
while consolidating what we have. Scalability should be better in some
cases.&lt;/p&gt;
&lt;section id="bug-fixes"&gt;
&lt;h2&gt;Bug Fixes&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Standalone: Enhanced dependency scan of dependent DLLs to forward the
containing package, so it can be searched in as well. This fixed at
least PySide on macOS. Fixed in 1.0.1 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;macOS: Enhanced dependency detection to use normalized paths and
therefore to be more stable. Fixed in 1.0.1 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added support for the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;networkx&lt;/span&gt;&lt;/code&gt; package which uses new
support for a function decorator trying to copy function default
values. Fixed in 1.0.1 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Include data files for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pandas.io.format&lt;/span&gt;&lt;/code&gt; package. This
one has Jinja2 template files that will be needed when using this
package.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Python3.10: Fix, could crash in case a class was not giving &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;match&lt;/span&gt;&lt;/code&gt;
arguments, but the user did attempt to match them. This happened e.g.
with &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;range&lt;/span&gt;&lt;/code&gt; objects. Fixed in 1.0.2 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added data files needed for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pyenchant&lt;/span&gt;&lt;/code&gt; package. Fixed
in 1.0.2 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Python3.10: Fix, matching sequence with &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;as&lt;/span&gt;&lt;/code&gt; assignments in them
didn’t check for sub-pattern given. Fixed in 1.0.2 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Fix, do not attempt to list non-existent &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;PATH&lt;/span&gt;&lt;/code&gt; entries
on Windows, these can crash the dependency detection otherwise. Fixed
in 1.0.2 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Fix, on newer Linux, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;linux-vdso.so.1&lt;/span&gt;&lt;/code&gt; appears in
output of &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;ldd&lt;/span&gt;&lt;/code&gt; in a way that suggests it may exist, which of
course it does not, this is a kernel virtual DLL. Fixed in 1.0.3
already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, comparison expressions could give wrong results as a regression
of the new release. Fixed in 1.0.3 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, on older Python (before 3.6), it could crash on data files
defined in the Yaml config. Fixed in 1.0.4 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, binary operations could give wrong results as a regression of
the new release. Fixed in 1.0.4 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added support for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pyzbar&lt;/span&gt;&lt;/code&gt; package. Fixed in 1.0.5
already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Fix, empty directory structures were not working anymore
due to a regression in the last release. Fixed in 1.0.5 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Windows: Fix, detected Pythons from Windows registry may of course
fail to execute, because they were e.g. manually deleted. This would
show e.g. in onefile compression. Fixed in 1.0.5 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Onefile: Fix, using a too old &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;zstandard&lt;/span&gt;&lt;/code&gt; without finding another
Python with a suitable one, lead to run time unpacking errors. Fixed
in 1.0.6 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, the inline copy of Jinja2 imported &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;logging&lt;/span&gt;&lt;/code&gt; for no good
reason, which lead to errors for users who have a module of the same
name, that it was then using instead. Fixed in 1.0.6 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, disable LTO mode for Anaconda Python, it is known to not work.
Fixed in 1.0.6 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Linux: Fix, no need to insist on icon path for onefile anymore. Fixed
in 1.0.6 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Fix, the new version &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;certifi&lt;/span&gt;&lt;/code&gt; was not working on
Windows and 3.10 anymore. Fixed in 1.0.7 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added support for more &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;rapidfuzz&lt;/span&gt;&lt;/code&gt; implicit
dependencies. Fixed in 1.0.8 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added support for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;vibora&lt;/span&gt;&lt;/code&gt;. Fixed in 1.0.8 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, must not expose module name objects to Python import hooks.
Fixed in 1.0.8 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, calls to bound methods of string values generated incorrect
calls. Fixed in 1.0.8 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, do not crash in version detection on &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;gcc&lt;/span&gt;&lt;/code&gt; error exit querying
of its version.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added back support for older versions of the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pyzmq&lt;/span&gt;&lt;/code&gt;
package.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Ignore &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;PATH&lt;/span&gt;&lt;/code&gt; elements that fail to be listed as a
directory. It appears e.g. on Windows, folders can exist, despite
being unusable in fact. These can then cause errors in DLL dependency
scan. Also avoid having &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;PATH&lt;/span&gt;&lt;/code&gt; set when executing dependency
walker, it appears to use it even if not asked to.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added support for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;tzlocal&lt;/span&gt;&lt;/code&gt; package.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Python3.10: Fix, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;complex&lt;/span&gt;&lt;/code&gt; literals were not working for mappings
in &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;match&lt;/span&gt;&lt;/code&gt; statements.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;bool&lt;/span&gt;&lt;/code&gt; built-in expressions were not properly annotating
exception raises, where the value cannot raise on truth check.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added support for the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;agscheduler&lt;/span&gt;&lt;/code&gt; package. Plugins
must be done manually still with explicit &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--include-module&lt;/span&gt;&lt;/code&gt; calls.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added support for using &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;shapely&lt;/span&gt;&lt;/code&gt; in Anaconda as well.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Debian: Fix, versioned dependency for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;libzstd&lt;/span&gt;&lt;/code&gt; should also be in
package, this should restore Nuitka package builds for Debian Jessie.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added support for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;vtk&lt;/span&gt;&lt;/code&gt; package.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Windows: Fix, avoid using &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pywin32&lt;/span&gt;&lt;/code&gt; in our appdirs usage, it might
be a broken installation and is optional to &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;appdirs&lt;/span&gt;&lt;/code&gt; anyway, which
then will fallback to using &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;ctypes&lt;/span&gt;&lt;/code&gt; to make the lookups.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added support for more &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pandas&lt;/span&gt;&lt;/code&gt; versions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Adding support for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;mkl&lt;/span&gt;&lt;/code&gt; implicit DLL usage in
Anaconda.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added support for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;jsonschema&lt;/span&gt;&lt;/code&gt; with Python 3.10.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added support for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pyfiglet&lt;/span&gt;&lt;/code&gt; fonts data files.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Scons: Avoid gcc linker command line length limits for module mode
too.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added data file of &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;distributed.config&lt;/span&gt;&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Add support for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;cv2&lt;/span&gt;&lt;/code&gt; GUI on Linux, the Qt platform
plugin is now included.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, the anti-bloat configuration for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;numpy.testing&lt;/span&gt;&lt;/code&gt; tools exposed
an incomplete &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;suppress_warnings&lt;/span&gt;&lt;/code&gt; replacement that could lead to
errors in some functions of &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;numpy&lt;/span&gt;&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Fix DLL dependency caching on Windows, need to consider
DLL content of course too.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added missing dependency for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;torchvision&lt;/span&gt;&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added support for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;torchvision&lt;/span&gt;&lt;/code&gt; on Anaconda as well.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added support for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;panda3d&lt;/span&gt;&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Windows: Fix, need to make sure to use UTF-8 encoding for define
values like company name. Otherwise the local system encoding is
used, but the C compiler expects UTF-8 in wide literals. This may
crash of give wrong results.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;facenet_torch&lt;/span&gt;&lt;/code&gt; data files.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Anaconda: Include &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;libstdc++.so&lt;/span&gt;&lt;/code&gt; on Linux or else e.g. &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;cv2&lt;/span&gt;&lt;/code&gt; will
not work with system library.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Windows: Fix, can have file version without a company name.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="new-features"&gt;
&lt;h2&gt;New Features&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Python3.10: Added support for assignments in &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;match&lt;/span&gt;&lt;/code&gt; alternatives
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;|&lt;/span&gt;&lt;/code&gt; syntax.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Compatibility: Register Nuitka meta path based loader with
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pkg_resources&lt;/span&gt;&lt;/code&gt; such that checking resource presence with
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;has_resource&lt;/span&gt;&lt;/code&gt; works too. This should also add support for using
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;jinja2.PackageLoader&lt;/span&gt;&lt;/code&gt;, previously only &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;jinja2.FileSystemLoader&lt;/span&gt;&lt;/code&gt;
worked. Fixed in 1.0.1 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Compatibility: Make function &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;__defaults__&lt;/span&gt;&lt;/code&gt; attribute size
changeable. For a long time, this was a relatively big issue for some
packages, but now this is supported as well.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Compatibility: Added support for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;importlib.metadata.distribution&lt;/span&gt;&lt;/code&gt;
and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;importlib_metadata.distribution&lt;/span&gt;&lt;/code&gt; functions as well
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;importlib.metadata.metadata&lt;/span&gt;&lt;/code&gt; and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;importlib_metadata.metadata&lt;/span&gt;&lt;/code&gt;
functions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Onefile: Added support for including other binaries than the main
executable in the payload. So far on non-Windows, we only made the
main binary executable, hard coded, and nothing else. But Some
things, e.g. Qt web engine, do require binaries to be used, and these
no longer have the issue of missing x-bit on macOS and Linux now.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Resolve executable path when called through symbolic
link, which makes file resolutions work properly for it, for this
type of installing it in &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;%PATH%&lt;/span&gt;&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Python3.9+: Added support for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;importlib.resources.files&lt;/span&gt;&lt;/code&gt; with
compiled modules.&lt;/p&gt;
&lt;p&gt;It returns traversable objects, which can be used to opens files,
checks them, etc. and this e.g. allows &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;jsonschema&lt;/span&gt;&lt;/code&gt; to work with
Python 3.10, despite bugs in CPython’s compatibility layer.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;UI: Added interface method to specify filename patterns with package
data inclusion option, making &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--include-package-data&lt;/span&gt;&lt;/code&gt; usable in
many more cases, picking the only files or file types you want. You
can now use &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--include-package-data=package_name=*.txt&lt;/span&gt;&lt;/code&gt; and select
only a subset of package data files in this way. Before this, it
included everything and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--noinclude-data-files&lt;/span&gt;&lt;/code&gt; would have to be
used.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;macOS: Make &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;runtime&lt;/span&gt;&lt;/code&gt; signing an experimental option.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Consistently allow &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;when&lt;/span&gt;&lt;/code&gt; conditions for all package configuration
elements, e.g. also DLLs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Plugins: Added method to overload to work on standalone binary
specifically. This makes it easier to only modify that specific
binary.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Plugins: Added support for regular expressions in anti-bloat
replacements, with new &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;replacements_re&lt;/span&gt;&lt;/code&gt; code.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="optimization"&gt;
&lt;h2&gt;Optimization&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Add support for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;os.path&lt;/span&gt;&lt;/code&gt; hard module imports along with
specialized nodes for file tests &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;os.path.exists&lt;/span&gt;&lt;/code&gt;,
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;os.path.isfile&lt;/span&gt;&lt;/code&gt;, and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;os.path.isdir&lt;/span&gt;&lt;/code&gt; aiming at tracking used
files, producing warnings about missing files in the future.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Do not include &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;concurrent&lt;/span&gt;&lt;/code&gt; standard library package
automatically. This avoids the inclusion of &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;multiprocessing&lt;/span&gt;&lt;/code&gt; which
we essentially had reverted during last release cycle.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Do not include &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;zoneinfo&lt;/span&gt;&lt;/code&gt; standard library package
automatically. It has many data files and is often not used (yet).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Do not include &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;asyncio&lt;/span&gt;&lt;/code&gt; standard library package
automatically anymore.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Avoid compilation of large generated codes in the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;asyncua&lt;/span&gt;&lt;/code&gt;
package.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Compile time optimize &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pkg_resources.iter_entry_points&lt;/span&gt;&lt;/code&gt; too, such
that these can be used to resolve plugin modules, which helps with
adding support for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;agscheduler&lt;/span&gt;&lt;/code&gt; package plugins. Note that these
still need to be manually included with &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--include-module&lt;/span&gt;&lt;/code&gt; but now
that works.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For known truth values of the right hand side of &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;and&lt;/span&gt;&lt;/code&gt; or &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;or&lt;/span&gt;&lt;/code&gt;
conditions, reduce the expression as far as possible.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added dedicated assignment node for hard imports, which then are
propagated in classes as well, allowing for more static optimization
for code on the class level.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added linker options to make static &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--static-libpython&lt;/span&gt;&lt;/code&gt; work with
clang on Linux as well.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;macOS: Make sure &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;libpython&lt;/span&gt;&lt;/code&gt; is loaded relative to the executable.
This is needed for at least Anaconda Python.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;macOS: Fix, need to search environment specific DLL paths and only
then global paths, otherwise mixed Python versions will not work
correctly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Anti-Bloat: Remove IPython usage in &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;rich&lt;/span&gt;&lt;/code&gt; package.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Anti-Bloat: Avoid &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;doctest&lt;/span&gt;&lt;/code&gt; dependency when using &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pyrect&lt;/span&gt;&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Anti-Bloat: Some &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;unittest&lt;/span&gt;&lt;/code&gt; removals from &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pytorch&lt;/span&gt;&lt;/code&gt; using
libraries.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Keep the Scons report items sorted, or else it varies for the hashing
of dependencies with Python versions before 3.6, causing cache misses
without need.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="organizational"&gt;
&lt;h2&gt;Organizational&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;UI: Output the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;.cmd&lt;/span&gt;&lt;/code&gt; file created (if any) on Windows, e.g. when
run in a virtualenv or for uninstalled Python versions, it will
otherwise not run in accelerated mode, but previously the output
suggested to run the executable directly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;UI: Enhanced command line option description of
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--include-plugin-directory&lt;/span&gt;&lt;/code&gt; which is frequently misunderstood.
That option barely does what people want it to do. Point them to
using the other options that are easy to use and will work.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;UI: Specified needed Python version for use in &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--python-for-scons&lt;/span&gt;&lt;/code&gt;
so users can know ahead of time what versions are suitable.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Reports: Added information about data files including, optimization
times per module, active plugins.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Debugging: Repaired offline DLL dependency listing tool, such that it
can be used during Windows DLL analysis.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Make &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--xml&lt;/span&gt;&lt;/code&gt; accept a filename for the node tree dump, and change
it so it can be executed in addition to actual compilation. This way
we need not be super-robust about keeping stdout clean, to not break
XML parsing.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Plugins: Avoid useless warning about PySide2 plugin usage if another
Qt plugin is actually selected.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;UI: Catch error of directories being used as data files where plain
files are expected and point out that other options must be used.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;User Manual: Added section about accessing files in standalone mode
too, so people can make sure it works properly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Onefile: Using &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;%TEMP%&lt;/span&gt;&lt;/code&gt; folder should not by itself prevent cached
onefile mode, only really variable paths should. People may want to
have this as some kind of temporary cache still.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;UI: Catch user error of using elements, that resolve to absolute
values in the middle of path specs, so using e.g.
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;something/%PROGRAM%&lt;/span&gt;&lt;/code&gt; is now a mistake caught at compile time.
These values can only be at the start of spec values naturally.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Quality: Updated to newer version of &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;rstfmt&lt;/span&gt;&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;UI: Nicer error message when a forbidden import is requested as an
implicit import by a plugin.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Python3.11: Adapted to allocator and exception state changes, but
more will be needed to compile at all.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Visual Code: Find &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;clang-format&lt;/span&gt;&lt;/code&gt; from the recommended C++ extension
of Visual Code, which makes it finally available on macOS easily too.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;UI: Quote command line argument values as necessary when stating them
in the logging. Otherwise they are not directly usable on the shell
and also less readable.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Debian: Do not list fake modules as used debian packages codes, which
could e.g. happen with the pre-load code of &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pkg_resources&lt;/span&gt;&lt;/code&gt; if that
is from a Debian package. Fake packages should not be mentioned for
these lists though.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Nuitka-Python: Added support to set link time flags coming from
statically included packages.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For our &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;isort&lt;/span&gt;&lt;/code&gt; trick of splitting files in two parts (mostly to
setup import paths for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;nuitka&lt;/span&gt;&lt;/code&gt; package), make sure the second
parts starts with a new line.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added more usable form &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--output-filename&lt;/span&gt;&lt;/code&gt; to specify the output
filename, the short form has become barely usable after we switched
to enforcing no space separation for command line arguments.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;UI: Check if output filename’s directory exists ahead of time, and
error exit if not, otherwise compilation crashed only in the very
end, trying to create the final result.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;UI: When exiting with no error code, do not use red color or
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;FATAL&lt;/span&gt;&lt;/code&gt; error annotation, that is not justified.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Quality: Make sure the Yaml auto-format does not change effective
contents.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Quality: Added ability to limit autoformat by file type, which can be
handy when e.g. only the yaml files should be scanned.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;UI: Removed &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--windows-onefile-tempdir-spec&lt;/span&gt;&lt;/code&gt; alias of
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--onefile-tempdir-spec&lt;/span&gt;&lt;/code&gt; option, it is no longer Windows specific.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="cleanups"&gt;
&lt;h2&gt;Cleanups&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Prefer single quotes rather than double quotes in our package
configuration Yaml files, otherwise esp. regular expressions with
escapes become very confusing.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Move import hacks to general mechanism in Yaml package configuration
files. This is for extra paths from package names or from directory
paths relative to the package. This removes special purpose code from
core code paths and allows their reuse.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Again more spelling cleanups have been done, to make the code cleaner
to read and search.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Unified how plugins treat iteration over their value list, and how
the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;when&lt;/span&gt;&lt;/code&gt; condition is applied for the various kinds of sections.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Output compilation command that failed during coverage taking, which
makes it unnecessary to attempt to reconstruct what happened from
test modes.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="tests"&gt;
&lt;h2&gt;Tests&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Added coverage for comparisons that need argument swaps.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Allow more time in onefile keyboard signal test, otherwise it can be
a race on slow machines, e.g. emulated machines.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Tests: Added support for running a local web server.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="summary"&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;This release is mainly a consolidation of previous release. Optimization
added in previous release did in fact introduce regressions, that needed
to be addressed and were cause for relatively many hotfixes.&lt;/p&gt;
&lt;p&gt;The Yaml Nuitka Package Configuration feature is getting ever more
powerful, but is not one bit more documented, such that the community as
a whole is not yet capable of adding missing dependencies, data files,
DLLs, and even anti-bloat patches.&lt;/p&gt;
&lt;p&gt;New optimization was focused around compatibility with very few
exceptions, where the non-automatic standard library work is standing
out, and allows for smaller binaries in many cases.&lt;/p&gt;
&lt;p&gt;Scalability has seen improvements through a few optimization, but mainly
again with anti-bloat work being done. This is owed to the fact that
consolidation was the name of the game.&lt;/p&gt;
&lt;p&gt;For Anaconda specifically, a lot more software is covered, and
generally, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;cv2&lt;/span&gt;&lt;/code&gt; and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;torch&lt;/span&gt;&lt;/code&gt; related tools are now working better,
but it seems DLL handling will remain problematic in many instances.&lt;/p&gt;
&lt;p&gt;The compilation report contains much more information and is getting
there is terms of completeness. At some point, we should ask for it in
bug reports.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
</content>
    <link href="https://nuitka.net/posts/nuitka-release-11.html"/>
    <summary>This is to inform you about the new stable release of Nuitka. It is the extremely compatible Python compiler,
“download now”.</summary>
    <category term="Nuitka" label="Nuitka"/>
    <category term="Python" label="Python"/>
    <category term="compiler" label="compiler"/>
    <published>2022-10-16T10:56:00+02:00</published>
  </entry>
  <entry>
    <id>https://nuitka.net/posts/nuitka-release-10.html</id>
    <title>Nuitka Release 1.0</title>
    <updated>2022-08-16T13:45:00+02:00</updated>
    <author>
      <name>Kay Hayen</name>
    </author>
    <content type="html">&lt;section id="nuitka-release-1-0"&gt;

&lt;p&gt;This is to inform you about the new stable release of &lt;a class="reference external" href="https://nuitka.net"&gt;Nuitka&lt;/a&gt;. It is the extremely compatible Python compiler,
&lt;a class="reference external" href="/doc/download.html"&gt;“download now”&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This release contains a large amount of new features, while
consolidating what we have with many bug fixes. Scalability should be
dramatically better, as well as new optimization that will accelerate
some code quite a bit. See the summary, how this release is paving the
way forward.&lt;/p&gt;
&lt;section id="bug-fixes"&gt;
&lt;h2&gt;Bug Fixes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Python3: Fix, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;bytes.decode&lt;/span&gt;&lt;/code&gt; with only &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;errors&lt;/span&gt;&lt;/code&gt; argument given
was not working. Fixed in 0.9.1 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;MSYS2: Fix, the accelerate mode &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;.cmd&lt;/span&gt;&lt;/code&gt; file was not working
correctly. Fixed in 0.9.1 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Onefile: Fix, the bootstrap when waiting for the child, didn’t
protect against signals that interrupt this call. This only affected
users of the non-public &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--onefile-tempdir&lt;/span&gt;&lt;/code&gt; option on Linux, but
with that becoming the default in 1.0, this was discovered. Fixed in
0.9.1 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pkg_resources&lt;/span&gt;&lt;/code&gt; compile time generated &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;Distribution&lt;/span&gt;&lt;/code&gt; values
could cause issues with code that put it into calls, or in tried
blocks. Fixed in 0.9.1 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added implicit dependencies of &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;Xlib&lt;/span&gt;&lt;/code&gt; package. Fixed in
0.9.1 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;macOS: Fix, the package configuration for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;wx&lt;/span&gt;&lt;/code&gt; had become invalid
when restructuring the Yaml with code and schema disagreeing on
allowed values. Fixed in 0.9.1 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix: The &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str.format&lt;/span&gt;&lt;/code&gt; with a single positional argument didn’t
generate proper code and failed to compile on the C level. Fixed in
0.9.1 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, the type shape of &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str.count&lt;/span&gt;&lt;/code&gt; result was wrong. Fixed in 0.9.1
already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;UI: Fix, the warning about collision of just compiled package and
original package in the same folder hiding the compiled package
should not apply to packages without an &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;__init__.py&lt;/span&gt;&lt;/code&gt; file, as
those do &lt;strong&gt;not&lt;/strong&gt; take precedence. Fixed in 0.9.2 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Debugging: Fix, the fallback to &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;lldb&lt;/span&gt;&lt;/code&gt; from &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;gdb&lt;/span&gt;&lt;/code&gt; when using the
option &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--debugger&lt;/span&gt;&lt;/code&gt; was broken on anything but Windows. Fixed in
0.9.2 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Python3.8: The module &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;importlib.metadata&lt;/span&gt;&lt;/code&gt; was not recognized
before 3.9, but actually 3.8 already has it, causing the compile time
resolution of package versions to not work there. Fixed in 0.9.3
already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Fix, at least on macOS we should also scan from parent
folders of DLLs, since they may contain sub-directories in their
names. This is mostly the case, when using frameworks. Fixed in 0.9.2
already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added package configuration for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;PyQt5&lt;/span&gt;&lt;/code&gt; to require
onefile bundle mode on macOS, and recommend to disable console for
PyQt6. This is same as we already do for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;PySide2&lt;/span&gt;&lt;/code&gt; and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;PySide6&lt;/span&gt;&lt;/code&gt;.
Fixed in 0.9.2 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Removed stray macOS onefile bundle package configuration
for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pickle&lt;/span&gt;&lt;/code&gt; module which must have been added in error. Fixed in
0.9.2 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;UI: Catch user error of attempting to compile the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;__init__.py&lt;/span&gt;&lt;/code&gt;
rather than the package directory. Fixed in 0.9.2 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, hard name import nodes failed to clone, causing issues in
optimization phase. Fixed in 0.9.2 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, avoid warnings given with gcc 11. Fixed in 0.9.2 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, dictionary nodes where the operation itself has no effect, e.g.
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;dict.copy&lt;/span&gt;&lt;/code&gt; were not properly annotating that their dictionary
argument could still cause a raise and have side effects, triggering
an assertion violation in Nuitka. Fixed in 0.9.2 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pynput&lt;/span&gt;&lt;/code&gt; implicit dependencies on Linux. Fixed in
0.9.2 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, boolean condition checks on variables converted immutable
constant value assignments to boolean values, leading to incorrect
code execution. Fixed in 0.9.2 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Python3.9: Fix, could crash on generic aliases with non-hashable
values. Fixed in 0.9.3 already.&lt;/p&gt;
&lt;div class="highlight-python notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nb"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nb"&gt;any&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Python3: Fix, an iteration over &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;sys.version_info&lt;/span&gt;&lt;/code&gt; was falsely
optimized into a tuple, which is not always compatible. Fixed in
0.9.3 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added support for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;xgboost&lt;/span&gt;&lt;/code&gt; package. Fixed in 0.9.3
already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added data file for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;text_unidecode&lt;/span&gt;&lt;/code&gt; package. Fixed in
0.9.4 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added data files for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;swagger_ui_bundle&lt;/span&gt;&lt;/code&gt; package. Fixed
in 0.9.4 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added data files for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;connexion&lt;/span&gt;&lt;/code&gt; package. Fixed in
0.9.4 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added implicit dependencies for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;sklearn.utils&lt;/span&gt;&lt;/code&gt; and
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;rapidfuzz&lt;/span&gt;&lt;/code&gt;. Fixed in 0.9.4 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Python3.10: Fix, the reformulation of &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;match&lt;/span&gt;&lt;/code&gt; statements could
create nodes that are used twice, causing code generation to assert.
Fixed in 0.9.4 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, module objects removed from &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;sys.modules&lt;/span&gt;&lt;/code&gt; but still used could
lack a reference to themselves, and therefore crash due to working on
a released module variables dictionary. Fixed in 0.9.5 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, the MSVC compiles code generated for SciPy 1.8 wrongly. Added a
workaround for that code to avoid triggering it. Fixed in 0.9.6
already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, calls to &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str.format&lt;/span&gt;&lt;/code&gt; where the result is not used, could
crash the compiler during code generation. Fixed in 0.9.6 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: For DLLs on macOS and Anaconda, also consider the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;lib&lt;/span&gt;&lt;/code&gt;
directory of the root environment, as some DLLs are otherwise not
found.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, allow &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;nonlocal&lt;/span&gt;&lt;/code&gt; and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;global&lt;/span&gt;&lt;/code&gt; for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;__class__&lt;/span&gt;&lt;/code&gt; to be used
on the class level.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;xrange&lt;/span&gt;&lt;/code&gt; with large values didn’t work on all platforms. This
affected at least Python2 on macOS, but potentially others as well.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Windows: When scanning for installed Pythons to e.g. run Scons or
onefile compression, it was attempting to use installations that got
deleted manually and could crash.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;macOS: Fix, DLL conflicts are now resolved by checking the version
information too, also all cases that previously errored out after a
conflict was reported, will now work.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, conditional expressions whose statically decided condition
picking a branch will raise an exception could crash the compilation.&lt;/p&gt;
&lt;div class="highlight-python notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c1"&gt;# Would previously crash Nuitka during optimization.&lt;/span&gt;
&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;nt&amp;quot;&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Windows: Make sure we set C level standard file handles too&lt;/p&gt;
&lt;p&gt;At least newer subprocess was affected by this, being unable to
provide working handles to child processes that pass their current
handles through, and also this should help DLL code to use it as
level.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added support for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pyqtgraph&lt;/span&gt;&lt;/code&gt; data files.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added support for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;dipy&lt;/span&gt;&lt;/code&gt; by anti-bloat removal of its
testing framework that wants to do unsupported stuff.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;UI: Could still give warnings about modules not being followed, where
that was not true.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--include-module&lt;/span&gt;&lt;/code&gt; was not working for non-automatic standard
library paths.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="new-features"&gt;
&lt;h2&gt;New Features&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Onefile: Recognize a non-changing path from
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--onefile-tempdir-spec&lt;/span&gt;&lt;/code&gt; and then use cached mode. By default a
temporary folder is used in the spec value, make it delete the files
afterwards.&lt;/p&gt;
&lt;p&gt;The cached mode is not necessarily faster, but it is not going to
change files already there, leaving the binaries there intact. In the
future it may also become faster to execute, but right now checking
the validity of the file takes about as long as re-creating it,
therefore no gain yet. The main point, is to not change where it runs
from.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added option to exclude DLLs. You can npw use
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--noinclude-dlls&lt;/span&gt;&lt;/code&gt; to exclude DLLs by filename patterns.&lt;/p&gt;
&lt;p&gt;The may e.g. come from Qt plugins, where you know, or experimented,
that it is not going to be used in your specific application. Use
with care, removing DLLs will lead to very hard to recognize errors.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Anaconda: Use &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;CondaCC&lt;/span&gt;&lt;/code&gt; from environment variables for Linux and
macOS, in case it is installed. This can be done with e.g. &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;conda&lt;/span&gt;
&lt;span class="pre"&gt;install&lt;/span&gt; &lt;span class="pre"&gt;gcc_linux-64&lt;/span&gt;&lt;/code&gt; on Linux or &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;conda&lt;/span&gt; &lt;span class="pre"&gt;install&lt;/span&gt; &lt;span class="pre"&gt;clang_osx-64&lt;/span&gt;&lt;/code&gt; on
macOS.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added new option &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--nowarn-mnemonic&lt;/span&gt;&lt;/code&gt; to disable warnings that use
mnemonics, there is currently not that many yet, but it’s going to
expand. You can use this to acknowledge the ones you accept, and not
get that warning with the information pointer anymore.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added method for resolving DLL conflicts on macOS too. This is using
version information and picks the newer one where possible.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added option &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--user-package-configuration-file&lt;/span&gt;&lt;/code&gt; for user provided
Yaml files, which can be used to provide package configuration to
Nuitka, to e.g. add DLLs, data files, do some anti-bloat work, or add
missing dependencies locally. The documentation for this does not yet
exist though, but Nuitka contains a Yaml schema in the
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;misc/nuitka-package-config-schema.json&lt;/span&gt;&lt;/code&gt; file.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;nuitka-project-else&lt;/span&gt;&lt;/code&gt; to avoid repeating conditions in Nuitka
project configuration, this can e.g. be used like this:&lt;/p&gt;
&lt;div class="highlight-python notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c1"&gt;# nuitka-project-if: os.getenv(&amp;quot;TEST_VARIANT&amp;quot;, &amp;quot;pyside2&amp;quot;) == &amp;quot;pyside2&amp;quot;:&lt;/span&gt;
&lt;span class="c1"&gt;#   nuitka-project: --enable-plugin=no-qt&lt;/span&gt;
&lt;span class="c1"&gt;# nuitka-project-else:&lt;/span&gt;
&lt;span class="c1"&gt;#   nuitka-project: --enable-plugin=no-qt&lt;/span&gt;
&lt;span class="c1"&gt;#   nuitka-project: --noinclude-data-file=*.svg&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Previously, the inverted condition had to be used in another
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;nuitka-project-if&lt;/span&gt;&lt;/code&gt; which is no big deal, but less readable.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added support for deep copying uncompiled functions. There is now a
section in the User Manual that explains how to clone compiled
functions. This allows a workaround like this:&lt;/p&gt;
&lt;div class="highlight-python notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;binder&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;func&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
   &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
      &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;func&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;clone&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
   &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="ne"&gt;AttributeError&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
      &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;types&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;FunctionType&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;func&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="vm"&gt;__code__&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;func&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="vm"&gt;__globals__&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;func&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="vm"&gt;__name__&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;argdefs&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;func&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="vm"&gt;__defaults__&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;closure&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;func&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="vm"&gt;__closure__&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;functools&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;update_wrapper&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;func&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="vm"&gt;__kwdefaults__&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;func&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="vm"&gt;__kwdefaults__&lt;/span&gt;

   &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="vm"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;
   &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Plugins: Added explicit deprecation status of a plugin. We now have a
few that do nothing, and are just there for compatibility with
existing users, and this now informs the user properly rather than
just saying it is not relevant.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, some Python installations crash when attempting to import
modules, such as &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;os&lt;/span&gt;&lt;/code&gt; with a &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;ModuleName&lt;/span&gt;&lt;/code&gt; object, because we
limit string operations done, and e.g. refuse to do &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;.startswith&lt;/span&gt;&lt;/code&gt;
which of course, other loaders that your installation has added,
might still use.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Windows: In case of not found DLLs, we can still examine the run time
of the currently compiling Python process of Nuitka, and locate them
that way, which helps for some Python configurations to support
standalone, esp. to find CPython DLL in unusual spots.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Debian: Workaround for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;lib2to3&lt;/span&gt;&lt;/code&gt; data files. These are from stdlib
and therefore the patched code from Debian needs to be undone, to
make these portable again.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="optimization"&gt;
&lt;h2&gt;Optimization&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Scalability: Avoid merge traces of initial variable versions, which
came into play when merging a variable used in only one branch. These
are useless and only made other optimization slower or impossible.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Scalability: Also avoid merge traces of merge traces, instead flatten
merge traces and avoid the duplication doing so. There were
pathological cases, where this reduced optimization time for
functions from infinite to instant.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For comparison helpers, switch comparison where possible, such that
there are only 3 variants, rather than 6. Instead the boolean result
is inverted, e.g. changing &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;&amp;gt;=&lt;/span&gt;&lt;/code&gt; into &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;not&lt;/span&gt; &lt;span class="pre"&gt;&amp;lt;&lt;/span&gt;&lt;/code&gt; effectively. Of
course this can only be done for types, where we know that nothing
special, i.e. no method overloads of &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;__gte__&lt;/span&gt;&lt;/code&gt; is going on.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For binary operations that are commutative with the selected types,
in mixed type cases, swap the arguments during code generation, such
that e.g. &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;long_a&lt;/span&gt; &lt;span class="pre"&gt;+&lt;/span&gt; &lt;span class="pre"&gt;float_b&lt;/span&gt;&lt;/code&gt; is actually computed as &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;float_b&lt;/span&gt; &lt;span class="pre"&gt;+&lt;/span&gt;
&lt;span class="pre"&gt;long_a&lt;/span&gt;&lt;/code&gt;. This again avoids many helpers. It also can be done for
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;*&lt;/span&gt;&lt;/code&gt; with integers and container types.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In cases, where a comparison (or one of the few binary operation
where we consider it useful), is used in a boolean context, but we
know it is impossible to raise an exception, a C boolean result type
is used rather than a &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;nuitka_bool&lt;/span&gt;&lt;/code&gt; which is now only used when
necessary, because it can indicate the exception result.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Anti-Bloat: More anti-bloat work was done for popular packages,
covering also uses of &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;setuptools_scm&lt;/span&gt;&lt;/code&gt;, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;nose&lt;/span&gt;&lt;/code&gt; and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;nose2&lt;/span&gt;&lt;/code&gt;
package removals and warnings. There was also a focus on making
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;mmvc&lt;/span&gt;&lt;/code&gt;, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;tensorflow&lt;/span&gt;&lt;/code&gt; and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;tifffile&lt;/span&gt;&lt;/code&gt; compile well, removing e.g.
the uses of the tensorflow testing framework.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Faster comparison of &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;int&lt;/span&gt;&lt;/code&gt; values with constant values, this uses
helpers that work with C &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;long&lt;/span&gt;&lt;/code&gt; values that represent a single
“digit” of a value, or ones that use the full value space of C
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;long&lt;/span&gt;&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Faster comparison of &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;float&lt;/span&gt;&lt;/code&gt; values with constant values, this uses
helpers that work with C &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;float&lt;/span&gt;&lt;/code&gt; values, avoiding the useless
Python level constant objects.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Python2: Comparison of &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;int&lt;/span&gt;&lt;/code&gt; and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;long&lt;/span&gt;&lt;/code&gt; now has specialized
helpers that avoids converting the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;int&lt;/span&gt;&lt;/code&gt; to a &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;long&lt;/span&gt;&lt;/code&gt; through
coercion. This takes advantage of code to compare C &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;long&lt;/span&gt;&lt;/code&gt; values
(which are at the core of Python2 &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;int&lt;/span&gt;&lt;/code&gt; objects, with &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;long&lt;/span&gt;&lt;/code&gt;
objects.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For binary operation on mixed types, e.g. &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;int&lt;/span&gt; &lt;span class="pre"&gt;*&lt;/span&gt; &lt;span class="pre"&gt;bytes&lt;/span&gt;&lt;/code&gt; the slot of
the first function was still considered, and called to give a
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;Py_NotImplemented&lt;/span&gt;&lt;/code&gt; return value for no good reason. This also
applies to mixed operations of &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;int&lt;/span&gt;&lt;/code&gt;, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;long&lt;/span&gt;&lt;/code&gt;, and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;float&lt;/span&gt;&lt;/code&gt;
types, and for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str&lt;/span&gt;&lt;/code&gt; and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;unicode&lt;/span&gt;&lt;/code&gt; values on Python2.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added missing helper for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;**&lt;/span&gt;&lt;/code&gt; operation with floats, this had been
overlooked so far.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added dedicated nodes for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;ctypes.CDLL&lt;/span&gt;&lt;/code&gt; which aims to allow us to
detect used DLLs at compile time in the future, and to move closer to
support its bindings more efficiently.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added specialized nodes for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;dict.popitem&lt;/span&gt;&lt;/code&gt; as well. With this, now
all of the dictionary methods are specialized.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added specialized nodes for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str.expandtabs&lt;/span&gt;&lt;/code&gt;, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str.translate&lt;/span&gt;&lt;/code&gt;,
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str.ljust&lt;/span&gt;&lt;/code&gt;, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str.rjust&lt;/span&gt;&lt;/code&gt;, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str.center&lt;/span&gt;&lt;/code&gt;, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str.zfill&lt;/span&gt;&lt;/code&gt;, and
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str.splitlines&lt;/span&gt;&lt;/code&gt;. While these are barely performance relevant, this
completes all &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str&lt;/span&gt;&lt;/code&gt; methods, except &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;removeprefix&lt;/span&gt;&lt;/code&gt; and
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;removesuffix&lt;/span&gt;&lt;/code&gt; that are Python3.9 or higher.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added type shape for result of &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str.index&lt;/span&gt;&lt;/code&gt; operation as well, this
was missing so far.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Optimize &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str&lt;/span&gt;&lt;/code&gt;, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;bytes&lt;/span&gt;&lt;/code&gt; and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;dict&lt;/span&gt;&lt;/code&gt; method calls through
variables.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Optimize calls through variables containing e.g. mutable constant
values, these will be rare, because they all become exceptions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Optimize calls through variables containing built-in values,
unlocking optimization of such calls, where it is assigned to a local
variable.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For generated attribute nodes, avoid local doing import statements on
the function level. While these were easier to generate, they can
only be slow at run time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str&lt;/span&gt;&lt;/code&gt; built-in annotate its value as derived from &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str&lt;/span&gt;&lt;/code&gt;,
which unfortunately does not allow much optimization, since that can
still change many things, but it was still a missing attribute.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For variable value release nodes, specialize them by value type as
well, enhancing the scalability, because e.g. parameter variable
specific tests, need not be considered for all other variable types
as well.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="organizational"&gt;
&lt;h2&gt;Organizational&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Plugins: Major changes to the Yaml file content, cleaning up some of
the DLL configuration to more easy to use.&lt;/p&gt;
&lt;p&gt;The DLL configuration has two flavors, one from code and one from
filename matching, and these got separated into distinct items in the
Yaml configuration. Also how source and dest paths get provided got
simplified, with a relative path now being used consistently and with
sane defaults, deriving the destination path from where the module
lives. Also what we called patterns, are actually prefixes, as there
is still the platform specific DLL file naming appended.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Plugins: Move mode checks to dedicated plugin called
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;options-nanny&lt;/span&gt;&lt;/code&gt; that is always enabled, giving also much cleaner
Yaml configuration with a new section added specifically for these.
It controls advice on the optional or required use of
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--disable-console&lt;/span&gt;&lt;/code&gt; and the like. Some packages, e.g. &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;wx&lt;/span&gt;&lt;/code&gt; are
known to crash on macOS when the console is enabled, so this advice
is now done with saner configuration.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Plugins: Also for all Yaml configuration sub-items where is now a
consistent &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;when&lt;/span&gt;&lt;/code&gt; field, that allows checking Python version, OS,
Nuitka modes such as standalone, and only apply configuration when
matching this criterion, with that the anti-bloat options to allow
certain bloat, should now have proper effect as well.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The use of &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;AppImage&lt;/span&gt;&lt;/code&gt; on Linux is no more. The performance for
startup was always slower, while having lost the main benefit of
avoiding IO at startup, due to new cached mode, so now we always use
the same bootstrap binary as on macOS and Windows.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;UI: Do not display implicit reports reported by plugins by default
anymore. These have become far too many, esp. with the recent stdlib
work, and often do not add any value. The compilation report will
become where to turn to find out why a module in included.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;UI: Ask the user to install the ordered set package that will
actually work for the specific Python version, rather than making him
try one of two, where sometimes only one can work, esp. with Python
3.10 allowing only one.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;GitHub: More clear wording in the issue template that &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;python&lt;/span&gt; &lt;span class="pre"&gt;-m&lt;/span&gt;
&lt;span class="pre"&gt;nuitka&lt;/span&gt; &lt;span class="pre"&gt;--version&lt;/span&gt;&lt;/code&gt; output is really required for support to given.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Attempt to use Anaconda &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;ccache&lt;/span&gt;&lt;/code&gt; binary if installed on
non-Windows. This is esp. handy on macOS, where it is harder to get
it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Windows: Avoid byte-compiling the inline copy of Scons that uses
Python3 when installing for Python2.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added experimental switches to disable certain optimization in order
to try out their impact, e.g. on corruption bugs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Reports: Added included DLLs for standalone mode to compilation
report.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Reports: Added control tags influencing plugin decisions to the
compilation report.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Plugins: Make the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;implicit-imports&lt;/span&gt;&lt;/code&gt; dependency section in the Yaml
package configuration a list, for consistency with other blocks.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Plugins: Added checking of tags such from the package configuration,
so that for things dependent on python version (e.g.
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;python39_or_higher&lt;/span&gt;&lt;/code&gt;, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;before_python39&lt;/span&gt;&lt;/code&gt;), the usage of Anaconda
(&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;anaconda&lt;/span&gt;&lt;/code&gt;) or certain OS (e.g. &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;macos&lt;/span&gt;&lt;/code&gt;), or modes (e.g.
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;standalone&lt;/span&gt;&lt;/code&gt;), expressions in &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;when&lt;/span&gt;&lt;/code&gt; can limit a configuration
item.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Quality: Re-enabled string normalization from black, the issues with
changes that are breaking to Python2 have been worked around.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;User Manual: Describe using a minimal virtualenv as a possible help
low memory situations as well.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Quality: The yaml auto-format now properly preserves comments, being
based on &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;ruamel.yaml&lt;/span&gt;&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Nuitka-Python: Added support for the Linux build with Nuitka-Python
for our own CPython fork as well, previously only Windows was
working, amd macOS will follow later.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The commit hook when installed from git bash was working, but doing
so from &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;cmd.exe&lt;/span&gt;&lt;/code&gt; didn’t find a proper path for shell from the
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;git&lt;/span&gt;&lt;/code&gt; location.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Debugging: A lot of experimental toggles were added, that allow
control over the use of certain optimization, e.g. use of dict, list,
iterators, subscripts, etc. internals, to aid in debugging in
situations where it’s not clear, if these are causing the issue or
not.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added support for Fedora 36, which requires some specific linker
options, also recognize Fedora based distributions as such.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Removed long deprecated option &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--noinclude-matplotlib&lt;/span&gt;&lt;/code&gt; from numpy
plugin, as it hasn’t had an effect for a long time now.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Visual Code: Added extension for editing Jinja2 templates. This one
even detects that we are editing C or Python and properly highlights
accordingly.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="cleanups"&gt;
&lt;h2&gt;Cleanups&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Standalone: Major cleanup of the dependency analysis for standalone.
There is no longer a distinction between entry points (main binary,
extension modules) and DLLs that they depend on. The OS specific
parts got broken out into dedicated modules as well and decisions are
now taken immediately.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Plugins: Split the Yaml package configuration files into 3 files. One
contains now Python2 only stdlib configuration, and another one
general stdlib.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Plugins: Also cleanup the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;zmq&lt;/span&gt;&lt;/code&gt; plugin, which was one the last
holdouts of now removed plugin method, moving parts to the Yaml
configuration. We therefore no longer have &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;considerExtraDlls&lt;/span&gt;&lt;/code&gt;
which used to work on the standalone folder, but instead only plugin
code that provides included DLL or binary objects from
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;getExtraDlls&lt;/span&gt;&lt;/code&gt; which gives Nuitka much needed control over DLL
copying. This was a long lasting battle finally won, and will allow
many new features to come.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;UI: Avoid changing whitespace in warnings, where we have intended
line breaks, e.g. in case of duplicate DLLs. Went over all warnings
and made sure to either avoid new-lines or have them, depending on
wanted output.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Iterator end check code now uses the same code as rich comparison
expressions and can benefit from optimization being done there as
well.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Solved TODO item about code generation time C types to specify if
they have error checking or not, rather than hard coding it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Production of binary helper function set was cleaned up massively,
but still needs more work, comparison helper function set was also
redesigned.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Changing the spelling of our container package to become more clear.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Used &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;namedtuple&lt;/span&gt;&lt;/code&gt; objects for storing used DLL information for more
clear code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added spellchecker ignores for all attribute and argument names of
generated fixed attribute nodes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In auto-format make sure the imports float to the top. That very much
cleans up generated attribute nodes code, allowing also to combine
the many ones it makes, but also cleans up some of our existing code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The package configuration Yaml files are now sorted according to
module names. This will help to avoid merge conflicts during hotfixes
merge back to develop and automatically group related entries in a
sane way.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Moved large amounts of code producing implicit imports to Yaml
configuration files.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Changed the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;tensorflow&lt;/span&gt;&lt;/code&gt; plugin to Yaml based configuration, making
it a deprecated do nothing plugin, that only remains there for a few
releases, to not crash existing build scripts.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Lots of spelling cleanups, e.g. renaming &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;nuitka.codegen&lt;/span&gt;&lt;/code&gt; to
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;nuitka.code_generation&lt;/span&gt;&lt;/code&gt; for clarity.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="tests"&gt;
&lt;h2&gt;Tests&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Added generated test to cover &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;bytes&lt;/span&gt;&lt;/code&gt; method. This would have found
the issue with &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;decode&lt;/span&gt;&lt;/code&gt; potentially.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enhanced standalone test for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;ctypes&lt;/span&gt;&lt;/code&gt; on Linux to actually have
something to test.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="summary"&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;This release improves on many things at once. A lot of work has been put
into polishing the Yaml configuration that now only lacks documentation
and examples, such that the community as a whole should become capable
of adding missing dependencies, data files, DLLs, and even anti-bloat
patches.&lt;/p&gt;
&lt;p&gt;Then a lot of new optimization has been done, to close the missing gaps
with &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;dict&lt;/span&gt;&lt;/code&gt; and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str&lt;/span&gt;&lt;/code&gt; methods, but before completing &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;list&lt;/span&gt;&lt;/code&gt; which
is already a work in progress pull request, and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;bytes&lt;/span&gt;&lt;/code&gt;, we want to
start and generate the node classes that form the link or basis of
dedicated nodes. This will be an area to work on more.&lt;/p&gt;
&lt;p&gt;The many improvements to existing code helpers, and them being able to
pick target types for the arguments of comparisons and binary
operations, is a pre-cursor to universal optimization of this kind. What
is currently only done for constant values, will in the future be
interesting for picking specific C types for use. That will then be a
huge difference from what we are doing now, where most things still have
to use &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;PyObject&lt;/span&gt; &lt;span class="pre"&gt;*&lt;/span&gt;&lt;/code&gt; based types.&lt;/p&gt;
&lt;p&gt;Scalability has again seen very real improvements, memory usage of
Nuitka itself, as well as compile time inside Nuitka are down by a lot
for some cases, very noticeably. There is never enough of this, but it
appears, in many cases now, large compilations run much faster.&lt;/p&gt;
&lt;p&gt;For macOS specifically, the new DLL dependency analysis, is much more
capable or resolving conflicts all by itself. Many of the more complex
packages with some variants of Python, specifically Anaconda will now be
working a lot better.&lt;/p&gt;
&lt;p&gt;And then, of course there is the big improvement for Onefile, that
allows to use cached paths. This will make it more usable in the general
case, e.g. where the firewall of Windows hate binaries that change their
path each time they run.&lt;/p&gt;
&lt;p&gt;Future directions will aim to make the compilation report more concise,
and given reasons and dependencies as they are known on the inside more
clearly, such that is can be a major tool for testing, bug reporting and
analysis of the compilation result.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
</content>
    <link href="https://nuitka.net/posts/nuitka-release-10.html"/>
    <summary>This is to inform you about the new stable release of Nuitka. It is the extremely compatible Python compiler,
“download now”.</summary>
    <category term="Nuitka" label="Nuitka"/>
    <category term="Python" label="Python"/>
    <category term="compiler" label="compiler"/>
    <published>2022-08-16T13:45:00+02:00</published>
  </entry>
  <entry>
    <id>https://nuitka.net/posts/nuitka-release-09.html</id>
    <title>Nuitka Release 0.9</title>
    <updated>2022-07-02T08:17:00+02:00</updated>
    <author>
      <name>Kay Hayen</name>
    </author>
    <content type="html">&lt;section id="nuitka-release-0-9"&gt;

&lt;p&gt;This is to inform you about the new stable release of &lt;a class="reference external" href="https://nuitka.net"&gt;Nuitka&lt;/a&gt;. It is the extremely compatible Python compiler,
&lt;a class="reference external" href="/doc/download.html"&gt;“download now”&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This release has a many optimization improvements, and scalability
improvements, while also adding new features, with also some important
bug fixes.&lt;/p&gt;
&lt;section id="bug-fixes"&gt;
&lt;h2&gt;Bug Fixes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Fix, hard module name lookups leaked a reference to that object.
Fixed in 0.8.1 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Python2: Fix, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str.decode&lt;/span&gt;&lt;/code&gt; with &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;errors&lt;/span&gt;&lt;/code&gt; as the only argument
wasn’t working. Fixed in 0.8.1 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, could corrupt created uncompiled class objects &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;__init__&lt;/span&gt;&lt;/code&gt;
functions in case of descriptors being used.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added support for newer &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;torch&lt;/span&gt;&lt;/code&gt;. Fixed in 0.8.1
already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added support for newer &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;torchvision&lt;/span&gt;&lt;/code&gt;. Fixed in 0.8.1
already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, could compile time crash during initial parsing phase on
constant dictionary literals with non-hashable keys.&lt;/p&gt;
&lt;div class="highlight-python notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="p"&gt;{}:&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, hard imported sub-modules of hard imports were falsely resolved
to their parent. Fixed in 0.8.3 already.&lt;/p&gt;
&lt;div class="highlight-python notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;importlib&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;resources&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;read_bytes&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="c1"&gt;# gave importlib has no attribute...&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Windows: Fix, outputs with &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--force-stdout-spec&lt;/span&gt;&lt;/code&gt; or
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--force-stderr-spec&lt;/span&gt;&lt;/code&gt; were created with the file system encoding on
Python3, but they nee to be &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;utf-8&lt;/span&gt;&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, didn’t allow zero spaces in Nuitka project options, which is not
expected.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Modules: Fix, the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;del&lt;/span&gt; &lt;span class="pre"&gt;__file__&lt;/span&gt;&lt;/code&gt; in the top level module in module
mode caused crashes at run time, when trying to restore the original
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;__file__&lt;/span&gt;&lt;/code&gt; value, after the loading CPython corrupted it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Python2.6: Fixes for installations without &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pkg_resources&lt;/span&gt;&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Windows: Fix for very old Python 2.6 versions, these didn’t have a
language assigned that could be used.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Security: Fix for &lt;a class="reference external" href="https://security-tracker.debian.org/tracker/CVE-2022-2054"&gt;CVE-2022-2054&lt;/a&gt; where
environment variables used for transfer of information between Nuitka
restarting itself, could be used to execute arbitrary code at compile
time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Anaconda: Fix, the torch plugin was not working on Linux due to
missing DLL dependencies.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, static optimization of &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;importlib.import_module&lt;/span&gt;&lt;/code&gt; with a
package given, for an absolute import was optimized into the wrong
import, package was not ignored as it should be.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Windows: Installed Python scan could crash on trying installation
paths from registry that were manually removed in the mean time, but
not through an uninstaller.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added missing implicit dependency for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pyreadstat&lt;/span&gt;&lt;/code&gt;
because parts of standard library it uses are no more automatically
included.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Windows: Could still crash when no &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;powershell&lt;/span&gt;&lt;/code&gt; is available with
symlinks, handle this more gracefully.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added more missing Plotly dependencies, but more work
will be needed to complete this.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Add missing stdlib dependency on &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;multiprocessing&lt;/span&gt;&lt;/code&gt; by
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;concurrent.futures.process&lt;/span&gt;&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Fix, implicit dependencies assigned to &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;imageio&lt;/span&gt;&lt;/code&gt; on PIL
plugins should actually be assigned to &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;PIL.Image&lt;/span&gt;&lt;/code&gt; that actually
loads them, so it works outside of &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;imageio&lt;/span&gt;&lt;/code&gt; too.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="new-features"&gt;
&lt;h2&gt;New Features&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;UI: Added new option &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--user-package-configuration-file&lt;/span&gt;&lt;/code&gt; to allow
users to provide extra Yaml configuration files for the Nuitka plugin
mechanism to add hidden dependencies, anti-bloat, or data files, for
packages. This will be useful for developing PRs to the standard file
of Nuitka. Currently the schema is available, but it is not
documented very well yet, so not really ready for end users just yet.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added new &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;no-qt&lt;/span&gt;&lt;/code&gt; plugin as an easy way to prevent all
of the Qt bindings from being included in a compilation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Include module search path in compilation report.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="optimization"&gt;
&lt;h2&gt;Optimization&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Faster dictionary iteration with our own replacement for
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;PyDict_Next&lt;/span&gt;&lt;/code&gt; that avoids the DLL call overhead (in case of
non-static &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;libpython&lt;/span&gt;&lt;/code&gt;) and does less unnecessary checks.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added optimization for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str.count&lt;/span&gt;&lt;/code&gt; and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str.format&lt;/span&gt;&lt;/code&gt; methods as
well, this should help in some cases with compile time optimization.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The node for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;dict.update&lt;/span&gt;&lt;/code&gt; with only an iterable argument, but no
keyword arguments, was in fact unused due to wrongly generated code.
Also the form with no arguments wasn’t yet handled properly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Scalability: Use specialized nodes for pair values, i.e. the
representation of &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;x&lt;/span&gt; &lt;span class="pre"&gt;=&lt;/span&gt; &lt;span class="pre"&gt;y&lt;/span&gt;&lt;/code&gt; in e.g. dictionary creations. With
constant keys, and values, these avoid full constant value nodes, and
therefore save memory and compile time for a lot of code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Anti-Bloat: Added more scalability work to avoid including modules
that make compilation unnecessarily big.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Python3.9+: Faster calls in case of mixed code, i.e. compiled code
calling uncompiled code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Removing duplicates and non-existent entries from modules search path
should improve performance when locating modules.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Optimize calls through variables as well. These are needed for the
package resource nodes to properly resolve at compile time from their
hard imports to the called function.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Hard imported names should also be considered very trusted
themselves, so they are e.g. also optimized in calls.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Anti-Bloat: Avoid more useless imports in Pandas, Numba, Plotly, and
other packages, improving the scalability some more.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added dedicated nodes for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pkg_resources.require&lt;/span&gt;&lt;/code&gt;,
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pkg_resources.get_distribution&lt;/span&gt;&lt;/code&gt;, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;importlib.metadata.version&lt;/span&gt;&lt;/code&gt;,
and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;importlib_metadata.version&lt;/span&gt;&lt;/code&gt;, so we can use compile time
optimization to resolve their argument values where possible.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Avoid annotating control flow escape for all release statements.
Sometimes we can tell that &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;__del__&lt;/span&gt;&lt;/code&gt; will not execute outside code
ever, so this then avoids marking values as escaped, and taking the
time to do so.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Calls of methods through variables on &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str&lt;/span&gt;&lt;/code&gt;, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;dict&lt;/span&gt;&lt;/code&gt;, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;bytes&lt;/span&gt;&lt;/code&gt;
that have dedicated nodes are now also optimized through variables.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Boolean tests through variables now also are optimized when the
original assignment is a compile time constant that is not mutable.
This is only basic, but will allow tests on &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;TYPE_CHECKING&lt;/span&gt;&lt;/code&gt; coming
from a &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;from&lt;/span&gt; &lt;span class="pre"&gt;typing&lt;/span&gt; &lt;span class="pre"&gt;import&lt;/span&gt; &lt;span class="pre"&gt;TYPE_CHECKING&lt;/span&gt;&lt;/code&gt; statement to be
optimized, avoiding this overhead.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="cleanups"&gt;
&lt;h2&gt;Cleanups&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Changed to &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;torch&lt;/span&gt;&lt;/code&gt; plugin to Yaml based configuration, making it
obsolete, it only remains there for a few releases, to not crash
existing build scripts.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Moved older package specific hacks to the Yaml file. Some of these
were from hotfixes where the Yaml file wasn’t yet used by default,
but now there is no need for them anymore.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Removed most of the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pkg-resources&lt;/span&gt;&lt;/code&gt; plugin work. This is now done
during optimization phase and rather than being based on source code
matches, it uses actual value tracing, so it immediately covers many
more cases.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Continued spelling improvements, renaming identifiers used in the
source that the cspell based extension doesn’t like. This aims at
producing more readable and searchable code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Generated attribute nodes no longer do local imports of the operation
nodes they refer to. This also avoids compile time penalties during
optimization that are not necessary.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Windows: Avoid useless bytecode of inline copy used by Python3 when
installing for Python2, this spams just a lot of errors.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="organizational"&gt;
&lt;h2&gt;Organizational&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Removed MSI installers from the download page. The MSI installers are
discontinued as Python has deprecated their support for them, as well
as Windows 10 is making it harder for users to install them. Using
the PyPI installation is recommended on Windows.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Merged our Yaml files into one and added schema description, for
completion and checking in Visual Code while editing. Also check the
schema in &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;check-nuitka-with-yamllint&lt;/span&gt;&lt;/code&gt; which is now slightly
misnamed. The schema is in no way final and will see improvements in
future releases.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;UI: Nicer progress bar layout that avoids flicker when optimizing
modules.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;UI: When linking, output the total number of object files used, to
have that knowledge after the progress bar for C compilation is gone.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Quality: Auto-format the package configuration Yaml file for
anti-bloat, implicit dependencies, etc.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;GitHub: Point out the commit hook in the PR template.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;UI: Nicer output in case of no commercial version is used.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Updated the WinLibs MinGW64 download used on Windows to the latest
version based on gcc 11, the gcc 12 is not yet ready.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Git: Make sure we are not affected by &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;core.autocrlf&lt;/span&gt;&lt;/code&gt; setting, as
it interferes with auto-format enforcing Unix newlines.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Removed the MSI downloads. Windows 10 has made them harder to install
and Python itself is discontinuing support for them, while often it
was only used by beginners, for which it was not intended.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Anaconda: Make it more clear how to install static libpython with
precise command.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;UI: Warn about using module from Debian packages. These can be made
non-portable to other OSes. Read more on &lt;a class="reference external" href="https://nuitka.net/info/debian-dist-packages.html"&gt;the info page&lt;/a&gt; for detailed
information.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Quality: The auto-format now floats imports to the top for
consistency. With few exceptions, it was already done like this. But
it makes things easier for generated code.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="tests"&gt;
&lt;h2&gt;Tests&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;The reflected test was adapted to preserve &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;PYTHONPATH&lt;/span&gt;&lt;/code&gt; now that
module presence influences optimization.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="summary"&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;This release marks a point, that will allow us to open up the
compatibility work for implicit dependencies and anti-bloat stuff even
further. The Yaml format will need documentation and potentially more
refinement, but will open up a future, where latest packages can be
supported with just updating this configuration.&lt;/p&gt;
&lt;p&gt;The scalability improvements really make a difference for many libraries
and are a welcome improvement on both memory usage and compile time.
They are achieved by an accord of static optimization of&lt;/p&gt;
&lt;p&gt;One optimization aimed at optimizing tuple unpacking, was not finished
in time for this release, but will be subject of a future release. It
has driven many other improvements though.&lt;/p&gt;
&lt;p&gt;Generally, also from the UI, this is a huge step forward. With links to
the website for complex topics being started, and the progress bar
flicker being removed, the tool has yet again become more user friendly.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
</content>
    <link href="https://nuitka.net/posts/nuitka-release-09.html"/>
    <summary>This is to inform you about the new stable release of Nuitka. It is the extremely compatible Python compiler,
“download now”.</summary>
    <category term="Nuitka" label="Nuitka"/>
    <category term="Python" label="Python"/>
    <category term="compiler" label="compiler"/>
    <published>2022-07-02T08:17:00+02:00</published>
  </entry>
  <entry>
    <id>https://nuitka.net/posts/next-nuitka-live-stream-04-06-2022.html</id>
    <title>Next Nuitka Live Stream</title>
    <updated>2022-05-27T00:00:00+02:00</updated>
    <content type="html">&lt;section id="next-nuitka-live-stream"&gt;

&lt;p&gt;In the coming weekend, Saturday 04.06.2022, there will be the next live
streams of me coding on Nuitka, and talking and chatting with visitors
in the Discord channel created specifically for this. I will go from
10-14 CEST and potentially also one in the evening.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="last-time"&gt;
&lt;h1&gt;Last time&lt;/h1&gt;
&lt;p&gt;It’s actually been too long for me to remember what I did, but I do know
that it took some time to get it right. It probably was about caching,
but there are usually several topics.&lt;/p&gt;
&lt;p&gt;I do however think that I need to use my CI machine with more processing
power rather than my normal desktop, or maybe even both, because the
screen capture, compiling, Visual Studio, and all, may make the Video
otherwise stutter a bit too much.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="this-time"&gt;
&lt;h1&gt;This time&lt;/h1&gt;
&lt;p&gt;So, streaming is a huge success or Nuitka, however time is also scarce,
and me starting new things, risks the release being bogged down by
stabilization phases that are extended.&lt;/p&gt;
&lt;p&gt;Not sure yet, what to do. I think, I want to look at adding the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;int&lt;/span&gt;&lt;/code&gt;
as a C type and/or specializing code for mix of &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;CLONG&lt;/span&gt;&lt;/code&gt; (C long value)
and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;LONG&lt;/span&gt;&lt;/code&gt; (Python3 &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;int&lt;/span&gt;&lt;/code&gt; object) and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;INT&lt;/span&gt;&lt;/code&gt; (Python2 &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;int&lt;/span&gt;&lt;/code&gt;
object). Right now adding &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;1&lt;/span&gt;&lt;/code&gt; goes through a constant object, one that
is prepared, and not time consuming to reference, but still overhead to
use.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="how-to-join-nuitka-live"&gt;
&lt;h1&gt;How to Join Nuitka Live&lt;/h1&gt;
&lt;p&gt;There is a &lt;a class="reference external" href="/pages/Streaming.html"&gt;dedicated page on the web site&lt;/a&gt;
which has the details. Spoiler, it’s free and I have no plans for
anything that involves a subscription of any kind. Of course, talking of
subscription, do also checkout the &lt;a class="reference external" href="/doc/commercial.html"&gt;Nuitka commercial&lt;/a&gt; offering. That is a subscription with adds that
protect your IP even more than regular Nuitka.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="join-me"&gt;
&lt;h1&gt;Join me&lt;/h1&gt;
&lt;p&gt;Come and join me there. &lt;a class="reference external" href="/pages/Streaming.html"&gt;Instructions&lt;/a&gt; here.
You know you want to do it. I know I want you to do to it!&lt;/p&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;Yours,&lt;/div&gt;
&lt;div class="line"&gt;Kay&lt;/div&gt;
&lt;/div&gt;
&lt;/section&gt;
</content>
    <link href="https://nuitka.net/posts/next-nuitka-live-stream-04-06-2022.html"/>
    <summary>In the coming weekend, Saturday 04.06.2022, there will be the next live
streams of me coding on Nuitka, and talking and chatting with visitors
in the Discord channel created specifically for this. I will go from
10-14 CEST and potentially also one in the evening.</summary>
    <category term="Nuitka" label="Nuitka"/>
    <category term="Python" label="Python"/>
    <category term="compiler" label="compiler"/>
    <category term="stream" label="stream"/>
    <published>2022-05-27T00:00:00+02:00</published>
  </entry>
  <entry>
    <id>https://nuitka.net/posts/nuitka-release-08.html</id>
    <title>Nuitka Release 0.8</title>
    <updated>2022-05-26T10:54:00+02:00</updated>
    <author>
      <name>Kay Hayen</name>
    </author>
    <content type="html">&lt;section id="nuitka-release-0-8"&gt;

&lt;p&gt;This is to inform you about the new stable release of &lt;a class="reference external" href="https://nuitka.net"&gt;Nuitka&lt;/a&gt;. It is the extremely compatible Python compiler,
&lt;a class="reference external" href="/doc/download.html"&gt;“download now”&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This release has a massive amount of bug fixes, builds on existing
features, and adds new ones.&lt;/p&gt;
&lt;section id="bug-fixes"&gt;
&lt;h2&gt;Bug Fixes&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Windows: Fix, need to ignore cases where shorting in path for
external use during compilation gives an permission error. Fixed in
0.7.1 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Compatibility: Added workaround for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;scipy.stats&lt;/span&gt;&lt;/code&gt; function copying.
Fixed in 0.7.1 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Windows: Fix, detect ARM64 arch of MSVC properly, such that we can
give a proper mismatch for the Python architecture. Fixed in 0.7.1
already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Fix, using &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;importlib.metadata&lt;/span&gt;&lt;/code&gt; module failed to
include &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;email&lt;/span&gt;&lt;/code&gt; from standard library parts no longer included by
default. Fixed in 0.7.1 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;macOS: Fix, the dependency parser was using normalized paths where
original paths must be used. Fixed in 0.7.1 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Fix, using &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;shiboken6&lt;/span&gt;&lt;/code&gt; module (mostly due to
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;PySide6&lt;/span&gt;&lt;/code&gt;) failed to include &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;argparse&lt;/span&gt;&lt;/code&gt; from the standard library
from standard library parts no longer included by default. Fixed in
0.7.1 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Onefile: Fix, the detection of a usable Python for compression could
crash. Fixed in 0.7.2 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Onefile: Adding the payload on Windows could run into locks still
being held, need to wait in that case. Fixed in 0.7.2 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, need to include &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pkg_resources&lt;/span&gt;&lt;/code&gt; as well, we need it for when
we use Jinja2, which is more often now. For Python3 this was fixed in
0.7.3 already. Later a version to use with Python2 was added as well.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Release: The wheels built for Nuitka when installed through URLs were
not version specific, but due to different inline copies per OS and
Python version, they must not be reused. Therefore we now pretend to
contain an extension module, which handles that. Fixed in 0.7.3
already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Fix, using &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;urllib.requests&lt;/span&gt;&lt;/code&gt; module failed to include
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;http.client&lt;/span&gt;&lt;/code&gt; from standard library parts no longer included by
default. Fixed in 0.7.3 already. Later &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;http.cookiejar&lt;/span&gt;&lt;/code&gt; was added
too.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Do not compress MSVC run time library when using &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;upx&lt;/span&gt;&lt;/code&gt;
plugin, that is not going to work. Fixed in 0.7.4 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Fix, on Windows more files should be included for TkInter
to work with all software. Fixed in 0.7.5 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Distutils: Added support for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;package_dir&lt;/span&gt;&lt;/code&gt; directive to specify
where source code lives. Fixed in 0.7.6 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Fix, using &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;shelve&lt;/span&gt;&lt;/code&gt; module failed to include &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;dbm&lt;/span&gt;&lt;/code&gt;
from standard library parts no longer included by default. Fixed in
0.7.6 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added support for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;arcade&lt;/span&gt;&lt;/code&gt; data files. Fixed in 0.7.7
already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Fix, bytecode demotions should use relative filenames
rather than original ones. Fixed in 0.7.7 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Fix, must remove extension module objects from
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;sys.modules&lt;/span&gt;&lt;/code&gt; before executing an extension module that will create
it. This fixes cases of cyclic dependencies from modules loaded by
the extension module.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Windows: In case of an exception, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;clcache&lt;/span&gt;&lt;/code&gt; was itself triggering
one during its handling, hiding the real exception behind a
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;TypeError&lt;/span&gt;&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Windows: Improved &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;clcache&lt;/span&gt;&lt;/code&gt; locking behavior, avoiding a race. Also
increase characters used for key from 2 to 3 chars, making collisions
far more rare.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added support for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;persistent&lt;/span&gt;&lt;/code&gt; package.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added support for newer &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;tensorflow&lt;/span&gt;&lt;/code&gt; package.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Module: Fix, need to restore the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;__file__&lt;/span&gt;&lt;/code&gt; and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;__spec__&lt;/span&gt;&lt;/code&gt; values
of top level module. It is changed by CPython after import to an
incompatible file name, and not our loader, preventing package
resources to be found.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added support for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;Crpytodome.Cipher.PKCS1_v1_5&lt;/span&gt;&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pkgutil.iter_modules&lt;/span&gt;&lt;/code&gt; without arguments was not working
properly with our meta path based loader.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Windows: Fix, could crash on when the Scons report was written due to
directories in &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;PATH&lt;/span&gt;&lt;/code&gt; that failed to encode.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Compatibility: Fix, positive &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;divmod&lt;/span&gt;&lt;/code&gt; and modulo &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;%&lt;/span&gt;&lt;/code&gt; with
negative remainders of positive floats was not correct.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str.encode&lt;/span&gt;&lt;/code&gt; with only &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;errors&lt;/span&gt;&lt;/code&gt; value, but default value for
encoding was crashing the compilation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Python3.10+: Fix, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;match&lt;/span&gt;&lt;/code&gt; statement sliced values must be lists,
not tuples.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added support for newer &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;glfw&lt;/span&gt;&lt;/code&gt; and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;OpenGL&lt;/span&gt;&lt;/code&gt; packages.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Python3: Fix, failed to read bytecode only stdlib files. This affect
mostly Fedora Python which does this for encodings.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Python3.5+: Fix, two phase loading of modules could release it
immediately.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added missing dependency for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pydantic&lt;/span&gt;&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str.split&lt;/span&gt;&lt;/code&gt; rejected default &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;sep&lt;/span&gt;&lt;/code&gt; value with only
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;maxsplit&lt;/span&gt;&lt;/code&gt; given as a keyword argument.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added missing dependency of &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;wsgiref&lt;/span&gt;&lt;/code&gt; module.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added support for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;falcon&lt;/span&gt;&lt;/code&gt; module.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added support for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;eliot&lt;/span&gt;&lt;/code&gt; module.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, need to mark assigned from variables as escaped. Without it,
some aliased loop variables could be misunderstood and falsely
statically optimized.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added support for newer &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;uvicorn&lt;/span&gt;&lt;/code&gt; package.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added data files for the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;accessible_output2&lt;/span&gt;&lt;/code&gt;,
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;babel&lt;/span&gt;&lt;/code&gt;, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;frozendict&lt;/span&gt;&lt;/code&gt;, and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;sound_lib&lt;/span&gt;&lt;/code&gt; package.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added support for newer &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;sklearn&lt;/span&gt;&lt;/code&gt; package.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added support for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;tkinterdnd2&lt;/span&gt;&lt;/code&gt; package.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Python3.7+: Fix, the error message wasn’t fully compatible for
unsubscriptable type exception messages.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Fix, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;idlelib&lt;/span&gt;&lt;/code&gt; from stdlib was always ignored.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Python3.4+: Fix, the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;__spec__.origin&lt;/span&gt;&lt;/code&gt; as produced by &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;find_spec&lt;/span&gt;&lt;/code&gt;
of our meta path based loader, didn’t have the correct &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;origin&lt;/span&gt;&lt;/code&gt;
attribute value.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Disable QtPDF plugin of PySide 6.3.0, because it’s
failing dependency checks. On macOS this was blocking, we will change
it to detection if that is necessary in a future release.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added support for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;orderedmultidict&lt;/span&gt;&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added support for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;clr&lt;/span&gt;&lt;/code&gt; module.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added support for newer &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;cv2&lt;/span&gt;&lt;/code&gt; package.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="new-features"&gt;
&lt;h2&gt;New Features&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Added new option &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--module-name-choice&lt;/span&gt;&lt;/code&gt; to select what value
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;__name__&lt;/span&gt;&lt;/code&gt; and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;__package__&lt;/span&gt;&lt;/code&gt; are going to be. With
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--module-name-choice=runtime&lt;/span&gt;&lt;/code&gt; (default for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--module&lt;/span&gt;&lt;/code&gt; mode), the
created module uses the parent package to deduce the value of
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;__package__&lt;/span&gt;&lt;/code&gt;, to be fully compatible. The value
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--module-name-choice=original&lt;/span&gt;&lt;/code&gt; (default for other modes) allows
for more static optimization to happen.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added support for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;get_resource_reader&lt;/span&gt;&lt;/code&gt; to our meta path based
loader. This allows to avoid useless temporary files in case
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;importlib.resources.path&lt;/span&gt;&lt;/code&gt; is used, due to a bad interaction with
the fallback implementation used without it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added support for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--force-stdout-spec&lt;/span&gt;&lt;/code&gt; and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--force-stderr-spec&lt;/span&gt;&lt;/code&gt;
on all platforms, this was previously limited to Windows.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added support for requiring and suggesting modes. In part this was
added to 0.7.3 already, and is used e.g. to enforce that on macOS the
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;wx&lt;/span&gt;&lt;/code&gt; will only work as a GUI program and crash unless
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--disable-console&lt;/span&gt;&lt;/code&gt; is specified. These will warn the user or
outright error the compilation if something is known to be needed or
useful.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Debian: Detect version information for “Debian Sid”. Added in 0.7.4
already, and also improved how Debian/Ubuntu versions are output.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added new option &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--noinclude-data-files&lt;/span&gt;&lt;/code&gt; to instruct Nuitka to not
include data files matching patterns given. Also attached loggers and
tags to included data file and include them in the compilation
report.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Distutils: When using &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pyproject.toml&lt;/span&gt;&lt;/code&gt; without &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;setup.py&lt;/span&gt;&lt;/code&gt; so far
it was not possible to pass arguments. This is now possible by adding
a section like this.&lt;/p&gt;
&lt;div class="highlight-toml notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="k"&gt;[tool.nuitka]&lt;/span&gt;
&lt;span class="c1"&gt;# options without an argument are passed as boolean value&lt;/span&gt;
&lt;span class="n"&gt;show-scons&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;

&lt;span class="c1"&gt;# options with single values, e.g. enable a plugin of Nuitka&lt;/span&gt;
&lt;span class="n"&gt;enable-plugin&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;pyside2&amp;quot;&lt;/span&gt;

&lt;span class="c1"&gt;# options with several values, e.g. avoiding including modules, accepts&lt;/span&gt;
&lt;span class="c1"&gt;# list argument.&lt;/span&gt;
&lt;span class="n"&gt;nofollow-import-to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;*.tests&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;*.distutils&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;The option names are the same, but without leading dashes. Lists are
only needed when passing multiple values with the same option.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;macOS: Add support for specifying signing identity with
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--macos-sign-identity&lt;/span&gt;&lt;/code&gt; and access to protected resources
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--macos-app-protected-resource&lt;/span&gt;&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Included data files are now reported in the compilation report XML as
well.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Accept absolute paths for searching paths of binaries. This allows
e.g. the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;upx&lt;/span&gt;&lt;/code&gt; plugin to accept both a folder path and the full
path including the binary name to work when you specify the binary
location with &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--upx-binary&lt;/span&gt;&lt;/code&gt; making it more user friendly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Python3.10: Added support for positional matching of classes, so far
only keyword matching was working.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added support for path spec values &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;%CACHE_DIR&lt;/span&gt;&lt;/code&gt;, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;%COMPANY%&lt;/span&gt;&lt;/code&gt;,
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;%PRODUCT%&lt;/span&gt;&lt;/code&gt;, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;%VERSION%&lt;/span&gt;&lt;/code&gt;, and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;%HOME&lt;/span&gt;&lt;/code&gt; in preparation of onefile
once again being able to be cached and not unpacked repeatedly for
each execution.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Detect missing &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;tk-inter&lt;/span&gt;&lt;/code&gt; plugin at run time. When TCL
fails to load, it then outputs a more helpful error. This ought to be
done for all plugins, where it’s not clear if they are needed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Anti-Bloat: Added support for plain replacements in the
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;anti-bloat.yml&lt;/span&gt;&lt;/code&gt; file. Before with &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;replacement`&lt;/span&gt;&lt;/code&gt;, the new value
had to be produced by an &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;eval&lt;/span&gt;&lt;/code&gt;, which makes for less readable
values due to extra quoting. for plain values.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="optimization"&gt;
&lt;h2&gt;Optimization&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Python3.10+: Added support for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;ordered-set&lt;/span&gt;&lt;/code&gt; PyPI package to speed
up compilation on these versions too, adding a warning if no
accelerated form of &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;OrderedSet&lt;/span&gt;&lt;/code&gt; is used, but believed to be
usable.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Optimization: Added &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;bytes.decode&lt;/span&gt;&lt;/code&gt; operations. This is only a start
and we needed this for internal usage, more should follow later.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Much more &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;anti-bloat&lt;/span&gt;&lt;/code&gt; work was added. Avoiding &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;ipython&lt;/span&gt;&lt;/code&gt;,
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;unittest&lt;/span&gt;&lt;/code&gt;, and sometimes even &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;doctest&lt;/span&gt;&lt;/code&gt; usage for some more
packages.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;ccache&lt;/span&gt;&lt;/code&gt; was not always used, sometimes it believed to catch a
potential race, that we need to tell it to ignore. This will speed up
re-compilation of the C side in many cases.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Do not compile the meta path based loader separate, which allows us
to not expose functions and values only used by it. Also spares the C
compiler one file.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added various dedicated nodes for querying package resources data,
e.g. &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pkgutil.get_data&lt;/span&gt;&lt;/code&gt;. This will make it easier to detect cases
of missing data files in the future.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added more hard imports, some of which help scalability in the
compilation, because these are then known to exist in standalone
mode, others are used for package resource specific operations.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Onefile: Releasing decompression buffers avoiding unnecessary high
memory usage of bootstrap binary.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Avoid proving directories with no DLLs (e.g. from
packages) towards &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;ldd&lt;/span&gt;&lt;/code&gt;, this should avoid exceeding command line
limits.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;clcache&lt;/span&gt;&lt;/code&gt; remove writing of the stats file before Scons has
completed, which avoids IO and locking churn.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Avoid including &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;wsgiref&lt;/span&gt;&lt;/code&gt; from stdlib by default.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="cleanups"&gt;
&lt;h2&gt;Cleanups&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Removed references to &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;chrpath&lt;/span&gt;&lt;/code&gt; and dead code around it, it was
still listed as a dependency, although we stopped using it a while
ago.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Removed uses of &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;anti-bloat&lt;/span&gt;&lt;/code&gt; in examples and tests, it is now
enabled by default.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Made standard plugin file naming consistent, their name should be
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;*Plugin.py&lt;/span&gt;&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cleaned up &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;tensorflow&lt;/span&gt;&lt;/code&gt; plugin. The source modification was moved
to &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;anti-bloat&lt;/span&gt;&lt;/code&gt; where it is easy to do. The implicit dependencies
are now in the config file of &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;implicit-imports&lt;/span&gt;&lt;/code&gt; plugin.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Massive cleanups of data file handling in plugins. Adding methods for
producing the now required objects.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Scons file handling got further cleaned up and unified, doing
more things in common code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Avoid &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;#ifdefs&lt;/span&gt;&lt;/code&gt; usages with new helper function
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;Nuitka_String_FromFormat&lt;/span&gt;&lt;/code&gt; that implies them for more readable
code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Split the allowance check from the encountering. Allow plugins and
options all to say if an import should be followed, and only when
that is decided, to complain about it. Previously the attempt was
causing an error, even if another plugin were to decide against it
later.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Python2.6: Avoid warnings from MSVC for out specialized &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;long&lt;/span&gt;&lt;/code&gt;
code. In testing it worked correctly, but this is more explicit and
doesn’t rely on C implementation specific behavior, although it
appears to be universal.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="organizational"&gt;
&lt;h2&gt;Organizational&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;UI: Warning tests are now wrapped to multiple lines if necessary.
That makes it more accessible for larger messages that contain more
guiding information.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Documented how to use local Nuitka checkout with &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pyproject.toml&lt;/span&gt;&lt;/code&gt;
files, this makes debugging Nuitka straightforward in these setups.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added instructions on how to pass extra C and linker flags and to the
User Manual.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Made our auto-format usable for the Nuitka website code too.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Removed dependencies on &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;chrpath&lt;/span&gt;&lt;/code&gt; and the now dead code that would
use it, we are happy with &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;patchelf&lt;/span&gt;&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Updated to latest versions of requirements for development, esp.
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;black&lt;/span&gt;&lt;/code&gt; and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pylint&lt;/span&gt;&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Renamed &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--macos-onefile-icon&lt;/span&gt;&lt;/code&gt; to &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--macos-app-icon&lt;/span&gt;&lt;/code&gt; because that
is what it is really used for.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Unified how dependencies are installed in GitHub actions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Updated man page contents for option name changes from last releases.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Updated the WinLibs MinGW64 download used on Windows to the latest
version.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Updated the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;ccache&lt;/span&gt;&lt;/code&gt; binary used on Windows with MinGW64. This is
in preparation of using it potentially for MSVC as well.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Updated Visual Code C config to use Python3.10 and MSVC 2022 include
paths.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="tests"&gt;
&lt;h2&gt;Tests&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Better outputs from standalone library compilation test, esp. when
finding a problem, present the script to reproduce it immediately.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enhanced generated tests to cover &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str&lt;/span&gt;&lt;/code&gt; methods to use keyword
arguments.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added automatic execution of &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pyproject.toml&lt;/span&gt;&lt;/code&gt; driven test case.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enhanced output in case of &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;optimization&lt;/span&gt;&lt;/code&gt; test failures, dumping
what value is there that has not become a compile time constant.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="summary"&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;This release has seen a lot of consolidation. The plugins layer for data
files is now all powerful, allowing much nicer handling of them by the
plugins, they are better reported in normal output, and they are also
part of the report file that Nuitka can create. You may now also inhibit
their inclusion from the command line, if you decide otherwise.&lt;/p&gt;
&lt;p&gt;The &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pyproject.toml&lt;/span&gt;&lt;/code&gt; now supporting Nuitka arguments is closing an
important gap.&lt;/p&gt;
&lt;p&gt;Generally many features got more polished, e.g. non-automatic inclusion
of stdlib modules has most problems fixed up.&lt;/p&gt;
&lt;p&gt;An important area of improvement, are the hard imports. These will be
used to replace the source based resolution of package requirements with
ones that are proper nodes in the tree. Getting these hard imports to
still retain full compatibility with existing imports, that are more or
less &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;__import__&lt;/span&gt;&lt;/code&gt; uses only, was revealing quite a bit of technical
debt, that has been addressed with this release.&lt;/p&gt;
&lt;p&gt;For onefile, the cached mode is being prepared with the variables added,
but will only be in a later release.&lt;/p&gt;
&lt;p&gt;Also a bunch of new or upgraded packages are working now, and the push
for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;anti-bloat&lt;/span&gt;&lt;/code&gt; work has increased, making many compilations even
more lean, but scalability is still an issue.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
</content>
    <link href="https://nuitka.net/posts/nuitka-release-08.html"/>
    <summary>This is to inform you about the new stable release of Nuitka. It is the extremely compatible Python compiler,
“download now”.</summary>
    <category term="Nuitka" label="Nuitka"/>
    <category term="Python" label="Python"/>
    <category term="compiler" label="compiler"/>
    <published>2022-05-26T10:54:00+02:00</published>
  </entry>
  <entry>
    <id>https://nuitka.net/posts/python-compile-windows.html</id>
    <title>Compile Python on Windows</title>
    <updated>2022-05-15T07:46:50+02:00</updated>
    <author>
      <name>Kay Hayen</name>
    </author>
    <content type="html">&lt;section id="compile-python-on-windows"&gt;

&lt;p&gt;Looking to create an executable from Python script? Let me show you the
full steps to achieve it on &lt;em&gt;Windows&lt;/em&gt;.&lt;/p&gt;
&lt;section id="steps-to-create-a-windows-executable-from-a-python-script-using-nuitka"&gt;
&lt;h2&gt;Steps to create a Windows executable from a Python script using Nuitka&lt;/h2&gt;
&lt;section id="step-1-add-python-to-windows-path"&gt;
&lt;h3&gt;Step 1: Add Python to Windows Path&lt;/h3&gt;
&lt;p&gt;The simple way to add Python to the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;PATH&lt;/span&gt;&lt;/code&gt; do this is to check the box
during installation of CPython. You just &lt;a class="reference external" href="https://www.python.org/downloads/"&gt;download python&lt;/a&gt; and install or modify Python by
checking the box in the installer:&lt;/p&gt;
&lt;img alt="check modify PATH when you install python" src="https://nuitka.net/_images/Python-Installation-Screen-Windows.png" /&gt;
&lt;p&gt;This box is not enabled by default. You can also manually add the Python
installation path to &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;PATH&lt;/span&gt;&lt;/code&gt; environment variable.&lt;/p&gt;
&lt;div class="admonition note"&gt;
&lt;p class="admonition-title"&gt;Note&lt;/p&gt;
&lt;p&gt;You do not strictly have to execute this step, you can also replace
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;python&lt;/span&gt;&lt;/code&gt; with just the absolute path, e.g.
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;C:\Users\YourName\AppData\Local\Programs\Python\Python310\python.exe&lt;/span&gt;&lt;/code&gt;
but that can become inconvenient.&lt;/p&gt;
&lt;/div&gt;
&lt;/section&gt;
&lt;section id="step-2-open-a-windows-prompt"&gt;
&lt;h3&gt;Step 2: Open a Windows Prompt&lt;/h3&gt;
&lt;p&gt;This can be &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;cmd.exe&lt;/span&gt;&lt;/code&gt; or Windows Terminal, or from an IDE like Visual
Code or PyCharm. And then type &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;python&lt;/span&gt;&lt;/code&gt; to verify the correct
installation, and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;exit&lt;/span&gt;&lt;/code&gt; to leave the Python prompt again.&lt;/p&gt;
&lt;img alt="Launch Python in Windows prompt to verify" src="https://nuitka.net/_images/Python-Installation-CMD.png" /&gt;
&lt;/section&gt;
&lt;section id="step-3-install-the-nuitka-python-compiler-package"&gt;
&lt;h3&gt;Step 3: Install the Nuitka Python Compiler package&lt;/h3&gt;
&lt;p&gt;Now install Nuitka with the following command.&lt;/p&gt;
&lt;div class="highlight-bash notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;python&lt;span class="w"&gt; &lt;/span&gt;-m&lt;span class="w"&gt; &lt;/span&gt;pip&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;Nuitka
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;img alt="Install Nuitka in Python" src="https://nuitka.net/_images/Nuitka-Installation-CMD.png" /&gt;
&lt;/section&gt;
&lt;section id="step-4-run-your-program"&gt;
&lt;h3&gt;Step 4: Run your Program&lt;/h3&gt;
&lt;p&gt;Now run your program from the terminal. Convince yourself that
everything is working.&lt;/p&gt;
&lt;div class="highlight-bash notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;python&lt;span class="w"&gt; &lt;/span&gt;fancy-program.py
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="admonition note"&gt;
&lt;p class="admonition-title"&gt;Note&lt;/p&gt;
&lt;p&gt;If it’s a GUI program, make sure it has a &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;.pyw&lt;/span&gt;&lt;/code&gt; suffix. That is
going to make Python know it’s one.&lt;/p&gt;
&lt;/div&gt;
&lt;/section&gt;
&lt;section id="step-5-create-the-executable-using-nuitka"&gt;
&lt;h3&gt;Step 5: Create the Executable using Nuitka&lt;/h3&gt;
&lt;div class="highlight-bash notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;python&lt;span class="w"&gt; &lt;/span&gt;-m&lt;span class="w"&gt; &lt;/span&gt;nuitka&lt;span class="w"&gt; &lt;/span&gt;--onefile&lt;span class="w"&gt; &lt;/span&gt;fancy-program.py
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;In case of a terminal program, add one of many options that Nuitka has
to adapt for platform specifics, e.g. program icon, and so on.&lt;/p&gt;
&lt;div class="highlight-bash notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;python&lt;span class="w"&gt; &lt;/span&gt;-m&lt;span class="w"&gt; &lt;/span&gt;nuitka&lt;span class="w"&gt; &lt;/span&gt;--onefile&lt;span class="w"&gt; &lt;/span&gt;--windows-disable-console&lt;span class="w"&gt; &lt;/span&gt;fancy-program.py
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This will create &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;fancy-program.exe&lt;/span&gt;&lt;/code&gt;.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="step-6-run-the-executable"&gt;
&lt;h3&gt;Step 6: Run the Executable&lt;/h3&gt;
&lt;p&gt;Your executable should appear right near &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;fancy-program.py&lt;/span&gt;&lt;/code&gt; and
opening the explorer or running &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;fancy-program.exe&lt;/span&gt;&lt;/code&gt; from the Terminal
should be good.&lt;/p&gt;
&lt;div class="highlight-bash notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;fancy-program.exe
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;/section&gt;
</content>
    <link href="https://nuitka.net/posts/python-compile-windows.html"/>
    <summary>Looking to create an executable from Python script? Let me show you the
full steps to achieve it on Windows.</summary>
    <category term="Python" label="Python"/>
    <category term="quiz" label="quiz"/>
    <published>2022-05-15T07:46:50+02:00</published>
  </entry>
  <entry>
    <id>https://nuitka.net/posts/nuitka-release-07.html</id>
    <title>Nuitka Release 0.7</title>
    <updated>2022-02-21T13:10:00+01:00</updated>
    <author>
      <name>Kay Hayen</name>
    </author>
    <content type="html">&lt;section id="nuitka-release-0-7"&gt;

&lt;p&gt;This is to inform you about the new stable release of &lt;a class="reference external" href="https://nuitka.net"&gt;Nuitka&lt;/a&gt;. It is the extremely compatible Python compiler,
&lt;a class="reference external" href="/doc/download.html"&gt;“download now”&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This release is massively improving macOS support, esp. for M1 and the
latest OS releases, but it also has massive improvements for usability
and bug fixes in all areas.&lt;/p&gt;
&lt;section id="bug-fixes"&gt;
&lt;h2&gt;Bug Fixes&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Fix, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;set&lt;/span&gt;&lt;/code&gt; creation wasn’t annotating its possible exception exit
from hashing values and is not as free of side effects as &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;list&lt;/span&gt;&lt;/code&gt;
and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;tuple&lt;/span&gt;&lt;/code&gt; creations are. Fixed in 0.6.19.1 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Windows: Fix, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--experimental&lt;/span&gt;&lt;/code&gt; option values got lost for the C
compilation when switching from MSVC to MinGW64, making them have no
effect. Fixed in 0.6.19.1 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Windows: Fix, Clang from MinGW64 doesn’t support LTO at this time,
therefore default to &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;no&lt;/span&gt;&lt;/code&gt; for it. Fixed in 0.6.19.1 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Debian: Fix, failed to detect Debian unstable as suitable for
linking, it doesn’t have the release number. Fixed in 0.6.19.1
already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added data files for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pygsheets&lt;/span&gt;&lt;/code&gt; package. Fixed in
0.6.19.2 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, paths from plugin related file paths need to be made absolute
before used internally, otherwise the cache can fail to deduplicate
them. Fixed in 0.6.19.2 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Python3: With gcc before version 5, e.g. on CentOS 7, where we switch
to using &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;g++&lt;/span&gt;&lt;/code&gt; instead, the gcc version checks could crash. Fixed
in 0.6.19.2 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Windows: Disable MinGW64 wildcard expansion for command line
arguments. This was breaking command lines with arguments like
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--filename&lt;/span&gt; &lt;span class="pre"&gt;*.txt&lt;/span&gt;&lt;/code&gt;, which under &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;cmd.exe&lt;/span&gt;&lt;/code&gt; are left alone by the
shell, and are to be expanded by the program. Fixed in 0.6.19.2
already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added missing implicit dependency needed for
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--follow-stdlib&lt;/span&gt;&lt;/code&gt; with Python for some uses of the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;locale&lt;/span&gt;&lt;/code&gt;
module. Fixed in 0.6.19.2 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added workarounds for newest &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;numpy&lt;/span&gt;&lt;/code&gt; that wants to set
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;__code__&lt;/span&gt;&lt;/code&gt; objects and required improvements for macOS library
handling. Fixed in 0.6.19.3 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Windows: Caching of DLL dependencies for the main programs was not
really working, requiring to detect them anew for every standalone
compilation for no good reason. Fixed in 0.6.19.3 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Windows: Fix, CTRL-C from a terminal was not propagated to child
processes on Windows. Fixed in 0.6.19.4 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: With &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;certifi&lt;/span&gt;&lt;/code&gt; and Python3.10 the
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;importlib.resource&lt;/span&gt;&lt;/code&gt; could trigger Virus scanner inflicted file
access errors. Fixed in 0.6.19.4 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Python3.10: Reverted error back iteration past end of generator
change for Python 3.10.2 or higher to become compatible with that
too. Fixed in 0.6.19.5 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added support for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;anyio&lt;/span&gt;&lt;/code&gt; and by proxy for Solana.
Fixed in 0.6.19.5 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, compilation with resource mode &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;incbin&lt;/span&gt;&lt;/code&gt; and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--debugger&lt;/span&gt;&lt;/code&gt; was
not working together. Fixed in 0.6.19.5 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, format optimization of known &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str&lt;/span&gt;&lt;/code&gt; objects was not properly
annotating an exception exit when being optimized away, causing
consistency checks to complain. Fixed in 0.6.19.5 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Windows: Fix, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;clcache&lt;/span&gt;&lt;/code&gt; didn’t work for non-standard encoding
source paths due to using th direct mode, where wrong filenames are
output by MSVC. Fixed in 0.6.19.5 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Windows: Fix, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;ccache&lt;/span&gt;&lt;/code&gt; cannot handle source code paths for
non-standard encoding source paths. Fixed in 0.6.19.5 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Python2.6: Fix, calls to &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;iteritems&lt;/span&gt;&lt;/code&gt; and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;iterkeys&lt;/span&gt;&lt;/code&gt; on known
dictionary values could give wrong values. Fixed in 0.6.19.5 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, the value of &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;__module__&lt;/span&gt;&lt;/code&gt; if set by the metaclass was
overwritten when creating types. Fixed in 0.6.19.6 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Plugins: Add support for the latest version of &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pkg_resources&lt;/span&gt;&lt;/code&gt; that
has “vendored” even more packages. Fixed in 0.6.19.6 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Onefile: The onefile binary was locked during run time and could not
be renamed, preventing in-place updates. This has been resolved and
now on Windows, the standard trick for updating a running binary of
renaming it, then placing the new file works.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, wasn’t checking the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;zstandard&lt;/span&gt;&lt;/code&gt; version and as a result could
crash if too old versions of it. This is now checked.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;macOS: Large amounts of bug fixes for the dependency scanner. It got
cleaned up and now handles many more cases correctly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Windows: Fix, was not properly detecting wrong ClangCL architecture
mismatch with the Python architecture. This could result in strange
errors during C compilation in this setup.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added implicit dependencies for the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;asyncpg&lt;/span&gt;&lt;/code&gt; module.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Linux: Detect Debian or Ubuntu base and distribution name more
reliably. This helps esp. with static libpython optimization being
recognized automatically.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="new-features"&gt;
&lt;h2&gt;New Features&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;We now disallow options that take arguments to be provided without
using &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;=&lt;/span&gt;&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Previously &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--lto&lt;/span&gt; &lt;span class="pre"&gt;no&lt;/span&gt;&lt;/code&gt; worked just as well as &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--lto=no&lt;/span&gt;&lt;/code&gt; did. And
that was the cause of problems when &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--lto&lt;/span&gt;&lt;/code&gt; first became a choice.&lt;/p&gt;
&lt;p&gt;Recently similar, but worse problems were observed, where e.g.
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--include-module&lt;/span&gt;&lt;/code&gt; could swallow trailing other arguments when
users forgot to specify the name by accident. Therefore this style of
giving options is now explicitly rejected.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Compiled types of Nuitka now inherit from uncompiled types. This
should allow easier and more complete compatibility, making even code
in extension modules that uses &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;PyObject_IsInstance&lt;/span&gt;&lt;/code&gt; work, e.g.
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pydantic&lt;/span&gt;&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;macOS: Added signing of application bundles and standalone binaries
for deployment to newer macOS platforms and esp. M1 where these are
mandatory for execution.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;macOS: Added support for selecting the single macOS target arch to
create a binary for. The &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;universal&lt;/span&gt;&lt;/code&gt; architecture is not yet
supported though, but will be added in a future release.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added support for compression in onefile mode through the use of an
other Python installation, that has the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;zstandard&lt;/span&gt;&lt;/code&gt; module
installed. With this it will work with 2.6 or higher, but require a
3.5 or higher Python with it installed in either &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;PATH&lt;/span&gt;&lt;/code&gt; or on
Windows in the registry alternatively.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added UPX plugin to compress created extension modules and binaries
and for standalone mode, the included DLLs. For onefile, the
compression is not useful since it has the payload already
compressed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added a more explicit way to list usable MSVC versions with
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--msvc=list&lt;/span&gt;&lt;/code&gt; rather than requiring an invalid value. Check values
given in the same way that Scons will do.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added support for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--python-flag=-u&lt;/span&gt;&lt;/code&gt; which disabled outputs
buffers, so that these outputs are written immediately.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Plugins: Always on plugins now can have command line options. We want
this for the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;anti-bloat&lt;/span&gt;&lt;/code&gt; plugin that is enabled by default in this
release.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Plugins: Added ability for plugin to provide fake dependencies for a
module. We want the this for the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;multiprocessing&lt;/span&gt;&lt;/code&gt; plugin, that is
now enabled by default in this release too.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Plugins: Added ability for plugins to modify DLLs after copy for
standalone. We will be using this in the new &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;upx&lt;/span&gt;&lt;/code&gt; plugin.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added retry for file copies that fail due to still running program.
This can happen on Windows with DLLs in standalone mode. For
interactive compilation, this allows a retry to happen after
prompting the user.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;UI: Added ability to list MSVC versions with &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--msvc=list&lt;/span&gt;&lt;/code&gt;, and
detect illegal values given to &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--msvc=&lt;/span&gt;&lt;/code&gt; before Scons sees them, it
also crashes with a relative unhelpful error message.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;UI: When linking, close the C compilation progress bar and state that
that linking is going on. For some very large LTO compilations, it
was otherwise at 100% and still taking a long time, confusing users.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Plugins: Added new plugin that is designed to handle DLL dependencies
through a configuration file that can both handle filename patterns
as well as code provided DLL locations.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Optimization: Exclude parts of the standard library by default. This
allows for much smaller standalone distributions on modules, that can
be expected to never be an implicit dependency of anything, e.g.
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;argparse&lt;/span&gt;&lt;/code&gt; or &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pydoc&lt;/span&gt;&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="optimization"&gt;
&lt;h2&gt;Optimization&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Standalone: Do not include &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;encodings.bz2_codec&lt;/span&gt;&lt;/code&gt; and
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;encodings.idna&lt;/span&gt;&lt;/code&gt; anymore, these are not file system encodings, but
require extension modules.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Make sure we use proper &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;(void)&lt;/span&gt;&lt;/code&gt; arguments for C functions without
arguments, as for C functions, that makes a real difference, they are
variable args functions and more expensive to call otherwise.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For standalone, default to using &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--python-flag=no_site&lt;/span&gt;&lt;/code&gt; to avoid
the overhead that the typically unused &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;site&lt;/span&gt;&lt;/code&gt; module incurs. It
often includes large parts of the standard library, which we now want
to be more selective about. There is new Python flag added called
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--python-flag=site&lt;/span&gt;&lt;/code&gt; that restores the inclusion of &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;site&lt;/span&gt;&lt;/code&gt;
module.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Exclude non-critical codec modules from being technical,
i.e. have to be available at program startup. This removes the need
for e.g. &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;bz2&lt;/span&gt;&lt;/code&gt; related extension modules previously included.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In reformulations, use dictionary methods directly, we have since
introduced dictionary specific methods, and avoid the unnecessary
churn during optimization.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The complex call helper could trigger unnecessary passes in some
cases. The pure functions were immediately optimized, but usages in
other modules inside loops sometimes left them in incomplete states.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Windows: Avoid repeated hashing of the same files over and over for
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;clcache&lt;/span&gt;&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cache dependencies of bytecode demoted modules in first compile and
reuse that information in subsequent compilations.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Linux: Added option for switching compression method for onefile
created with &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;AppImage&lt;/span&gt;&lt;/code&gt;. The default is also now &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;gzip&lt;/span&gt;&lt;/code&gt; and not
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;xz&lt;/span&gt;&lt;/code&gt; which has been observed to cause much slower startup for
little size gains.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: For failed relative imports, during compiled time
absolute imports were attempted still and included if successful, the
imports would not be use them at run time, but lead to more modules
being included than necessary.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="organizational"&gt;
&lt;h2&gt;Organizational&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;There is now a &lt;a class="reference external" href="https://discord.gg/nZ9hr9tUck"&gt;Discord server for Nuitka community&lt;/a&gt; where you can hang out with the
developers and ask questions. It is mirrored with the Gitter
community chat, but offers more features.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;anti-bloat&lt;/span&gt;&lt;/code&gt; is now on by default. It helps scalability by
changing popular packages to not provide test frameworks,
installation tools etc. in the resulting binary. This oftentimes
reduces the compilation by thousands of modules.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Also the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;multiprocessing&lt;/span&gt;&lt;/code&gt; plugin is now on by default. Detecting
its need automatically removes a source of problems for first time
users, that didn’t know to enable it, but had all kinds of strange
crashes from multiprocessing malfunctioning. This should enhance the
out of the box experience by a lot.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;With this release, the version numbering scheme will be changed. For
a long time we have used 4 digits, where one is a leading zero. That
was initially done to indicate that it’s not yet ready. However, that
is just untrue these days. Therefore, we switch to 3 digits, and a
first hotfix with now be 0.7.1 rather than 0.6.19.1, which is too
long.&lt;/p&gt;
&lt;p&gt;It has been observed that people disregard differences in the third
digit, but actually for Nuitka these have oftentimes been very
important updates. This change is to rectify it, and a new release
will be &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;0.8&lt;/span&gt;&lt;/code&gt;, and there will be a &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;1.0&lt;/span&gt;&lt;/code&gt; release after &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;0.9&lt;/span&gt;&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added a new section to User Manual that explains how to manually load
files, such that it is cleaner and compatible code. Using paths
relative to current directory is not the right way, but there are
nice helpers that make it very simple and correct with all kinds of
contexts.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Report the MSVC version in Scons output during compilation. The 2022
version is required, but we support everything back to 2008, to work
on very old systems as well. This will help identifying differences
that arise from there.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Quality: Find Clang format from MSVC 2022 too. We use in auto format
of Nuitka source code, but need to also search that as a new path.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added a spellchecker extension for Visual Code, resulting in many
spelling fixes in all kinds of documentation and code. This finds
more things than &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;codespell&lt;/span&gt;&lt;/code&gt;, but also has a lot of false alarms.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Check value of &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--onefile-tempdir-spec&lt;/span&gt;&lt;/code&gt; for typical user errors. It
cannot be &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;.&lt;/span&gt;&lt;/code&gt; as that would require to overwrite the onefile binary
on Windows, and will generally behave very confusing. Warn about
absolute or relative paths going outside of where the binary lives.
Can be useful in controlled setups, but not generally. Also warn
about using no variables, making non-unique paths.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;macOS: Flavor detection was largely expanded. The &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;Apple&lt;/span&gt;&lt;/code&gt; flavor is
recognized on more systems. &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;Homebrew&lt;/span&gt;&lt;/code&gt; was newly added, and we
actually can detect &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;CPython&lt;/span&gt;&lt;/code&gt; reliably as a first.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added a tool from leo project to create better &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;.pyi&lt;/span&gt;&lt;/code&gt; files for
modules. We will make use of it in the future to enhance the files
created by Nuitka to not only contain hidden dependencies, but
optionally also module signatures.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Plugins: Clearer information from &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pyside2&lt;/span&gt;&lt;/code&gt; that patched wheels
might be mandatory and workarounds only patches cannot be done for
older Python.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added progress bars for DLL dependency detection and DLL copying for
standalone. These both can end up using take a fair bit of time
depending on project size, and it’s nice to know what’s going on.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;macOS: Added support for using both &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--onefile&lt;/span&gt;&lt;/code&gt; and
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--macos-create-app-bundle&lt;/span&gt;&lt;/code&gt; as it is needed for PySide2 due to
issues with signing code now.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added warning when attempting to include extension modules in an
accelerated compilation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Modules: Catch the user error of following all imports when creating
a module. This is very unlikely to produce usable results.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Start integrating &lt;a class="reference external" href="https://sourcery.ai"&gt;Sourcery&lt;/a&gt; for improved
Nuitka code. It will comment on PRs and automatically improve Nuitka
code as we develop it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Debugging: Added command line tool &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;find-module&lt;/span&gt;&lt;/code&gt; that outputs how
Nuitka locates a module in the Python environment it’s ran with. That
removes the need to use Python prompt to dump &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;__file__&lt;/span&gt;&lt;/code&gt; of
imported modules. Some modules even hide parts of their namespace
actively during run-time, the tool will not be affected by that.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="cleanups"&gt;
&lt;h2&gt;Cleanups&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Refactored Python scan previously used for Scons usage on versions
that need to run in with another Python to be more generally usable.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use explicit &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;nuitka.utils.Hashing&lt;/span&gt;&lt;/code&gt; module that allows the core to
perform these operations with simpler code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;macOS: Use &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;isPathBelow&lt;/span&gt;&lt;/code&gt; for checking if something is a system
library for enhanced robustness and code clarity.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;macOS: Make sure to use our proper error checking wrappers for
command execution when using tools like &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;otool&lt;/span&gt;&lt;/code&gt; or &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;codesign&lt;/span&gt;&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Avoid a temporary file with a script during technical
import detection. These have been observed to potentially become
corrupted, and this avoids any chance of that happening, while also
being simpler code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Avoid naming things &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;shlib&lt;/span&gt;&lt;/code&gt; and call them &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;extension&lt;/span&gt;&lt;/code&gt; instead.
Inspired by the spell checker disliking the former term, which is
also less precise.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Removed the dead architecture selection option for Windows, it was
unused for a long time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Moved Windows &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;SxS&lt;/span&gt;&lt;/code&gt; handling of DLLs to a more general place where
also macOS specific tasks are applied, to host standard modification
of DLLs during their copying.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="tests"&gt;
&lt;h2&gt;Tests&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Better matching of relative filenames for search modes of the
individual test suite runners.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Debugger outputs on segfaults were no longer visible and have been
restored.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="summary"&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;This release is tremendous progress for macOS. Finally biting the bullet
and paying obscene amounts of money to rent an M1 machine, it was
possible to enhance the support for this platform. Currently typical
packages for macOS are being made compatible as well, so it can now be
expected to perform equally well.&lt;/p&gt;
&lt;p&gt;On the quality side, the spell checker has had some positive effects,
finding typos and generally misspelled code, that &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;codespell&lt;/span&gt;&lt;/code&gt; does
not, due to it being very conservative.&lt;/p&gt;
&lt;p&gt;The trend to enhance plugins has continued. The copying of DLLs is very
nearly finalized. Making more plugins enabled by default is seeing a lot
of progress, with 2 important ones addressed.&lt;/p&gt;
&lt;p&gt;Work on the size of distributions has seen a lot of positive results, in
that now standalone distributions are often very minimal, with many
extension modules from standard library no longer being present.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
</content>
    <link href="https://nuitka.net/posts/nuitka-release-07.html"/>
    <summary>This is to inform you about the new stable release of Nuitka. It is the extremely compatible Python compiler,
“download now”.</summary>
    <category term="Nuitka" label="Nuitka"/>
    <category term="Python" label="Python"/>
    <category term="compiler" label="compiler"/>
    <published>2022-02-21T13:10:00+01:00</published>
  </entry>
  <entry>
    <id>https://nuitka.net/posts/next-nuitka-live-stream-30-01-2022.html</id>
    <title>Next Nuitka Live Stream</title>
    <updated>2022-01-30T00:00:00+01:00</updated>
    <content type="html">&lt;section id="next-nuitka-live-stream"&gt;

&lt;p&gt;Today, Sunday 30.01.2022, there will be the third live stream of me
coding on Nuitka, and talking and chatting with visitors in the Discord
channel created specifically for this. I will go from 9-12 CEST and from
18 CEST until probably at least 20 CEST, but it seems I tend to go
overtime.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="last-time"&gt;
&lt;h1&gt;Last time&lt;/h1&gt;
&lt;p&gt;So the last two streams are on my Youtube, these are around 4h videos,
done on the same day.&lt;/p&gt;
&lt;p&gt;In the second stream I was working on Onefile compression for all Python
versions, by making the location of another Python that for Scons we
sort of did already, reusable. So now, you can run Nuitka with Python2.6
and compile your legacy code, while with say 3.6 also installed on the
same system, you do the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;zstandard&lt;/span&gt;&lt;/code&gt; compression. That will be used for
other things in the future as well. This is going to be part of the next
release and currently on develop.&lt;/p&gt;
&lt;p&gt;In the first stream, I also did a little bit of performance plans, but
mostly only showing people what I have there in stock, not actually went
there and I started work on a &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;upx&lt;/span&gt;&lt;/code&gt; plugin, such that DLLs for
standalone are compressed with that. That also required a bit of plugin
interface changes and research. This one works mostly, but will need
more live. Also I think I looked at reducing what is included with the
follow standard library option, getting very minimal distributions out
of it.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="this-time"&gt;
&lt;h1&gt;This time&lt;/h1&gt;
&lt;p&gt;All around, this last stream, was a huge success. I was a bit under the
weather last weekend, but we go on now.&lt;/p&gt;
&lt;p&gt;Not sure yet, what to do. I might be debugging issues I have with 2.6
and a recent optimization, that prevents factory branch from becoming
the next pre-release, I might be looking at macOS still. And I might be
looking at the caching of bytecode demoted modules, that is kind of
ready to be used, but is not currently, which is a pity. And of course,
the Python PGO may get a closer look, such that e.g. it works for
standalone mode.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="how-to-join"&gt;
&lt;h1&gt;How to Join&lt;/h1&gt;
&lt;p&gt;There is a &lt;a class="reference external" href="/pages/Streaming.html"&gt;dedicated page on the web site&lt;/a&gt;
which has the details. Spoiler, it’s free and I have no plans for
anything that involves a subscription of any kind. Of course, talking of
subscription, do also checkout the &lt;a class="reference external" href="/doc/commercial.html"&gt;Nuitka commercial&lt;/a&gt; offering. That is a subscription with adds that
protect your IP even more than regular Nuitka.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="join-me"&gt;
&lt;h1&gt;Join me&lt;/h1&gt;
&lt;p&gt;Come and join me there. &lt;a class="reference external" href="/pages/Streaming.html"&gt;Instructions&lt;/a&gt; here.
You know you want to do it. I know I want you to do to it!&lt;/p&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;Yours,&lt;/div&gt;
&lt;div class="line"&gt;Kay&lt;/div&gt;
&lt;/div&gt;
&lt;/section&gt;
</content>
    <link href="https://nuitka.net/posts/next-nuitka-live-stream-30-01-2022.html"/>
    <summary>Today, Sunday 30.01.2022, there will be the third live stream of me
coding on Nuitka, and talking and chatting with visitors in the Discord
channel created specifically for this. I will go from 9-12 CEST and from
18 CEST until probably at least 20 CEST, but it seems I tend to go
overtime.</summary>
    <category term="Nuitka" label="Nuitka"/>
    <category term="Python" label="Python"/>
    <category term="compiler" label="compiler"/>
    <category term="stream" label="stream"/>
    <published>2022-01-30T00:00:00+01:00</published>
  </entry>
  <entry>
    <id>https://nuitka.net/posts/first-nuitka-live-stream.html</id>
    <title>First Nuitka Live Stream</title>
    <updated>2022-01-14T00:00:00+01:00</updated>
    <content type="html">&lt;section id="first-nuitka-live-stream"&gt;

&lt;p&gt;Tomorrow, Saturday 15.01.2022, there will be not one, but two live
stream of me coding on Nuitka, and talking and chatting with visitors in
the Discord channel created specifically for this. I will go from 9-12
CEST and from 17-20 CEST.&lt;/p&gt;
&lt;p&gt;There is a &lt;a class="reference external" href="/pages/Streaming.html"&gt;dedicated page on the web site&lt;/a&gt;
which has the details. Spoiler, it’s free and I have no plans for
anything that involves a subscription of any kind. Of course, talking of
subscription, do also checkout the &lt;a class="reference external" href="/doc/commercial.html"&gt;Nuitka commercial&lt;/a&gt; offering. That is a subscription with adds that
protect your IP even more than regular Nuitka.&lt;/p&gt;
&lt;p&gt;I want to do this on a regular basis, and I will be happy to do this
even when nearly nobody shows up. It will be however your chance, and in
previous GSoC and generally, I made very good experiences with joint
sessions. So I hope you will help me pasting code snippets and Google
results in chat, and discuss the optimization that we are going to add.&lt;/p&gt;
&lt;p&gt;Come and join me there. &lt;a class="reference external" href="/pages/Streaming.html"&gt;Instructions&lt;/a&gt; here.
You know you want to do it. I know I want you to do to it!&lt;/p&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;Yours,&lt;/div&gt;
&lt;div class="line"&gt;Kay&lt;/div&gt;
&lt;/div&gt;
&lt;/section&gt;
</content>
    <link href="https://nuitka.net/posts/first-nuitka-live-stream.html"/>
    <summary>Tomorrow, Saturday 15.01.2022, there will be not one, but two live
stream of me coding on Nuitka, and talking and chatting with visitors in
the Discord channel created specifically for this. I will go from 9-12
CEST and from 17-20 CEST.</summary>
    <category term="Nuitka" label="Nuitka"/>
    <category term="Python" label="Python"/>
    <category term="compiler" label="compiler"/>
    <category term="stream" label="stream"/>
    <published>2022-01-14T00:00:00+01:00</published>
  </entry>
  <entry>
    <id>https://nuitka.net/posts/nuitka-release-0619.html</id>
    <title>Nuitka Release 0.6.19</title>
    <updated>2022-01-12T10:51:00+01:00</updated>
    <author>
      <name>Kay Hayen</name>
    </author>
    <content type="html">&lt;section id="nuitka-release-0-6-19"&gt;

&lt;p&gt;This is to inform you about the new stable release of &lt;a class="reference external" href="https://nuitka.net"&gt;Nuitka&lt;/a&gt;. It is the extremely compatible Python compiler,
&lt;a class="reference external" href="/doc/download.html"&gt;“download now”&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This release adds support for 3.10 while also adding very many new
optimization, and doing a lot of bug fixes.&lt;/p&gt;
&lt;section id="bug-fixes"&gt;
&lt;h2&gt;Bug Fixes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Calls to &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;importlib.import_module&lt;/span&gt;&lt;/code&gt; with expressions that need
releases, i.e. are not constant values, could crash the compilation.
Fixed in 0.6.18.1 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;After a fix for the previous release, modules that fail to import are
attempted again when another import is executed. However, during this
initialization for top level module in &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--module&lt;/span&gt;&lt;/code&gt; mode, this was
was done repeatedly, and could cause issues. Fixed in 0.6.18.1
already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Ignore warning given by &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;patchelf&lt;/span&gt;&lt;/code&gt; on Linux with at
least newer OpenSUSE. Fixed in 0.6.18.1 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, need to avoid computing large values out of &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;/code&gt; operation as
well. Fixed in 0.6.18.2 already.&lt;/p&gt;
&lt;div class="highlight-python notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c1"&gt;# This large value was computed at run time and then if used, also&lt;/span&gt;
&lt;span class="c1"&gt;# converted to a string and potentially hashed, taking a long time.&lt;/span&gt;
&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;maxint&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Ignore warning given by &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;patchelf&lt;/span&gt;&lt;/code&gt; on Linux about a
workaround being applied.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, calls to &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;importlib.import_module&lt;/span&gt;&lt;/code&gt; were not correctly creating
code for dynamic argument values that need to be released, causing
the compilation to report the error. Fixed in 0.6.18.1 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;MSYS2: Fix, the console scripts are actually good for it as opposed
to CPython, and the batch scripts should not be installed. Fixed in
0.6.18.2 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Setuptools: Added support older version of &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;setuptools&lt;/span&gt;&lt;/code&gt; in meta
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;build&lt;/span&gt;&lt;/code&gt; integration of Nuitka.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, calls to &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;importlib.import_module&lt;/span&gt;&lt;/code&gt; with 2 arguments that are
dynamic, were not working at all. Fixed in 0.6.18.2 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Windows: Compiling with MinGW64 without &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;ccache&lt;/span&gt;&lt;/code&gt; was not working
due to issues in Scons. Fixed in 0.6.18.2 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;repr&lt;/span&gt;&lt;/code&gt; built-in was falsely annotated as producing a
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str&lt;/span&gt;&lt;/code&gt; value, but it can be also derived or &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;unicode&lt;/span&gt;&lt;/code&gt; in Python2.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, attribute nodes were not considering the value they are looking
up on. Now that more values will know to have the attributes, that
was causing errors. Fixed in 0.6.18.2 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, left shifting can also produce large values and needs to be
avoided in that case, similar to what we do for multiplications
already. Fixed in 0.6.18.2 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;UI: The new option &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--disable-ccache&lt;/span&gt;&lt;/code&gt; didn’t really have the
intended effect. Fixed in 0.6.18.3 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;UI: The progress bar was causing tearing and corrupted outputs, when
outputs were made, now using proper &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;tqdm&lt;/span&gt;&lt;/code&gt; API for doing it, this
has been solved. Fixed in 0.6.18.4 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, the constant value &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;sys.version_info&lt;/span&gt;&lt;/code&gt; didn’t yet have support
for its type to be also a compile time constant in e.g. tuples. Fixed
in 0.6.18.4 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Onefile: Assertions were not disabled, and on Windows with MinGW64
this lead to including the C filenames of the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;zstd&lt;/span&gt;&lt;/code&gt; inline copy
files and obviously less optimal code. Fixed in 0.6.18.4 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added support for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;bottle.ext&lt;/span&gt;&lt;/code&gt; loading extensions to
resolve at compile time. Fixed in 0.6.18.5 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added support for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;seedir&lt;/span&gt;&lt;/code&gt; required data file. Fixed in
0.6.18.5 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;MSYS2: Failed to link when using the static libpython, which is also
now the default for &lt;strong&gt;MSYS2&lt;/strong&gt;. Fixed in 0.6.18.5 already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Python3.6+: Fix, the intended finalizer of compiled &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;asyncgen&lt;/span&gt;&lt;/code&gt; was
not present and in fact associated to help type. This could have
caused corruption, but that was also very unlikely. Fixed in 0.6.18.5
already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Python3: Fix, need to set &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;__file__&lt;/span&gt;&lt;/code&gt; before executing modules, as
some modules, e.g. newer PyWin32 use them to locate things during
their initialization already.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Handle all PyWin32 modules that need the special DLLs and
not just a few.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, some &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;.pth&lt;/span&gt;&lt;/code&gt; files create module namespaces with &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;__path__&lt;/span&gt;&lt;/code&gt;
that does not exist, ignore these in module importing.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Python2.6-3.4: Fix, modules with an error could use their module name
after it was released.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Distutils: When providing arguments, the method suggested in the docs
is not compatible with all other systems, e.g. not
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;setuptools_rust&lt;/span&gt;&lt;/code&gt; for which a two elements tuple form needs to be
used for values. Added support for that and documented its use as
well in the User Manual.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Python3.7+: Do no longer allow deleting cell values, this can lead to
corruption and should be avoided, it seems unlikely outside of tests
anyway.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added support for more ciphers and hashes with
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pycryptodome&lt;/span&gt;&lt;/code&gt; and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pycryptodomex&lt;/span&gt;&lt;/code&gt;, while also only including
Ciphers when needed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Distutils: Was not including modules or packages only referenced in
the entry point definition, but not in the list of packages. That is
not compatible and has been fixed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, must not expose the constants blob from extension modules, as
loading these into a compiled binary can cause issues in this case.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standalone: Added support for including OpenGL and SSL libraries with
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;PySide2&lt;/span&gt;&lt;/code&gt; and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;PySide6&lt;/span&gt;&lt;/code&gt; packages.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Windows: Fix, the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;cmd&lt;/span&gt;&lt;/code&gt; files created for uninstalled Python and
accelerated programs to find the Python installation were not passing
command line arguments.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Windows: Executing modules with &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--run&lt;/span&gt;&lt;/code&gt; was not working properly
due to missing escaping of file paths.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix, parsing &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;.pyi&lt;/span&gt;&lt;/code&gt; files that make relative imports was not
resolving them correctly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Python3: Fix, when disabling the console on Windows, make sure the
file handles still work and are not &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;None&lt;/span&gt;&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Windows: Fix, need to claim all OS versions of Windows as supported,
otherwise e.g. high DPI features are not available.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="new-features"&gt;
&lt;h2&gt;New Features&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Programs that are to be executed with the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;-m&lt;/span&gt;&lt;/code&gt; flag, can now be
compiled with &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--python-flag=-m&lt;/span&gt;&lt;/code&gt; and will then behave in a
compatible way, i.e. load the containing package first, and have a
proper &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;__package__&lt;/span&gt;&lt;/code&gt; value at run time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We now can write XML reports with information about the compilation.
This is initially for use in PGO tests, to decide if the expected
forms of inclusions have happened and should grow into a proper
reporting tool over time. At this point, the report is not very
useful yet.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added support for Python 3.10, only &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;match&lt;/span&gt;&lt;/code&gt; statements are not
completely supported. Variations with &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;|&lt;/span&gt;&lt;/code&gt; matches that also assign
are not allowed currently.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Windows: Allow using &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--clang&lt;/span&gt;&lt;/code&gt; with &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--mingw64&lt;/span&gt;&lt;/code&gt; to e.g. use the
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;clang.exe&lt;/span&gt;&lt;/code&gt; that is contained in the Nuitka automatic download
rather than &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;gcc.exe&lt;/span&gt;&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added support for Kivy. Works through a plugin that is automatically
enabled and needs no other inputs, detecting everything from using
Kivy at compile time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added initial support for Haiku OS, a clone of BeOS with a few
differences in their Python installation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added experimental plugin &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;trio&lt;/span&gt;&lt;/code&gt; that works around issues with that
package.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="optimization"&gt;
&lt;h2&gt;Optimization&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Also trust hard imports made on the module level in function level
code, this unlocks many more static optimization e.g. with
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;sys.version_info&lt;/span&gt;&lt;/code&gt; when the import and the use are not on the same
level.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For the built-in type method calls with generic implementation, we
now do faster method descriptor calls. These avoid creating a
temporary &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;PyCFunction&lt;/span&gt;&lt;/code&gt; object, that the normal call slot would,
this should make these calls faster. Checking them for compiled
function, etc. was only wasteful, so this makes it more direct.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Loop and normal merge traces were keeping assignments made before the
loop or inside a branch, that was otherwise unused alive. This should
enable more optimization for code with branches and loops. Also
unused loop traces are now recognized and removed as well.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Avoiding merges of escaped traces with the unescaped trace, there is
no point in them. This was actually happening a lot and should mean a
scalability improvement and unlock new optimization as well.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Avoid escaping un-init traces. Unset values need not be considered as
potentially modified as that cannot be done.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str&lt;/span&gt;&lt;/code&gt; shape is now detected through variables, this enables
many optimization on the function level.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added many &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str&lt;/span&gt;&lt;/code&gt; operation nodes.&lt;/p&gt;
&lt;p&gt;These are specifically all methods with no arguments, as these are
very generic to add, introduced a base class for them, where we know
they all have no effect or raise, as these functions are all
guaranteed to succeed and can be served by a common base class.&lt;/p&gt;
&lt;p&gt;This covers the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str.capitalize&lt;/span&gt;&lt;/code&gt;, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str.upper&lt;/span&gt;&lt;/code&gt;, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str.lower&lt;/span&gt;&lt;/code&gt;,
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str.swapcase&lt;/span&gt;&lt;/code&gt;, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str.title&lt;/span&gt;&lt;/code&gt;, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str.isalnum&lt;/span&gt;&lt;/code&gt;, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str.isalpha&lt;/span&gt;&lt;/code&gt;,
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str.isdigit&lt;/span&gt;&lt;/code&gt;, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str.islower&lt;/span&gt;&lt;/code&gt;, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str.isupper&lt;/span&gt;&lt;/code&gt;, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str.isspace&lt;/span&gt;&lt;/code&gt;,
and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str.istitle&lt;/span&gt;&lt;/code&gt; functions.&lt;/p&gt;
&lt;p&gt;For static optimization &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str.find&lt;/span&gt;&lt;/code&gt; and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str.rfind&lt;/span&gt;&lt;/code&gt; were added, as
they are e.g. used in a &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;sys.version.find(...)&lt;/span&gt;&lt;/code&gt; style in the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;os&lt;/span&gt;&lt;/code&gt;
module, helping to decide to not consider &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;OS/2&lt;/span&gt;&lt;/code&gt; only modules.&lt;/p&gt;
&lt;p&gt;Then, support for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str.index&lt;/span&gt;&lt;/code&gt; and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str.rindex&lt;/span&gt;&lt;/code&gt; was added, as
these are very similar to &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str.find&lt;/span&gt;&lt;/code&gt; forms, only that these may
raise an exception.&lt;/p&gt;
&lt;p&gt;Also add support for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str.split&lt;/span&gt;&lt;/code&gt; and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str.rsplit&lt;/span&gt;&lt;/code&gt; which will be
used sometimes for code needed to be compile time computed, to e.g.
detect imports.&lt;/p&gt;
&lt;p&gt;Same goes for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;endswith&lt;/span&gt;&lt;/code&gt; and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;startswith&lt;/span&gt;&lt;/code&gt;, the later is e.g.
popular with &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;sys.platform&lt;/span&gt;&lt;/code&gt; checks, and can remove a lot of code
from compilation with them now being decided at compile time.&lt;/p&gt;
&lt;div class="admonition note"&gt;
&lt;p class="admonition-title"&gt;Note&lt;/p&gt;
&lt;p&gt;A few &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str&lt;/span&gt;&lt;/code&gt; methods are still missing, with time we will achieve
all of them, but this will take time.&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added trust for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;sys.builtin_module_names&lt;/span&gt;&lt;/code&gt; as well. The &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;os&lt;/span&gt;&lt;/code&gt;
module is using it to make platform determinations.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;When writing constant values, esp. &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;tuple&lt;/span&gt;&lt;/code&gt;, &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;list&lt;/span&gt;&lt;/code&gt;, or &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;dict&lt;/span&gt;&lt;/code&gt;
values, an encoding of “last value” has been added, avoiding the need
to repeat the same value again, making many values more compact.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;When starting Nuitka, it usually restarts itself with information
collected in a mode without the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;site&lt;/span&gt;&lt;/code&gt; module loaded, and with hash
randomization disabled, for deterministic behaviour. There is a
option to prevent this from happening, where the goal is to avoid it,
e.g. in testing, say for the coverage taking, but that meant to parse
the options twice, which also loads a lot of code.&lt;/p&gt;
&lt;p&gt;Now only a minimal amount of code is used, and the options are parsed
only on the restart, and then an error is raised when it notices, it
was not allowed to do so. This also makes code a lot cleaner.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Specialized comparison code for Python2 &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;long&lt;/span&gt;&lt;/code&gt; and Python3 &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;int&lt;/span&gt;&lt;/code&gt;
code, making these operations much faster to use.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Specialized comparison code for Python2 &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;unicode&lt;/span&gt;&lt;/code&gt; and Python3
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str&lt;/span&gt;&lt;/code&gt; code, making these operations much faster to use, currently
only &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;==&lt;/span&gt;&lt;/code&gt; and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;!=&lt;/span&gt;&lt;/code&gt; are fully accelerated, the other comparisons
will follow.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enable static libpython with Python3 Debian packages too. As with
Python2, this will improve the performance of the created binary a
lot and reduce size for standalone distribution.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Comparisons with &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;in&lt;/span&gt;&lt;/code&gt; and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;not&lt;/span&gt; &lt;span class="pre"&gt;in&lt;/span&gt;&lt;/code&gt; also consider value traces and
go through variables as well where possible. So far only the rich
comparisons and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;is&lt;/span&gt;&lt;/code&gt; and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;is&lt;/span&gt; &lt;span class="pre"&gt;not&lt;/span&gt;&lt;/code&gt; did that.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create fixed import nodes in re-formulations rather than
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;__import__&lt;/span&gt;&lt;/code&gt; nodes, avoiding later optimization doing that, and of
course that’s simpler code too.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Python 3.10: Added support for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;union&lt;/span&gt;&lt;/code&gt; types as compiled time
constants.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Modules are now fully optimized before considering which modules they
are in turn using, this avoids temporary dependencies, that later
turn out unused, and can shorten the compilation in some cases by a
lot of time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On platforms without a static link library, in LTO mode, and with
gcc, we can use the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;-O3&lt;/span&gt;&lt;/code&gt; mode, which doesn’t work for
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;libpython&lt;/span&gt;&lt;/code&gt;, but that’s not used there. This also includes fake
static libpython, as used by MinGW64 and Anaconda on Windows.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;anti-bloat&lt;/span&gt;&lt;/code&gt; plugin now also handles newer &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;sklearn&lt;/span&gt;&lt;/code&gt; and
knows more about the standard library, and its runners which it will
exclude from compilation if use for it. Currently that is not the
default, but it should become that.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="organizational"&gt;
&lt;h2&gt;Organizational&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Migrated the Nuitka blog from Nikola to Sphinx based ABlog and made
the whole site render with Sphinx, making it a lot more usable.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added a small presentation about Nuitka on the Download page, to make
sure people are aware of core features.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;gi&lt;/span&gt;&lt;/code&gt; plugin is now always on. The copying of the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;typelib&lt;/span&gt;&lt;/code&gt;
when &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;gi&lt;/span&gt;&lt;/code&gt; is imported is harmless and people can disable the plugin
if that’s not needed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;matplotlib&lt;/span&gt;&lt;/code&gt; plugin is new and also always on. It previously
was part of the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;numpy&lt;/span&gt;&lt;/code&gt; plugin, which is doing too many unrelated
things. Moving this one out is part of a plan to split it up and have
it on by default without causing issues.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;MSYS2: Detecting &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;MinGW&lt;/span&gt;&lt;/code&gt; and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;POSIX&lt;/span&gt;&lt;/code&gt; flavors of this Python. For
the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;MinGW&lt;/span&gt;&lt;/code&gt; flavor of MSYS2, the option &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--mingw64&lt;/span&gt;&lt;/code&gt; is now the
default, before it could attempt to use MSVC, which is not going to
work for it. And also the Tcl and Tk installations of it are being
detected automatically for the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;tk-inter&lt;/span&gt;&lt;/code&gt; plugin.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added Windows version to Nuitka version output, so we have this for
bug reports.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;User Manual: Added example explaining how to access values from your
code in Nuitka project options.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;UI: For Python flavors where we expect a static libpython, the error
message will now point out how to achieve it for each flavor.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;UI: Disable progress bar when &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--show-scons&lt;/span&gt;&lt;/code&gt; is used, it makes
capturing the output from the terminal only harder.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;UI: Catch error of specifying both &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--msvc=&lt;/span&gt;&lt;/code&gt; and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--mingw64&lt;/span&gt;&lt;/code&gt;
options.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Distutils: Improved error messages when using &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;setuptools&lt;/span&gt;&lt;/code&gt; or
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;build&lt;/span&gt;&lt;/code&gt; integration and failing to provide packages to compile.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Plugins: Removed now unused feature to rename modules on import, as
it was only making the code more complex, while being no more needed
after recently adding a place for meta path based importers to be
accounted for.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Twitter: Use embedded Tweet in Credits, and regular follow button in
User Manual.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Warnings about imports not done, are now only given when optimization
can not remove the usage, and no options related to following have
been given.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added Windows version to &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--version&lt;/span&gt;&lt;/code&gt; output of Nuitka. This is to
more clearly recognize Windows 10 from Windows 11 report, and also
the odd Windows 7 report, where tool chain will be different.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In Visual Code, the default Python used is now 3.9 in the “Linux” C
configuration. This matches Debian Bullseye.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Nicer outputs from check mode of the auto-format as run for CI
testing, displays problematic files more clearly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Remove broken links to old bug tracker that is no longer online from
the Changelog.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;UI: When hitting CTRL-C during initial technical import detection, no
longer ask to submit a bug report with the exception stack, instead
exit cleanly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Windows: Enable LTO mode for MinGW64 and other gcc by default. We
require a version that can do it, so take advantage of that.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For cases, where code generation of a module takes long, make sure
its name is output when CTRL-C is hit.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Windows: Splash screen only works with MSVC, added error indicator
for MinGW64 that states that and asks for porting help.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="cleanups"&gt;
&lt;h2&gt;Cleanups&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Generate all existing C code for generic builtin type method calls
automatically, and use those for method attribute lookups, making it
easier to add more.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Changed &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;TkInter&lt;/span&gt;&lt;/code&gt; module to data file providing interface, yielding
the 2 directories in question, with a filter for &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;demos&lt;/span&gt;&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The importing code got a major overhaul and no longer works with
relative filenames, or filenames combined with package names, and
module names, but always only with module names and absolute
filenames. This cleans up some of the oldest and most complex code in
Nuitka, that had grown to address various requirements discovered
over time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Major cleanup of Jinja2 template organisation.&lt;/p&gt;
&lt;p&gt;Renamed all C templates from &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;.j2&lt;/span&gt;&lt;/code&gt; to &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;.c.j2&lt;/span&gt;&lt;/code&gt; for clarity, this
was not done fully consistent before. Also move all C templates to
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;nuitka.codegen&lt;/span&gt;&lt;/code&gt; package data, it will be confusing to make a
difference between ones used during compile time and for the static
generation, and the lines are going to become blurry.&lt;/p&gt;
&lt;p&gt;Added Jinja2 new macro &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;CHECK_OBJECTS&lt;/span&gt;&lt;/code&gt; to avoid branches on
argument count in the call code templates. More of these things
should be added.&lt;/p&gt;
&lt;p&gt;Cleanup of code that generates header declarations, there was some
duplication going on, that made it hard to generate consistent code.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Removed &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;nuitka.finalizatios.FinalizationBase&lt;/span&gt;&lt;/code&gt;, we only have one
final visitor that does everything, and that of course makes a lot of
sense for its performance.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Major cleanup of the Scons C compiler configuration setup. Moved
things to the dedicate function, and harmonized it more.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Resolved deprecation warnings given by with &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--python-debug&lt;/span&gt;&lt;/code&gt; for
Nuitka.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="tests"&gt;
&lt;h2&gt;Tests&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Started test suite for Python PGO, not yet completely working though,
it’s not yet doing what is needed though.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added generated test that exercises str methods in multiple
variations.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Revived &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;reflected&lt;/span&gt;&lt;/code&gt; test suite, that had been removed, because of
Nuitka special needs. This one is not yet passing again though, due
to a few details not yet being as compatible as needed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added test suite for CPython 3.10 and enable execution of tests with
this version on GitHub actions.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="summary"&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;This release is another big step forward.&lt;/p&gt;
&lt;p&gt;The amount of optimization added is again very large, some of which yet
again unlocks more static optimization of module imports, that
previously would have to be considered implicit. Now analyzing these on
the function level as well, we can start searching for cases, where it
could be done, but is not done yet.&lt;/p&gt;
&lt;p&gt;After starting with &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;dict&lt;/span&gt;&lt;/code&gt;, method optimization has focused on &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;str&lt;/span&gt;&lt;/code&gt;
which is esp. important for static optimization of imports. The next
goal will here be to cover &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;list&lt;/span&gt;&lt;/code&gt; which are important for run time
performance and currently not yet optimized. Future releases will
progress there, and also add more types.&lt;/p&gt;
&lt;p&gt;The C type specialization for Python3 has finally progressed, such that
it is also covering the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;long&lt;/span&gt;&lt;/code&gt; and &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;unicode&lt;/span&gt;&lt;/code&gt; and as such not limited
to Python2 as much. The focus now needs to turn back to not working with
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;PyObject&lt;/span&gt; &lt;span class="pre"&gt;*&lt;/span&gt;&lt;/code&gt; for these types, but e.g. with &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;+=&lt;/span&gt; &lt;span class="pre"&gt;1&lt;/span&gt;&lt;/code&gt; to make it
directly work with &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;CLONG&lt;/span&gt;&lt;/code&gt; rather than &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;LONG&lt;/span&gt;&lt;/code&gt; for which structural
changes in code generation will be needed.&lt;/p&gt;
&lt;p&gt;For scalability, the &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;anti-bloat&lt;/span&gt;&lt;/code&gt; work has not yet progressed as much
as to be able to enable it by default. It needs to be more possible to
disable it where it causes problems, e.g. when somebody really wants to
include &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;pytest&lt;/span&gt;&lt;/code&gt; and test frameworks generally, that’s something that
needs to be doable. Compiling without &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;anti-bloat&lt;/span&gt;&lt;/code&gt; plugin is something
that is immediately noticeable in exploding module amounts. It is very
urgently recommended to enable it for your compilations.&lt;/p&gt;
&lt;p&gt;The support for Windows has been further refined, actually fixing a few
important issues, esp. for the Qt bindings too.&lt;/p&gt;
&lt;p&gt;This release adds support for 3.10 outside of very special &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;match&lt;/span&gt;&lt;/code&gt;
statements, bringing Nuitka back to where it works great with recent
Python. Unfortunately &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;orderedset&lt;/span&gt;&lt;/code&gt; is not available for it yet, which
means it will be slower than 3.9 during compilation.&lt;/p&gt;
&lt;p&gt;Overall, Nuitka is closing many open lines of action with this. The
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;setuptools&lt;/span&gt;&lt;/code&gt; support has yet again improved and at this point should
be very good.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
</content>
    <link href="https://nuitka.net/posts/nuitka-release-0619.html"/>
    <summary>This is to inform you about the new stable release of Nuitka. It is the extremely compatible Python compiler,
“download now”.</summary>
    <category term="Nuitka" label="Nuitka"/>
    <category term="Python" label="Python"/>
    <category term="compiler" label="compiler"/>
    <published>2022-01-12T10:51:00+01:00</published>
  </entry>
</feed>
