Nuitka-winsvc 1.8__cp311-cp311-win_amd64.whl → 2.5.1__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 (728) hide show
  1. Nuitka_winsvc-1.8.data/scripts/nuitka-run.bat → Nuitka_winsvc-2.5.1.data/scripts/nuitka-run.cmd +9 -9
  2. Nuitka_winsvc-1.8.data/scripts/nuitka.bat → Nuitka_winsvc-2.5.1.data/scripts/nuitka.cmd +15 -15
  3. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/METADATA +5 -3
  4. Nuitka_winsvc-2.5.1.dist-info/RECORD +977 -0
  5. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/WHEEL +1 -1
  6. nuitka/Builtins.py +49 -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 +408 -0
  13. nuitka/MainControl.py +209 -116
  14. nuitka/ModuleRegistry.py +83 -20
  15. nuitka/OptionParsing.py +467 -221
  16. nuitka/Options.py +701 -225
  17. nuitka/OutputDirectories.py +47 -23
  18. nuitka/PostProcessing.py +133 -79
  19. nuitka/Progress.py +73 -24
  20. nuitka/PythonFlavors.py +141 -32
  21. nuitka/PythonOperators.py +18 -17
  22. nuitka/PythonVersions.py +107 -19
  23. nuitka/Serialization.py +70 -55
  24. nuitka/SourceCodeReferences.py +19 -17
  25. nuitka/Tracing.py +176 -70
  26. nuitka/TreeXML.py +31 -26
  27. nuitka/Variables.py +39 -41
  28. nuitka/Version.py +22 -8
  29. nuitka/__init__.py +5 -4
  30. nuitka/__main__.py +95 -29
  31. nuitka/__past__.py +44 -34
  32. nuitka/build/Backend.scons +243 -141
  33. nuitka/build/CCompilerVersion.scons +45 -31
  34. nuitka/build/DataComposerInterface.py +20 -17
  35. nuitka/build/Onefile.scons +56 -54
  36. nuitka/build/SconsCaching.py +105 -92
  37. nuitka/build/SconsCompilerSettings.py +167 -68
  38. nuitka/build/SconsHacks.py +25 -19
  39. nuitka/build/SconsInterface.py +155 -54
  40. nuitka/build/SconsProgress.py +19 -18
  41. nuitka/build/SconsSpawn.py +62 -33
  42. nuitka/build/SconsUtils.py +152 -55
  43. nuitka/build/__init__.py +5 -4
  44. nuitka/build/include/nuitka/allocator.h +228 -22
  45. nuitka/build/include/nuitka/builtins.h +17 -17
  46. nuitka/build/include/nuitka/calling.h +24 -24
  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 +28 -25
  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 +93 -54
  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 +35 -18
  57. nuitka/build/include/nuitka/constants_blob.h +17 -17
  58. nuitka/build/include/nuitka/debug_settings.h +60 -0
  59. nuitka/build/include/nuitka/environment_variables.h +30 -0
  60. nuitka/build/include/nuitka/environment_variables_system.h +45 -0
  61. nuitka/build/include/nuitka/exception_groups.h +23 -26
  62. nuitka/build/include/nuitka/exceptions.h +717 -171
  63. nuitka/build/include/nuitka/filesystem_paths.h +26 -20
  64. nuitka/build/include/nuitka/freelists.h +38 -18
  65. nuitka/build/include/nuitka/helper/attributes.h +24 -22
  66. nuitka/build/include/nuitka/helper/boolean.h +17 -17
  67. nuitka/build/include/nuitka/helper/bytearrays.h +17 -17
  68. nuitka/build/include/nuitka/helper/bytes.h +14 -15
  69. nuitka/build/include/nuitka/helper/calling_generated.h +69 -69
  70. nuitka/build/include/nuitka/helper/comparisons_dual_eq.h +47 -0
  71. nuitka/build/include/nuitka/helper/comparisons_dual_ge.h +39 -0
  72. nuitka/build/include/nuitka/helper/comparisons_dual_gt.h +39 -0
  73. nuitka/build/include/nuitka/helper/comparisons_dual_le.h +47 -0
  74. nuitka/build/include/nuitka/helper/comparisons_dual_lt.h +47 -0
  75. nuitka/build/include/nuitka/helper/comparisons_dual_ne.h +39 -0
  76. nuitka/build/include/nuitka/helper/comparisons_eq.h +17 -17
  77. nuitka/build/include/nuitka/helper/comparisons_ge.h +17 -17
  78. nuitka/build/include/nuitka/helper/comparisons_gt.h +17 -17
  79. nuitka/build/include/nuitka/helper/comparisons_le.h +17 -17
  80. nuitka/build/include/nuitka/helper/comparisons_lt.h +17 -17
  81. nuitka/build/include/nuitka/helper/comparisons_ne.h +17 -17
  82. nuitka/build/include/nuitka/helper/complex.h +17 -17
  83. nuitka/build/include/nuitka/helper/dictionaries.h +89 -51
  84. nuitka/build/include/nuitka/helper/floats.h +17 -18
  85. nuitka/build/include/nuitka/helper/import_hard.h +25 -17
  86. nuitka/build/include/nuitka/helper/indexes.h +17 -18
  87. nuitka/build/include/nuitka/helper/ints.h +115 -54
  88. nuitka/build/include/nuitka/helper/iterators.h +99 -51
  89. nuitka/build/include/nuitka/helper/lists.h +26 -24
  90. nuitka/build/include/nuitka/helper/lists_generated.h +22 -22
  91. nuitka/build/include/nuitka/helper/mappings.h +17 -18
  92. nuitka/build/include/nuitka/helper/operations.h +20 -17
  93. nuitka/build/include/nuitka/helper/operations_binary_add.h +23 -17
  94. nuitka/build/include/nuitka/helper/operations_binary_bitand.h +17 -17
  95. nuitka/build/include/nuitka/helper/operations_binary_bitor.h +17 -17
  96. nuitka/build/include/nuitka/helper/operations_binary_bitxor.h +17 -17
  97. nuitka/build/include/nuitka/helper/operations_binary_divmod.h +17 -17
  98. nuitka/build/include/nuitka/helper/operations_binary_dual_add.h +34 -0
  99. nuitka/build/include/nuitka/helper/operations_binary_floordiv.h +17 -17
  100. nuitka/build/include/nuitka/helper/operations_binary_lshift.h +17 -17
  101. nuitka/build/include/nuitka/helper/operations_binary_matmult.h +17 -17
  102. nuitka/build/include/nuitka/helper/operations_binary_mod.h +17 -17
  103. nuitka/build/include/nuitka/helper/operations_binary_mult.h +17 -17
  104. nuitka/build/include/nuitka/helper/operations_binary_olddiv.h +17 -17
  105. nuitka/build/include/nuitka/helper/operations_binary_pow.h +17 -17
  106. nuitka/build/include/nuitka/helper/operations_binary_rshift.h +17 -17
  107. nuitka/build/include/nuitka/helper/operations_binary_sub.h +23 -17
  108. nuitka/build/include/nuitka/helper/operations_binary_truediv.h +17 -17
  109. nuitka/build/include/nuitka/helper/operations_builtin_types.h +17 -17
  110. nuitka/build/include/nuitka/helper/operations_inplace_add.h +20 -17
  111. nuitka/build/include/nuitka/helper/operations_inplace_bitand.h +17 -17
  112. nuitka/build/include/nuitka/helper/operations_inplace_bitor.h +17 -17
  113. nuitka/build/include/nuitka/helper/operations_inplace_bitxor.h +17 -17
  114. nuitka/build/include/nuitka/helper/operations_inplace_floordiv.h +17 -17
  115. nuitka/build/include/nuitka/helper/operations_inplace_lshift.h +17 -17
  116. nuitka/build/include/nuitka/helper/operations_inplace_matmult.h +17 -17
  117. nuitka/build/include/nuitka/helper/operations_inplace_mod.h +17 -17
  118. nuitka/build/include/nuitka/helper/operations_inplace_mult.h +17 -17
  119. nuitka/build/include/nuitka/helper/operations_inplace_olddiv.h +17 -17
  120. nuitka/build/include/nuitka/helper/operations_inplace_pow.h +17 -17
  121. nuitka/build/include/nuitka/helper/operations_inplace_rshift.h +17 -17
  122. nuitka/build/include/nuitka/helper/operations_inplace_sub.h +20 -17
  123. nuitka/build/include/nuitka/helper/operations_inplace_truediv.h +17 -17
  124. nuitka/build/include/nuitka/helper/raising.h +68 -37
  125. nuitka/build/include/nuitka/helper/rangeobjects.h +17 -17
  126. nuitka/build/include/nuitka/helper/richcomparisons.h +21 -14
  127. nuitka/build/include/nuitka/helper/sequences.h +19 -13
  128. nuitka/build/include/nuitka/helper/sets.h +11 -12
  129. nuitka/build/include/nuitka/helper/slices.h +31 -25
  130. nuitka/build/include/nuitka/helper/strings.h +16 -17
  131. nuitka/build/include/nuitka/helper/subscripts.h +18 -201
  132. nuitka/build/include/nuitka/helper/tuples.h +64 -52
  133. nuitka/build/include/nuitka/helpers.h +50 -22
  134. nuitka/build/include/nuitka/importing.h +28 -21
  135. nuitka/build/include/nuitka/jit_sources.h +25 -0
  136. nuitka/build/include/nuitka/prelude.h +163 -71
  137. nuitka/build/include/nuitka/printing.h +29 -22
  138. nuitka/build/include/nuitka/python_pgo.h +19 -18
  139. nuitka/build/include/nuitka/safe_string_ops.h +20 -18
  140. nuitka/build/include/nuitka/threading.h +45 -32
  141. nuitka/build/include/nuitka/tracing.h +28 -18
  142. nuitka/build/include/nuitka/type_aliases.h +30 -0
  143. nuitka/build/include/nuitka/unfreezing.h +29 -23
  144. nuitka/build/inline_copy/bin/scons.py +14 -0
  145. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/ListVariable.py +6 -6
  146. nuitka/build/inline_copy/pkg_resources/pkg_resources/__init__.py +0 -3
  147. nuitka/build/inline_copy/python_hacl/LICENSE.txt +201 -0
  148. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.c +1430 -0
  149. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.h +66 -0
  150. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.c +463 -0
  151. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.h +66 -0
  152. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.c +1273 -0
  153. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.h +204 -0
  154. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.c +734 -0
  155. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.h +131 -0
  156. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Streaming_Types.h +83 -0
  157. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt128_Verified.h +346 -0
  158. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt_8_16_32_64.h +107 -0
  159. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/fstar_uint128_struct_endianness.h +68 -0
  160. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/internal/target.h +293 -0
  161. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/lowstar_endianness.h +231 -0
  162. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/types.h +14 -0
  163. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_MD5.h +56 -0
  164. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA1.h +56 -0
  165. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA2.h +164 -0
  166. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA3.h +65 -0
  167. nuitka/build/inline_copy/python_hacl/hacl_312/python_hacl_namespaces.h +89 -0
  168. nuitka/build/inline_copy/stubgen/astunparse.py +938 -0
  169. nuitka/build/inline_copy/stubgen/six.py +998 -0
  170. nuitka/build/inline_copy/stubgen/stubgen.py +307 -0
  171. nuitka/build/inline_copy/tqdm/tqdm/__init__.py +2 -2
  172. nuitka/build/inline_copy/tqdm/tqdm/_monitor.py +4 -1
  173. nuitka/build/inline_copy/tqdm/tqdm/utils.py +14 -8
  174. nuitka/build/inline_copy/tqdm/tqdm/version.py +1 -8
  175. nuitka/build/inline_copy/zlib/LICENSE +22 -0
  176. nuitka/build/inline_copy/zlib/crc32.c +1049 -0
  177. nuitka/build/inline_copy/zlib/crc32.h +9446 -0
  178. nuitka/build/inline_copy/zlib/zconf.h +551 -0
  179. nuitka/build/inline_copy/zlib/zlib.h +1938 -0
  180. nuitka/build/inline_copy/zlib/zutil.h +275 -0
  181. nuitka/build/static_src/CompiledAsyncgenType.c +221 -221
  182. nuitka/build/static_src/CompiledCellType.c +69 -44
  183. nuitka/build/static_src/CompiledCodeHelpers.c +276 -159
  184. nuitka/build/static_src/CompiledCoroutineType.c +229 -226
  185. nuitka/build/static_src/CompiledFrameType.c +323 -138
  186. nuitka/build/static_src/CompiledFunctionType.c +547 -231
  187. nuitka/build/static_src/CompiledGeneratorType.c +416 -290
  188. nuitka/build/static_src/CompiledGeneratorTypeUncompiledIntegration.c +593 -228
  189. nuitka/build/static_src/CompiledMethodType.c +91 -82
  190. nuitka/build/static_src/HelpersAllocator.c +352 -45
  191. nuitka/build/static_src/HelpersAttributes.c +30 -72
  192. nuitka/build/static_src/HelpersBuiltin.c +65 -46
  193. nuitka/build/static_src/HelpersBuiltinTypeMethods.c +17 -17
  194. nuitka/build/static_src/HelpersBytes.c +19 -20
  195. nuitka/build/static_src/HelpersCalling.c +40 -37
  196. nuitka/build/static_src/HelpersCallingGenerated.c +1061 -242
  197. nuitka/build/static_src/HelpersChecksumTools.c +35 -21
  198. nuitka/build/static_src/HelpersClasses.c +17 -17
  199. nuitka/build/static_src/HelpersComparisonDualEq.c +183 -0
  200. nuitka/build/static_src/HelpersComparisonDualGe.c +121 -0
  201. nuitka/build/static_src/HelpersComparisonDualGt.c +121 -0
  202. nuitka/build/static_src/HelpersComparisonDualLe.c +183 -0
  203. nuitka/build/static_src/HelpersComparisonDualLt.c +183 -0
  204. nuitka/build/static_src/HelpersComparisonDualNe.c +121 -0
  205. nuitka/build/static_src/HelpersComparisonEq.c +536 -496
  206. nuitka/build/static_src/HelpersComparisonEqUtils.c +22 -19
  207. nuitka/build/static_src/HelpersComparisonGe.c +531 -501
  208. nuitka/build/static_src/HelpersComparisonGt.c +530 -500
  209. nuitka/build/static_src/HelpersComparisonLe.c +531 -501
  210. nuitka/build/static_src/HelpersComparisonLt.c +530 -500
  211. nuitka/build/static_src/HelpersComparisonNe.c +538 -496
  212. nuitka/build/static_src/HelpersConsole.c +122 -0
  213. nuitka/build/static_src/HelpersConstantsBlob.c +550 -521
  214. nuitka/build/static_src/HelpersDeepcopy.c +33 -33
  215. nuitka/build/static_src/HelpersDictionaries.c +232 -63
  216. nuitka/build/static_src/HelpersDictionariesGenerated.c +130 -127
  217. nuitka/build/static_src/HelpersDumpBacktraces.c +63 -0
  218. nuitka/build/static_src/HelpersEnvironmentVariables.c +65 -0
  219. nuitka/build/static_src/HelpersEnvironmentVariablesSystem.c +93 -0
  220. nuitka/build/static_src/HelpersExceptions.c +147 -62
  221. nuitka/build/static_src/HelpersFiles.c +116 -22
  222. nuitka/build/static_src/HelpersFilesystemPaths.c +292 -181
  223. nuitka/build/static_src/HelpersFloats.c +37 -31
  224. nuitka/build/static_src/HelpersHeapStorage.c +21 -17
  225. nuitka/build/static_src/HelpersImport.c +61 -29
  226. nuitka/build/static_src/HelpersImportHard.c +74 -61
  227. nuitka/build/static_src/HelpersJitSources.c +46 -0
  228. nuitka/build/static_src/HelpersLists.c +237 -58
  229. nuitka/build/static_src/HelpersListsGenerated.c +41 -41
  230. nuitka/build/static_src/HelpersMappings.c +17 -17
  231. nuitka/build/static_src/HelpersMatching.c +137 -51
  232. nuitka/build/static_src/HelpersOperationBinaryAdd.c +397 -152
  233. nuitka/build/static_src/HelpersOperationBinaryAddUtils.c +102 -52
  234. nuitka/build/static_src/HelpersOperationBinaryBitand.c +55 -55
  235. nuitka/build/static_src/HelpersOperationBinaryBitor.c +55 -55
  236. nuitka/build/static_src/HelpersOperationBinaryBitxor.c +55 -55
  237. nuitka/build/static_src/HelpersOperationBinaryDivmod.c +49 -43
  238. nuitka/build/static_src/HelpersOperationBinaryDivmodUtils.c +17 -17
  239. nuitka/build/static_src/HelpersOperationBinaryDualAdd.c +172 -0
  240. nuitka/build/static_src/HelpersOperationBinaryFloordiv.c +55 -49
  241. nuitka/build/static_src/HelpersOperationBinaryInplaceAdd.c +20 -21
  242. nuitka/build/static_src/HelpersOperationBinaryLshift.c +83 -83
  243. nuitka/build/static_src/HelpersOperationBinaryMatmult.c +25 -24
  244. nuitka/build/static_src/HelpersOperationBinaryMod.c +129 -117
  245. nuitka/build/static_src/HelpersOperationBinaryMult.c +98 -82
  246. nuitka/build/static_src/HelpersOperationBinaryMultUtils.c +33 -30
  247. nuitka/build/static_src/HelpersOperationBinaryOlddiv.c +55 -49
  248. nuitka/build/static_src/HelpersOperationBinaryPow.c +68 -68
  249. nuitka/build/static_src/HelpersOperationBinaryPowUtils.c +12 -12
  250. nuitka/build/static_src/HelpersOperationBinaryRshift.c +51 -51
  251. nuitka/build/static_src/HelpersOperationBinarySub.c +309 -88
  252. nuitka/build/static_src/HelpersOperationBinaryTruediv.c +49 -43
  253. nuitka/build/static_src/HelpersOperationInplaceAdd.c +333 -163
  254. nuitka/build/static_src/HelpersOperationInplaceAddUtils.c +24 -22
  255. nuitka/build/static_src/HelpersOperationInplaceBitand.c +58 -58
  256. nuitka/build/static_src/HelpersOperationInplaceBitor.c +58 -58
  257. nuitka/build/static_src/HelpersOperationInplaceBitxor.c +58 -58
  258. nuitka/build/static_src/HelpersOperationInplaceFloordiv.c +73 -68
  259. nuitka/build/static_src/HelpersOperationInplaceLshift.c +64 -64
  260. nuitka/build/static_src/HelpersOperationInplaceMatmult.c +38 -37
  261. nuitka/build/static_src/HelpersOperationInplaceMod.c +145 -140
  262. nuitka/build/static_src/HelpersOperationInplaceMult.c +89 -84
  263. nuitka/build/static_src/HelpersOperationInplaceOlddiv.c +73 -68
  264. nuitka/build/static_src/HelpersOperationInplacePow.c +82 -82
  265. nuitka/build/static_src/HelpersOperationInplaceRshift.c +48 -48
  266. nuitka/build/static_src/HelpersOperationInplaceSub.c +275 -122
  267. nuitka/build/static_src/HelpersOperationInplaceTruediv.c +68 -63
  268. nuitka/build/static_src/HelpersProfiling.c +25 -24
  269. nuitka/build/static_src/HelpersPythonPgo.c +22 -22
  270. nuitka/build/static_src/HelpersRaising.c +296 -283
  271. nuitka/build/static_src/HelpersSafeStrings.c +34 -22
  272. nuitka/build/static_src/HelpersSequences.c +18 -19
  273. nuitka/build/static_src/HelpersSlices.c +29 -23
  274. nuitka/build/static_src/HelpersStrings.c +235 -38
  275. nuitka/build/static_src/HelpersTuples.c +46 -34
  276. nuitka/build/static_src/HelpersTypes.c +166 -25
  277. nuitka/build/static_src/InspectPatcher.c +108 -27
  278. nuitka/build/static_src/MainProgram.c +464 -280
  279. nuitka/build/static_src/MetaPathBasedLoader.c +381 -257
  280. nuitka/build/static_src/MetaPathBasedLoaderImportlibMetadataDistribution.c +39 -26
  281. nuitka/build/static_src/MetaPathBasedLoaderResourceReader.c +17 -18
  282. nuitka/build/static_src/MetaPathBasedLoaderResourceReaderFiles.c +227 -29
  283. nuitka/build/static_src/OnefileBootstrap.c +281 -164
  284. nuitka/build/static_src/OnefileSplashScreen.cpp +51 -27
  285. nuitka/code_generation/AsyncgenCodes.py +21 -23
  286. nuitka/code_generation/AttributeCodes.py +31 -27
  287. nuitka/code_generation/BinaryOperationHelperDefinitions.py +290 -184
  288. nuitka/code_generation/BranchCodes.py +19 -17
  289. nuitka/code_generation/BuiltinCodes.py +29 -18
  290. nuitka/code_generation/CallCodes.py +35 -33
  291. nuitka/code_generation/ClassCodes.py +19 -17
  292. nuitka/code_generation/CodeGeneration.py +61 -28
  293. nuitka/code_generation/CodeHelperSelection.py +20 -18
  294. nuitka/code_generation/CodeHelpers.py +28 -21
  295. nuitka/code_generation/CodeObjectCodes.py +36 -26
  296. nuitka/code_generation/ComparisonCodes.py +51 -22
  297. nuitka/code_generation/ComparisonHelperDefinitions.py +42 -25
  298. nuitka/code_generation/ConditionalCodes.py +19 -17
  299. nuitka/code_generation/ConstantCodes.py +82 -28
  300. nuitka/code_generation/Contexts.py +180 -42
  301. nuitka/code_generation/CoroutineCodes.py +21 -23
  302. nuitka/code_generation/CtypesCodes.py +19 -17
  303. nuitka/code_generation/DictCodes.py +28 -26
  304. nuitka/code_generation/Emission.py +21 -18
  305. nuitka/code_generation/ErrorCodes.py +57 -79
  306. nuitka/code_generation/EvalCodes.py +24 -20
  307. nuitka/code_generation/ExceptionCodes.py +182 -104
  308. nuitka/code_generation/ExpressionCTypeSelectionHelpers.py +45 -27
  309. nuitka/code_generation/ExpressionCodes.py +19 -17
  310. nuitka/code_generation/FrameCodes.py +28 -31
  311. nuitka/code_generation/FunctionCodes.py +26 -27
  312. nuitka/code_generation/GeneratorCodes.py +25 -26
  313. nuitka/code_generation/GlobalConstants.py +51 -25
  314. nuitka/code_generation/GlobalsLocalsCodes.py +23 -21
  315. nuitka/code_generation/IdCodes.py +19 -17
  316. nuitka/code_generation/ImportCodes.py +90 -50
  317. nuitka/code_generation/Indentation.py +23 -22
  318. nuitka/code_generation/IndexCodes.py +19 -17
  319. nuitka/code_generation/InjectCCodes.py +14 -12
  320. nuitka/code_generation/IntegerCodes.py +19 -17
  321. nuitka/code_generation/IteratorCodes.py +86 -71
  322. nuitka/code_generation/JitCodes.py +44 -0
  323. nuitka/code_generation/LabelCodes.py +19 -17
  324. nuitka/code_generation/LineNumberCodes.py +20 -20
  325. nuitka/code_generation/ListCodes.py +32 -36
  326. nuitka/code_generation/LoaderCodes.py +22 -17
  327. nuitka/code_generation/LocalsDictCodes.py +56 -32
  328. nuitka/code_generation/LoopCodes.py +19 -17
  329. nuitka/code_generation/MatchCodes.py +42 -22
  330. nuitka/code_generation/ModuleCodes.py +71 -29
  331. nuitka/code_generation/Namify.py +27 -23
  332. nuitka/code_generation/NetworkxCodes.py +51 -0
  333. nuitka/code_generation/OperationCodes.py +80 -51
  334. nuitka/code_generation/PackageResourceCodes.py +96 -23
  335. nuitka/code_generation/PrintCodes.py +19 -17
  336. nuitka/code_generation/PythonAPICodes.py +19 -17
  337. nuitka/code_generation/RaisingCodes.py +183 -107
  338. nuitka/code_generation/Reports.py +32 -22
  339. nuitka/code_generation/ReturnCodes.py +20 -32
  340. nuitka/code_generation/SetCodes.py +19 -17
  341. nuitka/code_generation/SliceCodes.py +22 -20
  342. nuitka/code_generation/StringCodes.py +19 -17
  343. nuitka/code_generation/SubscriptCodes.py +24 -30
  344. nuitka/code_generation/TensorflowCodes.py +54 -0
  345. nuitka/code_generation/TryCodes.py +31 -41
  346. nuitka/code_generation/TupleCodes.py +20 -18
  347. nuitka/code_generation/TypeAliasCodes.py +119 -0
  348. nuitka/code_generation/VariableCodes.py +118 -55
  349. nuitka/code_generation/VariableDeclarations.py +28 -25
  350. nuitka/code_generation/YieldCodes.py +23 -21
  351. nuitka/code_generation/__init__.py +5 -4
  352. nuitka/code_generation/c_types/CTypeBases.py +29 -19
  353. nuitka/code_generation/c_types/CTypeBooleans.py +19 -17
  354. nuitka/code_generation/c_types/CTypeCFloats.py +19 -17
  355. nuitka/code_generation/c_types/CTypeCLongs.py +19 -18
  356. nuitka/code_generation/c_types/CTypeModuleDictVariables.py +22 -17
  357. nuitka/code_generation/c_types/CTypeNuitkaBooleans.py +22 -21
  358. nuitka/code_generation/c_types/CTypeNuitkaInts.py +89 -43
  359. nuitka/code_generation/c_types/CTypeNuitkaVoids.py +20 -18
  360. nuitka/code_generation/c_types/CTypePyObjectPointers.py +43 -31
  361. nuitka/code_generation/c_types/CTypeVoids.py +20 -17
  362. nuitka/code_generation/c_types/__init__.py +5 -4
  363. nuitka/code_generation/templates/CodeTemplatesAsyncgens.py +20 -19
  364. nuitka/code_generation/templates/CodeTemplatesConstants.py +143 -39
  365. nuitka/code_generation/templates/CodeTemplatesCoroutines.py +20 -19
  366. nuitka/code_generation/templates/CodeTemplatesExceptions.py +33 -33
  367. nuitka/code_generation/templates/CodeTemplatesFrames.py +36 -27
  368. nuitka/code_generation/templates/CodeTemplatesFunction.py +20 -19
  369. nuitka/code_generation/templates/CodeTemplatesGeneratorFunction.py +21 -19
  370. nuitka/code_generation/templates/CodeTemplatesIterators.py +19 -53
  371. nuitka/code_generation/templates/CodeTemplatesLoader.py +25 -19
  372. nuitka/code_generation/templates/CodeTemplatesModules.py +278 -169
  373. nuitka/code_generation/templates/CodeTemplatesVariables.py +115 -27
  374. nuitka/code_generation/templates/TemplateDebugWrapper.py +19 -18
  375. nuitka/code_generation/templates/__init__.py +5 -4
  376. nuitka/code_generation/templates_c/CodeTemplateCallsMethodPositional.c.j2 +19 -19
  377. nuitka/code_generation/templates_c/CodeTemplateCallsMixed.c.j2 +21 -21
  378. nuitka/code_generation/templates_c/CodeTemplateCallsPositional.c.j2 +79 -28
  379. nuitka/code_generation/templates_c/CodeTemplateCallsPositionalMethodDescr.c.j2 +22 -22
  380. nuitka/code_generation/templates_c/CodeTemplateMakeListHinted.c.j2 +19 -19
  381. nuitka/code_generation/templates_c/CodeTemplateMakeListSmall.c.j2 +19 -19
  382. nuitka/code_generation/templates_c/HelperBuiltinMethodOperation.c.j2 +17 -17
  383. nuitka/code_generation/templates_c/HelperDictionaryCopy.c.j2 +74 -106
  384. nuitka/code_generation/templates_c/HelperImportHard.c.j2 +19 -20
  385. nuitka/code_generation/templates_c/HelperLongTools.c.j2 +19 -19
  386. nuitka/code_generation/templates_c/HelperObjectTools.c.j2 +6 -6
  387. nuitka/code_generation/templates_c/HelperOperationBinary.c.j2 +23 -23
  388. nuitka/code_generation/templates_c/HelperOperationBinaryDual.c.j2 +115 -0
  389. nuitka/code_generation/templates_c/HelperOperationComparison.c.j2 +35 -35
  390. nuitka/code_generation/templates_c/HelperOperationComparisonBytes.c.j2 +37 -37
  391. nuitka/code_generation/templates_c/HelperOperationComparisonDual.c.j2 +86 -0
  392. nuitka/code_generation/templates_c/HelperOperationComparisonFloat.c.j2 +17 -17
  393. nuitka/code_generation/templates_c/HelperOperationComparisonInt.c.j2 +18 -18
  394. nuitka/code_generation/templates_c/HelperOperationComparisonList.c.j2 +50 -38
  395. nuitka/code_generation/templates_c/HelperOperationComparisonLong.c.j2 +27 -27
  396. nuitka/code_generation/templates_c/HelperOperationComparisonStr.c.j2 +37 -37
  397. nuitka/code_generation/templates_c/HelperOperationComparisonTuple.c.j2 +31 -31
  398. nuitka/code_generation/templates_c/HelperOperationComparisonUnicode.c.j2 +35 -31
  399. nuitka/code_generation/templates_c/HelperOperationInplace.c.j2 +20 -20
  400. nuitka/code_generation/templates_c/HelperSlotsBinary.c.j2 +28 -28
  401. nuitka/code_generation/templates_c/HelperSlotsBytes.c.j2 +17 -17
  402. nuitka/code_generation/templates_c/HelperSlotsCommon.c.j2 +17 -17
  403. nuitka/code_generation/templates_c/HelperSlotsFloat.c.j2 +17 -17
  404. nuitka/code_generation/templates_c/HelperSlotsInt.c.j2 +48 -48
  405. nuitka/code_generation/templates_c/HelperSlotsList.c.j2 +21 -18
  406. nuitka/code_generation/templates_c/HelperSlotsLong.c.j2 +27 -25
  407. nuitka/code_generation/templates_c/HelperSlotsSet.c.j2 +17 -17
  408. nuitka/code_generation/templates_c/HelperSlotsStr.c.j2 +17 -17
  409. nuitka/code_generation/templates_c/HelperSlotsTuple.c.j2 +21 -18
  410. nuitka/code_generation/templates_c/HelperSlotsUnicode.c.j2 +17 -17
  411. nuitka/containers/Namedtuples.py +25 -18
  412. nuitka/containers/OrderedSets.py +105 -5
  413. nuitka/containers/OrderedSetsFallback.py +19 -17
  414. nuitka/containers/__init__.py +5 -4
  415. nuitka/distutils/Build.py +33 -18
  416. nuitka/distutils/DistutilCommands.py +84 -33
  417. nuitka/distutils/__init__.py +5 -4
  418. nuitka/finalizations/Finalization.py +21 -18
  419. nuitka/finalizations/FinalizeMarkups.py +31 -55
  420. nuitka/finalizations/__init__.py +5 -4
  421. nuitka/freezer/DependsExe.py +60 -30
  422. nuitka/freezer/DllDependenciesCommon.py +47 -20
  423. nuitka/freezer/DllDependenciesMacOS.py +165 -58
  424. nuitka/freezer/DllDependenciesPosix.py +29 -19
  425. nuitka/freezer/DllDependenciesWin32.py +55 -33
  426. nuitka/freezer/ImportDetection.py +23 -17
  427. nuitka/freezer/IncludedDataFiles.py +142 -48
  428. nuitka/freezer/IncludedEntryPoints.py +104 -39
  429. nuitka/freezer/Onefile.py +32 -22
  430. nuitka/freezer/Standalone.py +166 -53
  431. nuitka/freezer/__init__.py +5 -4
  432. nuitka/importing/IgnoreListing.py +19 -17
  433. nuitka/importing/ImportCache.py +24 -21
  434. nuitka/importing/ImportResolving.py +103 -95
  435. nuitka/importing/Importing.py +319 -98
  436. nuitka/importing/PreloadedPackages.py +21 -18
  437. nuitka/importing/Recursion.py +142 -47
  438. nuitka/importing/StandardLibrary.py +96 -80
  439. nuitka/importing/__init__.py +5 -4
  440. nuitka/nodes/AsyncgenNodes.py +22 -23
  441. nuitka/nodes/AttributeLookupNodes.py +19 -17
  442. nuitka/nodes/AttributeNodes.py +19 -17
  443. nuitka/nodes/AttributeNodesGenerated.py +49 -24
  444. nuitka/nodes/BuiltinAllNodes.py +19 -17
  445. nuitka/nodes/BuiltinAnyNodes.py +19 -17
  446. nuitka/nodes/BuiltinComplexNodes.py +20 -17
  447. nuitka/nodes/BuiltinDecodingNodes.py +19 -17
  448. nuitka/nodes/BuiltinDecoratorNodes.py +19 -17
  449. nuitka/nodes/BuiltinDictNodes.py +19 -17
  450. nuitka/nodes/BuiltinFormatNodes.py +20 -17
  451. nuitka/nodes/BuiltinHashNodes.py +19 -17
  452. nuitka/nodes/BuiltinInputNodes.py +19 -17
  453. nuitka/nodes/BuiltinIntegerNodes.py +19 -17
  454. nuitka/nodes/BuiltinIteratorNodes.py +25 -21
  455. nuitka/nodes/BuiltinLenNodes.py +19 -17
  456. nuitka/nodes/BuiltinNextNodes.py +19 -17
  457. nuitka/nodes/BuiltinOpenNodes.py +52 -18
  458. nuitka/nodes/BuiltinOperationNodeBasesGenerated.py +40 -23
  459. nuitka/nodes/BuiltinRangeNodes.py +21 -19
  460. nuitka/nodes/BuiltinRefNodes.py +73 -40
  461. nuitka/nodes/BuiltinSumNodes.py +20 -18
  462. nuitka/nodes/BuiltinTypeNodes.py +19 -17
  463. nuitka/nodes/BuiltinVarsNodes.py +19 -18
  464. nuitka/nodes/BytesNodes.py +19 -17
  465. nuitka/nodes/CallNodes.py +19 -17
  466. nuitka/nodes/Checkers.py +19 -17
  467. nuitka/nodes/ChildrenHavingMixins.py +1624 -283
  468. nuitka/nodes/ClassNodes.py +49 -29
  469. nuitka/nodes/CodeObjectSpecs.py +29 -18
  470. nuitka/nodes/ComparisonNodes.py +19 -17
  471. nuitka/nodes/ConditionalNodes.py +24 -25
  472. nuitka/nodes/ConstantRefNodes.py +57 -17
  473. nuitka/nodes/ContainerMakingNodes.py +19 -17
  474. nuitka/nodes/ContainerOperationNodes.py +19 -17
  475. nuitka/nodes/CoroutineNodes.py +22 -23
  476. nuitka/nodes/CtypesNodes.py +19 -18
  477. nuitka/nodes/DictionaryNodes.py +19 -18
  478. nuitka/nodes/ExceptionNodes.py +131 -43
  479. nuitka/nodes/ExecEvalNodes.py +19 -17
  480. nuitka/nodes/ExpressionBases.py +34 -26
  481. nuitka/nodes/ExpressionBasesGenerated.py +341 -35
  482. nuitka/nodes/ExpressionShapeMixins.py +19 -17
  483. nuitka/nodes/FrameNodes.py +41 -28
  484. nuitka/nodes/FunctionAttributeNodes.py +19 -17
  485. nuitka/nodes/FunctionNodes.py +84 -38
  486. nuitka/nodes/FutureSpecs.py +35 -20
  487. nuitka/nodes/GeneratorNodes.py +24 -25
  488. nuitka/nodes/GlobalsLocalsNodes.py +22 -17
  489. nuitka/nodes/HardImportNodesGenerated.py +746 -148
  490. nuitka/nodes/ImportHardNodes.py +46 -38
  491. nuitka/nodes/ImportNodes.py +438 -448
  492. nuitka/nodes/IndicatorMixins.py +19 -17
  493. nuitka/nodes/InjectCNodes.py +19 -18
  494. nuitka/nodes/IterationHandles.py +55 -34
  495. nuitka/nodes/KeyValuePairNodes.py +19 -17
  496. nuitka/nodes/ListOperationNodes.py +33 -21
  497. nuitka/nodes/LocalsDictNodes.py +19 -17
  498. nuitka/nodes/LocalsScopes.py +41 -41
  499. nuitka/nodes/LoopNodes.py +28 -17
  500. nuitka/nodes/MatchNodes.py +37 -24
  501. nuitka/nodes/ModuleAttributeNodes.py +18 -35
  502. nuitka/nodes/ModuleNodes.py +90 -31
  503. nuitka/nodes/NetworkxNodes.py +45 -0
  504. nuitka/nodes/NodeBases.py +73 -44
  505. nuitka/nodes/NodeMakingHelpers.py +92 -69
  506. nuitka/nodes/NodeMetaClasses.py +45 -28
  507. nuitka/nodes/OperatorNodes.py +28 -26
  508. nuitka/nodes/OperatorNodesUnary.py +148 -20
  509. nuitka/nodes/OsSysNodes.py +97 -18
  510. nuitka/nodes/OutlineNodes.py +24 -22
  511. nuitka/nodes/PackageMetadataNodes.py +37 -27
  512. nuitka/nodes/PackageResourceNodes.py +29 -23
  513. nuitka/nodes/PrintNodes.py +19 -17
  514. nuitka/nodes/ReturnNodes.py +20 -18
  515. nuitka/nodes/SideEffectNodes.py +19 -17
  516. nuitka/nodes/SliceNodes.py +20 -18
  517. nuitka/nodes/StatementBasesGenerated.py +125 -79
  518. nuitka/nodes/StatementNodes.py +27 -24
  519. nuitka/nodes/StrNodes.py +19 -17
  520. nuitka/nodes/StringConcatenationNodes.py +20 -17
  521. nuitka/nodes/SubscriptNodes.py +27 -25
  522. nuitka/nodes/TensorflowNodes.py +38 -0
  523. nuitka/nodes/TryNodes.py +19 -17
  524. nuitka/nodes/TypeMatchNodes.py +19 -17
  525. nuitka/nodes/TypeNodes.py +68 -18
  526. nuitka/nodes/VariableAssignNodes.py +122 -64
  527. nuitka/nodes/VariableDelNodes.py +19 -17
  528. nuitka/nodes/VariableNameNodes.py +19 -17
  529. nuitka/nodes/VariableRefNodes.py +63 -26
  530. nuitka/nodes/VariableReleaseNodes.py +19 -17
  531. nuitka/nodes/YieldNodes.py +21 -19
  532. nuitka/nodes/__init__.py +5 -4
  533. nuitka/nodes/shapes/BuiltinTypeShapes.py +169 -46
  534. nuitka/nodes/shapes/ControlFlowDescriptions.py +19 -17
  535. nuitka/nodes/shapes/ShapeMixins.py +57 -17
  536. nuitka/nodes/shapes/StandardShapes.py +80 -21
  537. nuitka/nodes/shapes/__init__.py +5 -4
  538. nuitka/optimizations/BytecodeDemotion.py +21 -18
  539. nuitka/optimizations/FunctionInlining.py +22 -23
  540. nuitka/optimizations/Graphs.py +19 -17
  541. nuitka/optimizations/Optimization.py +39 -35
  542. nuitka/optimizations/OptimizeBuiltinCalls.py +31 -27
  543. nuitka/optimizations/Tags.py +19 -18
  544. nuitka/optimizations/TraceCollections.py +67 -24
  545. nuitka/optimizations/ValueTraces.py +92 -25
  546. nuitka/optimizations/__init__.py +5 -4
  547. nuitka/pgo/PGO.py +33 -23
  548. nuitka/pgo/__init__.py +5 -4
  549. nuitka/plugins/PluginBase.py +655 -112
  550. nuitka/plugins/Plugins.py +247 -61
  551. nuitka/plugins/YamlPluginBase.py +121 -0
  552. nuitka/plugins/__init__.py +5 -4
  553. nuitka/plugins/standard/AntiBloatPlugin.py +374 -135
  554. nuitka/plugins/standard/ConsiderPyLintAnnotationsPlugin.py +20 -19
  555. nuitka/plugins/standard/DataFilesPlugin.py +65 -29
  556. nuitka/plugins/standard/DelvewheelPlugin.py +32 -24
  557. nuitka/plugins/standard/DillPlugin/DillPlugin.c +37 -0
  558. nuitka/plugins/standard/DillPlugin/dill-postLoad.py +256 -0
  559. nuitka/plugins/standard/DillPlugin.py +42 -134
  560. nuitka/plugins/standard/DllFilesPlugin.py +125 -42
  561. nuitka/plugins/standard/EnumPlugin.py +19 -17
  562. nuitka/plugins/standard/EventletPlugin.py +19 -17
  563. nuitka/plugins/standard/GeventPlugin.py +19 -17
  564. nuitka/plugins/standard/GiPlugin.py +44 -28
  565. nuitka/plugins/standard/GlfwPlugin.py +20 -17
  566. nuitka/plugins/standard/ImplicitImports.py +403 -54
  567. nuitka/plugins/standard/KivyPlugin.py +24 -20
  568. nuitka/plugins/standard/MatplotlibPlugin.py +99 -42
  569. nuitka/plugins/standard/MultiprocessingPlugin.py +35 -39
  570. nuitka/plugins/standard/NumpyPlugin.py +19 -17
  571. nuitka/plugins/standard/OptionsNannyPlugin.py +48 -76
  572. nuitka/plugins/standard/PbrPlugin.py +21 -19
  573. nuitka/plugins/standard/PkgResourcesPlugin.py +34 -23
  574. nuitka/plugins/standard/PlaywrightPlugin.py +184 -0
  575. nuitka/plugins/standard/PmwPlugin.py +30 -27
  576. nuitka/plugins/standard/PySidePyQtPlugin.py +82 -80
  577. nuitka/plugins/standard/PywebViewPlugin.py +19 -17
  578. nuitka/plugins/standard/SpacyPlugin.py +136 -0
  579. nuitka/plugins/standard/TensorflowPlugin.py +20 -17
  580. nuitka/plugins/standard/TkinterPlugin.py +102 -108
  581. nuitka/plugins/standard/TorchPlugin.py +20 -17
  582. nuitka/plugins/standard/TransformersPlugin.py +90 -231
  583. nuitka/plugins/standard/TrioPlugin.py +18 -15
  584. nuitka/plugins/standard/UpxPlugin.py +21 -19
  585. nuitka/plugins/standard/__init__.py +5 -4
  586. nuitka/plugins/standard/standard.nuitka-package.config.yml +3925 -1293
  587. nuitka/plugins/standard/stdlib2.nuitka-package.config.yml +14 -14
  588. nuitka/plugins/standard/stdlib3.nuitka-package.config.yml +154 -66
  589. nuitka/reports/CompilationReportReader.py +79 -0
  590. nuitka/reports/LicenseReport.rst.j2 +21 -21
  591. nuitka/reports/Reports.py +363 -76
  592. nuitka/reports/__init__.py +5 -4
  593. nuitka/specs/BuiltinBytesOperationSpecs.py +18 -17
  594. nuitka/specs/BuiltinDictOperationSpecs.py +18 -17
  595. nuitka/specs/BuiltinListOperationSpecs.py +18 -17
  596. nuitka/specs/BuiltinParameterSpecs.py +35 -21
  597. nuitka/specs/BuiltinStrOperationSpecs.py +19 -18
  598. nuitka/specs/BuiltinTypeOperationSpecs.py +18 -18
  599. nuitka/specs/BuiltinUnicodeOperationSpecs.py +18 -17
  600. nuitka/specs/HardImportSpecs.py +74 -22
  601. nuitka/specs/ParameterSpecs.py +60 -45
  602. nuitka/specs/__init__.py +5 -4
  603. nuitka/tools/Basics.py +20 -18
  604. nuitka/tools/__init__.py +5 -4
  605. nuitka/tools/commercial/__init__.py +7 -6
  606. nuitka/tools/data_composer/DataComposer.py +78 -62
  607. nuitka/tools/data_composer/__init__.py +5 -4
  608. nuitka/tools/data_composer/__main__.py +18 -17
  609. nuitka/tools/environments/CreateEnvironment.py +20 -17
  610. nuitka/tools/environments/Virtualenv.py +60 -32
  611. nuitka/tools/environments/__init__.py +5 -4
  612. nuitka/tools/general/__init__.py +5 -4
  613. nuitka/tools/general/dll_report/__init__.py +5 -4
  614. nuitka/tools/general/dll_report/__main__.py +29 -22
  615. nuitka/tools/general/find_module/FindModuleCode.py +35 -22
  616. nuitka/tools/general/find_module/__init__.py +5 -4
  617. nuitka/tools/onefile_compressor/OnefileCompressor.py +213 -131
  618. nuitka/tools/onefile_compressor/__init__.py +5 -4
  619. nuitka/tools/onefile_compressor/__main__.py +18 -17
  620. nuitka/tools/podman/Podman.py +19 -17
  621. nuitka/tools/podman/__init__.py +5 -4
  622. nuitka/tools/podman/__main__.py +35 -19
  623. nuitka/tools/profiler/__init__.py +5 -4
  624. nuitka/tools/profiler/__main__.py +18 -17
  625. nuitka/tools/scanning/DisplayPackageDLLs.py +47 -22
  626. nuitka/tools/scanning/DisplayPackageData.py +31 -19
  627. nuitka/tools/scanning/__init__.py +5 -4
  628. nuitka/tools/specialize/CTypeDescriptions.py +251 -80
  629. nuitka/tools/specialize/Common.py +18 -17
  630. nuitka/tools/specialize/SpecializeC.py +248 -82
  631. nuitka/tools/specialize/SpecializePython.py +108 -45
  632. nuitka/tools/specialize/__init__.py +5 -4
  633. nuitka/tools/testing/Common.py +175 -114
  634. nuitka/tools/testing/Constructs.py +19 -17
  635. nuitka/tools/testing/OutputComparison.py +54 -18
  636. nuitka/tools/testing/Pythons.py +19 -18
  637. nuitka/tools/testing/RuntimeTracing.py +20 -19
  638. nuitka/tools/testing/SearchModes.py +26 -20
  639. nuitka/tools/testing/Valgrind.py +19 -17
  640. nuitka/tools/testing/__init__.py +5 -4
  641. nuitka/tools/testing/check_reference_counts/__init__.py +5 -4
  642. nuitka/tools/testing/check_reference_counts/__main__.py +18 -18
  643. nuitka/tools/testing/compare_with_cpython/__init__.py +5 -4
  644. nuitka/tools/testing/compare_with_cpython/__main__.py +39 -30
  645. nuitka/tools/testing/find_sxs_modules/__init__.py +5 -4
  646. nuitka/tools/testing/find_sxs_modules/__main__.py +17 -17
  647. nuitka/tools/testing/measure_construct_performance/__init__.py +5 -4
  648. nuitka/tools/testing/measure_construct_performance/__main__.py +23 -33
  649. nuitka/tools/testing/run_nuitka_tests/__init__.py +5 -4
  650. nuitka/tools/testing/run_nuitka_tests/__main__.py +134 -51
  651. nuitka/tools/watch/AutoStage.py +145 -0
  652. nuitka/tools/watch/GitHub.py +113 -0
  653. nuitka/tools/watch/__init__.py +5 -4
  654. nuitka/tools/watch/__main__.py +322 -91
  655. nuitka/tree/Building.py +184 -182
  656. nuitka/tree/ComplexCallHelperFunctions.py +84 -58
  657. nuitka/tree/Extractions.py +19 -17
  658. nuitka/tree/InternalModule.py +29 -20
  659. nuitka/tree/Operations.py +19 -17
  660. nuitka/tree/ReformulationAssertStatements.py +51 -31
  661. nuitka/tree/ReformulationAssignmentStatements.py +96 -91
  662. nuitka/tree/ReformulationBooleanExpressions.py +19 -17
  663. nuitka/tree/ReformulationCallExpressions.py +20 -18
  664. nuitka/tree/ReformulationClasses.py +45 -39
  665. nuitka/tree/ReformulationClasses3.py +239 -116
  666. nuitka/tree/ReformulationComparisonExpressions.py +29 -35
  667. nuitka/tree/ReformulationContractionExpressions.py +58 -55
  668. nuitka/tree/ReformulationDictionaryCreation.py +41 -35
  669. nuitka/tree/ReformulationExecStatements.py +42 -39
  670. nuitka/tree/ReformulationForLoopStatements.py +30 -34
  671. nuitka/tree/ReformulationFunctionStatements.py +59 -55
  672. nuitka/tree/ReformulationImportStatements.py +34 -29
  673. nuitka/tree/ReformulationLambdaExpressions.py +23 -24
  674. nuitka/tree/ReformulationMatchStatements.py +246 -92
  675. nuitka/tree/ReformulationMultidist.py +22 -18
  676. nuitka/tree/ReformulationNamespacePackages.py +55 -46
  677. nuitka/tree/ReformulationPrintStatements.py +23 -24
  678. nuitka/tree/ReformulationSequenceCreation.py +50 -49
  679. nuitka/tree/ReformulationSubscriptExpressions.py +19 -17
  680. nuitka/tree/ReformulationTryExceptStatements.py +19 -17
  681. nuitka/tree/ReformulationTryFinallyStatements.py +34 -17
  682. nuitka/tree/ReformulationWhileLoopStatements.py +19 -17
  683. nuitka/tree/ReformulationWithStatements.py +39 -41
  684. nuitka/tree/ReformulationYieldExpressions.py +44 -24
  685. nuitka/tree/SourceHandling.py +76 -31
  686. nuitka/tree/SyntaxErrors.py +19 -17
  687. nuitka/tree/TreeHelpers.py +33 -20
  688. nuitka/tree/VariableClosure.py +35 -39
  689. nuitka/tree/__init__.py +5 -4
  690. nuitka/utils/AppDirs.py +41 -20
  691. nuitka/utils/CStrings.py +66 -21
  692. nuitka/utils/CommandLineOptions.py +111 -22
  693. nuitka/utils/Distributions.py +445 -54
  694. nuitka/utils/Download.py +89 -57
  695. nuitka/utils/Execution.py +102 -58
  696. nuitka/utils/FileOperations.py +357 -128
  697. nuitka/utils/Hashing.py +55 -33
  698. nuitka/utils/Images.py +26 -19
  699. nuitka/utils/Importing.py +119 -37
  700. nuitka/utils/InlineCopies.py +52 -0
  701. nuitka/utils/InstalledPythons.py +85 -75
  702. nuitka/utils/InstanceCounters.py +20 -17
  703. nuitka/utils/Jinja2.py +30 -22
  704. nuitka/utils/Json.py +21 -19
  705. nuitka/utils/MacOSApp.py +26 -18
  706. nuitka/utils/MemoryUsage.py +20 -18
  707. nuitka/utils/ModuleNames.py +42 -26
  708. nuitka/utils/PackageResources.py +44 -0
  709. nuitka/utils/ReExecute.py +50 -28
  710. nuitka/utils/Rest.py +20 -17
  711. nuitka/utils/SharedLibraries.py +161 -75
  712. nuitka/utils/Shebang.py +20 -17
  713. nuitka/utils/Signing.py +63 -18
  714. nuitka/utils/SlotMetaClasses.py +57 -0
  715. nuitka/utils/StaticLibraries.py +83 -56
  716. nuitka/utils/ThreadedExecutor.py +18 -17
  717. nuitka/utils/Timing.py +22 -20
  718. nuitka/utils/Utils.py +132 -25
  719. nuitka/utils/WindowsFileUsage.py +22 -20
  720. nuitka/utils/WindowsResources.py +25 -18
  721. nuitka/utils/Yaml.py +62 -24
  722. nuitka/utils/__init__.py +5 -4
  723. Nuitka_winsvc-1.8.dist-info/RECORD +0 -905
  724. nuitka/build/inline_copy/tqdm/tqdm/_tqdm_gui.py +0 -9
  725. nuitka/build/inline_copy/tqdm/tqdm/gui.py +0 -191
  726. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/LICENSE.txt +0 -0
  727. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/entry_points.txt +0 -0
  728. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.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) || defined(_NUITKA_HIDE_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;
@@ -982,11 +1067,20 @@ int wmain(int argc, wchar_t** argv)
982
1067
  int startup(int argc, wchar_t **argv) {
983
1068
  #else
984
1069
  int wmain(int argc, wchar_t **argv) {
1070
+ #if defined(_NUITKA_HIDE_CONSOLE_WINDOW)
1071
+ hideConsoleIfSpawned();
1072
+ #endif
985
1073
  #endif
986
1074
  #else
987
1075
  int main(int argc, char **argv) {
988
1076
  #endif
989
1077
  #endif
1078
+ // Attach to the parent console respecting redirection only, otherwise we cannot
1079
+ // even output traces.
1080
+ #if defined(_WIN32) && defined(_NUITKA_ATTACH_CONSOLE_WINDOW)
1081
+ inheritAttachedConsole();
1082
+ #endif
1083
+
990
1084
  NUITKA_PRINT_TIMING("ONEFILE: Entered main().");
991
1085
 
992
1086
  filename_char_t const *pattern = FILENAME_EMPTY_STR _NUITKA_ONEFILE_TEMP_SPEC;
@@ -1011,7 +1105,7 @@ int main(int argc, char **argv) {
1011
1105
  signal(SIGTERM, ourConsoleCtrlHandler);
1012
1106
  #endif
1013
1107
 
1014
- #ifdef _NUITKA_AUTO_UPDATE_BOOL
1108
+ #if _NUITKA_AUTO_UPDATE_BOOL
1015
1109
  checkAutoUpdates();
1016
1110
  #endif
1017
1111
 
@@ -1019,20 +1113,18 @@ int main(int argc, char **argv) {
1019
1113
 
1020
1114
  initPayloadData();
1021
1115
 
1022
- #if !defined(_NUITKA_PAYLOAD_FROM_MACOS_SECTION) && !defined(_WIN32)
1116
+ #if !defined(__APPLE__) && !defined(_WIN32)
1023
1117
  const off_t size_end_offset = exe_file_mapped.file_size;
1024
1118
 
1025
1119
  NUITKA_PRINT_TIMING("ONEFILE: Determining payload start position.");
1026
1120
 
1027
- unsigned long long payload_size;
1121
+ assert(sizeof(payload_size) == sizeof(unsigned long long));
1028
1122
  memcpy(&payload_size, payload_data + size_end_offset - sizeof(payload_size), sizeof(payload_size));
1029
1123
 
1030
1124
  unsigned long long start_pos = size_end_offset - sizeof(payload_size) - payload_size;
1031
1125
 
1032
1126
  payload_current += start_pos;
1033
1127
  payload_data += start_pos;
1034
-
1035
- stream_end_pos = size_end_offset - sizeof(payload_size) - start_pos;
1036
1128
  #endif
1037
1129
 
1038
1130
  NUITKA_PRINT_TIMING("ONEFILE: Checking header for compression.");
@@ -1044,12 +1136,20 @@ int main(int argc, char **argv) {
1044
1136
  fatalErrorHeaderAttachedData();
1045
1137
  }
1046
1138
 
1139
+ NUITKA_PRINT_TIMING("ONEFILE: Header is OK.");
1140
+
1047
1141
  // The 'X' stands for no compression, 'Y' is compressed, handle that.
1048
1142
  #if _NUITKA_ONEFILE_COMPRESSION_BOOL == 1
1049
1143
  if (header[2] != 'Y') {
1050
1144
  fatalErrorHeaderAttachedData();
1051
1145
  }
1052
1146
  initZSTD();
1147
+
1148
+ input.src = payload_current;
1149
+ input.pos = 0;
1150
+ input.size = payload_size;
1151
+
1152
+ assert(payload_size > 0);
1053
1153
  #else
1054
1154
  if (header[2] != 'X') {
1055
1155
  fatalErrorHeaderAttachedData();
@@ -1059,8 +1159,6 @@ int main(int argc, char **argv) {
1059
1159
  static filename_char_t first_filename[1024] = {0};
1060
1160
 
1061
1161
  #if _NUITKA_ONEFILE_SPLASH_SCREEN
1062
- NUITKA_PRINT_TIMING("ONEFILE: Splash screen.");
1063
-
1064
1162
  initSplashScreen();
1065
1163
  #endif
1066
1164
 
@@ -1134,6 +1232,20 @@ int main(int argc, char **argv) {
1134
1232
  }
1135
1233
  #endif
1136
1234
 
1235
+ #if _NUITKA_ONEFILE_ARCHIVE_BOOL == 1
1236
+ #if _NUITKA_ONEFILE_COMPRESSION_BOOL == 1
1237
+ uint32_t contained_archive_file_size = readArchiveFileSizeValue();
1238
+
1239
+ input.src = payload_current;
1240
+ input.pos = 0;
1241
+ input.size = contained_archive_file_size;
1242
+
1243
+ output.pos = 0;
1244
+ output.size = 0;
1245
+
1246
+ payload_current += contained_archive_file_size;
1247
+ #endif
1248
+ #endif
1137
1249
  FILE_HANDLE target_file = FILE_HANDLE_NULL;
1138
1250
 
1139
1251
  if (needs_write) {
@@ -1141,34 +1253,7 @@ int main(int argc, char **argv) {
1141
1253
  target_file = createFileForWritingChecked(target_path);
1142
1254
  }
1143
1255
 
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
- }
1256
+ writeContainedFile(target_file, file_size);
1172
1257
 
1173
1258
  #if !defined(_WIN32) && !defined(__MSYS__)
1174
1259
  if ((file_flags & 1) && (target_file != FILE_HANDLE_NULL)) {
@@ -1212,7 +1297,7 @@ int main(int argc, char **argv) {
1212
1297
 
1213
1298
  closePayloadData();
1214
1299
 
1215
- #ifdef _NUITKA_AUTO_UPDATE_BOOL
1300
+ #if _NUITKA_AUTO_UPDATE_BOOL
1216
1301
  exe_file_updatable = true;
1217
1302
  #endif
1218
1303
 
@@ -1222,11 +1307,20 @@ int main(int argc, char **argv) {
1222
1307
 
1223
1308
  // Pass our pid by value to the child. If we exit for some reason, re-parenting
1224
1309
  // 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
- }
1310
+ #if defined(_WIN32)
1311
+ setEnvironmentVariableFromLong("NUITKA_ONEFILE_PARENT", GetCurrentProcessId());
1312
+ #else
1313
+ setEnvironmentVariableFromLong("NUITKA_ONEFILE_PARENT", (long)getpid());
1314
+ #endif
1315
+
1316
+ #if defined(_WIN32)
1317
+ filename_char_t const *binary_filename = getBinaryFilenameWideChars(false);
1318
+ #else
1319
+ filename_char_t const *binary_filename = getBinaryFilenameHostEncoded(false);
1320
+ #endif
1321
+ setEnvironmentVariable("NUITKA_ONEFILE_BINARY", binary_filename);
1322
+
1323
+ setEnvironmentVariable("NUITKA_ORIGINAL_ARGV0", argv[0]);
1230
1324
 
1231
1325
  NUITKA_PRINT_TIMING("ONEFILE: Preparing forking of slave process.");
1232
1326
 
@@ -1234,16 +1328,20 @@ int main(int argc, char **argv) {
1234
1328
 
1235
1329
  STARTUPINFOW si;
1236
1330
  memset(&si, 0, sizeof(si));
1331
+ si.dwFlags = STARTF_USESTDHANDLES;
1332
+ si.hStdInput = GetStdHandle(STD_INPUT_HANDLE);
1333
+ si.hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE);
1334
+ si.hStdError = GetStdHandle(STD_ERROR_HANDLE);
1237
1335
  si.cb = sizeof(si);
1238
1336
 
1239
1337
  PROCESS_INFORMATION pi;
1240
1338
 
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
1339
+ bool_res = CreateProcessW(first_filename, // application name
1340
+ getCommandLineForChildProcess(), // command line
1341
+ NULL, // process attributes
1342
+ NULL, // thread attributes
1343
+ TRUE, // inherit handles
1344
+ NORMAL_PRIORITY_CLASS, // creation flags
1247
1345
  NULL, NULL, &si, &pi);
1248
1346
 
1249
1347
  NUITKA_PRINT_TIMING("ONEFILE: Started slave process.");
@@ -1302,6 +1400,10 @@ int main(int argc, char **argv) {
1302
1400
  exit_code = 2;
1303
1401
  } else if (pid == 0) {
1304
1402
  // Child process
1403
+
1404
+ // Make sure, we use the absolute program path for argv[0]
1405
+ argv[0] = getBinaryPath();
1406
+
1305
1407
  execv(first_filename, argv);
1306
1408
 
1307
1409
  fatalErrorChild("Error, couldn't launch child (exec)", errno);
@@ -1328,3 +1430,18 @@ int main(int argc, char **argv) {
1328
1430
 
1329
1431
  return exit_code;
1330
1432
  }
1433
+
1434
+ // Part of "Nuitka", an optimizing Python compiler that is compatible and
1435
+ // integrates with CPython, but also works on its own.
1436
+ //
1437
+ // Licensed under the Apache License, Version 2.0 (the "License");
1438
+ // you may not use this file except in compliance with the License.
1439
+ // You may obtain a copy of the License at
1440
+ //
1441
+ // http://www.apache.org/licenses/LICENSE-2.0
1442
+ //
1443
+ // Unless required by applicable law or agreed to in writing, software
1444
+ // distributed under the License is distributed on an "AS IS" BASIS,
1445
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1446
+ // See the License for the specific language governing permissions and
1447
+ // limitations under the License.