Nuitka-winsvc 1.8__cp311-cp311-win_amd64.whl → 2.4.8__cp311-cp311-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of Nuitka-winsvc might be problematic. Click here for more details.

Files changed (704) hide show
  1. Nuitka_winsvc-1.8.data/scripts/nuitka-run.bat → Nuitka_winsvc-2.4.8.data/scripts/nuitka-run.cmd +9 -9
  2. Nuitka_winsvc-1.8.data/scripts/nuitka.bat → Nuitka_winsvc-2.4.8.data/scripts/nuitka.cmd +15 -15
  3. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.4.8.dist-info}/METADATA +4 -3
  4. Nuitka_winsvc-2.4.8.dist-info/RECORD +954 -0
  5. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.4.8.dist-info}/WHEEL +1 -1
  6. nuitka/Builtins.py +18 -17
  7. nuitka/BytecodeCaching.py +24 -20
  8. nuitka/Bytecodes.py +23 -19
  9. nuitka/CacheCleanup.py +28 -23
  10. nuitka/Constants.py +19 -17
  11. nuitka/Errors.py +23 -17
  12. nuitka/HardImportRegistry.py +400 -0
  13. nuitka/MainControl.py +200 -112
  14. nuitka/ModuleRegistry.py +83 -20
  15. nuitka/OptionParsing.py +368 -175
  16. nuitka/Options.py +632 -213
  17. nuitka/OutputDirectories.py +40 -21
  18. nuitka/PostProcessing.py +73 -50
  19. nuitka/Progress.py +58 -24
  20. nuitka/PythonFlavors.py +141 -32
  21. nuitka/PythonOperators.py +18 -17
  22. nuitka/PythonVersions.py +106 -19
  23. nuitka/Serialization.py +68 -55
  24. nuitka/SourceCodeReferences.py +19 -17
  25. nuitka/Tracing.py +108 -70
  26. nuitka/TreeXML.py +31 -26
  27. nuitka/Variables.py +39 -41
  28. nuitka/Version.py +21 -7
  29. nuitka/__init__.py +5 -4
  30. nuitka/__main__.py +95 -29
  31. nuitka/__past__.py +44 -34
  32. nuitka/build/Backend.scons +202 -140
  33. nuitka/build/CCompilerVersion.scons +39 -31
  34. nuitka/build/DataComposerInterface.py +20 -17
  35. nuitka/build/Onefile.scons +50 -54
  36. nuitka/build/SconsCaching.py +93 -90
  37. nuitka/build/SconsCompilerSettings.py +157 -69
  38. nuitka/build/SconsHacks.py +25 -19
  39. nuitka/build/SconsInterface.py +154 -54
  40. nuitka/build/SconsProgress.py +19 -18
  41. nuitka/build/SconsSpawn.py +62 -33
  42. nuitka/build/SconsUtils.py +147 -55
  43. nuitka/build/__init__.py +5 -4
  44. nuitka/build/include/nuitka/allocator.h +105 -22
  45. nuitka/build/include/nuitka/builtins.h +17 -17
  46. nuitka/build/include/nuitka/calling.h +18 -18
  47. nuitka/build/include/nuitka/checkers.h +17 -18
  48. nuitka/build/include/nuitka/checksum_tools.h +14 -19
  49. nuitka/build/include/nuitka/compiled_asyncgen.h +18 -18
  50. nuitka/build/include/nuitka/compiled_cell.h +33 -18
  51. nuitka/build/include/nuitka/compiled_coroutine.h +18 -18
  52. nuitka/build/include/nuitka/compiled_frame.h +91 -53
  53. nuitka/build/include/nuitka/compiled_function.h +42 -20
  54. nuitka/build/include/nuitka/compiled_generator.h +24 -18
  55. nuitka/build/include/nuitka/compiled_method.h +17 -18
  56. nuitka/build/include/nuitka/constants.h +29 -18
  57. nuitka/build/include/nuitka/constants_blob.h +17 -17
  58. nuitka/build/include/nuitka/environment_variables.h +30 -0
  59. nuitka/build/include/nuitka/environment_variables_system.h +45 -0
  60. nuitka/build/include/nuitka/exception_groups.h +23 -26
  61. nuitka/build/include/nuitka/exceptions.h +593 -190
  62. nuitka/build/include/nuitka/filesystem_paths.h +26 -20
  63. nuitka/build/include/nuitka/freelists.h +38 -18
  64. nuitka/build/include/nuitka/helper/attributes.h +24 -18
  65. nuitka/build/include/nuitka/helper/boolean.h +17 -17
  66. nuitka/build/include/nuitka/helper/bytearrays.h +17 -17
  67. nuitka/build/include/nuitka/helper/bytes.h +14 -15
  68. nuitka/build/include/nuitka/helper/calling_generated.h +17 -17
  69. nuitka/build/include/nuitka/helper/comparisons_eq.h +17 -17
  70. nuitka/build/include/nuitka/helper/comparisons_ge.h +17 -17
  71. nuitka/build/include/nuitka/helper/comparisons_gt.h +17 -17
  72. nuitka/build/include/nuitka/helper/comparisons_le.h +17 -17
  73. nuitka/build/include/nuitka/helper/comparisons_lt.h +17 -17
  74. nuitka/build/include/nuitka/helper/comparisons_ne.h +17 -17
  75. nuitka/build/include/nuitka/helper/complex.h +17 -17
  76. nuitka/build/include/nuitka/helper/dictionaries.h +24 -22
  77. nuitka/build/include/nuitka/helper/floats.h +17 -18
  78. nuitka/build/include/nuitka/helper/import_hard.h +25 -17
  79. nuitka/build/include/nuitka/helper/indexes.h +17 -18
  80. nuitka/build/include/nuitka/helper/ints.h +32 -20
  81. nuitka/build/include/nuitka/helper/iterators.h +17 -17
  82. nuitka/build/include/nuitka/helper/lists.h +26 -24
  83. nuitka/build/include/nuitka/helper/lists_generated.h +22 -22
  84. nuitka/build/include/nuitka/helper/mappings.h +17 -18
  85. nuitka/build/include/nuitka/helper/operations.h +17 -17
  86. nuitka/build/include/nuitka/helper/operations_binary_add.h +17 -17
  87. nuitka/build/include/nuitka/helper/operations_binary_bitand.h +17 -17
  88. nuitka/build/include/nuitka/helper/operations_binary_bitor.h +17 -17
  89. nuitka/build/include/nuitka/helper/operations_binary_bitxor.h +17 -17
  90. nuitka/build/include/nuitka/helper/operations_binary_divmod.h +17 -17
  91. nuitka/build/include/nuitka/helper/operations_binary_floordiv.h +17 -17
  92. nuitka/build/include/nuitka/helper/operations_binary_lshift.h +17 -17
  93. nuitka/build/include/nuitka/helper/operations_binary_matmult.h +17 -17
  94. nuitka/build/include/nuitka/helper/operations_binary_mod.h +17 -17
  95. nuitka/build/include/nuitka/helper/operations_binary_mult.h +17 -17
  96. nuitka/build/include/nuitka/helper/operations_binary_olddiv.h +17 -17
  97. nuitka/build/include/nuitka/helper/operations_binary_pow.h +17 -17
  98. nuitka/build/include/nuitka/helper/operations_binary_rshift.h +17 -17
  99. nuitka/build/include/nuitka/helper/operations_binary_sub.h +17 -17
  100. nuitka/build/include/nuitka/helper/operations_binary_truediv.h +17 -17
  101. nuitka/build/include/nuitka/helper/operations_builtin_types.h +17 -17
  102. nuitka/build/include/nuitka/helper/operations_inplace_add.h +17 -17
  103. nuitka/build/include/nuitka/helper/operations_inplace_bitand.h +17 -17
  104. nuitka/build/include/nuitka/helper/operations_inplace_bitor.h +17 -17
  105. nuitka/build/include/nuitka/helper/operations_inplace_bitxor.h +17 -17
  106. nuitka/build/include/nuitka/helper/operations_inplace_floordiv.h +17 -17
  107. nuitka/build/include/nuitka/helper/operations_inplace_lshift.h +17 -17
  108. nuitka/build/include/nuitka/helper/operations_inplace_matmult.h +17 -17
  109. nuitka/build/include/nuitka/helper/operations_inplace_mod.h +17 -17
  110. nuitka/build/include/nuitka/helper/operations_inplace_mult.h +17 -17
  111. nuitka/build/include/nuitka/helper/operations_inplace_olddiv.h +17 -17
  112. nuitka/build/include/nuitka/helper/operations_inplace_pow.h +17 -17
  113. nuitka/build/include/nuitka/helper/operations_inplace_rshift.h +17 -17
  114. nuitka/build/include/nuitka/helper/operations_inplace_sub.h +17 -17
  115. nuitka/build/include/nuitka/helper/operations_inplace_truediv.h +17 -17
  116. nuitka/build/include/nuitka/helper/raising.h +29 -17
  117. nuitka/build/include/nuitka/helper/rangeobjects.h +17 -17
  118. nuitka/build/include/nuitka/helper/richcomparisons.h +14 -14
  119. nuitka/build/include/nuitka/helper/sequences.h +19 -13
  120. nuitka/build/include/nuitka/helper/sets.h +11 -12
  121. nuitka/build/include/nuitka/helper/slices.h +31 -25
  122. nuitka/build/include/nuitka/helper/strings.h +16 -17
  123. nuitka/build/include/nuitka/helper/subscripts.h +18 -201
  124. nuitka/build/include/nuitka/helper/tuples.h +64 -52
  125. nuitka/build/include/nuitka/helpers.h +38 -20
  126. nuitka/build/include/nuitka/importing.h +28 -21
  127. nuitka/build/include/nuitka/jit_sources.h +25 -0
  128. nuitka/build/include/nuitka/prelude.h +128 -46
  129. nuitka/build/include/nuitka/printing.h +22 -17
  130. nuitka/build/include/nuitka/python_pgo.h +19 -18
  131. nuitka/build/include/nuitka/safe_string_ops.h +20 -18
  132. nuitka/build/include/nuitka/threading.h +32 -33
  133. nuitka/build/include/nuitka/tracing.h +28 -18
  134. nuitka/build/include/nuitka/type_aliases.h +27 -0
  135. nuitka/build/include/nuitka/unfreezing.h +29 -23
  136. nuitka/build/inline_copy/bin/scons.py +14 -0
  137. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/ListVariable.py +6 -6
  138. nuitka/build/inline_copy/pkg_resources/pkg_resources/__init__.py +0 -3
  139. nuitka/build/inline_copy/python_hacl/LICENSE.txt +201 -0
  140. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.c +1430 -0
  141. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.h +66 -0
  142. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.c +463 -0
  143. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.h +66 -0
  144. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.c +1273 -0
  145. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.h +204 -0
  146. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.c +734 -0
  147. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.h +131 -0
  148. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Streaming_Types.h +83 -0
  149. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt128_Verified.h +346 -0
  150. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt_8_16_32_64.h +107 -0
  151. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/fstar_uint128_struct_endianness.h +68 -0
  152. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/internal/target.h +293 -0
  153. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/lowstar_endianness.h +231 -0
  154. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/types.h +14 -0
  155. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_MD5.h +56 -0
  156. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA1.h +56 -0
  157. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA2.h +164 -0
  158. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA3.h +65 -0
  159. nuitka/build/inline_copy/python_hacl/hacl_312/python_hacl_namespaces.h +89 -0
  160. nuitka/build/inline_copy/tqdm/tqdm/__init__.py +2 -2
  161. nuitka/build/inline_copy/tqdm/tqdm/_monitor.py +4 -1
  162. nuitka/build/inline_copy/tqdm/tqdm/utils.py +14 -8
  163. nuitka/build/inline_copy/tqdm/tqdm/version.py +1 -8
  164. nuitka/build/inline_copy/zlib/LICENSE +22 -0
  165. nuitka/build/inline_copy/zlib/crc32.c +1049 -0
  166. nuitka/build/inline_copy/zlib/crc32.h +9446 -0
  167. nuitka/build/inline_copy/zlib/zconf.h +551 -0
  168. nuitka/build/inline_copy/zlib/zlib.h +1938 -0
  169. nuitka/build/inline_copy/zlib/zutil.h +275 -0
  170. nuitka/build/static_src/CompiledAsyncgenType.c +176 -182
  171. nuitka/build/static_src/CompiledCellType.c +63 -40
  172. nuitka/build/static_src/CompiledCodeHelpers.c +181 -128
  173. nuitka/build/static_src/CompiledCoroutineType.c +196 -203
  174. nuitka/build/static_src/CompiledFrameType.c +287 -133
  175. nuitka/build/static_src/CompiledFunctionType.c +389 -95
  176. nuitka/build/static_src/CompiledGeneratorType.c +376 -252
  177. nuitka/build/static_src/CompiledGeneratorTypeUncompiledIntegration.c +185 -198
  178. nuitka/build/static_src/CompiledMethodType.c +83 -71
  179. nuitka/build/static_src/HelpersAllocator.c +88 -19
  180. nuitka/build/static_src/HelpersAttributes.c +33 -54
  181. nuitka/build/static_src/HelpersBuiltin.c +43 -33
  182. nuitka/build/static_src/HelpersBuiltinTypeMethods.c +17 -17
  183. nuitka/build/static_src/HelpersBytes.c +19 -20
  184. nuitka/build/static_src/HelpersCalling.c +33 -30
  185. nuitka/build/static_src/HelpersCallingGenerated.c +1000 -181
  186. nuitka/build/static_src/HelpersChecksumTools.c +35 -21
  187. nuitka/build/static_src/HelpersClasses.c +17 -17
  188. nuitka/build/static_src/HelpersComparisonEq.c +518 -492
  189. nuitka/build/static_src/HelpersComparisonEqUtils.c +21 -19
  190. nuitka/build/static_src/HelpersComparisonGe.c +513 -497
  191. nuitka/build/static_src/HelpersComparisonGt.c +512 -496
  192. nuitka/build/static_src/HelpersComparisonLe.c +513 -497
  193. nuitka/build/static_src/HelpersComparisonLt.c +512 -496
  194. nuitka/build/static_src/HelpersComparisonNe.c +520 -492
  195. nuitka/build/static_src/HelpersConsole.c +96 -0
  196. nuitka/build/static_src/HelpersConstantsBlob.c +542 -519
  197. nuitka/build/static_src/HelpersDeepcopy.c +33 -33
  198. nuitka/build/static_src/HelpersDictionaries.c +51 -29
  199. nuitka/build/static_src/HelpersDictionariesGenerated.c +177 -68
  200. nuitka/build/static_src/HelpersDumpBacktraces.c +63 -0
  201. nuitka/build/static_src/HelpersEnvironmentVariables.c +65 -0
  202. nuitka/build/static_src/HelpersEnvironmentVariablesSystem.c +93 -0
  203. nuitka/build/static_src/HelpersExceptions.c +161 -50
  204. nuitka/build/static_src/HelpersFiles.c +37 -17
  205. nuitka/build/static_src/HelpersFilesystemPaths.c +292 -181
  206. nuitka/build/static_src/HelpersFloats.c +37 -31
  207. nuitka/build/static_src/HelpersHeapStorage.c +21 -17
  208. nuitka/build/static_src/HelpersImport.c +48 -20
  209. nuitka/build/static_src/HelpersImportHard.c +53 -17
  210. nuitka/build/static_src/HelpersJitSources.c +46 -0
  211. nuitka/build/static_src/HelpersLists.c +140 -50
  212. nuitka/build/static_src/HelpersListsGenerated.c +41 -41
  213. nuitka/build/static_src/HelpersMappings.c +17 -17
  214. nuitka/build/static_src/HelpersMatching.c +137 -51
  215. nuitka/build/static_src/HelpersOperationBinaryAdd.c +173 -146
  216. nuitka/build/static_src/HelpersOperationBinaryAddUtils.c +99 -52
  217. nuitka/build/static_src/HelpersOperationBinaryBitand.c +50 -50
  218. nuitka/build/static_src/HelpersOperationBinaryBitor.c +50 -50
  219. nuitka/build/static_src/HelpersOperationBinaryBitxor.c +50 -50
  220. nuitka/build/static_src/HelpersOperationBinaryDivmod.c +41 -41
  221. nuitka/build/static_src/HelpersOperationBinaryDivmodUtils.c +17 -17
  222. nuitka/build/static_src/HelpersOperationBinaryFloordiv.c +41 -41
  223. nuitka/build/static_src/HelpersOperationBinaryInplaceAdd.c +20 -21
  224. nuitka/build/static_src/HelpersOperationBinaryLshift.c +47 -47
  225. nuitka/build/static_src/HelpersOperationBinaryMatmult.c +24 -24
  226. nuitka/build/static_src/HelpersOperationBinaryMod.c +107 -107
  227. nuitka/build/static_src/HelpersOperationBinaryMult.c +81 -75
  228. nuitka/build/static_src/HelpersOperationBinaryMultUtils.c +33 -30
  229. nuitka/build/static_src/HelpersOperationBinaryOlddiv.c +41 -41
  230. nuitka/build/static_src/HelpersOperationBinaryPow.c +44 -44
  231. nuitka/build/static_src/HelpersOperationBinaryPowUtils.c +12 -12
  232. nuitka/build/static_src/HelpersOperationBinaryRshift.c +47 -47
  233. nuitka/build/static_src/HelpersOperationBinarySub.c +80 -80
  234. nuitka/build/static_src/HelpersOperationBinaryTruediv.c +41 -41
  235. nuitka/build/static_src/HelpersOperationInplaceAdd.c +171 -153
  236. nuitka/build/static_src/HelpersOperationInplaceAddUtils.c +24 -22
  237. nuitka/build/static_src/HelpersOperationInplaceBitand.c +53 -53
  238. nuitka/build/static_src/HelpersOperationInplaceBitor.c +53 -53
  239. nuitka/build/static_src/HelpersOperationInplaceBitxor.c +53 -53
  240. nuitka/build/static_src/HelpersOperationInplaceFloordiv.c +62 -62
  241. nuitka/build/static_src/HelpersOperationInplaceLshift.c +44 -44
  242. nuitka/build/static_src/HelpersOperationInplaceMatmult.c +37 -37
  243. nuitka/build/static_src/HelpersOperationInplaceMod.c +134 -134
  244. nuitka/build/static_src/HelpersOperationInplaceMult.c +78 -78
  245. nuitka/build/static_src/HelpersOperationInplaceOlddiv.c +62 -62
  246. nuitka/build/static_src/HelpersOperationInplacePow.c +62 -62
  247. nuitka/build/static_src/HelpersOperationInplaceRshift.c +44 -44
  248. nuitka/build/static_src/HelpersOperationInplaceSub.c +112 -112
  249. nuitka/build/static_src/HelpersOperationInplaceTruediv.c +62 -62
  250. nuitka/build/static_src/HelpersProfiling.c +24 -23
  251. nuitka/build/static_src/HelpersPythonPgo.c +22 -22
  252. nuitka/build/static_src/HelpersRaising.c +88 -20
  253. nuitka/build/static_src/HelpersSafeStrings.c +34 -22
  254. nuitka/build/static_src/HelpersSequences.c +18 -19
  255. nuitka/build/static_src/HelpersSlices.c +29 -23
  256. nuitka/build/static_src/HelpersStrings.c +234 -37
  257. nuitka/build/static_src/HelpersTuples.c +46 -34
  258. nuitka/build/static_src/HelpersTypes.c +68 -23
  259. nuitka/build/static_src/InspectPatcher.c +108 -27
  260. nuitka/build/static_src/MainProgram.c +359 -263
  261. nuitka/build/static_src/MetaPathBasedLoader.c +367 -242
  262. nuitka/build/static_src/MetaPathBasedLoaderImportlibMetadataDistribution.c +39 -26
  263. nuitka/build/static_src/MetaPathBasedLoaderResourceReader.c +17 -18
  264. nuitka/build/static_src/MetaPathBasedLoaderResourceReaderFiles.c +97 -22
  265. nuitka/build/static_src/OnefileBootstrap.c +276 -164
  266. nuitka/build/static_src/OnefileSplashScreen.cpp +51 -27
  267. nuitka/code_generation/AsyncgenCodes.py +19 -17
  268. nuitka/code_generation/AttributeCodes.py +31 -27
  269. nuitka/code_generation/BinaryOperationHelperDefinitions.py +24 -20
  270. nuitka/code_generation/BranchCodes.py +19 -17
  271. nuitka/code_generation/BuiltinCodes.py +20 -17
  272. nuitka/code_generation/CallCodes.py +19 -17
  273. nuitka/code_generation/ClassCodes.py +19 -17
  274. nuitka/code_generation/CodeGeneration.py +48 -27
  275. nuitka/code_generation/CodeHelperSelection.py +19 -17
  276. nuitka/code_generation/CodeHelpers.py +24 -20
  277. nuitka/code_generation/CodeObjectCodes.py +34 -24
  278. nuitka/code_generation/ComparisonCodes.py +38 -20
  279. nuitka/code_generation/ComparisonHelperDefinitions.py +19 -17
  280. nuitka/code_generation/ConditionalCodes.py +19 -17
  281. nuitka/code_generation/ConstantCodes.py +82 -28
  282. nuitka/code_generation/Contexts.py +152 -26
  283. nuitka/code_generation/CoroutineCodes.py +19 -17
  284. nuitka/code_generation/CtypesCodes.py +19 -17
  285. nuitka/code_generation/DictCodes.py +25 -23
  286. nuitka/code_generation/Emission.py +21 -18
  287. nuitka/code_generation/ErrorCodes.py +27 -33
  288. nuitka/code_generation/EvalCodes.py +24 -20
  289. nuitka/code_generation/ExceptionCodes.py +27 -18
  290. nuitka/code_generation/ExpressionCTypeSelectionHelpers.py +20 -17
  291. nuitka/code_generation/ExpressionCodes.py +19 -17
  292. nuitka/code_generation/FrameCodes.py +24 -20
  293. nuitka/code_generation/FunctionCodes.py +24 -21
  294. nuitka/code_generation/GeneratorCodes.py +23 -20
  295. nuitka/code_generation/GlobalConstants.py +43 -23
  296. nuitka/code_generation/GlobalsLocalsCodes.py +21 -19
  297. nuitka/code_generation/IdCodes.py +19 -17
  298. nuitka/code_generation/ImportCodes.py +90 -50
  299. nuitka/code_generation/Indentation.py +23 -22
  300. nuitka/code_generation/IndexCodes.py +19 -17
  301. nuitka/code_generation/InjectCCodes.py +14 -12
  302. nuitka/code_generation/IntegerCodes.py +19 -17
  303. nuitka/code_generation/IteratorCodes.py +19 -17
  304. nuitka/code_generation/JitCodes.py +44 -0
  305. nuitka/code_generation/LabelCodes.py +19 -17
  306. nuitka/code_generation/LineNumberCodes.py +19 -17
  307. nuitka/code_generation/ListCodes.py +32 -36
  308. nuitka/code_generation/LoaderCodes.py +22 -17
  309. nuitka/code_generation/LocalsDictCodes.py +56 -32
  310. nuitka/code_generation/LoopCodes.py +19 -17
  311. nuitka/code_generation/MatchCodes.py +42 -22
  312. nuitka/code_generation/ModuleCodes.py +43 -25
  313. nuitka/code_generation/Namify.py +27 -23
  314. nuitka/code_generation/NetworkxCodes.py +51 -0
  315. nuitka/code_generation/OperationCodes.py +29 -31
  316. nuitka/code_generation/PackageResourceCodes.py +59 -23
  317. nuitka/code_generation/PrintCodes.py +19 -17
  318. nuitka/code_generation/PythonAPICodes.py +19 -17
  319. nuitka/code_generation/RaisingCodes.py +19 -17
  320. nuitka/code_generation/Reports.py +19 -17
  321. nuitka/code_generation/ReturnCodes.py +19 -17
  322. nuitka/code_generation/SetCodes.py +19 -17
  323. nuitka/code_generation/SliceCodes.py +22 -20
  324. nuitka/code_generation/StringCodes.py +19 -17
  325. nuitka/code_generation/SubscriptCodes.py +24 -30
  326. nuitka/code_generation/TensorflowCodes.py +54 -0
  327. nuitka/code_generation/TryCodes.py +19 -17
  328. nuitka/code_generation/TupleCodes.py +20 -18
  329. nuitka/code_generation/TypeAliasCodes.py +71 -0
  330. nuitka/code_generation/VariableCodes.py +26 -22
  331. nuitka/code_generation/VariableDeclarations.py +20 -17
  332. nuitka/code_generation/YieldCodes.py +22 -20
  333. nuitka/code_generation/__init__.py +5 -4
  334. nuitka/code_generation/c_types/CTypeBases.py +19 -17
  335. nuitka/code_generation/c_types/CTypeBooleans.py +19 -17
  336. nuitka/code_generation/c_types/CTypeCFloats.py +19 -17
  337. nuitka/code_generation/c_types/CTypeCLongs.py +19 -18
  338. nuitka/code_generation/c_types/CTypeModuleDictVariables.py +19 -17
  339. nuitka/code_generation/c_types/CTypeNuitkaBooleans.py +19 -17
  340. nuitka/code_generation/c_types/CTypeNuitkaInts.py +19 -18
  341. nuitka/code_generation/c_types/CTypeNuitkaVoids.py +19 -17
  342. nuitka/code_generation/c_types/CTypePyObjectPointers.py +27 -25
  343. nuitka/code_generation/c_types/CTypeVoids.py +20 -17
  344. nuitka/code_generation/c_types/__init__.py +5 -4
  345. nuitka/code_generation/templates/CodeTemplatesAsyncgens.py +18 -17
  346. nuitka/code_generation/templates/CodeTemplatesConstants.py +132 -36
  347. nuitka/code_generation/templates/CodeTemplatesCoroutines.py +18 -17
  348. nuitka/code_generation/templates/CodeTemplatesExceptions.py +19 -18
  349. nuitka/code_generation/templates/CodeTemplatesFrames.py +18 -17
  350. nuitka/code_generation/templates/CodeTemplatesFunction.py +18 -17
  351. nuitka/code_generation/templates/CodeTemplatesGeneratorFunction.py +19 -17
  352. nuitka/code_generation/templates/CodeTemplatesIterators.py +18 -18
  353. nuitka/code_generation/templates/CodeTemplatesLoader.py +25 -19
  354. nuitka/code_generation/templates/CodeTemplatesModules.py +244 -165
  355. nuitka/code_generation/templates/CodeTemplatesVariables.py +42 -27
  356. nuitka/code_generation/templates/TemplateDebugWrapper.py +19 -18
  357. nuitka/code_generation/templates/__init__.py +5 -4
  358. nuitka/code_generation/templates_c/CodeTemplateCallsMethodPositional.c.j2 +19 -19
  359. nuitka/code_generation/templates_c/CodeTemplateCallsMixed.c.j2 +18 -18
  360. nuitka/code_generation/templates_c/CodeTemplateCallsPositional.c.j2 +76 -25
  361. nuitka/code_generation/templates_c/CodeTemplateCallsPositionalMethodDescr.c.j2 +22 -22
  362. nuitka/code_generation/templates_c/CodeTemplateMakeListHinted.c.j2 +19 -19
  363. nuitka/code_generation/templates_c/CodeTemplateMakeListSmall.c.j2 +19 -19
  364. nuitka/code_generation/templates_c/HelperBuiltinMethodOperation.c.j2 +17 -17
  365. nuitka/code_generation/templates_c/HelperDictionaryCopy.c.j2 +121 -48
  366. nuitka/code_generation/templates_c/HelperImportHard.c.j2 +18 -18
  367. nuitka/code_generation/templates_c/HelperLongTools.c.j2 +18 -18
  368. nuitka/code_generation/templates_c/HelperObjectTools.c.j2 +6 -6
  369. nuitka/code_generation/templates_c/HelperOperationBinary.c.j2 +23 -23
  370. nuitka/code_generation/templates_c/HelperOperationComparison.c.j2 +35 -35
  371. nuitka/code_generation/templates_c/HelperOperationComparisonBytes.c.j2 +28 -28
  372. nuitka/code_generation/templates_c/HelperOperationComparisonFloat.c.j2 +17 -17
  373. nuitka/code_generation/templates_c/HelperOperationComparisonInt.c.j2 +18 -18
  374. nuitka/code_generation/templates_c/HelperOperationComparisonList.c.j2 +44 -32
  375. nuitka/code_generation/templates_c/HelperOperationComparisonLong.c.j2 +20 -20
  376. nuitka/code_generation/templates_c/HelperOperationComparisonStr.c.j2 +28 -28
  377. nuitka/code_generation/templates_c/HelperOperationComparisonTuple.c.j2 +24 -24
  378. nuitka/code_generation/templates_c/HelperOperationComparisonUnicode.c.j2 +33 -29
  379. nuitka/code_generation/templates_c/HelperOperationInplace.c.j2 +20 -20
  380. nuitka/code_generation/templates_c/HelperSlotsBinary.c.j2 +27 -27
  381. nuitka/code_generation/templates_c/HelperSlotsBytes.c.j2 +17 -17
  382. nuitka/code_generation/templates_c/HelperSlotsCommon.c.j2 +17 -17
  383. nuitka/code_generation/templates_c/HelperSlotsFloat.c.j2 +17 -17
  384. nuitka/code_generation/templates_c/HelperSlotsInt.c.j2 +17 -17
  385. nuitka/code_generation/templates_c/HelperSlotsList.c.j2 +21 -18
  386. nuitka/code_generation/templates_c/HelperSlotsLong.c.j2 +26 -24
  387. nuitka/code_generation/templates_c/HelperSlotsSet.c.j2 +17 -17
  388. nuitka/code_generation/templates_c/HelperSlotsStr.c.j2 +17 -17
  389. nuitka/code_generation/templates_c/HelperSlotsTuple.c.j2 +21 -18
  390. nuitka/code_generation/templates_c/HelperSlotsUnicode.c.j2 +17 -17
  391. nuitka/containers/Namedtuples.py +19 -18
  392. nuitka/containers/OrderedSetsFallback.py +19 -17
  393. nuitka/containers/__init__.py +5 -4
  394. nuitka/distutils/Build.py +19 -18
  395. nuitka/distutils/DistutilCommands.py +34 -23
  396. nuitka/distutils/__init__.py +5 -4
  397. nuitka/finalizations/Finalization.py +20 -17
  398. nuitka/finalizations/FinalizeMarkups.py +21 -41
  399. nuitka/finalizations/__init__.py +5 -4
  400. nuitka/freezer/DependsExe.py +48 -28
  401. nuitka/freezer/DllDependenciesCommon.py +47 -20
  402. nuitka/freezer/DllDependenciesMacOS.py +147 -57
  403. nuitka/freezer/DllDependenciesPosix.py +29 -19
  404. nuitka/freezer/DllDependenciesWin32.py +29 -21
  405. nuitka/freezer/ImportDetection.py +20 -17
  406. nuitka/freezer/IncludedDataFiles.py +118 -47
  407. nuitka/freezer/IncludedEntryPoints.py +102 -38
  408. nuitka/freezer/Onefile.py +32 -22
  409. nuitka/freezer/Standalone.py +105 -50
  410. nuitka/freezer/__init__.py +5 -4
  411. nuitka/importing/IgnoreListing.py +19 -17
  412. nuitka/importing/ImportCache.py +24 -21
  413. nuitka/importing/ImportResolving.py +103 -95
  414. nuitka/importing/Importing.py +286 -92
  415. nuitka/importing/PreloadedPackages.py +21 -18
  416. nuitka/importing/Recursion.py +131 -47
  417. nuitka/importing/StandardLibrary.py +46 -28
  418. nuitka/importing/__init__.py +5 -4
  419. nuitka/nodes/AsyncgenNodes.py +19 -17
  420. nuitka/nodes/AttributeLookupNodes.py +19 -17
  421. nuitka/nodes/AttributeNodes.py +19 -17
  422. nuitka/nodes/AttributeNodesGenerated.py +49 -24
  423. nuitka/nodes/BuiltinAllNodes.py +19 -17
  424. nuitka/nodes/BuiltinAnyNodes.py +19 -17
  425. nuitka/nodes/BuiltinComplexNodes.py +20 -17
  426. nuitka/nodes/BuiltinDecodingNodes.py +19 -17
  427. nuitka/nodes/BuiltinDecoratorNodes.py +19 -17
  428. nuitka/nodes/BuiltinDictNodes.py +19 -17
  429. nuitka/nodes/BuiltinFormatNodes.py +20 -17
  430. nuitka/nodes/BuiltinHashNodes.py +19 -17
  431. nuitka/nodes/BuiltinInputNodes.py +19 -17
  432. nuitka/nodes/BuiltinIntegerNodes.py +19 -17
  433. nuitka/nodes/BuiltinIteratorNodes.py +24 -20
  434. nuitka/nodes/BuiltinLenNodes.py +19 -17
  435. nuitka/nodes/BuiltinNextNodes.py +19 -17
  436. nuitka/nodes/BuiltinOpenNodes.py +52 -18
  437. nuitka/nodes/BuiltinOperationNodeBasesGenerated.py +40 -23
  438. nuitka/nodes/BuiltinRangeNodes.py +21 -19
  439. nuitka/nodes/BuiltinRefNodes.py +68 -19
  440. nuitka/nodes/BuiltinSumNodes.py +20 -18
  441. nuitka/nodes/BuiltinTypeNodes.py +19 -17
  442. nuitka/nodes/BuiltinVarsNodes.py +19 -18
  443. nuitka/nodes/BytesNodes.py +19 -17
  444. nuitka/nodes/CallNodes.py +19 -17
  445. nuitka/nodes/Checkers.py +19 -17
  446. nuitka/nodes/ChildrenHavingMixins.py +1250 -302
  447. nuitka/nodes/ClassNodes.py +49 -29
  448. nuitka/nodes/CodeObjectSpecs.py +29 -18
  449. nuitka/nodes/ComparisonNodes.py +19 -17
  450. nuitka/nodes/ConditionalNodes.py +21 -23
  451. nuitka/nodes/ConstantRefNodes.py +57 -17
  452. nuitka/nodes/ContainerMakingNodes.py +19 -17
  453. nuitka/nodes/ContainerOperationNodes.py +19 -17
  454. nuitka/nodes/CoroutineNodes.py +19 -17
  455. nuitka/nodes/CtypesNodes.py +19 -18
  456. nuitka/nodes/DictionaryNodes.py +19 -18
  457. nuitka/nodes/ExceptionNodes.py +29 -17
  458. nuitka/nodes/ExecEvalNodes.py +19 -17
  459. nuitka/nodes/ExpressionBases.py +34 -26
  460. nuitka/nodes/ExpressionBasesGenerated.py +54 -32
  461. nuitka/nodes/ExpressionShapeMixins.py +19 -17
  462. nuitka/nodes/FrameNodes.py +19 -17
  463. nuitka/nodes/FunctionAttributeNodes.py +19 -17
  464. nuitka/nodes/FunctionNodes.py +81 -35
  465. nuitka/nodes/FutureSpecs.py +35 -20
  466. nuitka/nodes/GeneratorNodes.py +21 -19
  467. nuitka/nodes/GlobalsLocalsNodes.py +22 -17
  468. nuitka/nodes/HardImportNodesGenerated.py +545 -129
  469. nuitka/nodes/ImportHardNodes.py +46 -38
  470. nuitka/nodes/ImportNodes.py +436 -446
  471. nuitka/nodes/IndicatorMixins.py +19 -17
  472. nuitka/nodes/InjectCNodes.py +19 -18
  473. nuitka/nodes/IterationHandles.py +55 -34
  474. nuitka/nodes/KeyValuePairNodes.py +19 -17
  475. nuitka/nodes/ListOperationNodes.py +33 -21
  476. nuitka/nodes/LocalsDictNodes.py +19 -17
  477. nuitka/nodes/LocalsScopes.py +41 -41
  478. nuitka/nodes/LoopNodes.py +28 -17
  479. nuitka/nodes/MatchNodes.py +37 -24
  480. nuitka/nodes/ModuleAttributeNodes.py +18 -35
  481. nuitka/nodes/ModuleNodes.py +90 -31
  482. nuitka/nodes/NetworkxNodes.py +45 -0
  483. nuitka/nodes/NodeBases.py +45 -43
  484. nuitka/nodes/NodeMakingHelpers.py +21 -19
  485. nuitka/nodes/NodeMetaClasses.py +45 -28
  486. nuitka/nodes/OperatorNodes.py +28 -26
  487. nuitka/nodes/OperatorNodesUnary.py +20 -17
  488. nuitka/nodes/OsSysNodes.py +66 -18
  489. nuitka/nodes/OutlineNodes.py +22 -20
  490. nuitka/nodes/PackageMetadataNodes.py +37 -27
  491. nuitka/nodes/PackageResourceNodes.py +29 -23
  492. nuitka/nodes/PrintNodes.py +19 -17
  493. nuitka/nodes/ReturnNodes.py +20 -18
  494. nuitka/nodes/SideEffectNodes.py +19 -17
  495. nuitka/nodes/SliceNodes.py +20 -18
  496. nuitka/nodes/StatementBasesGenerated.py +125 -77
  497. nuitka/nodes/StatementNodes.py +19 -17
  498. nuitka/nodes/StrNodes.py +19 -17
  499. nuitka/nodes/StringConcatenationNodes.py +20 -17
  500. nuitka/nodes/SubscriptNodes.py +26 -24
  501. nuitka/nodes/TensorflowNodes.py +38 -0
  502. nuitka/nodes/TryNodes.py +19 -17
  503. nuitka/nodes/TypeMatchNodes.py +19 -17
  504. nuitka/nodes/TypeNodes.py +40 -17
  505. nuitka/nodes/VariableAssignNodes.py +122 -64
  506. nuitka/nodes/VariableDelNodes.py +19 -17
  507. nuitka/nodes/VariableNameNodes.py +19 -17
  508. nuitka/nodes/VariableRefNodes.py +63 -26
  509. nuitka/nodes/VariableReleaseNodes.py +19 -17
  510. nuitka/nodes/YieldNodes.py +21 -19
  511. nuitka/nodes/__init__.py +5 -4
  512. nuitka/nodes/shapes/BuiltinTypeShapes.py +145 -39
  513. nuitka/nodes/shapes/ControlFlowDescriptions.py +19 -17
  514. nuitka/nodes/shapes/ShapeMixins.py +40 -17
  515. nuitka/nodes/shapes/StandardShapes.py +27 -20
  516. nuitka/nodes/shapes/__init__.py +5 -4
  517. nuitka/optimizations/BytecodeDemotion.py +19 -17
  518. nuitka/optimizations/FunctionInlining.py +22 -23
  519. nuitka/optimizations/Graphs.py +19 -17
  520. nuitka/optimizations/Optimization.py +39 -35
  521. nuitka/optimizations/OptimizeBuiltinCalls.py +31 -27
  522. nuitka/optimizations/Tags.py +19 -18
  523. nuitka/optimizations/TraceCollections.py +67 -24
  524. nuitka/optimizations/ValueTraces.py +92 -25
  525. nuitka/optimizations/__init__.py +5 -4
  526. nuitka/pgo/PGO.py +33 -23
  527. nuitka/pgo/__init__.py +5 -4
  528. nuitka/plugins/PluginBase.py +610 -109
  529. nuitka/plugins/Plugins.py +241 -58
  530. nuitka/plugins/YamlPluginBase.py +121 -0
  531. nuitka/plugins/__init__.py +5 -4
  532. nuitka/plugins/standard/AntiBloatPlugin.py +357 -129
  533. nuitka/plugins/standard/ConsiderPyLintAnnotationsPlugin.py +20 -19
  534. nuitka/plugins/standard/DataFilesPlugin.py +65 -29
  535. nuitka/plugins/standard/DelvewheelPlugin.py +32 -24
  536. nuitka/plugins/standard/DillPlugin/DillPlugin.c +37 -0
  537. nuitka/plugins/standard/DillPlugin/dill-postLoad.py +256 -0
  538. nuitka/plugins/standard/DillPlugin.py +42 -134
  539. nuitka/plugins/standard/DllFilesPlugin.py +125 -42
  540. nuitka/plugins/standard/EnumPlugin.py +19 -17
  541. nuitka/plugins/standard/EventletPlugin.py +19 -17
  542. nuitka/plugins/standard/GeventPlugin.py +19 -17
  543. nuitka/plugins/standard/GiPlugin.py +44 -28
  544. nuitka/plugins/standard/GlfwPlugin.py +20 -17
  545. nuitka/plugins/standard/ImplicitImports.py +407 -46
  546. nuitka/plugins/standard/KivyPlugin.py +30 -17
  547. nuitka/plugins/standard/MatplotlibPlugin.py +88 -42
  548. nuitka/plugins/standard/MultiprocessingPlugin.py +25 -20
  549. nuitka/plugins/standard/NumpyPlugin.py +19 -17
  550. nuitka/plugins/standard/OptionsNannyPlugin.py +48 -76
  551. nuitka/plugins/standard/PbrPlugin.py +21 -19
  552. nuitka/plugins/standard/PkgResourcesPlugin.py +34 -23
  553. nuitka/plugins/standard/PmwPlugin.py +30 -27
  554. nuitka/plugins/standard/PySidePyQtPlugin.py +74 -80
  555. nuitka/plugins/standard/PywebViewPlugin.py +19 -17
  556. nuitka/plugins/standard/SpacyPlugin.py +136 -0
  557. nuitka/plugins/standard/TensorflowPlugin.py +20 -17
  558. nuitka/plugins/standard/TkinterPlugin.py +103 -53
  559. nuitka/plugins/standard/TorchPlugin.py +20 -17
  560. nuitka/plugins/standard/TransformersPlugin.py +94 -30
  561. nuitka/plugins/standard/TrioPlugin.py +18 -15
  562. nuitka/plugins/standard/UpxPlugin.py +21 -19
  563. nuitka/plugins/standard/__init__.py +5 -4
  564. nuitka/plugins/standard/standard.nuitka-package.config.yml +3449 -1299
  565. nuitka/plugins/standard/stdlib2.nuitka-package.config.yml +14 -14
  566. nuitka/plugins/standard/stdlib3.nuitka-package.config.yml +121 -66
  567. nuitka/reports/CompilationReportReader.py +67 -0
  568. nuitka/reports/LicenseReport.rst.j2 +21 -21
  569. nuitka/reports/Reports.py +352 -76
  570. nuitka/reports/__init__.py +5 -4
  571. nuitka/specs/BuiltinBytesOperationSpecs.py +18 -17
  572. nuitka/specs/BuiltinDictOperationSpecs.py +18 -17
  573. nuitka/specs/BuiltinListOperationSpecs.py +18 -17
  574. nuitka/specs/BuiltinParameterSpecs.py +30 -20
  575. nuitka/specs/BuiltinStrOperationSpecs.py +19 -18
  576. nuitka/specs/BuiltinTypeOperationSpecs.py +18 -18
  577. nuitka/specs/BuiltinUnicodeOperationSpecs.py +18 -17
  578. nuitka/specs/HardImportSpecs.py +67 -22
  579. nuitka/specs/ParameterSpecs.py +56 -41
  580. nuitka/specs/__init__.py +5 -4
  581. nuitka/tools/Basics.py +20 -18
  582. nuitka/tools/__init__.py +5 -4
  583. nuitka/tools/commercial/__init__.py +7 -6
  584. nuitka/tools/data_composer/DataComposer.py +78 -62
  585. nuitka/tools/data_composer/__init__.py +5 -4
  586. nuitka/tools/data_composer/__main__.py +18 -17
  587. nuitka/tools/environments/CreateEnvironment.py +20 -17
  588. nuitka/tools/environments/Virtualenv.py +60 -32
  589. nuitka/tools/environments/__init__.py +5 -4
  590. nuitka/tools/general/__init__.py +5 -4
  591. nuitka/tools/general/dll_report/__init__.py +5 -4
  592. nuitka/tools/general/dll_report/__main__.py +19 -21
  593. nuitka/tools/general/find_module/FindModuleCode.py +35 -22
  594. nuitka/tools/general/find_module/__init__.py +5 -4
  595. nuitka/tools/onefile_compressor/OnefileCompressor.py +213 -131
  596. nuitka/tools/onefile_compressor/__init__.py +5 -4
  597. nuitka/tools/onefile_compressor/__main__.py +18 -17
  598. nuitka/tools/podman/Podman.py +19 -17
  599. nuitka/tools/podman/__init__.py +5 -4
  600. nuitka/tools/podman/__main__.py +35 -19
  601. nuitka/tools/profiler/__init__.py +5 -4
  602. nuitka/tools/profiler/__main__.py +18 -17
  603. nuitka/tools/scanning/DisplayPackageDLLs.py +47 -22
  604. nuitka/tools/scanning/DisplayPackageData.py +31 -19
  605. nuitka/tools/scanning/__init__.py +5 -4
  606. nuitka/tools/specialize/CTypeDescriptions.py +93 -71
  607. nuitka/tools/specialize/Common.py +18 -17
  608. nuitka/tools/specialize/SpecializeC.py +31 -27
  609. nuitka/tools/specialize/SpecializePython.py +108 -45
  610. nuitka/tools/specialize/__init__.py +5 -4
  611. nuitka/tools/testing/Common.py +106 -52
  612. nuitka/tools/testing/Constructs.py +19 -17
  613. nuitka/tools/testing/OutputComparison.py +54 -18
  614. nuitka/tools/testing/Pythons.py +19 -18
  615. nuitka/tools/testing/RuntimeTracing.py +20 -19
  616. nuitka/tools/testing/SearchModes.py +26 -20
  617. nuitka/tools/testing/Valgrind.py +19 -17
  618. nuitka/tools/testing/__init__.py +5 -4
  619. nuitka/tools/testing/check_reference_counts/__init__.py +5 -4
  620. nuitka/tools/testing/check_reference_counts/__main__.py +18 -18
  621. nuitka/tools/testing/compare_with_cpython/__init__.py +5 -4
  622. nuitka/tools/testing/compare_with_cpython/__main__.py +36 -29
  623. nuitka/tools/testing/find_sxs_modules/__init__.py +5 -4
  624. nuitka/tools/testing/find_sxs_modules/__main__.py +17 -17
  625. nuitka/tools/testing/measure_construct_performance/__init__.py +5 -4
  626. nuitka/tools/testing/measure_construct_performance/__main__.py +22 -25
  627. nuitka/tools/testing/run_nuitka_tests/__init__.py +5 -4
  628. nuitka/tools/testing/run_nuitka_tests/__main__.py +57 -40
  629. nuitka/tools/watch/AutoStage.py +144 -0
  630. nuitka/tools/watch/GitHub.py +113 -0
  631. nuitka/tools/watch/__init__.py +5 -4
  632. nuitka/tools/watch/__main__.py +322 -91
  633. nuitka/tree/Building.py +176 -147
  634. nuitka/tree/ComplexCallHelperFunctions.py +80 -58
  635. nuitka/tree/Extractions.py +19 -17
  636. nuitka/tree/InternalModule.py +29 -20
  637. nuitka/tree/Operations.py +19 -17
  638. nuitka/tree/ReformulationAssertStatements.py +20 -17
  639. nuitka/tree/ReformulationAssignmentStatements.py +92 -91
  640. nuitka/tree/ReformulationBooleanExpressions.py +19 -17
  641. nuitka/tree/ReformulationCallExpressions.py +20 -18
  642. nuitka/tree/ReformulationClasses.py +45 -39
  643. nuitka/tree/ReformulationClasses3.py +146 -98
  644. nuitka/tree/ReformulationComparisonExpressions.py +29 -35
  645. nuitka/tree/ReformulationContractionExpressions.py +58 -55
  646. nuitka/tree/ReformulationDictionaryCreation.py +40 -35
  647. nuitka/tree/ReformulationExecStatements.py +42 -39
  648. nuitka/tree/ReformulationForLoopStatements.py +30 -34
  649. nuitka/tree/ReformulationFunctionStatements.py +58 -54
  650. nuitka/tree/ReformulationImportStatements.py +34 -29
  651. nuitka/tree/ReformulationLambdaExpressions.py +23 -24
  652. nuitka/tree/ReformulationMatchStatements.py +244 -92
  653. nuitka/tree/ReformulationMultidist.py +22 -18
  654. nuitka/tree/ReformulationNamespacePackages.py +55 -46
  655. nuitka/tree/ReformulationPrintStatements.py +23 -24
  656. nuitka/tree/ReformulationSequenceCreation.py +50 -49
  657. nuitka/tree/ReformulationSubscriptExpressions.py +19 -17
  658. nuitka/tree/ReformulationTryExceptStatements.py +19 -17
  659. nuitka/tree/ReformulationTryFinallyStatements.py +34 -17
  660. nuitka/tree/ReformulationWhileLoopStatements.py +19 -17
  661. nuitka/tree/ReformulationWithStatements.py +39 -41
  662. nuitka/tree/ReformulationYieldExpressions.py +21 -19
  663. nuitka/tree/SourceHandling.py +76 -31
  664. nuitka/tree/SyntaxErrors.py +19 -17
  665. nuitka/tree/TreeHelpers.py +33 -20
  666. nuitka/tree/VariableClosure.py +35 -39
  667. nuitka/tree/__init__.py +5 -4
  668. nuitka/utils/AppDirs.py +41 -20
  669. nuitka/utils/CStrings.py +66 -21
  670. nuitka/utils/CommandLineOptions.py +84 -19
  671. nuitka/utils/Distributions.py +445 -54
  672. nuitka/utils/Download.py +89 -57
  673. nuitka/utils/Execution.py +73 -34
  674. nuitka/utils/FileOperations.py +318 -74
  675. nuitka/utils/Hashing.py +55 -33
  676. nuitka/utils/Images.py +26 -19
  677. nuitka/utils/Importing.py +118 -24
  678. nuitka/utils/InstalledPythons.py +80 -75
  679. nuitka/utils/InstanceCounters.py +20 -17
  680. nuitka/utils/Jinja2.py +30 -22
  681. nuitka/utils/Json.py +19 -17
  682. nuitka/utils/MacOSApp.py +26 -18
  683. nuitka/utils/MemoryUsage.py +20 -18
  684. nuitka/utils/ModuleNames.py +42 -26
  685. nuitka/utils/ReExecute.py +50 -28
  686. nuitka/utils/Rest.py +20 -17
  687. nuitka/utils/SharedLibraries.py +161 -75
  688. nuitka/utils/Shebang.py +20 -17
  689. nuitka/utils/Signing.py +63 -18
  690. nuitka/utils/SlotMetaClasses.py +57 -0
  691. nuitka/utils/StaticLibraries.py +83 -56
  692. nuitka/utils/ThreadedExecutor.py +18 -17
  693. nuitka/utils/Timing.py +22 -20
  694. nuitka/utils/Utils.py +115 -25
  695. nuitka/utils/WindowsFileUsage.py +22 -20
  696. nuitka/utils/WindowsResources.py +25 -18
  697. nuitka/utils/Yaml.py +62 -24
  698. nuitka/utils/__init__.py +5 -4
  699. Nuitka_winsvc-1.8.dist-info/RECORD +0 -905
  700. nuitka/build/inline_copy/tqdm/tqdm/_tqdm_gui.py +0 -9
  701. nuitka/build/inline_copy/tqdm/tqdm/gui.py +0 -191
  702. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.4.8.dist-info}/LICENSE.txt +0 -0
  703. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.4.8.dist-info}/entry_points.txt +0 -0
  704. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.4.8.dist-info}/top_level.txt +0 -0
