* Reference the runtime exception everywhere as that is expected
to be done, not just generally.
* Proper link to the correct version of the license file on the
web.
* We now generate modified Python headers in case of affected versions,
which allows us to not use static offsets but instead corrected for
values.
* The two value sources are for module mode the corrections based on
runtime vs. compile time version differences. And for MinGW64 we use
the static offsets, but we store them in JSON files and then generate
the header code for it.
* Move the Python include directory detection out of Scons into Nuitka
so we know before compilation what files to modify.
* Added experimental flag for MinGW64 usage with 3.13+ which works via
collected offset values for internal structures.
* Enhanced the way we handle experimental flags. Previously they were
not available during environment creation, but we use that now and
it is much cleaner this way.
* When actually installing, Windows didn't include the header files.
* Make installing optional for all forms of the scripts.
* Enhanced argument parsing to allow key=value syntax we prefer in Nuitka as well.
* We now have it on Linux, Windows and MacOS.
* These are not yet perfect, but they are a good start, and we can
improve them over time.
* Move them to bin, given them help and more features to make them
useable in container files at least.
* We were checking the version for private pip space packages
over and over, which was wasteful, and probably also slowed
down other things.
* Cache the result of "isort" calls such that on repeated
execution of autoformat, this relatively slow call is not
redone unnecessarily.
* Black changed mostly formatting of tripple quoted strings.
* Also noticed that shebang didn't do 3.14 yet.
* A few minor changes to increase readability of formatted string
interpolations.
* This cleans up the way "rusage" was added, by making using code
independent of order and amount of values.
* This solves a few pylint variable complexity issues as well.
* Also use more return for logger sysexit and format calls nicer.
* Also enhanced reporting error exit reporting through the scons logger to provide
the exception in the compilation report.
* More error exits in scons should do this.
* This is with an exception for the runtime library parts
to allow proprietary compiled code to link against it.
* But it makes creating competitors to Nuitka commercial
impossible, as they would need to open source their code.
* For Windows use ".CMD" files rather than ".BAT" files,
these should be more usable.
* Stripe the "3" suffix from Nuitka runner for Python3 versions,
keep the "2" suffix only for Python2.
* Replaced the "nuitka3" binary in git to "nuitka2", expecting
the "nuitka" runner to be Python3.
* The CI container is based on a variant of Ubuntu that should be suited
for container usage.
* Start to use it with PyPI, where we will now use a token rather than
config file for enhanced security.
* Also using it with tests for the linter checks.
* Also adding Debian slim based container, in order to test with that
e.g. with Python 3.9 and to build the
Debian packages on it.
* This is for running Nuitka-watch test cases
* For PyPI, this is based on pipenv to do the caching for us.
* Currently does not detect if an update makes sense.
* Create the pairs with a dedicated helper function, and do so outside
of the nodes, but before their creation. In case of caching, that
process must not be repeated.
* Spelling fixup cause renames in the autoformat and the writing of
specialized code.
* Prepare "str.format" specialization somewhat, but for the actual
code generation, we need to become able to defer to call codes
to handle pairs and arg lists directly, for reuse.
* Moved key-value pairs to separate module, so they do not pollute
the dictionary code, and added a method for checking them if they
are constant, to simplify such code that checks for all pairs to
be constant.
* Use factory functions in more places that previously manually
generated pair lists with self created key-value pair objects,
that avoids a lot of code.
* It's very slow and the last thing we did, simply use regexp and ignore
if it's a comment or not.
* Also, the abort flag was only implemented for redbaron, so remove it,
we never used it all that well anyway.
* This should make it a lot easier to add more of the same.
* Also the version specific nature of iteritems is now properly
considered.
* Cleaned up usage of templates and Jinja2 environments for better
reuse.
* Also fix for bin runner scripts, we do not check them by default,
but this one has the problem of binary name and package name as
being the same, confusing new pylint to a false larm.
* Added a binary for executing the specialization.
* Have a dedicated file for "Utils" that is included too, and
make manual code not live in the general helpers file, that
was a step back from getting that cleaner.
* Started shifting in-place manual helper code outside of what
should be generated next.
* Added support for ignoring a part of the file, e.g. where the
sys.path is massaged, and still sort imports after that.
* Also some files were not yet formatted.
* So code formatting, pylint comment sorting, import statement sorting
and line ending cleanups are all now done at once.
* isort and black are hard to make them agree on format for imports, so
we have to do it one after another.
* This seems to also cleanup a few files not found with manual call.