* 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.