@@ -1,20 +1,6 @@
1
- # Copyright 2023, Kay Hayen, mailto:kay.hayen@gmail.com
2
- #
3
- # Part of "Nuitka", an optimizing Python compiler that is compatible and
4
- # integrates with CPython, but also works on its own.
5
- #
6
- # Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
- #
1
+ # Copyright 2024, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
2
+
3
+
18
4
  """ Helper functions for the scons file.
19
5
 
20
6
  """
@@ -22,6 +8,7 @@
22
8
  from __future__ import print_function
23
9
 
24
10
  import os
11
+ import pickle
25
12
  import shutil
26
13
  import signal
27
14
  import sys
@@ -30,13 +17,23 @@ from nuitka.__past__ import basestring, unicode
30
17
  from nuitka.containers.OrderedDicts import OrderedDict
31
18
  from nuitka.Tracing import scons_details_logger, scons_logger
32
19
  from nuitka.utils.Execution import executeProcess
33
- from nuitka.utils.FileOperations import getFileContentByLine, openTextFile
34
- from nuitka.utils.Utils import isLinux, isMacOS, isPosixWindows
20
+ from nuitka.utils.FileOperations import (
21
+ changeFilenameExtension,
22
+ getFileContentByLine,
23
+ getFilenameExtension,
24
+ getWindowsShortPathName,
25
+ hasFilenameExtension,
26
+ isFilesystemEncodable,
27
+ openPickleFile,
28
+ openTextFile,
29
+ withFileLock,
30
+ )
31
+ from nuitka.utils.Utils import isLinux, isMacOS, isPosixWindows, isWin32Windows
35
32
 
