Nuitka-winsvc 2.4.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 (294) hide show
  1. {Nuitka_winsvc-2.4.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/METADATA +2 -1
  2. {Nuitka_winsvc-2.4.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/RECORD +294 -271
  3. {Nuitka_winsvc-2.4.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/WHEEL +1 -1
  4. nuitka/Builtins.py +31 -0
  5. nuitka/HardImportRegistry.py +8 -0
  6. nuitka/MainControl.py +9 -4
  7. nuitka/OptionParsing.py +105 -52
  8. nuitka/Options.py +73 -16
  9. nuitka/OutputDirectories.py +7 -2
  10. nuitka/PostProcessing.py +69 -38
  11. nuitka/Progress.py +16 -1
  12. nuitka/PythonVersions.py +2 -1
  13. nuitka/Serialization.py +4 -2
  14. nuitka/Tracing.py +69 -1
  15. nuitka/Version.py +2 -2
  16. nuitka/build/Backend.scons +45 -5
  17. nuitka/build/CCompilerVersion.scons +6 -0
  18. nuitka/build/Onefile.scons +6 -0
  19. nuitka/build/SconsCaching.py +12 -2
  20. nuitka/build/SconsCompilerSettings.py +17 -6
  21. nuitka/build/SconsInterface.py +1 -0
  22. nuitka/build/SconsUtils.py +5 -0
  23. nuitka/build/include/nuitka/allocator.h +124 -1
  24. nuitka/build/include/nuitka/calling.h +6 -6
  25. nuitka/build/include/nuitka/compiled_asyncgen.h +10 -7
  26. nuitka/build/include/nuitka/compiled_frame.h +2 -1
  27. nuitka/build/include/nuitka/constants.h +6 -0
  28. nuitka/build/include/nuitka/debug_settings.h +60 -0
  29. nuitka/build/include/nuitka/exceptions.h +264 -121
  30. nuitka/build/include/nuitka/helper/attributes.h +0 -4
  31. nuitka/build/include/nuitka/helper/calling_generated.h +52 -52
  32. nuitka/build/include/nuitka/helper/comparisons_dual_eq.h +47 -0
  33. nuitka/build/include/nuitka/helper/comparisons_dual_ge.h +39 -0
  34. nuitka/build/include/nuitka/helper/comparisons_dual_gt.h +39 -0
  35. nuitka/build/include/nuitka/helper/comparisons_dual_le.h +47 -0
  36. nuitka/build/include/nuitka/helper/comparisons_dual_lt.h +47 -0
  37. nuitka/build/include/nuitka/helper/comparisons_dual_ne.h +39 -0
  38. nuitka/build/include/nuitka/helper/dictionaries.h +65 -29
  39. nuitka/build/include/nuitka/helper/ints.h +86 -37
  40. nuitka/build/include/nuitka/helper/iterators.h +82 -34
  41. nuitka/build/include/nuitka/helper/operations.h +3 -0
  42. nuitka/build/include/nuitka/helper/operations_binary_add.h +6 -0
  43. nuitka/build/include/nuitka/helper/operations_binary_dual_add.h +34 -0
  44. nuitka/build/include/nuitka/helper/operations_binary_sub.h +6 -0
  45. nuitka/build/include/nuitka/helper/operations_inplace_add.h +3 -0
  46. nuitka/build/include/nuitka/helper/operations_inplace_sub.h +3 -0
  47. nuitka/build/include/nuitka/helper/raising.h +47 -28
  48. nuitka/build/include/nuitka/helper/richcomparisons.h +7 -0
  49. nuitka/build/include/nuitka/helpers.h +12 -2
  50. nuitka/build/include/nuitka/prelude.h +35 -25
  51. nuitka/build/include/nuitka/printing.h +9 -7
  52. nuitka/build/include/nuitka/threading.h +15 -1
  53. nuitka/build/include/nuitka/type_aliases.h +3 -0
  54. nuitka/build/inline_copy/stubgen/astunparse.py +938 -0
  55. nuitka/build/inline_copy/stubgen/six.py +998 -0
  56. nuitka/build/inline_copy/stubgen/stubgen.py +307 -0
  57. nuitka/build/static_src/CompiledAsyncgenType.c +45 -39
  58. nuitka/build/static_src/CompiledCellType.c +6 -4
  59. nuitka/build/static_src/CompiledCodeHelpers.c +104 -40
  60. nuitka/build/static_src/CompiledCoroutineType.c +40 -30
  61. nuitka/build/static_src/CompiledFrameType.c +110 -79
  62. nuitka/build/static_src/CompiledFunctionType.c +173 -151
  63. nuitka/build/static_src/CompiledGeneratorType.c +51 -49
  64. nuitka/build/static_src/CompiledGeneratorTypeUncompiledIntegration.c +424 -46
  65. nuitka/build/static_src/CompiledMethodType.c +10 -13
  66. nuitka/build/static_src/HelpersAllocator.c +270 -32
  67. nuitka/build/static_src/HelpersAttributes.c +0 -21
  68. nuitka/build/static_src/HelpersBuiltin.c +22 -13
  69. nuitka/build/static_src/HelpersCalling.c +7 -7
  70. nuitka/build/static_src/HelpersCallingGenerated.c +70 -70
  71. nuitka/build/static_src/HelpersComparisonDualEq.c +183 -0
  72. nuitka/build/static_src/HelpersComparisonDualGe.c +121 -0
  73. nuitka/build/static_src/HelpersComparisonDualGt.c +121 -0
  74. nuitka/build/static_src/HelpersComparisonDualLe.c +183 -0
  75. nuitka/build/static_src/HelpersComparisonDualLt.c +183 -0
  76. nuitka/build/static_src/HelpersComparisonDualNe.c +121 -0
  77. nuitka/build/static_src/HelpersComparisonEq.c +18 -4
  78. nuitka/build/static_src/HelpersComparisonEqUtils.c +1 -0
  79. nuitka/build/static_src/HelpersComparisonGe.c +18 -4
  80. nuitka/build/static_src/HelpersComparisonGt.c +18 -4
  81. nuitka/build/static_src/HelpersComparisonLe.c +18 -4
  82. nuitka/build/static_src/HelpersComparisonLt.c +18 -4
  83. nuitka/build/static_src/HelpersComparisonNe.c +18 -4
  84. nuitka/build/static_src/HelpersConsole.c +34 -8
  85. nuitka/build/static_src/HelpersConstantsBlob.c +10 -4
  86. nuitka/build/static_src/HelpersDictionaries.c +181 -34
  87. nuitka/build/static_src/HelpersDictionariesGenerated.c +0 -106
  88. nuitka/build/static_src/HelpersExceptions.c +24 -50
  89. nuitka/build/static_src/HelpersFiles.c +79 -5
  90. nuitka/build/static_src/HelpersImport.c +13 -9
  91. nuitka/build/static_src/HelpersImportHard.c +23 -46
  92. nuitka/build/static_src/HelpersLists.c +98 -9
  93. nuitka/build/static_src/HelpersMatching.c +1 -1
  94. nuitka/build/static_src/HelpersOperationBinaryAdd.c +224 -6
  95. nuitka/build/static_src/HelpersOperationBinaryAddUtils.c +3 -0
  96. nuitka/build/static_src/HelpersOperationBinaryBitand.c +5 -5
  97. nuitka/build/static_src/HelpersOperationBinaryBitor.c +5 -5
  98. nuitka/build/static_src/HelpersOperationBinaryBitxor.c +5 -5
  99. nuitka/build/static_src/HelpersOperationBinaryDivmod.c +8 -2
  100. nuitka/build/static_src/HelpersOperationBinaryDualAdd.c +172 -0
  101. nuitka/build/static_src/HelpersOperationBinaryFloordiv.c +14 -8
  102. nuitka/build/static_src/HelpersOperationBinaryLshift.c +36 -36
  103. nuitka/build/static_src/HelpersOperationBinaryMatmult.c +1 -0
  104. nuitka/build/static_src/HelpersOperationBinaryMod.c +22 -10
  105. nuitka/build/static_src/HelpersOperationBinaryMult.c +17 -7
  106. nuitka/build/static_src/HelpersOperationBinaryOlddiv.c +14 -8
  107. nuitka/build/static_src/HelpersOperationBinaryPow.c +24 -24
  108. nuitka/build/static_src/HelpersOperationBinaryRshift.c +4 -4
  109. nuitka/build/static_src/HelpersOperationBinarySub.c +229 -8
  110. nuitka/build/static_src/HelpersOperationBinaryTruediv.c +8 -2
  111. nuitka/build/static_src/HelpersOperationInplaceAdd.c +162 -10
  112. nuitka/build/static_src/HelpersOperationInplaceBitand.c +5 -5
  113. nuitka/build/static_src/HelpersOperationInplaceBitor.c +5 -5
  114. nuitka/build/static_src/HelpersOperationInplaceBitxor.c +5 -5
  115. nuitka/build/static_src/HelpersOperationInplaceFloordiv.c +11 -6
  116. nuitka/build/static_src/HelpersOperationInplaceLshift.c +20 -20
  117. nuitka/build/static_src/HelpersOperationInplaceMatmult.c +1 -0
  118. nuitka/build/static_src/HelpersOperationInplaceMod.c +11 -6
  119. nuitka/build/static_src/HelpersOperationInplaceMult.c +11 -6
  120. nuitka/build/static_src/HelpersOperationInplaceOlddiv.c +11 -6
  121. nuitka/build/static_src/HelpersOperationInplacePow.c +20 -20
  122. nuitka/build/static_src/HelpersOperationInplaceRshift.c +4 -4
  123. nuitka/build/static_src/HelpersOperationInplaceSub.c +163 -10
  124. nuitka/build/static_src/HelpersOperationInplaceTruediv.c +6 -1
  125. nuitka/build/static_src/HelpersProfiling.c +1 -1
  126. nuitka/build/static_src/HelpersRaising.c +255 -310
  127. nuitka/build/static_src/HelpersStrings.c +1 -1
  128. nuitka/build/static_src/HelpersTuples.c +1 -1
  129. nuitka/build/static_src/HelpersTypes.c +98 -2
  130. nuitka/build/static_src/MainProgram.c +117 -29
  131. nuitka/build/static_src/MetaPathBasedLoader.c +18 -19
  132. nuitka/build/static_src/MetaPathBasedLoaderResourceReaderFiles.c +134 -11
  133. nuitka/build/static_src/OnefileBootstrap.c +6 -1
  134. nuitka/code_generation/AsyncgenCodes.py +2 -6
  135. nuitka/code_generation/BinaryOperationHelperDefinitions.py +269 -167
  136. nuitka/code_generation/BuiltinCodes.py +9 -1
  137. nuitka/code_generation/CallCodes.py +16 -16
  138. nuitka/code_generation/CodeGeneration.py +14 -2
  139. nuitka/code_generation/CodeHelperSelection.py +1 -1
  140. nuitka/code_generation/CodeHelpers.py +4 -1
  141. nuitka/code_generation/CodeObjectCodes.py +2 -2
  142. nuitka/code_generation/ComparisonCodes.py +13 -2
  143. nuitka/code_generation/ComparisonHelperDefinitions.py +23 -8
  144. nuitka/code_generation/Contexts.py +28 -16
  145. nuitka/code_generation/CoroutineCodes.py +2 -6
  146. nuitka/code_generation/DictCodes.py +3 -3
  147. nuitka/code_generation/ErrorCodes.py +34 -50
  148. nuitka/code_generation/ExceptionCodes.py +165 -96
  149. nuitka/code_generation/ExpressionCTypeSelectionHelpers.py +25 -10
  150. nuitka/code_generation/FrameCodes.py +4 -11
  151. nuitka/code_generation/FunctionCodes.py +2 -6
  152. nuitka/code_generation/GeneratorCodes.py +2 -6
  153. nuitka/code_generation/GlobalConstants.py +8 -2
  154. nuitka/code_generation/GlobalsLocalsCodes.py +2 -2
  155. nuitka/code_generation/IteratorCodes.py +67 -54
  156. nuitka/code_generation/LineNumberCodes.py +1 -3
  157. nuitka/code_generation/ModuleCodes.py +28 -4
  158. nuitka/code_generation/OperationCodes.py +51 -20
  159. nuitka/code_generation/PackageResourceCodes.py +37 -0
  160. nuitka/code_generation/RaisingCodes.py +164 -90
  161. nuitka/code_generation/Reports.py +13 -5
  162. nuitka/code_generation/ReturnCodes.py +2 -16
  163. nuitka/code_generation/TryCodes.py +12 -24
  164. nuitka/code_generation/TypeAliasCodes.py +48 -0
  165. nuitka/code_generation/VariableCodes.py +99 -40
  166. nuitka/code_generation/VariableDeclarations.py +8 -8
  167. nuitka/code_generation/YieldCodes.py +1 -1
  168. nuitka/code_generation/c_types/CTypeBases.py +10 -2
  169. nuitka/code_generation/c_types/CTypeModuleDictVariables.py +3 -0
  170. nuitka/code_generation/c_types/CTypeNuitkaBooleans.py +3 -4
  171. nuitka/code_generation/c_types/CTypeNuitkaInts.py +70 -25
  172. nuitka/code_generation/c_types/CTypeNuitkaVoids.py +1 -1
  173. nuitka/code_generation/c_types/CTypePyObjectPointers.py +16 -6
  174. nuitka/code_generation/templates/CodeTemplatesAsyncgens.py +2 -2
  175. nuitka/code_generation/templates/CodeTemplatesConstants.py +11 -3
  176. nuitka/code_generation/templates/CodeTemplatesCoroutines.py +2 -2
  177. nuitka/code_generation/templates/CodeTemplatesExceptions.py +15 -16
  178. nuitka/code_generation/templates/CodeTemplatesFrames.py +18 -10
  179. nuitka/code_generation/templates/CodeTemplatesFunction.py +2 -2
  180. nuitka/code_generation/templates/CodeTemplatesGeneratorFunction.py +2 -2
  181. nuitka/code_generation/templates/CodeTemplatesIterators.py +1 -35
  182. nuitka/code_generation/templates/CodeTemplatesModules.py +34 -4
  183. nuitka/code_generation/templates/CodeTemplatesVariables.py +73 -0
  184. nuitka/code_generation/templates_c/CodeTemplateCallsMixed.c.j2 +3 -3
  185. nuitka/code_generation/templates_c/CodeTemplateCallsPositional.c.j2 +3 -3
  186. nuitka/code_generation/templates_c/HelperDictionaryCopy.c.j2 +0 -105
  187. nuitka/code_generation/templates_c/HelperImportHard.c.j2 +1 -2
  188. nuitka/code_generation/templates_c/HelperLongTools.c.j2 +1 -1
  189. nuitka/code_generation/templates_c/HelperOperationBinaryDual.c.j2 +115 -0
  190. nuitka/code_generation/templates_c/HelperOperationComparisonBytes.c.j2 +9 -9
  191. nuitka/code_generation/templates_c/HelperOperationComparisonDual.c.j2 +86 -0
  192. nuitka/code_generation/templates_c/HelperOperationComparisonFloat.c.j2 +1 -1
  193. nuitka/code_generation/templates_c/HelperOperationComparisonInt.c.j2 +1 -1
  194. nuitka/code_generation/templates_c/HelperOperationComparisonList.c.j2 +9 -9
  195. nuitka/code_generation/templates_c/HelperOperationComparisonLong.c.j2 +7 -7
  196. nuitka/code_generation/templates_c/HelperOperationComparisonStr.c.j2 +9 -9
  197. nuitka/code_generation/templates_c/HelperOperationComparisonTuple.c.j2 +7 -7
  198. nuitka/code_generation/templates_c/HelperOperationComparisonUnicode.c.j2 +4 -4
  199. nuitka/code_generation/templates_c/HelperSlotsBinary.c.j2 +1 -1
  200. nuitka/code_generation/templates_c/HelperSlotsInt.c.j2 +31 -31
  201. nuitka/code_generation/templates_c/HelperSlotsLong.c.j2 +1 -1
  202. nuitka/containers/Namedtuples.py +6 -0
  203. nuitka/containers/OrderedSets.py +105 -5
  204. nuitka/distutils/Build.py +14 -0
  205. nuitka/distutils/DistutilCommands.py +50 -10
  206. nuitka/finalizations/Finalization.py +3 -3
  207. nuitka/finalizations/FinalizeMarkups.py +10 -14
  208. nuitka/freezer/DependsExe.py +13 -3
  209. nuitka/freezer/DllDependenciesMacOS.py +18 -1
  210. nuitka/freezer/DllDependenciesWin32.py +26 -12
  211. nuitka/freezer/ImportDetection.py +3 -0
  212. nuitka/freezer/IncludedDataFiles.py +31 -8
  213. nuitka/freezer/IncludedEntryPoints.py +3 -2
  214. nuitka/freezer/Standalone.py +76 -18
  215. nuitka/importing/Importing.py +33 -6
  216. nuitka/importing/Recursion.py +12 -1
  217. nuitka/importing/StandardLibrary.py +57 -59
  218. nuitka/nodes/AsyncgenNodes.py +3 -6
  219. nuitka/nodes/BuiltinIteratorNodes.py +1 -1
  220. nuitka/nodes/BuiltinRefNodes.py +14 -30
  221. nuitka/nodes/ChildrenHavingMixins.py +439 -46
  222. nuitka/nodes/ConditionalNodes.py +3 -2
  223. nuitka/nodes/CoroutineNodes.py +3 -6
  224. nuitka/nodes/ExceptionNodes.py +102 -26
  225. nuitka/nodes/ExpressionBasesGenerated.py +288 -4
  226. nuitka/nodes/FrameNodes.py +22 -11
  227. nuitka/nodes/FunctionNodes.py +3 -3
  228. nuitka/nodes/GeneratorNodes.py +3 -6
  229. nuitka/nodes/HardImportNodesGenerated.py +182 -0
  230. nuitka/nodes/ImportNodes.py +2 -2
  231. nuitka/nodes/NodeBases.py +28 -1
  232. nuitka/nodes/NodeMakingHelpers.py +71 -50
  233. nuitka/nodes/OperatorNodesUnary.py +128 -3
  234. nuitka/nodes/OsSysNodes.py +37 -6
  235. nuitka/nodes/OutlineNodes.py +2 -2
  236. nuitka/nodes/StatementBasesGenerated.py +0 -2
  237. nuitka/nodes/StatementNodes.py +8 -7
  238. nuitka/nodes/SubscriptNodes.py +1 -1
  239. nuitka/nodes/TypeNodes.py +28 -1
  240. nuitka/nodes/shapes/BuiltinTypeShapes.py +24 -7
  241. nuitka/nodes/shapes/ShapeMixins.py +17 -0
  242. nuitka/nodes/shapes/StandardShapes.py +53 -1
  243. nuitka/optimizations/BytecodeDemotion.py +2 -1
  244. nuitka/plugins/PluginBase.py +64 -22
  245. nuitka/plugins/Plugins.py +6 -3
  246. nuitka/plugins/standard/AntiBloatPlugin.py +23 -12
  247. nuitka/plugins/standard/ImplicitImports.py +1 -13
  248. nuitka/plugins/standard/KivyPlugin.py +3 -12
  249. nuitka/plugins/standard/MatplotlibPlugin.py +12 -1
  250. nuitka/plugins/standard/MultiprocessingPlugin.py +11 -20
  251. nuitka/plugins/standard/PlaywrightPlugin.py +184 -0
  252. nuitka/plugins/standard/PySidePyQtPlugin.py +8 -0
  253. nuitka/plugins/standard/TkinterPlugin.py +0 -56
  254. nuitka/plugins/standard/TransformersPlugin.py +70 -275
  255. nuitka/plugins/standard/standard.nuitka-package.config.yml +510 -28
  256. nuitka/plugins/standard/stdlib3.nuitka-package.config.yml +35 -2
  257. nuitka/reports/CompilationReportReader.py +12 -0
  258. nuitka/reports/Reports.py +11 -0
  259. nuitka/specs/BuiltinParameterSpecs.py +5 -1
  260. nuitka/specs/HardImportSpecs.py +7 -0
  261. nuitka/specs/ParameterSpecs.py +4 -4
  262. nuitka/tools/general/dll_report/__main__.py +10 -1
  263. nuitka/tools/onefile_compressor/OnefileCompressor.py +1 -1
  264. nuitka/tools/specialize/CTypeDescriptions.py +158 -9
  265. nuitka/tools/specialize/SpecializeC.py +218 -56
  266. nuitka/tools/testing/Common.py +70 -63
  267. nuitka/tools/testing/compare_with_cpython/__main__.py +3 -1
  268. nuitka/tools/testing/measure_construct_performance/__main__.py +1 -8
  269. nuitka/tools/testing/run_nuitka_tests/__main__.py +77 -11
  270. nuitka/tools/watch/AutoStage.py +1 -0
  271. nuitka/tree/Building.py +10 -37
  272. nuitka/tree/ComplexCallHelperFunctions.py +4 -0
  273. nuitka/tree/ReformulationAssertStatements.py +31 -14
  274. nuitka/tree/ReformulationAssignmentStatements.py +5 -1
  275. nuitka/tree/ReformulationClasses3.py +94 -19
  276. nuitka/tree/ReformulationDictionaryCreation.py +1 -0
  277. nuitka/tree/ReformulationFunctionStatements.py +1 -1
  278. nuitka/tree/ReformulationMatchStatements.py +3 -1
  279. nuitka/tree/ReformulationYieldExpressions.py +23 -5
  280. nuitka/utils/CommandLineOptions.py +27 -3
  281. nuitka/utils/Download.py +2 -2
  282. nuitka/utils/Execution.py +36 -31
  283. nuitka/utils/FileOperations.py +39 -54
  284. nuitka/utils/Importing.py +2 -14
  285. nuitka/utils/InlineCopies.py +52 -0
  286. nuitka/utils/InstalledPythons.py +9 -4
  287. nuitka/utils/Json.py +2 -2
  288. nuitka/utils/PackageResources.py +44 -0
  289. nuitka/utils/Utils.py +17 -0
  290. {Nuitka_winsvc-2.4.8.data → Nuitka_winsvc-2.5.1.data}/scripts/nuitka-run.cmd +0 -0
  291. {Nuitka_winsvc-2.4.8.data → Nuitka_winsvc-2.5.1.data}/scripts/nuitka.cmd +0 -0
  292. {Nuitka_winsvc-2.4.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/LICENSE.txt +0 -0
  293. {Nuitka_winsvc-2.4.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/entry_points.txt +0 -0
  294. {Nuitka_winsvc-2.4.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/top_level.txt +0 -0
@@ -36,11 +36,12 @@ static PyMemberDef Nuitka_Frame_members[] = {
36
36
 
37
37
  #if PYTHON_VERSION < 0x300
38
38
 
39
- static PyObject *_Nuitka_Frame_get_exc_traceback(struct Nuitka_FrameObject *frame) {
40
- assert(Nuitka_Frame_CheckExact((PyObject *)frame));
41
- CHECK_OBJECT((PyObject *)frame);
42
- assert(_PyObject_GC_IS_TRACKED(frame));
39
+ static PyObject *_Nuitka_Frame_get_exc_traceback(PyObject *self, void *data) {
40
+ assert(Nuitka_Frame_CheckExact(self));
41
+ CHECK_OBJECT(self);
42
+ assert(_PyObject_GC_IS_TRACKED(self));
43
43
 
44
+ struct Nuitka_FrameObject *frame = (struct Nuitka_FrameObject *)self;
44
45
  PyObject *result = frame->m_frame.f_exc_traceback;
45
46
 
46
47
  if (result == NULL) {
@@ -51,11 +52,12 @@ static PyObject *_Nuitka_Frame_get_exc_traceback(struct Nuitka_FrameObject *fram
51
52
  return result;
52
53
  }
53
54
 
54
- static int _Nuitka_Frame_set_exc_traceback(struct Nuitka_FrameObject *frame, PyObject *traceback) {
55
- assert(Nuitka_Frame_CheckExact((PyObject *)frame));
56
- CHECK_OBJECT((PyObject *)frame);
57
- assert(_PyObject_GC_IS_TRACKED(frame));
55
+ static int _Nuitka_Frame_set_exc_traceback(PyObject *self, PyObject *traceback, void *data) {
56
+ assert(Nuitka_Frame_CheckExact(self));
57
+ CHECK_OBJECT(self);
58
+ assert(_PyObject_GC_IS_TRACKED(self));
58
59
 
60
+ struct Nuitka_FrameObject *frame = (struct Nuitka_FrameObject *)self;
59
61
  Py_XDECREF(frame->m_frame.f_exc_traceback);
60
62
 
61
63
  if (traceback == Py_None) {
@@ -68,12 +70,13 @@ static int _Nuitka_Frame_set_exc_traceback(struct Nuitka_FrameObject *frame, PyO
68
70
  return 0;
69
71
  }
70
72
 
71
- static PyObject *_Nuitka_Frame_get_exc_type(struct Nuitka_FrameObject *frame) {
72
- assert(Nuitka_Frame_CheckExact((PyObject *)frame));
73
- CHECK_OBJECT((PyObject *)frame);
74
- assert(_PyObject_GC_IS_TRACKED(frame));
73
+ static PyObject *_Nuitka_Frame_get_exc_type(PyObject *self, void *data) {
74
+ assert(Nuitka_Frame_CheckExact(self));
75
+ CHECK_OBJECT(self);
76
+ assert(_PyObject_GC_IS_TRACKED(self));
75
77
 
76
78
  PyObject *result;
79
+ struct Nuitka_FrameObject *frame = (struct Nuitka_FrameObject *)self;
77
80
 
78
81
  if (frame->m_frame.f_exc_type != NULL) {
79
82
  result = frame->m_frame.f_exc_type;
@@ -85,11 +88,12 @@ static PyObject *_Nuitka_Frame_get_exc_type(struct Nuitka_FrameObject *frame) {
85
88
  return result;
86
89
  }
87
90
 
88
- static int _Nuitka_Frame_set_exc_type(struct Nuitka_FrameObject *frame, PyObject *exception_type) {
89
- assert(Nuitka_Frame_CheckExact((PyObject *)frame));
90
- CHECK_OBJECT((PyObject *)frame);
91
- assert(_PyObject_GC_IS_TRACKED(frame));
91
+ static int _Nuitka_Frame_set_exc_type(PyObject *self, PyObject *exception_type, void *data) {
92
+ assert(Nuitka_Frame_CheckExact(self));
93
+ CHECK_OBJECT(self);
94
+ assert(_PyObject_GC_IS_TRACKED(self));
92
95
 
96
+ struct Nuitka_FrameObject *frame = (struct Nuitka_FrameObject *)self;
93
97
  PyObject *old = frame->m_frame.f_exc_type;
94
98
 
95
99
  if (exception_type == Py_None) {
@@ -104,12 +108,13 @@ static int _Nuitka_Frame_set_exc_type(struct Nuitka_FrameObject *frame, PyObject
104
108
  return 0;
105
109
  }
106
110
 
107
- static PyObject *_Nuitka_Frame_get_exc_value(struct Nuitka_FrameObject *frame) {
108
- assert(Nuitka_Frame_CheckExact((PyObject *)frame));
109
- CHECK_OBJECT((PyObject *)frame);
110
- assert(_PyObject_GC_IS_TRACKED(frame));
111
+ static PyObject *_Nuitka_Frame_get_exc_value(PyObject *self, void *data) {
112
+ assert(Nuitka_Frame_CheckExact(self));
113
+ CHECK_OBJECT(self);
114
+ assert(_PyObject_GC_IS_TRACKED(self));
111
115
 
112
116
  PyObject *result;
117
+ struct Nuitka_FrameObject *frame = (struct Nuitka_FrameObject *)self;
113
118
 
114
119
  if (frame->m_frame.f_exc_value != NULL) {
115
120
  result = frame->m_frame.f_exc_value;
@@ -121,11 +126,12 @@ static PyObject *_Nuitka_Frame_get_exc_value(struct Nuitka_FrameObject *frame) {
121
126
  return result;
122
127
  }
123
128
 
124
- static int _Nuitka_Frame_set_exc_value(struct Nuitka_FrameObject *frame, PyObject *exception_value) {
125
- assert(Nuitka_Frame_CheckExact((PyObject *)frame));
126
- CHECK_OBJECT((PyObject *)frame);
127
- assert(_PyObject_GC_IS_TRACKED(frame));
129
+ static int _Nuitka_Frame_set_exc_value(PyObject *self, PyObject *exception_value, void *data) {
130
+ assert(Nuitka_Frame_CheckExact(self));
131
+ CHECK_OBJECT(self);
132
+ assert(_PyObject_GC_IS_TRACKED(self));
128
133
 
134
+ struct Nuitka_FrameObject *frame = (struct Nuitka_FrameObject *)self;
129
135
  PyObject *old = frame->m_frame.f_exc_value;
130
136
 
131
137
  if (exception_value == Py_None) {
@@ -139,10 +145,10 @@ static int _Nuitka_Frame_set_exc_value(struct Nuitka_FrameObject *frame, PyObjec
139
145
  return 0;
140
146
  }
141
147
 
142
- static PyObject *_Nuitka_Frame_get_restricted(struct Nuitka_FrameObject *frame, void *closure) {
143
- assert(Nuitka_Frame_CheckExact((PyObject *)frame));
144
- CHECK_OBJECT((PyObject *)frame);
145
- assert(_PyObject_GC_IS_TRACKED(frame));
148
+ static PyObject *_Nuitka_Frame_get_restricted(PyObject *self, void *data) {
149
+ assert(Nuitka_Frame_CheckExact(self));
150
+ CHECK_OBJECT(self);
151
+ assert(_PyObject_GC_IS_TRACKED(self));
146
152
 
147
153
  Py_INCREF_IMMORTAL(Py_False);
148
154
  return Py_False;
@@ -150,13 +156,14 @@ static PyObject *_Nuitka_Frame_get_restricted(struct Nuitka_FrameObject *frame,
150
156
 
151
157
  #endif
152
158
 
153
- static PyObject *_Nuitka_Frame_get_locals(struct Nuitka_FrameObject *nuitka_frame, void *closure) {
154
- assert(Nuitka_Frame_CheckExact((PyObject *)nuitka_frame));
155
- CHECK_OBJECT((PyObject *)nuitka_frame);
156
- assert(_PyObject_GC_IS_TRACKED(nuitka_frame));
159
+ static PyObject *_Nuitka_Frame_get_locals(PyObject *self, void *data) {
160
+ assert(Nuitka_Frame_CheckExact(self));
161
+ CHECK_OBJECT(self);
162
+ assert(_PyObject_GC_IS_TRACKED(self));
157
163
 
158
164
  NUITKA_MAY_BE_UNUSED PyThreadState *tstate = PyThreadState_GET();
159
165
 
166
+ struct Nuitka_FrameObject *nuitka_frame = (struct Nuitka_FrameObject *)self;
160
167
  if (nuitka_frame->m_type_description == NULL) {
161
168
  #if PYTHON_VERSION < 0x3b0
162
169
  PyFrameObject *locals_owner = &nuitka_frame->m_frame;
@@ -237,28 +244,30 @@ static PyObject *_Nuitka_Frame_get_locals(struct Nuitka_FrameObject *nuitka_fram
237
244
  }
238
245
  }
239
246
 
240
- static PyObject *_Nuitka_Frame_get_lineno(struct Nuitka_FrameObject *frame, void *closure) {
241
- assert(Nuitka_Frame_CheckExact((PyObject *)frame));
242
- CHECK_OBJECT((PyObject *)frame);
243
- assert(_PyObject_GC_IS_TRACKED(frame));
247
+ static PyObject *_Nuitka_Frame_get_lineno(PyObject *self, void *data) {
248
+ assert(Nuitka_Frame_CheckExact(self));
249
+ CHECK_OBJECT(self);
250
+ assert(_PyObject_GC_IS_TRACKED(self));
244
251
 
245
- return PyInt_FromLong(frame->m_frame.f_lineno);
252
+ struct Nuitka_FrameObject *frame = (struct Nuitka_FrameObject *)self;
253
+ return Nuitka_PyInt_FromLong(frame->m_frame.f_lineno);
246
254
  }
247
255
 
248
- static PyObject *_Nuitka_Frame_get_trace(struct Nuitka_FrameObject *frame, void *closure) {
249
- assert(Nuitka_Frame_CheckExact((PyObject *)frame));
250
- CHECK_OBJECT((PyObject *)frame);
251
- assert(_PyObject_GC_IS_TRACKED(frame));
256
+ static PyObject *_Nuitka_Frame_get_trace(PyObject *self, void *data) {
257
+ assert(Nuitka_Frame_CheckExact(self));
258
+ CHECK_OBJECT(self);
259
+ assert(_PyObject_GC_IS_TRACKED(self));
252
260
 
261
+ struct Nuitka_FrameObject *frame = (struct Nuitka_FrameObject *)self;
253
262
  PyObject *result = frame->m_frame.f_trace;
254
263
  Py_INCREF(result);
255
264
  return result;
256
265
  }
257
266
 
258
- static int _Nuitka_Frame_set_trace(struct Nuitka_FrameObject *frame, PyObject *v, void *closure) {
259
- assert(Nuitka_Frame_CheckExact((PyObject *)frame));
260
- CHECK_OBJECT((PyObject *)frame);
261
- assert(_PyObject_GC_IS_TRACKED(frame));
267
+ static int _Nuitka_Frame_set_trace(PyObject *self, PyObject *value, void *data) {
268
+ assert(Nuitka_Frame_CheckExact(self));
269
+ CHECK_OBJECT(self);
270
+ assert(_PyObject_GC_IS_TRACKED(self));
262
271
 
263
272
  PyThreadState *tstate = PyThreadState_GET();
264
273
 
@@ -267,20 +276,20 @@ static int _Nuitka_Frame_set_trace(struct Nuitka_FrameObject *frame, PyObject *v
267
276
  }
268
277
 
269
278
  #if PYTHON_VERSION >= 0x370
270
- static PyObject *_Nuitka_Frame_get_trace_lines(struct Nuitka_FrameObject *frame, void *closure) {
271
- assert(Nuitka_Frame_CheckExact((PyObject *)frame));
272
- CHECK_OBJECT((PyObject *)frame);
273
- assert(_PyObject_GC_IS_TRACKED(frame));
279
+ static PyObject *_Nuitka_Frame_get_trace_lines(PyObject *self, void *data) {
280
+ assert(Nuitka_Frame_CheckExact(self));
281
+ CHECK_OBJECT(self);
282
+ assert(_PyObject_GC_IS_TRACKED(self));
274
283
 
275
284
  PyObject *result = Py_False;
276
285
  Py_INCREF_IMMORTAL(result);
277
286
  return result;
278
287
  }
279
288
 
280
- static int _Nuitka_Frame_set_trace_lines(struct Nuitka_FrameObject *frame, PyObject *v, void *closure) {
281
- assert(Nuitka_Frame_CheckExact((PyObject *)frame));
282
- CHECK_OBJECT((PyObject *)frame);
283
- assert(_PyObject_GC_IS_TRACKED(frame));
289
+ static int _Nuitka_Frame_set_trace_lines(PyObject *self, PyObject *value, void *data) {
290
+ assert(Nuitka_Frame_CheckExact(self));
291
+ CHECK_OBJECT(self);
292
+ assert(_PyObject_GC_IS_TRACKED(self));
284
293
 
285
294
  PyThreadState *tstate = PyThreadState_GET();
286
295
 
@@ -288,20 +297,20 @@ static int _Nuitka_Frame_set_trace_lines(struct Nuitka_FrameObject *frame, PyObj
288
297
  return -1;
289
298
  }
290
299
 
291
- static PyObject *_Nuitka_Frame_get_trace_opcodes(struct Nuitka_FrameObject *frame, void *closure) {
292
- assert(Nuitka_Frame_CheckExact((PyObject *)frame));
293
- CHECK_OBJECT((PyObject *)frame);
294
- assert(_PyObject_GC_IS_TRACKED(frame));
300
+ static PyObject *_Nuitka_Frame_get_trace_opcodes(PyObject *self, void *data) {
301
+ assert(Nuitka_Frame_CheckExact(self));
302
+ CHECK_OBJECT(self);
303
+ assert(_PyObject_GC_IS_TRACKED(self));
295
304
 
296
305
  PyObject *result = Py_False;
297
306
  Py_INCREF_IMMORTAL(result);
298
307
  return result;
299
308
  }
300
309
 
301
- static int _Nuitka_Frame_set_trace_opcodes(struct Nuitka_FrameObject *frame, PyObject *v, void *closure) {
302
- assert(Nuitka_Frame_CheckExact((PyObject *)frame));
303
- CHECK_OBJECT((PyObject *)frame);
304
- assert(_PyObject_GC_IS_TRACKED(frame));
310
+ static int _Nuitka_Frame_set_trace_opcodes(PyObject *self, PyObject *value, void *data) {
311
+ assert(Nuitka_Frame_CheckExact(self));
312
+ CHECK_OBJECT(self);
313
+ assert(_PyObject_GC_IS_TRACKED(self));
305
314
 
306
315
  PyThreadState *tstate = PyThreadState_GET();
307
316
 
@@ -311,18 +320,18 @@ static int _Nuitka_Frame_set_trace_opcodes(struct Nuitka_FrameObject *frame, PyO
311
320
  #endif
312
321
 
313
322
  static PyGetSetDef Nuitka_Frame_tp_getset[] = {
314
- {(char *)"f_locals", (getter)_Nuitka_Frame_get_locals, NULL, NULL},
315
- {(char *)"f_lineno", (getter)_Nuitka_Frame_get_lineno, NULL, NULL},
316
- {(char *)"f_trace", (getter)_Nuitka_Frame_get_trace, (setter)_Nuitka_Frame_set_trace, NULL},
323
+ {(char *)"f_locals", _Nuitka_Frame_get_locals, NULL, NULL},
324
+ {(char *)"f_lineno", _Nuitka_Frame_get_lineno, NULL, NULL},
325
+ {(char *)"f_trace", _Nuitka_Frame_get_trace, _Nuitka_Frame_set_trace, NULL},
317
326
  #if PYTHON_VERSION < 0x300
318
- {(char *)"f_restricted", (getter)_Nuitka_Frame_get_restricted, NULL, NULL},
319
- {(char *)"f_exc_traceback", (getter)_Nuitka_Frame_get_exc_traceback, (setter)_Nuitka_Frame_set_exc_traceback, NULL},
320
- {(char *)"f_exc_type", (getter)_Nuitka_Frame_get_exc_type, (setter)_Nuitka_Frame_set_exc_type, NULL},
321
- {(char *)"f_exc_value", (getter)_Nuitka_Frame_get_exc_value, (setter)_Nuitka_Frame_set_exc_value, NULL},
327
+ {(char *)"f_restricted", _Nuitka_Frame_get_restricted, NULL, NULL},
328
+ {(char *)"f_exc_traceback", _Nuitka_Frame_get_exc_traceback, _Nuitka_Frame_set_exc_traceback, NULL},
329
+ {(char *)"f_exc_type", _Nuitka_Frame_get_exc_type, _Nuitka_Frame_set_exc_type, NULL},
330
+ {(char *)"f_exc_value", _Nuitka_Frame_get_exc_value, _Nuitka_Frame_set_exc_value, NULL},
322
331
  #endif
323
332
  #if PYTHON_VERSION >= 0x370
324
- {(char *)"f_trace_lines", (getter)_Nuitka_Frame_get_trace_lines, (setter)_Nuitka_Frame_set_trace_lines, NULL},
325
- {(char *)"f_trace_opcodes", (getter)_Nuitka_Frame_get_trace_opcodes, (setter)_Nuitka_Frame_set_trace_opcodes, NULL},
333
+ {(char *)"f_trace_lines", _Nuitka_Frame_get_trace_lines, _Nuitka_Frame_set_trace_lines, NULL},
334
+ {(char *)"f_trace_opcodes", _Nuitka_Frame_get_trace_opcodes, _Nuitka_Frame_set_trace_opcodes, NULL},
326
335
  #endif
327
336
  {NULL}};
328
337
 
@@ -354,7 +363,8 @@ static void Nuitka_Frame_tp_clear(struct Nuitka_FrameObject *frame) {
354
363
  while (*w != 0) {
355
364
  switch (*w) {
356
365
  case NUITKA_TYPE_DESCRIPTION_OBJECT:
357
- case NUITKA_TYPE_DESCRIPTION_OBJECT_PTR: {
366
+ case NUITKA_TYPE_DESCRIPTION_OBJECT_PTR:
367
+ case NUITKA_TYPE_DESCRIPTION_NILONG: {
358
368
  PyObject *value = *(PyObject **)t;
359
369
  CHECK_OBJECT_X(value);
360
370
 
@@ -436,11 +446,13 @@ static void Nuitka_Frame_tp_dealloc(struct Nuitka_FrameObject *nuitka_frame) {
436
446
 
437
447
  Nuitka_Frame_tp_clear(nuitka_frame);
438
448
 
439
- Py_SET_REFCNT(nuitka_frame, Py_REFCNT(nuitka_frame) - 1);
440
- if (Py_REFCNT(nuitka_frame) >= 1) {
441
- // TODO: Allow this in debug mode, for now we would like to reproduce it.
442
- assert(false);
443
- return;
449
+ if (Py_REFCNT(nuitka_frame) > 0) {
450
+ Py_SET_REFCNT(nuitka_frame, Py_REFCNT(nuitka_frame) - 1);
451
+ if (Py_REFCNT(nuitka_frame) >= 1) {
452
+ // TODO: Allow this in debug mode, for now we would like to reproduce it.
453
+ assert(false);
454
+ return;
455
+ }
444
456
  }
445
457
 
446
458
  #if PYTHON_VERSION >= 0x3b0
@@ -519,6 +531,7 @@ static int Nuitka_Frame_tp_traverse(struct Nuitka_FrameObject *frame, visitproc
519
531
  break;
520
532
  }
521
533
  default:
534
+ NUITKA_CANNOT_GET_HERE("invalid type description");
522
535
  assert(false);
523
536
  }
524
537
 
@@ -530,7 +543,7 @@ static int Nuitka_Frame_tp_traverse(struct Nuitka_FrameObject *frame, visitproc
530
543
 
531
544
  #if PYTHON_VERSION >= 0x300
532
545
 
533
- static PyObject *Nuitka_Frame_clear(struct Nuitka_FrameObject *frame) {
546
+ static PyObject *Nuitka_Frame_clear(struct Nuitka_FrameObject *frame, PyObject *unused) {
534
547
  assert(Nuitka_Frame_CheckExact((PyObject *)frame));
535
548
  CHECK_OBJECT((PyObject *)frame);
536
549
  assert(_PyObject_GC_IS_TRACKED(frame));
@@ -624,7 +637,7 @@ static inline Py_ssize_t Nuitka_Frame_GetSize(struct Nuitka_FrameObject *frame)
624
637
  #endif
625
638
  }
626
639
 
627
- static PyObject *Nuitka_Frame_sizeof(struct Nuitka_FrameObject *frame) {
640
+ static PyObject *Nuitka_Frame_sizeof(struct Nuitka_FrameObject *frame, PyObject *unused) {
628
641
  assert(Nuitka_Frame_CheckExact((PyObject *)frame));
629
642
  CHECK_OBJECT((PyObject *)frame);
630
643
  assert(_PyObject_GC_IS_TRACKED(frame));
@@ -774,7 +787,7 @@ static struct Nuitka_FrameObject *_MAKE_COMPILED_FRAME(PyCodeObject *code, PyObj
774
787
  CHECK_OBJECT_X(f_locals);
775
788
  locals_owner->f_locals = f_locals;
776
789
 
777
- #if PYTHON_VERSION < 0x340
790
+ #if PYTHON_VERSION < 0x300
778
791
  frame->f_tstate = PyThreadState_GET();
779
792
  #endif
780
793
 
@@ -801,6 +814,8 @@ static struct Nuitka_FrameObject *_MAKE_COMPILED_FRAME(PyCodeObject *code, PyObj
801
814
  #endif
802
815
  #if PYTHON_VERSION < 0x3d0
803
816
  result->m_interpreter_frame.prev_instr = _PyCode_CODE(code);
817
+ #else
818
+ result->m_interpreter_frame.instr_ptr = _PyCode_CODE(code);
804
819
  #endif
805
820
  result->m_frame.f_frame = &result->m_interpreter_frame;
806
821
 
@@ -945,8 +960,12 @@ PyCodeObject *makeCodeObject(PyObject *filename, int line, int flags, PyObject *
945
960
 
946
961
  empty_code = PyObject_GetAttrString(empty_code_object, "co_code");
947
962
  CHECK_OBJECT(empty_code);
963
+ #if PYTHON_VERSION >= 0x3c0
964
+ lnotab = ((PyCodeObject *)empty_code_object)->co_linetable; // spell-checker: ignore linetable
965
+ #else
948
966
  lnotab = PyObject_GetAttrString(empty_code_object, "co_lnotab");
949
967
  CHECK_OBJECT(lnotab);
968
+ #endif
950
969
  consts = PyObject_GetAttrString(empty_code_object, "co_consts");
951
970
  CHECK_OBJECT(consts);
952
971
  names = PyObject_GetAttrString(empty_code_object, "co_names");
@@ -1100,7 +1119,19 @@ void Nuitka_Frame_AttachLocals(struct Nuitka_FrameObject *frame_object, char con
1100
1119
 
1101
1120
  break;
1102
1121
  }
1122
+ case NUITKA_TYPE_DESCRIPTION_NILONG: {
1123
+ nuitka_ilong value = va_arg(ap, nuitka_ilong);
1124
+ ENFORCE_NILONG_OBJECT_VALUE(&value);
1125
+
1126
+ CHECK_OBJECT(value.python_value);
1127
+ memcpy(t, &value.python_value, sizeof(PyObject *));
1128
+ Py_XINCREF(value.python_value);
1129
+ t += sizeof(PyObject *);
1130
+
1131
+ break;
1132
+ }
1103
1133
  default:
1134
+ NUITKA_CANNOT_GET_HERE("invalid type description");
1104
1135
  assert(false);
1105
1136
  }
1106
1137