* We now trace variables in trace collection as a dictionary
per variable with a dictionary of the versions, this is
closer to out frequent usage per variable.
* That makes it a lot easier to update variables after the
tracing is finished to know their users and writers.
* Requires a lot less work, but also makes work less memory
local such that the performance gain is relatively small
despite less work being done.
* Also avoids that a set for the users is to be maintained.
* The instance counting provided a "__del__" that was a noop, but
still needed to be executed and would cost therefore time
even if not activated.
* Also some sources claim that garbage collection is not done when
"__del__" is overloaded, which is avoided this way too.
* Also cleaned up how its imported and used for greater harmony.
* Derived classes do not have to repeat it, unless they are not using
base class init.
* It has been observed that a KeyboardInterrupt was ignored in
the deactivated form of instance release counting,
which points out that these things should not exist
unless used.
* This avoids the control flow escape they previous did.
* For all but "site" module we now know it won't raise an exception to import.
* This detects imports that will raise and statically optimizes them.
* This looks up configured trust for attributes, currently
that is only "sys.version" and used for testing purposes and warns
if it's missing config.
* Side effects for hard imports is provided, only "site" really does.
* Type shape for hard module imports was missing.
* Autoformat currently only sorts pylint disable comments, and does
not call black yet.
* This also adds a few doc strings that I failed to keep separate as a
commit, but who cares.
* This should also be slightly faster than the cmp driven stuff and
for Python3 it should actually avoid a lot of instances to be
created in the first place.
* We were passing along a future spec that was passed around to be
attached for source references, taking up a slot, while it had to
be the same for all module.
* This saves a tiny bit of memory and makes tree building faster.
* Always output the best syntax error format, and do away with compatible
syntax errors. Instead make the comparison restricted to the message
of error only.
* This reduces tedious code and tried to mimic the various Python versions
errors for no good reasons.
* The function "isInternal" didn't do what its name said.
* Also factor the code to get the line number value into a separate
function, which we will need.
* The reduction to line setting, doesn't quite cut it. Internal code
may have other exceptions too.
* This was done to not warn about internal code, but then it became
clear it's not needed, so only the cleanup remains.
* Cover the source code reference instance in counting, which
revealed that even for non-changes to the line number, we
were creating a whole new object that is the same.
* Reduces memory consumption of Nuitka in a normal stdlib using
and recursing test case by 50MB or 7%.
* Also use __slots__ to limit memory usage a little bit further,
this gives an extra 15MB.
* The plugin folders are determined by asking the modules themselves
in a separate process.
* The plugin DLLs are then added as entry points, so their used DLLs
get copied too.
* Added an "-onLoad" mechanism for plugins to provide modules that
should be loaded when another is first imported.
* Most constants are never considered for attribute lookup, so storing an
indicator per node is wasteful.
* The default is now stored in the class. Only when lookups were made and
failed, the node is changed to cache that information.
* Removed copyright notice from inline copy of Scons, added by accident only
* Claim stronger copyright over basic, program, and reflected tests to release
them under public domain.
* Updated debian/copyright to include "odict" and "oset" licenses, and
full text for ARM ucontext parts
* Remove benchmarks from Debian package, too diverse licenses and not for
users.