36
33
 
37
34
  def initScons():
38
35
  # Avoid localized outputs.
39
- os.environ["LANG"] = "C"
36
+ os.environ["LC_ALL"] = "C"
40
37
 
41
38
  def no_sync(self):
42
39
  # That's a noop, pylint: disable=unused-argument
@@ -160,7 +157,7 @@ def prepareEnvironment(mingw_mode):
160
157
  if os.path.isdir(cc_dirname):
161
158
  addToPATH(None, cc_dirname, prefix=True)
162
159
 
163
- if win_target and isGccName(os.path.basename(os.environ["CC"])):
160
+ if os.name == "nt" and isGccName(os.path.basename(os.environ["CC"])):
164
161
  scons_details_logger.info(
165
162
  "Environment CC seems to be a gcc, enabling mingw_mode."
166
163
  )
@@ -176,7 +173,7 @@ def prepareEnvironment(mingw_mode):
176
173
 
177
174
 
178
175
  def createEnvironment(
179
- mingw_mode, msvc_version, target_arch, experimental, no_deployment
176
+ mingw_mode, msvc_version, target_arch, experimental, no_deployment, debug_modes
180
177
  ):
181
178
  from SCons.Script import Environment # pylint: disable=I0021,import-error
182
179
 
@@ -210,9 +207,9 @@ def createEnvironment(
210
207
  import SCons.Tool.msvc # pylint: disable=I0021,import-error
211
208
 
212
209
  SCons.Tool.MSCommon.vc.msvc_setup_env = lambda *args: None
213
- SCons.Tool.msvc.msvc_exists = (
214
- SCons.Tool.MSCommon.vc.msvc_exists
215
- ) = lambda *args: False
210
+ SCons.Tool.msvc.msvc_exists = SCons.Tool.MSCommon.vc.msvc_exists = (
211
+ lambda *args: False
212
+ )
216
213
  else:
217
214
  # Everything else should use default, that is MSVC tools, but not MinGW64.
218
215
  tools = ["default"]
@@ -238,10 +235,14 @@ def createEnvironment(
238
235
  env.nuitka_python = getArgumentBool("nuitka_python", False)
239
236
  env.debian_python = getArgumentBool("debian_python", False)
240
237
  env.fedora_python = getArgumentBool("fedora_python", False)
238
+ env.arch_python = getArgumentBool("arch_python", False)
241
239
  env.msys2_mingw_python = getArgumentBool("msys2_mingw_python", False)
242
240
  env.anaconda_python = getArgumentBool("anaconda_python", False)
243
241
  env.pyenv_python = getArgumentBool("pyenv_python", False)
244
242
  env.apple_python = getArgumentBool("apple_python", False)
243
+ env.self_compiled_python_uninstalled = getArgumentBool(
244
+ "self_compiled_python_uninstalled", False
245
+ )
245
246
 
246
247
  # Non-elf binary, important for linker settings.
247
248
  env.noelf_mode = getArgumentBool("noelf_mode", False)
@@ -270,6 +271,9 @@ def createEnvironment(
270
271
  _enableFlagSettings(env, "experimental", experimental)
271
272
  env.experimental_flags = experimental
272
273
 
274
+ _enableFlagSettings(env, "debug", debug_modes)
275
+ env.debug_modes_flags = debug_modes
276
+
273
277
  return env
274
278
 
275
279
 
@@ -286,11 +290,6 @@ def decodeData(data):
286
290
  return data.decode("utf8", "backslashreplace")
287
291
 
288
292
 
289
- # Windows target mode: Compile for Windows. Used to be an option, but we
290
- # no longer cross compile this way.
291
- win_target = os.name == "nt"
292
-
293
-
294
293
  def getExecutablePath(filename, env):
295
294
  """Find an execute in either normal PATH, or Scons detected PATH."""
296
295
 
@@ -303,7 +302,7 @@ def getExecutablePath(filename, env):
303
302
  filename = env[filename[1:]]
304
303
 
305
304
  # Append ".exe" suffix on Windows if not already present.
306
- if win_target and not filename.lower().endswith(".exe"):
305
+ if os.name == "nt" and not filename.lower().endswith(".exe"):
307
306
  filename += ".exe"
308
307
 
309
308
  # Either look at the initial "PATH" as given from the outside or look at the
@@ -321,7 +320,7 @@ def getExecutablePath(filename, env):
321
320
 
322
321
  full = os.path.normpath(os.path.join(path_element, filename))
323
322
 
324
- if os.path.exists(full):
323
+ if os.path.isfile(full):
325
324
  return full
326
325
 
327
326
  return None
@@ -365,9 +364,9 @@ def addToPATH(env, dirname, prefix):
365
364
  setEnvironmentVariable(env, "PATH", os.pathsep.join(path_value))
366
365
 
367
366
 
368
- def writeSconsReport(env, source_dir):
367
+ def writeSconsReport(env, target):
369
368
  with openTextFile(
370
- os.path.join(source_dir, "scons-report.txt"), "w", encoding="utf8"
369
+ _getSconsReportFilename(env.source_dir), "w", encoding="utf8"
371
370
  ) as report_file:
372
371
  # We are friends to get at this debug info, pylint: disable=protected-access
373
372
  for key, value in sorted(env._dict.items()):
@@ -396,13 +395,33 @@ def writeSconsReport(env, source_dir):
396
395
  print("clangcl_mode=%s" % env.clangcl_mode, file=report_file)
397
396
 
398
397
  print("PATH=%s" % os.environ["PATH"], file=report_file)
398
+ print("TARGET=%s" % target[0].abspath, file=report_file)
399
+
400
+
401
+ def reportSconsUnexpectedOutput(env, cmdline, stdout, stderr):
402
+ with withFileLock("writing scons error report"):
403
+ file_handle, pickler = openPickleFile(
404
+ _getSconsErrorReportFilename(env.source_dir), "ab", protocol=2
405
+ )
406
+ pickler.dump((cmdline, stdout, stderr))
407
+ file_handle.close()
399
408
 
400
409
 
401
410
  _scons_reports = {}
411
+ _scons_error_reports = {}
402
412
 
403
413
 
404
414
  def flushSconsReports():
405
415
  _scons_reports.clear()
416
+ _scons_error_reports.clear()
417
+
418
+
419
+ def _getSconsReportFilename(source_dir):
420
+ return os.path.join(source_dir, "scons-report.txt")
421
+
422
+
423
+ def _getSconsErrorReportFilename(source_dir):
424
+ return os.path.join(source_dir, "scons-error-report.txt")
406
425
 
407
426
 
408
427
  def readSconsReport(source_dir):
@@ -410,7 +429,7 @@ def readSconsReport(source_dir):
410
429
  scons_report = OrderedDict()
411
430
 
412
431
  for line in getFileContentByLine(
413
- os.path.join(source_dir, "scons-report.txt"), encoding="utf8"
432
+ _getSconsReportFilename(source_dir), encoding="utf8"
414
433
  ):
415
434
  if "=" not in line:
416
435
  continue
@@ -428,6 +447,47 @@ def getSconsReportValue(source_dir, key):
428
447
  return readSconsReport(source_dir).get(key)
429
448
 
430
449
 
450
+ def readSconsErrorReport(source_dir):
451
+ if source_dir not in _scons_error_reports:
452
+ scons_error_report = OrderedDict()
453
+
454
+ scons_error_report_filename = _getSconsErrorReportFilename(source_dir)
455
+ if os.path.exists(scons_error_report_filename):
456
+ file_handle = openTextFile(scons_error_report_filename, "rb")
457
+ try:
458
+ while True:
459
+ try:
460
+ cmd, stdout, stderr = pickle.load(file_handle)
461
+ except EOFError:
462
+ break
463
+
464
+ if type(cmd) in (tuple, list):
465
+ cmd = " ".join(cmd)
466
+
467
+ if cmd not in scons_error_report:
468
+ scons_error_report[cmd] = ["", ""]
469
+
470
+ if type(stdout) in (tuple, list):
471
+ stdout = "\n".join(stdout)
472
+
473
+ if type(stderr) in (tuple, list):
474
+ stderr = "\n".join(stderr)
475
+
476
+ if stdout:
477
+ stdout = stdout.replace("\n\r", "\n")
478
+ scons_error_report[cmd][0] += stdout
479
+ if stderr:
480
+ stderr = stderr.replace("\n\r", "\n")
481
+ scons_error_report[cmd][1] += stderr
482
+
483
+ finally:
484
+ file_handle.close()
485
+
486
+ _scons_error_reports[source_dir] = scons_error_report
487
+
488
+ return _scons_error_reports[source_dir]
489
+
490
+
431
491
  def addClangClPathFromMSVC(env):
432
492
  cl_exe = getExecutablePath("cl", env=env)
433
493
 
@@ -483,7 +543,11 @@ def isGccName(cc_name):
483
543
 
484
544
 
485
545
  def isClangName(cc_name):
486
- return "clang" in cc_name and "-cl" not in cc_name
546
+ return ("clang" in cc_name and "-cl" not in cc_name) or isZigName(cc_name)
547
+
548
+
549
+ def isZigName(cc_name):
550
+ return "zig" in cc_name
487
551
 
488
552
 
489
553
  def cheapCopyFile(src, dst):
@@ -491,7 +555,7 @@ def cheapCopyFile(src, dst):
491
555
  if not os.path.exists(dirname):
492
556
  os.makedirs(dirname)
493
557
 
494
- if win_target:
558
+ if os.name == "nt":
495
559
  # Windows has symlinks these days, but they do not integrate well
496
560
  # with Python2 at least. So make a copy in any case.
497
561
  if os.path.exists(dst):
@@ -524,11 +588,13 @@ def cheapCopyFile(src, dst):
524
588
  shutil.copy(src, dst)
525
589
 
526
590
 
527
- def provideStaticSourceFile(sub_path, nuitka_src, source_dir, c11_mode):
528
- source_filename = os.path.join(nuitka_src, "static_src", sub_path)
529
- target_filename = os.path.join(source_dir, "static_src", os.path.basename(sub_path))
591
+ def provideStaticSourceFile(env, sub_path, c11_mode):
592
+ source_filename = os.path.join(env.nuitka_src, "static_src", sub_path)
593
+ target_filename = os.path.join(
594
+ env.source_dir, "static_src", os.path.basename(sub_path)
595
+ )
530
596
 
531
- if target_filename.endswith(".c") and not c11_mode:
597
+ if hasFilenameExtension(target_filename, ".c") and not c11_mode:
532
598
  target_filename += "pp" # .cpp suffix then.
533
599
 
534
600
  cheapCopyFile(source_filename, target_filename)
@@ -545,32 +611,40 @@ def scanSourceDir(env, dirname, plugins):
545
611
  # name.
546
612
  added_path = False
547
613
 
548
- for filename in sorted(os.listdir(dirname)):
549
- if filename.endswith(".h") and plugins and not added_path:
614
+ for filename_base in sorted(os.listdir(dirname)):
615
+ if filename_base.endswith(".h") and plugins and not added_path:
550
616
  # Adding path for source paths on the fly, spell-checker: ignore cpppath
551
617
  env.Append(CPPPATH=[dirname])
552
618
  added_path = True
553
619
 
554
620
  # Only C files are of interest here.
555
- if not filename.endswith((".c", "cpp")) or not filename.startswith(
556
- ("module.", "__", "plugin.")
557
- ):
621
+ if not hasFilenameExtension(
622
+ filename_base, (".c", ".cpp")
623
+ ) or not filename_base.startswith(("module.", "__", "plugin.")):
558
624
  continue
559
625
 
560
- filename = os.path.join(dirname, filename)
626
+ filename = os.path.join(dirname, filename_base)
627
+
628
+ target_filename = filename
561
629
 
562
- target_file = filename
630
+ if isWin32Windows() and not isFilesystemEncodable(filename_base):
631
+ target_filename = getWindowsShortPathName(target_filename)
632
+
633
+ # Avoid ".C" suffixes, that MinGW64 wouldn't recognize.
634
+ target_filename = changeFilenameExtension(
635
+ target_filename, getFilenameExtension(target_filename).lower()
636
+ )
563
637
 
564
638
  # We pretend to use C++ if no C11 compiler is present.
565
639
  if env.c11_mode:
566
- yield filename
640
+ yield target_filename
567
641
  else:
568
- if filename.endswith(".c"):
569
- target_file += "pp" # .cpp" suffix then
642
+ if hasFilenameExtension(filename, ".c"):
643
+ target_filename += "pp" # .cpp" suffix then
570
644
 
571
- os.rename(filename, target_file)
645
+ os.rename(filename, target_filename)
572
646
 
573
- yield target_file
647
+ yield target_filename
574
648
 
575
649
 
576
650
  def makeCLiteral(value):
@@ -592,6 +666,8 @@ def createDefinitionsFile(source_dir, filename, definitions):
592
666
  continue
593
667
 
594
668
  if type(value) is int or key.endswith(("_BOOL", "_INT")):
669
+ if type(value) is bool:
670
+ value = int(value)
595
671
  f.write("#define %s %s\n" % (key, value))
596
672
  elif type(value) in (str, unicode) and key.endswith("_WIDE_STRING"):
597
673
  f.write("#define %s L%s\n" % (key, makeCLiteral(value)))
@@ -610,7 +686,7 @@ def getMsvcVersion(env):
610
686
 
611
687
  # TODO: Workaround for prompt being used.
612
688
  if value is None:
613
- value = os.environ.get("VCToolsVersion", "14.3").rsplit(".", 1)[0]
689
+ value = os.getenv("VCToolsVersion", "14.3").rsplit(".", 1)[0]
614
690
 
615
691
  value = value.replace("exp", "")
616
692
  return tuple((int(d) for d in value.split(".")))
@@ -665,7 +741,7 @@ def getLinkerArch(target_arch, mingw_mode):
665
741
  global _linker_arch_determined, _linker_arch
666
742
 
667
743
  if not _linker_arch_determined:
668
- if win_target:
744
+ if os.name == "nt":
669
745
  if target_arch == "x86_64":
670
746
  _linker_arch = "pei-x86-64"
671
747
  elif target_arch == "arm64":
@@ -771,3 +847,19 @@ def addBinaryBlobSection(env, blob_filename, section_name):
771
847
  )
772
848
  else:
773
849
  assert False
850
+
851
+
852
+ # Part of "Nuitka", an optimizing Python compiler that is compatible and
853
+ # integrates with CPython, but also works on its own.
854
+ #
855
+ # Licensed under the Apache License, Version 2.0 (the "License");
856
+ # you may not use this file except in compliance with the License.
857
+ # You may obtain a copy of the License at
858
+ #
859
+ # http://www.apache.org/licenses/LICENSE-2.0
860
+ #
861
+ # Unless required by applicable law or agreed to in writing, software
862
+ # distributed under the License is distributed on an "AS IS" BASIS,
863
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
864
+ # See the License for the specific language governing permissions and
865
+ # limitations under the License.
nuitka/build/__init__.py CHANGED
@@ -1,5 +1,8 @@
1
- # Copyright 2023, Kay Hayen, mailto:kay.hayen@gmail.com
2
- #
1
+ # Copyright 2024, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
2
+
3
+
4
+ """ Dummy file to make this directory a package. """
5
+
3
6
  # Part of "Nuitka", an optimizing Python compiler that is compatible and
4
7
  # integrates with CPython, but also works on its own.
5
8
  #
@@ -14,5 +17,3 @@
14
17
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
18
  # See the License for the specific language governing permissions and
16
19
  # limitations under the License.
17
- #
18
- """ Dummy file to make this directory a package. """
@@ -1,20 +1,5 @@
1
- // Copyright 2023, Kay Hayen, mailto:kay.hayen@gmail.com
2
- //
3
- // Part of "Nuitka", an optimizing Python compiler that is compatible and
4
- // integrates with CPython, but also works on its own.
5
- //
6
- // Licensed under the Apache License, Version 2.0 (the "License");
7
- // you may not use this file except in compliance with the License.
8
- // You may obtain a copy of the License at
9
- //
10
- // http://www.apache.org/licenses/LICENSE-2.0
11
- //
12
- // Unless required by applicable law or agreed to in writing, software
13
- // distributed under the License is distributed on an "AS IS" BASIS,
14
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- // See the License for the specific language governing permissions and
16
- // limitations under the License.
17
- //
1
+ // Copyright 2024, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
2
+
18
3
  #ifndef __NUITKA_ALLOCATOR_H__
19
4
  #define __NUITKA_ALLOCATOR_H__
20
5
 
@@ -28,7 +13,40 @@
28
13
  #define _PyObject_GC_IS_TRACKED(obj) (1)
29
14
  #endif
30
15
 
31
- #if PYTHON_VERSION >= 0x380
16
+ // The full API is available for Python 3.5 only
17
+ #if PYTHON_VERSION >= 0x350 && !defined(_NUITKA_EXPERIMENTAL_DISABLE_ALLOCATORS)
18
+ extern void *(*python_obj_malloc)(void *ctx, size_t size);
19
+ extern void *(*python_mem_malloc)(void *ctx, size_t size);
20
+ extern void *(*python_mem_calloc)(void *ctx, size_t nelem, size_t elsize);
21
+
22
+ #if defined(Py_DEBUG)
23
+ extern void *python_obj_ctx;
24
+ extern void *python_mem_ctx;
25
+ #else
26
+ #define python_obj_ctx (NULL)
27
+ #define python_mem_ctx (NULL)
28
+ #endif
29
+
30
+ extern void initNuitkaAllocators(void);
31
+
32
+ // Our version of "PyObject_Malloc".
33
+ NUITKA_MAY_BE_UNUSED static void *NuitkaObject_Malloc(size_t size) { return python_obj_malloc(python_obj_ctx, size); }
34
+
35
+ // Our version of "PyMem_Malloc".
36
+ NUITKA_MAY_BE_UNUSED static void *NuitkaMem_Malloc(size_t size) { return python_mem_malloc(python_mem_ctx, size); }
37
+
38
+ // Our version of "PyMem_Calloc".
39
+ NUITKA_MAY_BE_UNUSED static void *NuitkaMem_Calloc(size_t nelem, size_t elsize) {
40
+ return python_mem_calloc(python_mem_ctx, nelem, elsize);
41
+ }
42
+
43
+ #else
44
+ #define NuitkaObject_Malloc(size) PyObject_MALLOC(size)
45
+ #define NuitkaMem_Malloc(size) PyMem_MALLOC(size)
46
+ #define NuitkaMem_Calloc(elem, elsize) PyMem_CALLOC(elem, elsize)
47
+ #endif
48
+
49
+ #if PYTHON_VERSION >= 0x380 && PYTHON_VERSION < 0x3c0
32
50
  // Need to make Py_DECREF a macro again that doesn't call an API
33
51
  static inline void _Nuitka_Py_DECREF(PyObject *ob) {
34
52
  assert(ob != NULL && ob->ob_refcnt >= 0);
@@ -86,6 +104,18 @@ static inline void _Nuitka_Py_XDECREF(PyObject *ob) {
86
104
 
87
105
  #endif
88
106
 
107
+ // For Python3.12, avoid reference management if value is known to be immortal.
108
+ #if PYTHON_VERSION < 0x3c0
109
+ #define Py_INCREF_IMMORTAL(value) Py_INCREF(value)
110
+ #define Py_DECREF_IMMORTAL(value) Py_DECREF(value)
111
+ #elif defined(_NUITKA_DEBUG_DEBUG_IMMORTAL)
112
+ #define Py_INCREF_IMMORTAL(value) assert(Py_REFCNT(value) == _Py_IMMORTAL_REFCNT)
113
+ #define Py_DECREF_IMMORTAL(value) assert(Py_REFCNT(value) == _Py_IMMORTAL_REFCNT)
114
+ #else
115
+ #define Py_INCREF_IMMORTAL(value)
116
+ #define Py_DECREF_IMMORTAL(value)
117
+ #endif
118
+
89
119
  // Macro introduced with Python3.9 or higher, make it generally available.
90
120
  #ifndef Py_SET_TYPE
91
121
  static inline void _Py_SET_TYPE(PyObject *ob, PyTypeObject *type) { ob->ob_type = type; }
@@ -95,11 +125,25 @@ static inline void _Py_SET_TYPE(PyObject *ob, PyTypeObject *type) { ob->ob_type
95
125
  // After Python 3.9 this was moved into the DLL potentially, making
96
126
  // it expensive to call.
97
127
  #if PYTHON_VERSION >= 0x390
98
- static void Nuitka_Py_NewReference(PyObject *op) {
128
+ static inline void Nuitka_Py_NewReferenceNoTotal(PyObject *op) { Py_SET_REFCNT(op, 1); }
129
+ static inline void Nuitka_Py_NewReference(PyObject *op) {
99
130
  #ifdef Py_REF_DEBUG
131
+ #if PYTHON_VERSION < 0x3c0
100
132
  _Py_RefTotal++;
133
+ #else
134
+ _PyInterpreterState_GET()->object_state.reftotal++;
135
+ #endif
136
+ #endif
137
+ #if !defined(Py_GIL_DISABLED)
138
+ op->ob_refcnt = 1;
139
+ #else
140
+ op->ob_tid = _Py_ThreadId();
141
+ op->_padding = 0;
142
+ op->ob_mutex = (PyMutex){0};
143
+ op->ob_gc_bits = 0;
144
+ op->ob_ref_local = 1;
145
+ op->ob_ref_shared = 0;
101
146
  #endif
102
- Py_SET_REFCNT(op, 1);
103
147
  }
104
148
  #else
105
149
  #define Nuitka_Py_NewReference(op) _Py_NewReference(op)
@@ -126,7 +170,7 @@ static PyObject *Nuitka_PyType_AllocNoTrackVar(PyTypeObject *type, Py_ssize_t ni
126
170
  const size_t pre_size = Nuitka_PyType_PreHeaderSize(type);
127
171
  assert(pre_size == sizeof(PyGC_Head));
128
172
 
129
- char *alloc = (char *)PyObject_Malloc(size + pre_size);
173
+ char *alloc = (char *)NuitkaObject_Malloc(size + pre_size);
130
174
  assert(alloc);
131
175
  PyObject *obj = (PyObject *)(alloc + pre_size);
132
176
 
@@ -161,7 +205,7 @@ static PyObject *Nuitka_PyType_AllocNoTrack(PyTypeObject *type) {
161
205
  // TODO: This ought to be static for all our types, so remove it as a call.
162
206
  const size_t pre_size = Nuitka_PyType_PreHeaderSize(type);
163
207
 
164
- char *alloc = (char *)PyObject_Malloc(_PyObject_SIZE(type) + pre_size);
208
+ char *alloc = (char *)NuitkaObject_Malloc(_PyObject_SIZE(type) + pre_size);
165
209
  assert(alloc);
166
210
  PyObject *obj = (PyObject *)(alloc + pre_size);
167
211
 
@@ -239,4 +283,43 @@ NUITKA_MAY_BE_UNUSED static void *Nuitka_GC_New(PyTypeObject *type) {
239
283
  return op;
240
284
  }
241
285
 
286
+ static bool inline Nuitka_GC_IS_TRACKED_X(PyObject *object) {
287
+ return object == NULL || _PyObject_GC_IS_TRACKED(object);
288
+ }
289
+
290
+ // To allow us marking some of our own values as immortal.
291
+ #if PYTHON_VERSION >= 0x3c0
292
+ static void inline Py_SET_REFCNT_IMMORTAL(PyObject *object) {
293
+ // Normally done only with 3.13, but it makes sense to do this.
294
+ if (_PyObject_IS_GC(object) && _PyObject_GC_IS_TRACKED(object)) {
295
+ Nuitka_GC_UnTrack(object);
296
+ }
297
+
298
+ #ifdef Py_GIL_DISABLED
299
+ object->ob_tid = _Py_UNOWNED_TID;
300
+ object->ob_ref_local = _Py_IMMORTAL_REFCNT_LOCAL;
301
+ object->ob_ref_shared = 0;
302
+ #else
303
+ object->ob_refcnt = _Py_IMMORTAL_REFCNT;
304
+ #endif
305
+ }
306
+ #else
307
+ #define Py_SET_REFCNT_IMMORTAL(object)
308
+ #endif
309
+
242
310
  #endif
311
+
312
+ // Part of "Nuitka", an optimizing Python compiler that is compatible and
313
+ // integrates with CPython, but also works on its own.
314
+ //
315
+ // Licensed under the Apache License, Version 2.0 (the "License");
316
+ // you may not use this file except in compliance with the License.
317
+ // You may obtain a copy of the License at
318
+ //
319
+ // http://www.apache.org/licenses/LICENSE-2.0
320
+ //
321
+ // Unless required by applicable law or agreed to in writing, software
322
+ // distributed under the License is distributed on an "AS IS" BASIS,
323
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
324
+ // See the License for the specific language governing permissions and
325
+ // limitations under the License.
@@ -1,20 +1,5 @@
1
- // Copyright 2023, Kay Hayen, mailto:kay.hayen@gmail.com
2
- //
3
- // Part of "Nuitka", an optimizing Python compiler that is compatible and
4
- // integrates with CPython, but also works on its own.
5
- //
6
- // Licensed under the Apache License, Version 2.0 (the "License");
7
- // you may not use this file except in compliance with the License.
8
- // You may obtain a copy of the License at
9
- //
10
- // http://www.apache.org/licenses/LICENSE-2.0
11
- //
12
- // Unless required by applicable law or agreed to in writing, software
13
- // distributed under the License is distributed on an "AS IS" BASIS,
14
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- // See the License for the specific language governing permissions and
16
- // limitations under the License.
17
- //
1
+ // Copyright 2024, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
2
+
18
3
  #ifndef __NUITKA_BUILTINS_H__
19
4
  #define __NUITKA_BUILTINS_H__
20
5
 
@@ -95,3 +80,18 @@ NUITKA_MAY_BE_UNUSED static void Nuitka_SysSetObject(char const *name, PyObject
95
80
  }
96
81
 
97
82
  #endif
83
+
84
+ // Part of "Nuitka", an optimizing Python compiler that is compatible and
85
+ // integrates with CPython, but also works on its own.
86
+ //
87
+ // Licensed under the Apache License, Version 2.0 (the "License");
88
+ // you may not use this file except in compliance with the License.
89
+ // You may obtain a copy of the License at
90
+ //
91
+ // http://www.apache.org/licenses/LICENSE-2.0
92
+ //
93
+ // Unless required by applicable law or agreed to in writing, software
94
+ // distributed under the License is distributed on an "AS IS" BASIS,
95
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
96
+ // See the License for the specific language governing permissions and
97
+ // limitations under the License.
@@ -1,20 +1,5 @@
1
- // Copyright 2023, Kay Hayen, mailto:kay.hayen@gmail.com
2
- //
3
- // Part of "Nuitka", an optimizing Python compiler that is compatible and
4
- // integrates with CPython, but also works on its own.
5
- //
6
- // Licensed under the Apache License, Version 2.0 (the "License");
7
- // you may not use this file except in compliance with the License.
8
- // You may obtain a copy of the License at
9
- //
10
- // http://www.apache.org/licenses/LICENSE-2.0
11
- //
12
- // Unless required by applicable law or agreed to in writing, software
13
- // distributed under the License is distributed on an "AS IS" BASIS,
14
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- // See the License for the specific language governing permissions and
16
- // limitations under the License.
17
- //
1
+ // Copyright 2024, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
2
+
18
3
  #ifndef __NUITKA_CALLING_H__
19
4
  #define __NUITKA_CALLING_H__
20
5
 
@@ -26,7 +11,7 @@
26
11
  // For exception test formatting and call code mostly.
27
12
  extern char const *GET_CALLABLE_NAME(PyObject *object);
28
13
  extern char const *GET_CALLABLE_DESC(PyObject *object);
29
- extern char const *GET_CLASS_NAME(PyObject *klass);
14
+ extern char const *GET_CLASS_NAME(PyObject *class_object);
30
15
  extern char const *GET_INSTANCE_CLASS_NAME(PyThreadState *tstate, PyObject *instance);
31
16
 
32
17
  // Also used in generated helper code.
@@ -121,3 +106,18 @@ extern void formatCannotInstantiateAbstractClass(PyThreadState *tstate, PyTypeOb
121
106
  #include "nuitka/helper/calling_generated.h"
122
107
 
123
108
  #endif
109
+
110
+ // Part of "Nuitka", an optimizing Python compiler that is compatible and
111
+ // integrates with CPython, but also works on its own.
112
+ //
113
+ // Licensed under the Apache License, Version 2.0 (the "License");
114
+ // you may not use this file except in compliance with the License.
115
+ // You may obtain a copy of the License at
116
+ //
117
+ // http://www.apache.org/licenses/LICENSE-2.0
118
+ //
119
+ // Unless required by applicable law or agreed to in writing, software
120
+ // distributed under the License is distributed on an "AS IS" BASIS,
121
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
122
+ // See the License for the specific language governing permissions and
123
+ // limitations under the License.