All Versions
91
Latest Version
Avg Release Cycle
54 days
Latest Release
1417 days ago

Changelog History
Page 1

  • v0.6.8

    May 11, 2020
  • v0.6.8.4

    June 06, 2020
  • v0.6.8.3

    May 23, 2020
  • v0.6.8.2

    May 21, 2020
  • v0.6.8.1

    May 16, 2020
  • v0.6.7

    January 23, 2020
  • v0.6.6

    December 27, 2019
  • v0.6.5 Changes

    July 27, 2019

    ๐Ÿš€ This release contains many bug fixes all across the board. There is also ๐Ÿ†• new optimization and many organisational improvements.

    ๐Ÿ› Bug Fixes

    • ๐Ÿ›  Python3.4+: Fixed issues with modules that exited with an exception, that could lead to a crash, dealing with their __spec__ value.

    • Python3.4+: The __loader__ method is_package had the wrong signature.

    • Python3.6+: Fix for async with being broken with uncompiled generators.

    • Python3.5+: Fix for coroutines that got their awaited object closed behind their back, they were complaining with RuntimeError should they be closed themselves.

    • ๐Ÿ›  Fix, constant values None in a bool target that could not be optimized away, lead to failure during code generation.

    .. code-block:: python

    if x() and None:
      ...
    
    • ๐Ÿ“ฆ Standalone: Added support for sha224, sha384, sha512 in crypto package.

    • ๐Ÿ Windows: The icon wasn't properly attached with MinGW64 anymore, this was a regression.

    • ๐Ÿ Windows: For compiler outputs, also attempt preferred locale to interpret outputs, so we have a better chance to not crash over MSVC error messages that are not UTF-8 compatible.

    • ๐ŸŽ macOS: Handle filename collisions for generated code too, Nuitka now treats all filesystems for all OS as case insensitive for this purpose.

    • ๐Ÿ‘ป Compatibility: Added support for tolerant del in class exception handlers.

    .. code-block:: python

    class C:
    
      try:
        ...
      except Exception as e:
        del e
    
        # At exception handler exit, "e" is deleted if still assigned
    

    We already were compatible for functions and modules here, but due to the special nature of class variables really living in dictionaries, this was delayed. But after some other changes, it was now possible to solve this TODO.

    • ๐Ÿ‘ Standalone: Added support for Python3 variant of Pmw.

    • ๐Ÿ›  Fix, the NumPy plugin now handles more installation types.

    • ๐Ÿ›  Fix, the qt plugin now handles multiple library paths.

    • ๐Ÿ›  Fix, need libm for some Anaconda variants too.

    • ๐Ÿ›  Fix, left over bytecode from plugins could crash the plugin loader.

    • ๐Ÿ›  Fix, pkgutil.iter_packages is now working for loaded packages.

    ๐Ÿ†• New Features

    • Python3.8: Followed some of the changes and works with beta2 as a Python 3.7, but none of the new features are implemented yet.

    • โž• Added support for Torch, Tensorflow, Gevent, Sklearn, with a new Nuitka plugin.

    • โž• Added support for "hinted" compilation, where the used modules are determined through a test run.

    • โž• Added support for including TCL on Linux too.

    Optimization

    • โž• Added support for the any built-in. This handles a wide range of type shapes and constant values at compile time, while also having optimized C code.

    • Generate code for some CLONG operations in preparation of eventual per expression C type selection, it then will allow to avoid objects in many instances.

    • ๐Ÿ Windows: Avoid creating link libraries for MinGW64 as these have become unnecessary is the mean time.

    • ๐Ÿ“ฆ Packages: Do not export entry points for all included packages, only for the main package name it is importable as.

    Organisational

    • โž• Added support for Visual Studio 2019 as a C compiler backend.

    • ๐Ÿ‘Œ Improved plugin documentation describing how to create plugins for Nuitka even better.

    • โœ… The is now a mode for running the tests called all which will execute all the tests and report their errors, and only fail at the very end. This doesn't avoid wasting CPU cycles to report that e.g. all tests are broken, but it allows to know all errors before fixing some.

    • โž• Added repository for Fedora 30 for download.

    • Ask people to compile hello world program in the Github issue template, because many times, they have setup problems only.

    • Visual Studio Code is now the recommended IDE and has integrated configuration to make it immediately useful.

    • โšก๏ธ Updated internal copy of Scons to 3.1.0 as it incorporates many of our patches.

    • ๐Ÿ”„ Changed wordings for optimization to use "lowering" as the only term to describe an optimization that simplifies.

    Cleanups

    • ๐Ÿ”Œ Plugins: Major refactoring of Nuitka plugin API.

    • ๐Ÿ”Œ Plugins: To locate module kind, use core Nuitka code that handles more cases.

    • ๐Ÿ‘• The test suite runners are also now autoformatted and checked with PyLint.

    • ๐Ÿ‘• The Scons file is now PyLint clean too.

    • ๐Ÿ— Avoid build_definitions.h to be included everywhere, in that it's only used in the main program part. This makes C linter hate us much less for using a non-existent file.

    โœ… Tests

    • ๐ŸŽ Run the tests using Travis on macOS too.

    • โœ… More standalone tests have been properly whitelisting to cover openSSL usage from local system.

    • โœ… Disabled PySide2 test, it's not useful to fail and ignore it.

    • โœ… Tests: Fixups for coverage testing mode.

    • โœ… Tests: Temporarily disable some checks for constants code in reflected tests as it only exposes marshal not being deterministic.

    Summary

    ๐Ÿš€ This release is huge again. Main points are compatibility fixes, esp. on the coroutine side. These have become apparently very compatible now and ๐Ÿ‘ we might eventually focus on making them better.

    Again, GSoC 2019 is also showing effects, and will definitely continue to ๐Ÿš€ do soin the next release.

    Many use cases have been improved, and on an organizational level, the ๐Ÿ‘€ adoption of Visual Studio Code seems an huge improvement to have a well ๐Ÿ”ง configured IDE out of the box too.

    ๐Ÿš€ In upcoming releases, more built-ins will be optimized, and hopefully the specialization of operations will hit more and more code with more of the infrastructure getting there.

  • v0.6.4 Changes

    June 07, 2019

    ๐Ÿš€ This release contains many bug fixes all across the board. There is also ๐Ÿ†• new optimization and many organisational improvements.

    ๐Ÿ› Bug Fixes

    • ๐Ÿ“ฆ When linking very large programs or packages, with gcc compiler, Scons can produce commands that are too large for the OS. This happens sooner on the Windows OS, but also on Linux. We now have a workaround that avoids long command lines by using @sources.tmp syntax.

    • ๐Ÿšš Standalone: Remove temporary module after its use, instead of keeping it in sys.modules where e.g. Quart code tripped over its __file__ value that is illegal on Windows.

    • ๐Ÿ›  Fixed non-usage of our enhanced detection of gcc version for compilers if given as a full path.

    • ๐Ÿ›  Fixed non-detection of gnu-cc as a form of gcc compiler.

    • Python3.4: The __spec__ value corrections for compiled modules was not taking into account that there was a __spec__ value, which can happen if something is wrapping imported modules.

    • Standalone: Added implicit dependencies for passlib.

    • ๐Ÿ Windows: Added workaround for OS command line length limit in compilation with MinGW64.

    • ๐Ÿ”Œ Python2: Revive the enum plugin, there are backports of the buggy code it tries to patch up.

    • ๐Ÿ Windows: Fixup handling of SxS with non zero language id, these occur e.g. in Anaconda.

    • ๐Ÿ”Œ Plugins: Handle multiple PyQt plugin paths, e.g. on openSUSE this is done, also enhanced finding that path with Anaconda on Windows.

    • ๐Ÿ”Œ Plugins: For multiprocessing on Windows, allow the .exe suffix to not be present, which can happen when ran from command line.

    • ๐Ÿ Windows: Better version checks for DLLs on Python3, the ctypes helper code needs more definitions to work properly.

    • ๐Ÿ‘ Standalone: Added support for both pycryptodome and pycryptodomex.

    • ๐Ÿ›  Fix, the chr built-in was not giving fully compatible error on non number input.

    • ๐Ÿ›  Fix, the id built-in doesn't raise an exception, but said otherwise.

    • Python3: Proper C identifiers for names that fit into latin-1, but are not ascii encodings.

    ๐Ÿ†• New Features

    • ๐Ÿ Windows: Catch most common user error of using compiler from one architecture against Python from another. We now check those and compare it, and if they do not match, inform the user directly. Previously the compilation could fail, or the linking, with cryptic errors.

    • Distutils: Using setuptools and its runners works now too, not merely only pure distutils.

    • Distutils: Added more ways to pass Nuitka specific options via distutils.

    • โœ… Python3.8: Initial compatibility changes to get basic tests to work.

    Organisational

    • Nuitka is participating in the GSoC 2019 with 2 students, Batakrishna and Tommy.

    • Point people creating PRs to using the pre-commit hook in the template. Due to making the style issues automatic, we can hope to encounter less noise and resulting merge problems.

    • Many improvements to the pre-commit hook were done, hopefully completing its development.

    • โšก๏ธ Updated to latest pylint, black, and isort versions, also added codespell to check for typos in the source code, but that is not automated yet.

    • โž• Added description of how to use experimental flags for your PRs.

    • โœ‚ Removed mirroring from Bitbucket and Gitlab, as we increasingly use the Github organisation features.

    • โž• Added support for Ubuntu Disco, removed support for Ubuntu Artful packages.

    Optimization

    • ๐Ÿ Windows: Attach data blobs as Windows resource files directly for programs and avoid using C data files for modules or MinGW64, which can be slow.

    • Specialization of helper codes for + is being done for more types and more thoroughly and fully automatic with Jinja2 templating code. This does replace previously manual code.

    • โž• Added specialization of helper codes for * operation which is entirely new.

    • โž• Added specialization of helper codes for - operation which is entirely new.

    • Dedicated nodes for specialized operations now allow to save memory and all use type shape based analysis to predict result types and exception control flow.

    • ๐Ÿ‘ Better code generation for boolean type values, removing error checks when possible.

    • ๐Ÿ‘ Better static analysis for even more type operations.

    Cleanups

    • ๐Ÿ›  Fixed many kinds of typos in the code base with codespell.

    • โœ… Apply automatic formatting to more test runner code, these were previously not done.

    • Avoid using shutil.copytree which fails to work when directory already exists, instead provide nuitka.util.FileOperations.copyTree and use that exclusively.

    โœ… Tests

    • โž• Added new mode of operation to test runners, only that executes just one test and stops, useful during development.

    • โž• Added new mechanism for standalone tests to expression modules that need to be importable, or else to skip the test by a special comment in the file, instead of by coded checks in the test runner.

    • โž• Added also for more complex cases, another form of special comment, that can be any expression, that decides if the test makes sense.

    • โœ… Cover also setuptools in our distutils tests and made the execution more robust against variable behavior of distutils and setuptools.

    • โž• Added standalone test for Urllib3.

    • โž• Added standalone test for rsa.

    • โž• Added standalone test for Pmw.

    • โž• Added standalone test for passlib.

    Summary

    ๐Ÿš€ Again this release is a sign of increasing adoption of Nuitka. The GSoC ๐Ÿš€ 2019 is also showing effects, definitely will in the next release.

    ๐Ÿš€ This release has a lot of new optimization, called specialization, but for it to really used, in many instances, we need to get away from working on C types for variables only, and get to them beig used for expressions more often. Otherwise much of the new special code is not used for most code.

    ๐Ÿš€ The focus of this release has been again to open up development further ๐Ÿ›  and to incorporate findings from users. The number of fixes or new use cases working is astounding.

    ๐Ÿš€ In upcoming releases, new built-ins will be optimized, and specialization of operations will hit more and more code now that the infrastructure for it is in place.

  • v0.6.3 Changes

    April 04, 2019

    This has a focus on organisational improvements. With more and more people joining Nuitka, normal developers as well as many GSoC 2019 students, the main focus was to open up the development ๐Ÿ“š tools and processes, and to improve documentation.

    ๐Ÿ›  That said, an impressive amount of bug fixes was contributed, but optimization was on hold.

    ๐Ÿ› Bug Fixes

    • ๐Ÿ Windows: Added support for running compiled binaries in unicode path names.

    • ๐Ÿ“ฆ Standalone: Added support for crytodomex and pycparser packages.

    • ๐Ÿ Standalone: Added support for OpenSSL support in PyQt on Windows.

    • ๐Ÿ Standalone: Added support for OpenGL support with QML in PyQt on Windows.

    • ๐Ÿ”Œ Standalone: Added support for SciPy and extended the NumPy plugin to also handle it.

    • ๐Ÿ”Œ UI: The option --plugin-list still needed a positional argument to work.

    • ๐Ÿ‘‰ Make sure sys.base_prefix is set correctly too.

    • Python3: Also make sure sys.exec_prefix and sys.base_exec_prefix are set correctly.

    • 0๏ธโƒฃ Standalone: Added platform plugins for PyQt to the default list of sensible plugins to include.

    • ๐Ÿ›  Fix detection of standard library paths that include .. path elements.

    Optimization

    • Avoid static C++ runtime library when using MinGW64.

    ๐Ÿ†• New Features

    • ๐Ÿ”Œ Plugins: A plugin may now also generate data files on the fly for a given module.

    • โž• Added support for FreeBSD/PowerPC arch which still uses gcc and not clang.

    Organisational

    • Nuitka is participating in the GSoC 2019.

    • โž• Added documentation on how to create or use Nuitka plugins.

    • โž• Added more API doc to functions that were missing them as part of the ongoing effort to complete it.

    • โšก๏ธ Updated to latest PyLint 2.3.1 for checking the code.

    • Scons: Using newer Scons inline copy with Python 2.7 as, the old one remains only used with Python 2.6, making it easier to know the relevant code.

    • Autoformat was very much enhanced and handles C and ReST files too now. For Python code it does pylint comment formatting, import statement sorting, and blackening.

    • โž• Added script misc/install-git-hooks.py that adds a commit hook that runs autoformat on commit. Currently it commits unstaged content and therefore is not yet ready for prime time.

    • ๐Ÿšš Moved adapted CPython test suites to Github repository under Nuitka Organisation <https://github.com/Nuitka/Nuitka-CPython-tests>__.

    • ๐Ÿšš Moved Nuitka-website repository to Github repository under Nuitka Organisation <https://github.com/Nuitka/Nuitka-website>__.

    • ๐Ÿšš Moved Nuitka-speedcenter repository to Github repository under Nuitka Organisation <https://github.com/Nuitka/Nuitka-speedcenter>__.

    • There is now a Gitter chat for Nuitka community <https://gitter.im/Nuitka-chat/community>__.

    • ๐Ÿ“š Many typo and spelling corrections on all the documentation.

    • โž• Added short installation guide for Nuitka on Windows.

    Cleanups

    • ๐Ÿšš Moved commandline parsing helper functions from common code helpers to the main program where of course their only usage is.

    • ๐Ÿšš Moved post processing of the created standalone binary from main control to the freezer code.

    • ๐Ÿšš Avoid using chmod binary to remove executable bit from created extension modules.

    • ๐Ÿ Windows: Avoid using rt.exe and mt.exe to deal with copying the manifest from the python.exe to created binaries. Instead use new code that extracts and adds Windows resources.

    • ๐Ÿ›  Fixed many ResourceWarnings on Python3 by improved ways of handling files.

    • ๐Ÿ›  Fixed deprecation warnings related to not using collections.abc.

    • The runners in bin directory are now formatted with black too.

    โœ… Tests

    • ๐Ÿ Detect Windows permission errors for two step execution of Nuitka as well, leading to retries should they occur.

    • The salt value for CPython cached results was improved to take more things into account.

    • โœ… Tests: Added more trick assignments and generally added more tests that were so far missing.

    Summary

    With the many organisational changes in place, my normal work is expected to resume for after and yield quicker improvements now.

    It is also important that people are now enabled to contribute ๐ŸŒ to the Nuitka web site and the Nuitka speedcenter. Hope is to ๐Ÿ‘€ see more improvements on this otherwise neglected areas.

    ๐Ÿ‘€ And generally, it's great to see that a community of people is ๐Ÿš€ now looking at this release in excitement and pride. Thanks to everybody who contributed!