* 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 also enhances the formatting for almost all files by making
leading and trailing new lines more consistent.
* One C file turns out unused, was probably a left over.
* Use exception state to abstract 3.12 or before differences. This
solves a TODO about more very in-efficient code generated that
also requires many conversions of exceptions back and forth from
3 value form to normalized.
* Moved compile time debug settings to separate file.
* Pass the exception state into unpacking function for more
efficient code. No need to fetch exceptions per use of
those into the exception state, but it can directly write to
there.
* Solve TODO and have helper for unpacking length check. When
migrating to Python3, this became a custom template with a
lot of manual code that pre-defined the error messages to
give too.
* Have our own variant of "_PyGen_FetchStopIterationValue" to
avoid API calls in generator handling.
* Generate more efficient code for raising exceptions of builtin
type. Rather than calling them as a function, create them via
base exception new directly which will be much quicker.
* Faster exception creation, avoid having "args" and a tuple need
to hole them for empty exceptions avoiding one more allocation.
* Remove uses of "PyTuple_Pack" and replace with our own helpers
to avoid API calls.
* Avoid implicit exception raise nodes with delayed creation, have
exception making nodes instead.
* This was causing issues previously with the star import of a
module containing non-UTF8 names and "__file__" values in accelerated
and encoding issues of generated source code not being latin1 as
it should be.
* This allows to avoid a useless file copy to a temporary file
in case a "importlib.resources.path" is used.
* Also fixed a few typos in tests.
* And avoid compiling the meta path based loader separately, so it
can use compiled code helpers easily.
* This is in preparation of making following to stdlib the default.
* For now it's used to make multiprocessing plugin not fire in the
standard configuration.
* The package must be imported and run before the main code to be
fully compatible.
* Package values and name values differ in these cases from the
normal setup.
* Enhanced test runner to support variant, so we can run the
package test as a directory and as a module.
* This enables support for spawn mode on Linux.
* Make the multiprocessing platform no more limited to Windows.
* Also make sure to exit when forked main exits, that was missing.
* This removes the error after a first round, so it then
succeeds.
* Also test compatibility with deleting a module from sys.modules
and seeing behaviour in that case too.
* This is a header file as an inline copy only, and replaces our tricks
with the linker, and should make using source code on unknown linker
arches unnecessary.
* This also fixes issues with LTO linking of extension modules on Linux.
* The created binary with MinGW64 is larger, therefore stick with using
resources on Windows for now.
* The incbin doesn't work with MSVC there we need the resource mode
still and ClangCl doesn't work as well.
* To verify constants correctness, pass length and CRC32 hash during
compilation and check at runtime if they match, that should catch
build systems that tamper with it.
* Make sure that modules included due to different casing get the
right constants blob name used.
* This is in preparation for 3.10 which will fail to work that work.
* Extended numeric values to be hexadecimal.
* Using tuples over strings in testing.