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,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
  /* The main program for onefile bootstrap.
19
4
  *
20
5
  * It needs to unpack the attached files and and then loads and executes
@@ -59,9 +44,7 @@
59
44
  #include "stdbool.h"
60
45
  #endif
61
46
 
62
- #if defined(_WIN32)
63
- #include <imagehlp.h>
64
- #else
47
+ #if !defined(_WIN32)
65
48
  #include <dirent.h>
66
49
  #include <signal.h>
67
50
  #include <sys/stat.h>
@@ -78,16 +61,13 @@
78
61
  #define _NUITKA_EXPERIMENTAL_DEBUG_ONEFILE_HANDLING
79
62
  #define _NUITKA_ONEFILE_TEMP_BOOL 0
80
63
  #define _NUITKA_ONEFILE_CHILD_GRACE_TIME_INT 5000
81
- #define _NUITKA_ONEFILE_TEMP_SPEC "%TEMP%/onefile_%PID%_%TIME%"
64
+ #define _NUITKA_ONEFILE_TEMP_SPEC "{TEMP}/onefile_{PID}_{TIME}"
82
65
 
83
- #define _NUITKA_EXPERIMENTAL_DEBUG_AUTO_UPDATE
84
66
  #define _NUITKA_AUTO_UPDATE_BOOL 1
67
+ #define _NUITKA_AUTO_UPDATE_DEBUG_BOOL 1
85
68
  #define _NUITKA_AUTO_UPDATE_URL_SPEC "https://..."
86
69
 
87
- #if __APPLE__
88
- #define _NUITKA_PAYLOAD_FROM_MACOS_SECTION
89
- #endif
90
-
70
+ #define _NUITKA_ATTACH_CONSOLE_WINDOW 1
91
71
  #endif
92
72
 
93
73
  #if _NUITKA_ONEFILE_COMPRESSION_BOOL == 1
@@ -111,15 +91,25 @@
111
91
  #include "decompress/zstd_decompress_block.c"
112
92
  #endif
113
93
 
114
- // Some handy macro definitions, e.g. unlikely.
94
+ // Some handy macro definitions, e.g. unlikely and NUITKA_MAY_BE_UNUSED
115
95
  #include "nuitka/hedley.h"
116
96
  #define likely(x) HEDLEY_LIKELY(x)
117
97
  #define unlikely(x) HEDLEY_UNLIKELY(x)
98
+ #ifdef __GNUC__
99
+ #define NUITKA_MAY_BE_UNUSED __attribute__((__unused__))
100
+ #else
101
+ #define NUITKA_MAY_BE_UNUSED
102
+ #endif
118
103
 
119
104
  #include "HelpersChecksumTools.c"
105
+ #include "HelpersEnvironmentVariablesSystem.c"
120
106
  #include "HelpersFilesystemPaths.c"
121
107
  #include "HelpersSafeStrings.c"
122
108
 
109
+ #if defined(_WIN32) && defined(_NUITKA_ATTACH_CONSOLE_WINDOW)
110
+ #include "HelpersConsole.c"
111
+ #endif
112
+
123
113
  // For tracing outputs if enabled at compile time.
124
114
  #include "nuitka/tracing.h"
125
115
 
@@ -134,39 +124,24 @@ static void fatalIOError(char const *message, error_code_t error_code) {
134
124
  }
135
125
 
136
126
  // Failure to expand the template for where to extract to.
137
- static void fatalErrorTempFiles(void) { fatalError("Error, couldn't runtime expand target path."); }
127
+ static void fatalErrorTempFiles(void) {
128
+ fatalIOError("Error, couldn't unpack file to target path.", getLastErrorCode());
129
+ }
138
130
 
139
131
  #if _NUITKA_ONEFILE_COMPRESSION_BOOL == 1
140
132
  static void fatalErrorAttachedData(void) { fatalError("Error, couldn't decode attached data."); }
141
133
  #endif
142
134
 
143
- static void fatalErrorHeaderAttachedData(void) { fatalError("Error, could find attached data header."); }
144
-
145
- // Left over data in attached payload should not happen.
146
- static void fatalErrorReadAttachedData(void) { fatalError("Error, couldn't read attached data."); }
135
+ static void fatalErrorHeaderAttachedData(void) { fatalError("Error, couldn't find attached data header."); }
147
136
 
148
137
  // Out of memory error.
138
+ #if !defined(_WIN32) || _NUITKA_ONEFILE_COMPRESSION_BOOL == 1
149
139
  static void fatalErrorMemory(void) { fatalError("Error, couldn't allocate memory."); }
140
+ #endif
150
141
 
151
142
  // Could not launch child process.
152
143
  static void fatalErrorChild(char const *message, error_code_t error_code) { fatalIOError(message, error_code); }
153
144
 
154
- #if defined(_WIN32)
155
- static void appendWCharSafeW(wchar_t *target, wchar_t c, size_t buffer_size) {
156
- while (*target != 0) {
157
- target++;
158
- buffer_size -= 1;
159
- }
160
-
161
- if (buffer_size < 1) {
162
- abort();
163
- }
164
-
165
- *target++ = c;
166
- *target = 0;
167
- }
168
- #endif
169
-
170
145
  static void fatalErrorTempFileCreate(filename_char_t const *filename) {
171
146
  fprintf(stderr, "Error, failed to open '" FILENAME_FORMAT_STR "' for writing.\n", filename);
172
147
  exit(2);
@@ -187,45 +162,23 @@ static FILE_HANDLE createFileForWritingChecked(filename_char_t const *filename)
187
162
  return result;
188
163
  }
189
164
 
190
- static int getMyPid(void) {
191
- #if defined(_WIN32)
192
- return GetCurrentProcessId();
193
- #else
194
- return getpid();
195
- #endif
196
- }
197
-
198
- static void setEnvironVar(char const *var_name, char const *value) {
199
- #if defined(_WIN32)
200
- SetEnvironmentVariable("NUITKA_ONEFILE_PARENT", value);
201
- #else
202
- setenv(var_name, value, 1);
203
- #endif
204
- }
205
-
206
165
  static unsigned char const *payload_data = NULL;
207
166
  static unsigned char const *payload_current = NULL;
208
- static size_t stream_end_pos;
167
+ static unsigned long long payload_size = 0;
209
168
 
210
- #ifdef _NUITKA_PAYLOAD_FROM_MACOS_SECTION
169
+ #ifdef __APPLE__
211
170
 
212
171
  #include <mach-o/getsect.h>
213
172
  #include <mach-o/ldsyms.h>
214
173
 
215
- static unsigned char *findMacOSBinarySection(void) {
174
+ static void initPayloadData(void) {
216
175
  const struct mach_header *header = &_mh_execute_header;
217
176
 
218
177
  unsigned long section_size;
219
178
 
220
- unsigned char *result = getsectiondata(header, "payload", "payload", &section_size);
221
- stream_end_pos = (size_t)section_size;
222
-
223
- return result;
224
- }
225
-
226
- static void initPayloadData(void) {
227
- payload_data = findMacOSBinarySection();
179
+ payload_data = getsectiondata(header, "payload", "payload", &section_size);
228
180
  payload_current = payload_data;
181
+ payload_size = section_size;
229
182
  }
230
183
 
231
184
  static void closePayloadData(void) {}
@@ -233,9 +186,12 @@ static void closePayloadData(void) {}
233
186
  #elif defined(_WIN32)
234
187
 
235
188
  static void initPayloadData(void) {
236
- payload_data =
237
- (const unsigned char *)LockResource(LoadResource(NULL, FindResource(NULL, MAKEINTRESOURCE(27), RT_RCDATA)));
189
+ HRSRC windows_resource = FindResource(NULL, MAKEINTRESOURCE(27), RT_RCDATA);
190
+
191
+ payload_data = (const unsigned char *)LockResource(LoadResource(NULL, windows_resource));
238
192
  payload_current = payload_data;
193
+
194
+ payload_size = SizeofResource(NULL, windows_resource);
239
195
  }
240
196
 
241
197
  // Note: it appears unlocking the resource is not actually foreseen.
@@ -296,10 +252,6 @@ static void releaseZSTD(void) {
296
252
 
297
253
  #endif
298
254
 
299
- #if _NUITKA_ONEFILE_COMPRESSION_BOOL == 1
300
- static size_t getPosition(void) { return payload_current - payload_data; }
301
- #endif
302
-
303
255
  static void readChunk(void *buffer, size_t size) {
304
256
  // printf("Reading %d\n", size);
305
257
 
@@ -307,21 +259,8 @@ static void readChunk(void *buffer, size_t size) {
307
259
  payload_current += size;
308
260
  }
309
261
 
310
- #if _NUITKA_ONEFILE_COMPRESSION_BOOL == 1
311
- static void const *readChunkPointer(size_t size) {
312
- // printf("Reading %d\n", size);
313
-
314
- void const *result = payload_current;
315
- payload_current += size;
316
-
317
- return result;
318
- }
319
- #endif
320
-
321
262
  static void readPayloadChunk(void *buffer, size_t size) {
322
- #if _NUITKA_ONEFILE_COMPRESSION_BOOL == 1
323
-
324
- // bool no_payload = false;
263
+ #if _NUITKA_ONEFILE_COMPRESSION_BOOL == 1 && _NUITKA_ONEFILE_ARCHIVE_BOOL == 0
325
264
  bool end_of_buffer = false;
326
265
 
327
266
  // Loop until finished with asked chunk.
@@ -372,28 +311,7 @@ static void readPayloadChunk(void *buffer, size_t size) {
372
311
  if (input.size != input.pos) {
373
312
  fatalErrorAttachedData();
374
313
  }
375
-
376
- // No input available, make it available from stream respecting end.
377
- size_t to_read = ZSTD_DStreamInSize();
378
- size_t payload_available = stream_end_pos - getPosition();
379
-
380
- static size_t payload_so_far = 0;
381
-
382
- if (payload_available == 0) {
383
- continue;
384
- }
385
-
386
- if (to_read > payload_available) {
387
- to_read = payload_available;
388
- }
389
-
390
- input.src = readChunkPointer(to_read);
391
- input.pos = 0;
392
- input.size = to_read;
393
-
394
- payload_so_far += to_read;
395
314
  }
396
-
397
315
  #else
398
316
  readChunk(buffer, size);
399
317
  #endif
@@ -424,6 +342,15 @@ static unsigned long long readPayloadSizeValue(void) {
424
342
  return result;
425
343
  }
426
344
 
345
+ #if _NUITKA_ONEFILE_ARCHIVE_BOOL == 1 && _NUITKA_ONEFILE_COMPRESSION_BOOL == 1
346
+ static unsigned long long readArchiveFileSizeValue(void) {
347
+ unsigned long long result;
348
+ readPayloadChunk(&result, sizeof(unsigned int));
349
+
350
+ return result;
351
+ }
352
+ #endif
353
+
427
354
  static filename_char_t readPayloadFilenameCharacter(void) {
428
355
  filename_char_t result;
429
356
 
@@ -450,6 +377,74 @@ static filename_char_t *readPayloadFilename(void) {
450
377
  return buffer;
451
378
  }
452
379
 
380
+ static void writeContainedFile(FILE_HANDLE target_file, unsigned long long file_size) {
381
+ #if _NUITKA_ONEFILE_ARCHIVE_BOOL == 1
382
+
383
+ #if _NUITKA_ONEFILE_COMPRESSION_BOOL == 0
384
+ if (target_file != FILE_HANDLE_NULL) {
385
+ if (writeFileChunk(target_file, payload_current, file_size) == false) {
386
+ fatalErrorTempFiles();
387
+ }
388
+ }
389
+
390
+ payload_current += file_size;
391
+ #else
392
+ if (target_file != FILE_HANDLE_NULL) {
393
+
394
+ // Nothing available, make sure to make it available from existing input.
395
+ while (input.pos < input.size) {
396
+ // printf("available input %ld %ld\n", input.pos, input.size);
397
+
398
+ output.pos = 0;
399
+ output.size = ZSTD_DStreamOutSize();
400
+
401
+ size_t const ret = ZSTD_decompressStream(dest_ctx, &output, &input);
402
+ if (ZSTD_isError(ret)) {
403
+ fatalErrorAttachedData();
404
+ }
405
+
406
+ // printf("available output %ld %ld\n", output.pos, output.size);
407
+
408
+ if (writeFileChunk(target_file, (char const *)output.dst, output.pos) == false) {
409
+ fatalErrorTempFiles();
410
+ }
411
+
412
+ // printf("made output %ld %lld\n", output.pos, file_size);
413
+ file_size -= output.pos;
414
+ assert(file_size >= 0);
415
+ }
416
+
417
+ assert(file_size == 0);
418
+ }
419
+ #endif
420
+ #else
421
+ while (file_size > 0) {
422
+ static char chunk[32768];
423
+
424
+ long chunk_size;
425
+
426
+ // Doing min manually, as otherwise the compiler is confused from types.
427
+ if (file_size <= sizeof(chunk)) {
428
+ chunk_size = (long)file_size;
429
+ } else {
430
+ chunk_size = sizeof(chunk);
431
+ }
432
+
433
+ readPayloadChunk(chunk, chunk_size);
434
+
435
+ if (target_file != FILE_HANDLE_NULL) {
436
+ if (writeFileChunk(target_file, chunk, chunk_size) == false) {
437
+ fatalErrorTempFiles();
438
+ }
439
+ }
440
+
441
+ file_size -= chunk_size;
442
+ }
443
+
444
+ assert(file_size == 0);
445
+ #endif
446
+ }
447
+
453
448
  // Zero means, not yet created, created unsuccessfully, terminated already.
454
449
  #if defined(_WIN32)
455
450
  HANDLE handle_process = 0;
@@ -473,7 +468,7 @@ static bool createDirectory(filename_char_t const *path) {
473
468
  #if defined(_WIN32)
474
469
  if (created_dir_count == 0) {
475
470
  filename_char_t home_path[4096];
476
- wchar_t *pattern = L"%HOME%";
471
+ wchar_t *pattern = L"{HOME}";
477
472
 
478
473
  bool_res = expandTemplatePathFilename(home_path, pattern, sizeof(payload_path) / sizeof(filename_char_t));
479
474
 
@@ -818,6 +813,96 @@ extern bool checkSplashScreen(void);
818
813
  #endif
819
814
  #endif
820
815
 
816
+ #ifdef _WIN32
817
+
818
+ static bool containsWStringAny(wchar_t const *source, wchar_t const *characters) {
819
+ while (*characters) {
820
+ if (wcschr(source, *characters) != NULL) {
821
+ return true;
822
+ }
823
+
824
+ characters++;
825
+ }
826
+
827
+ return false;
828
+ }
829
+
830
+ static wchar_t *getCommandLineForChildProcess(void) {
831
+
832
+ wchar_t *orig_command_line = GetCommandLineW();
833
+ #if defined(_NUITKA_EXPERIMENTAL_DEBUG_ONEFILE_HANDLING)
834
+ wprintf(L"Command line was '%ls'\n", orig_command_line);
835
+ #endif
836
+
837
+ int argc;
838
+ LPWSTR *argv = CommandLineToArgvW(orig_command_line, &argc);
839
+ assert(argv != NULL);
840
+ assert(argc > 0);
841
+
842
+ static wchar_t result[32768];
843
+ result[0] = 0;
844
+
845
+ argv[0] = getBinaryPath();
846
+
847
+ for (int i = 0; i < argc; i++) {
848
+ if (i >= 1) {
849
+ appendWCharSafeW(result, L' ', sizeof(result) / sizeof(wchar_t));
850
+ }
851
+
852
+ bool needs_quote = containsWStringAny(argv[i], L" \t\n\v\"");
853
+
854
+ #if defined(_NUITKA_EXPERIMENTAL_DEBUG_ONEFILE_HANDLING)
855
+ wprintf(L"Command line arg %d was '%ls' needs quoting %ls\n", i, argv[i], needs_quote ? L"yes" : L"no");
856
+ #endif
857
+
858
+ if (needs_quote) {
859
+ appendWCharSafeW(result, L'"', sizeof(result) / sizeof(wchar_t));
860
+
861
+ wchar_t const *current = argv[i];
862
+
863
+ for (;;) {
864
+ int backslash_count = 0;
865
+
866
+ while (*current == L'\\') {
867
+ current++;
868
+ backslash_count += 1;
869
+ }
870
+
871
+ if (*current == 0) {
872
+ for (int j = 0; j < backslash_count * 2; j++) {
873
+ appendWCharSafeW(result, L'\\', sizeof(result) / sizeof(wchar_t));
874
+ }
875
+
876
+ break;
877
+ } else if (*current == L'"') {
878
+ for (int j = 0; j < backslash_count * 2 + 1; j++) {
879
+ appendWCharSafeW(result, L'\\', sizeof(result) / sizeof(wchar_t));
880
+ }
881
+ } else {
882
+ for (int j = 0; j < backslash_count; j++) {
883
+ appendWCharSafeW(result, L'\\', sizeof(result) / sizeof(wchar_t));
884
+ }
885
+ }
886
+
887
+ appendWCharSafeW(result, *current, sizeof(result) / sizeof(wchar_t));
888
+
889
+ current++;
890
+ }
891
+
892
+ appendWCharSafeW(result, L'"', sizeof(result) / sizeof(wchar_t));
893
+
894
+ } else {
895
+ appendWStringSafeW(result, argv[i], sizeof(result) / sizeof(wchar_t));
896
+ }
897
+ }
898
+
899
+ #if defined(_NUITKA_EXPERIMENTAL_DEBUG_ONEFILE_HANDLING)
900
+ wprintf(L"Command line composed to '%ls'\n", result);
901
+ #endif
902
+ return result;
903
+ }
904
+ #endif
905
+
821
906
  #ifdef _NUITKA_WINMAIN_ENTRY_POINT
822
907
  int __stdcall wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, wchar_t *lpCmdLine, int nCmdShow) {
823
908
  int argc = __argc;
@@ -987,6 +1072,12 @@ int wmain(int argc, wchar_t **argv) {
987
1072
  int main(int argc, char **argv) {
988
1073
  #endif
989
1074
  #endif
1075
+ // Attach to the parent console respecting redirection only, otherwise we cannot
1076
+ // even output traces.
1077
+ #if defined(_WIN32) && defined(_NUITKA_ATTACH_CONSOLE_WINDOW)
1078
+ inheritAttachedConsole();
1079
+ #endif
1080
+
990
1081
  NUITKA_PRINT_TIMING("ONEFILE: Entered main().");
991
1082
 
992
1083
  filename_char_t const *pattern = FILENAME_EMPTY_STR _NUITKA_ONEFILE_TEMP_SPEC;
@@ -1011,7 +1102,7 @@ int main(int argc, char **argv) {
1011
1102
  signal(SIGTERM, ourConsoleCtrlHandler);
1012
1103
  #endif
1013
1104
 
1014
- #ifdef _NUITKA_AUTO_UPDATE_BOOL
1105
+ #if _NUITKA_AUTO_UPDATE_BOOL
1015
1106
  checkAutoUpdates();
1016
1107
  #endif
1017
1108
 
@@ -1019,20 +1110,18 @@ int main(int argc, char **argv) {
1019
1110
 
1020
1111
  initPayloadData();
1021
1112
 
1022
- #if !defined(_NUITKA_PAYLOAD_FROM_MACOS_SECTION) && !defined(_WIN32)
1113
+ #if !defined(__APPLE__) && !defined(_WIN32)
1023
1114
  const off_t size_end_offset = exe_file_mapped.file_size;
1024
1115
 
1025
1116
  NUITKA_PRINT_TIMING("ONEFILE: Determining payload start position.");
1026
1117
 
1027
- unsigned long long payload_size;
1118
+ assert(sizeof(payload_size) == sizeof(unsigned long long));
1028
1119
  memcpy(&payload_size, payload_data + size_end_offset - sizeof(payload_size), sizeof(payload_size));
1029
1120
 
1030
1121
  unsigned long long start_pos = size_end_offset - sizeof(payload_size) - payload_size;
1031
1122
 
1032
1123
  payload_current += start_pos;
1033
1124
  payload_data += start_pos;
1034
-
1035
- stream_end_pos = size_end_offset - sizeof(payload_size) - start_pos;
1036
1125
  #endif
1037
1126
 
1038
1127
  NUITKA_PRINT_TIMING("ONEFILE: Checking header for compression.");
@@ -1044,12 +1133,20 @@ int main(int argc, char **argv) {
1044
1133
  fatalErrorHeaderAttachedData();
1045
1134
  }
1046
1135
 
1136
+ NUITKA_PRINT_TIMING("ONEFILE: Header is OK.");
1137
+
1047
1138
  // The 'X' stands for no compression, 'Y' is compressed, handle that.
1048
1139
  #if _NUITKA_ONEFILE_COMPRESSION_BOOL == 1
1049
1140
  if (header[2] != 'Y') {
1050
1141
  fatalErrorHeaderAttachedData();
1051
1142
  }
1052
1143
  initZSTD();
1144
+
1145
+ input.src = payload_current;
1146
+ input.pos = 0;
1147
+ input.size = payload_size;
1148
+
1149
+ assert(payload_size > 0);
1053
1150
  #else
1054
1151
  if (header[2] != 'X') {
1055
1152
  fatalErrorHeaderAttachedData();
@@ -1059,8 +1156,6 @@ int main(int argc, char **argv) {
1059
1156
  static filename_char_t first_filename[1024] = {0};
1060
1157
 
1061
1158
  #if _NUITKA_ONEFILE_SPLASH_SCREEN
1062
- NUITKA_PRINT_TIMING("ONEFILE: Splash screen.");
1063
-
1064
1159
  initSplashScreen();
1065
1160
  #endif
1066
1161
 
@@ -1134,6 +1229,20 @@ int main(int argc, char **argv) {
1134
1229
  }
1135
1230
  #endif
1136
1231
 
1232
+ #if _NUITKA_ONEFILE_ARCHIVE_BOOL == 1
1233
+ #if _NUITKA_ONEFILE_COMPRESSION_BOOL == 1
1234
+ uint32_t contained_archive_file_size = readArchiveFileSizeValue();
1235
+
1236
+ input.src = payload_current;
1237
+ input.pos = 0;
1238
+ input.size = contained_archive_file_size;
1239
+
1240
+ output.pos = 0;
1241
+ output.size = 0;
1242
+
1243
+ payload_current += contained_archive_file_size;
1244
+ #endif
1245
+ #endif
1137
1246
  FILE_HANDLE target_file = FILE_HANDLE_NULL;
1138
1247
 
1139
1248
  if (needs_write) {
@@ -1141,34 +1250,7 @@ int main(int argc, char **argv) {
1141
1250
  target_file = createFileForWritingChecked(target_path);
1142
1251
  }
1143
1252
 
1144
- while (file_size > 0) {
1145
- static char chunk[32768];
1146
-
1147
- long chunk_size;
1148
-
1149
- // Doing min manually, as otherwise the compiler is confused from types.
1150
- if (file_size <= sizeof(chunk)) {
1151
- chunk_size = (long)file_size;
1152
- } else {
1153
- chunk_size = sizeof(chunk);
1154
- }
1155
-
1156
- // TODO: Does zstd support skipping data as well, such that we
1157
- // do not have to fully decode.
1158
- readPayloadChunk(chunk, chunk_size);
1159
-
1160
- if (target_file != FILE_HANDLE_NULL) {
1161
- if (writeFileChunk(target_file, chunk, chunk_size) == false) {
1162
- fatalErrorTempFiles();
1163
- }
1164
- }
1165
-
1166
- file_size -= chunk_size;
1167
- }
1168
-
1169
- if (file_size != 0) {
1170
- fatalErrorReadAttachedData();
1171
- }
1253
+ writeContainedFile(target_file, file_size);
1172
1254
 
1173
1255
  #if !defined(_WIN32) && !defined(__MSYS__)
1174
1256
  if ((file_flags & 1) && (target_file != FILE_HANDLE_NULL)) {
@@ -1212,7 +1294,7 @@ int main(int argc, char **argv) {
1212
1294
 
1213
1295
  closePayloadData();
1214
1296
 
1215
- #ifdef _NUITKA_AUTO_UPDATE_BOOL
1297
+ #if _NUITKA_AUTO_UPDATE_BOOL
1216
1298
  exe_file_updatable = true;
1217
1299
  #endif
1218
1300
 
@@ -1222,11 +1304,18 @@ int main(int argc, char **argv) {
1222
1304
 
1223
1305
  // Pass our pid by value to the child. If we exit for some reason, re-parenting
1224
1306
  // might change it by the time the child looks at its parent.
1225
- {
1226
- char buffer[128];
1227
- snprintf(buffer, sizeof(buffer), "%d", getMyPid());
1228
- setEnvironVar("NUITKA_ONEFILE_PARENT", buffer);
1229
- }
1307
+ #if defined(_WIN32)
1308
+ setEnvironmentVariableFromLong("NUITKA_ONEFILE_PARENT", GetCurrentProcessId());
1309
+ #else
1310
+ setEnvironmentVariableFromLong("NUITKA_ONEFILE_PARENT", (long)getpid());
1311
+ #endif
1312
+
1313
+ #if defined(_WIN32)
1314
+ filename_char_t const *binary_filename = getBinaryFilenameWideChars(false);
1315
+ #else
1316
+ filename_char_t const *binary_filename = getBinaryFilenameHostEncoded(false);
1317
+ #endif
1318
+ setEnvironmentVariable("NUITKA_ONEFILE_BINARY", binary_filename);
1230
1319
 
1231
1320
  NUITKA_PRINT_TIMING("ONEFILE: Preparing forking of slave process.");
1232
1321
 
@@ -1234,16 +1323,20 @@ int main(int argc, char **argv) {
1234
1323
 
1235
1324
  STARTUPINFOW si;
1236
1325
  memset(&si, 0, sizeof(si));
1326
+ si.dwFlags = STARTF_USESTDHANDLES;
1327
+ si.hStdInput = GetStdHandle(STD_INPUT_HANDLE);
1328
+ si.hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE);
1329
+ si.hStdError = GetStdHandle(STD_ERROR_HANDLE);
1237
1330
  si.cb = sizeof(si);
1238
1331
 
1239
1332
  PROCESS_INFORMATION pi;
1240
1333
 
1241
- bool_res = CreateProcessW(first_filename, // application name
1242
- GetCommandLineW(), // command line
1243
- NULL, // process attributes
1244
- NULL, // thread attributes
1245
- FALSE, // inherit handles
1246
- NORMAL_PRIORITY_CLASS, // creation flags
1334
+ bool_res = CreateProcessW(first_filename, // application name
1335
+ getCommandLineForChildProcess(), // command line
1336
+ NULL, // process attributes
1337
+ NULL, // thread attributes
1338
+ TRUE, // inherit handles
1339
+ NORMAL_PRIORITY_CLASS, // creation flags
1247
1340
  NULL, NULL, &si, &pi);
1248
1341
 
1249
1342
  NUITKA_PRINT_TIMING("ONEFILE: Started slave process.");
@@ -1302,6 +1395,10 @@ int main(int argc, char **argv) {
1302
1395
  exit_code = 2;
1303
1396
  } else if (pid == 0) {
1304
1397
  // Child process
1398
+
1399
+ // Make sure, we use the absolute program path for argv[0]
1400
+ argv[0] = getBinaryPath();
1401
+
1305
1402
  execv(first_filename, argv);
1306
1403
 
1307
1404
  fatalErrorChild("Error, couldn't launch child (exec)", errno);
@@ -1328,3 +1425,18 @@ int main(int argc, char **argv) {
1328
1425
 
1329
1426
  return exit_code;
1330
1427
  }
1428
+
1429
+ // Part of "Nuitka", an optimizing Python compiler that is compatible and
1430
+ // integrates with CPython, but also works on its own.
1431
+ //
1432
+ // Licensed under the Apache License, Version 2.0 (the "License");
1433
+ // you may not use this file except in compliance with the License.
1434
+ // You may obtain a copy of the License at
1435
+ //
1436
+ // http://www.apache.org/licenses/LICENSE-2.0
1437
+ //
1438
+ // Unless required by applicable law or agreed to in writing, software
1439
+ // distributed under the License is distributed on an "AS IS" BASIS,
1440
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1441
+ // See the License for the specific language governing permissions and
1442
+ // limitations under the License.