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
@@ -0,0 +1,1273 @@
1
+ /* MIT License
2
+ *
3
+ * Copyright (c) 2016-2022 INRIA, CMU and Microsoft Corporation
4
+ * Copyright (c) 2022-2023 HACL* Contributors
5
+ *
6
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ * of this software and associated documentation files (the "Software"), to deal
8
+ * in the Software without restriction, including without limitation the rights
9
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ * copies of the Software, and to permit persons to whom the Software is
11
+ * furnished to do so, subject to the following conditions:
12
+ *
13
+ * The above copyright notice and this permission notice shall be included in all
14
+ * copies or substantial portions of the Software.
15
+ *
16
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
+ * SOFTWARE.
23
+ */
24
+
25
+
26
+ #include "internal/Hacl_Hash_SHA2.h"
27
+
28
+
29
+
30
+ void Hacl_Hash_SHA2_sha256_init(uint32_t *hash)
31
+ {
32
+ KRML_MAYBE_FOR8(i,
33
+ 0U,
34
+ 8U,
35
+ 1U,
36
+ uint32_t *os = hash;
37
+ uint32_t x = Hacl_Hash_SHA2_h256[i];
38
+ os[i] = x;);
39
+ }
40
+
41
+ static inline void sha256_update(uint8_t *b, uint32_t *hash)
42
+ {
43
+ uint32_t hash_old[8U] = { 0U };
44
+ uint32_t ws[16U] = { 0U };
45
+ memcpy(hash_old, hash, 8U * sizeof (uint32_t));
46
+ uint8_t *b10 = b;
47
+ uint32_t u = load32_be(b10);
48
+ ws[0U] = u;
49
+ uint32_t u0 = load32_be(b10 + 4U);
50
+ ws[1U] = u0;
51
+ uint32_t u1 = load32_be(b10 + 8U);
52
+ ws[2U] = u1;
53
+ uint32_t u2 = load32_be(b10 + 12U);
54
+ ws[3U] = u2;
55
+ uint32_t u3 = load32_be(b10 + 16U);
56
+ ws[4U] = u3;
57
+ uint32_t u4 = load32_be(b10 + 20U);
58
+ ws[5U] = u4;
59
+ uint32_t u5 = load32_be(b10 + 24U);
60
+ ws[6U] = u5;
61
+ uint32_t u6 = load32_be(b10 + 28U);
62
+ ws[7U] = u6;
63
+ uint32_t u7 = load32_be(b10 + 32U);
64
+ ws[8U] = u7;
65
+ uint32_t u8 = load32_be(b10 + 36U);
66
+ ws[9U] = u8;
67
+ uint32_t u9 = load32_be(b10 + 40U);
68
+ ws[10U] = u9;
69
+ uint32_t u10 = load32_be(b10 + 44U);
70
+ ws[11U] = u10;
71
+ uint32_t u11 = load32_be(b10 + 48U);
72
+ ws[12U] = u11;
73
+ uint32_t u12 = load32_be(b10 + 52U);
74
+ ws[13U] = u12;
75
+ uint32_t u13 = load32_be(b10 + 56U);
76
+ ws[14U] = u13;
77
+ uint32_t u14 = load32_be(b10 + 60U);
78
+ ws[15U] = u14;
79
+ KRML_MAYBE_FOR4(i0,
80
+ 0U,
81
+ 4U,
82
+ 1U,
83
+ KRML_MAYBE_FOR16(i,
84
+ 0U,
85
+ 16U,
86
+ 1U,
87
+ uint32_t k_t = Hacl_Hash_SHA2_k224_256[16U * i0 + i];
88
+ uint32_t ws_t = ws[i];
89
+ uint32_t a0 = hash[0U];
90
+ uint32_t b0 = hash[1U];
91
+ uint32_t c0 = hash[2U];
92
+ uint32_t d0 = hash[3U];
93
+ uint32_t e0 = hash[4U];
94
+ uint32_t f0 = hash[5U];
95
+ uint32_t g0 = hash[6U];
96
+ uint32_t h02 = hash[7U];
97
+ uint32_t k_e_t = k_t;
98
+ uint32_t
99
+ t1 =
100
+ h02
101
+ + ((e0 << 26U | e0 >> 6U) ^ ((e0 << 21U | e0 >> 11U) ^ (e0 << 7U | e0 >> 25U)))
102
+ + ((e0 & f0) ^ (~e0 & g0))
103
+ + k_e_t
104
+ + ws_t;
105
+ uint32_t
106
+ t2 =
107
+ ((a0 << 30U | a0 >> 2U) ^ ((a0 << 19U | a0 >> 13U) ^ (a0 << 10U | a0 >> 22U)))
108
+ + ((a0 & b0) ^ ((a0 & c0) ^ (b0 & c0)));
109
+ uint32_t a1 = t1 + t2;
110
+ uint32_t b1 = a0;
111
+ uint32_t c1 = b0;
112
+ uint32_t d1 = c0;
113
+ uint32_t e1 = d0 + t1;
114
+ uint32_t f1 = e0;
115
+ uint32_t g1 = f0;
116
+ uint32_t h12 = g0;
117
+ hash[0U] = a1;
118
+ hash[1U] = b1;
119
+ hash[2U] = c1;
120
+ hash[3U] = d1;
121
+ hash[4U] = e1;
122
+ hash[5U] = f1;
123
+ hash[6U] = g1;
124
+ hash[7U] = h12;);
125
+ if (i0 < 3U)
126
+ {
127
+ KRML_MAYBE_FOR16(i,
128
+ 0U,
129
+ 16U,
130
+ 1U,
131
+ uint32_t t16 = ws[i];
132
+ uint32_t t15 = ws[(i + 1U) % 16U];
133
+ uint32_t t7 = ws[(i + 9U) % 16U];
134
+ uint32_t t2 = ws[(i + 14U) % 16U];
135
+ uint32_t s1 = (t2 << 15U | t2 >> 17U) ^ ((t2 << 13U | t2 >> 19U) ^ t2 >> 10U);
136
+ uint32_t s0 = (t15 << 25U | t15 >> 7U) ^ ((t15 << 14U | t15 >> 18U) ^ t15 >> 3U);
137
+ ws[i] = s1 + t7 + s0 + t16;);
138
+ });
139
+ KRML_MAYBE_FOR8(i,
140
+ 0U,
141
+ 8U,
142
+ 1U,
143
+ uint32_t *os = hash;
144
+ uint32_t x = hash[i] + hash_old[i];
145
+ os[i] = x;);
146
+ }
147
+
148
+ void Hacl_Hash_SHA2_sha256_update_nblocks(uint32_t len, uint8_t *b, uint32_t *st)
149
+ {
150
+ uint32_t blocks = len / 64U;
151
+ for (uint32_t i = 0U; i < blocks; i++)
152
+ {
153
+ uint8_t *b0 = b;
154
+ uint8_t *mb = b0 + i * 64U;
155
+ sha256_update(mb, st);
156
+ }
157
+ }
158
+
159
+ void
160
+ Hacl_Hash_SHA2_sha256_update_last(uint64_t totlen, uint32_t len, uint8_t *b, uint32_t *hash)
161
+ {
162
+ uint32_t blocks;
163
+ if (len + 8U + 1U <= 64U)
164
+ {
165
+ blocks = 1U;
166
+ }
167
+ else
168
+ {
169
+ blocks = 2U;
170
+ }
171
+ uint32_t fin = blocks * 64U;
172
+ uint8_t last[128U] = { 0U };
173
+ uint8_t totlen_buf[8U] = { 0U };
174
+ uint64_t total_len_bits = totlen << 3U;
175
+ store64_be(totlen_buf, total_len_bits);
176
+ uint8_t *b0 = b;
177
+ memcpy(last, b0, len * sizeof (uint8_t));
178
+ last[len] = 0x80U;
179
+ memcpy(last + fin - 8U, totlen_buf, 8U * sizeof (uint8_t));
180
+ uint8_t *last00 = last;
181
+ uint8_t *last10 = last + 64U;
182
+ uint8_t *l0 = last00;
183
+ uint8_t *l1 = last10;
184
+ uint8_t *lb0 = l0;
185
+ uint8_t *lb1 = l1;
186
+ uint8_t *last0 = lb0;
187
+ uint8_t *last1 = lb1;
188
+ sha256_update(last0, hash);
189
+ if (blocks > 1U)
190
+ {
191
+ sha256_update(last1, hash);
192
+ return;
193
+ }
194
+ }
195
+
196
+ void Hacl_Hash_SHA2_sha256_finish(uint32_t *st, uint8_t *h)
197
+ {
198
+ uint8_t hbuf[32U] = { 0U };
199
+ KRML_MAYBE_FOR8(i, 0U, 8U, 1U, store32_be(hbuf + i * 4U, st[i]););
200
+ memcpy(h, hbuf, 32U * sizeof (uint8_t));
201
+ }
202
+
203
+ void Hacl_Hash_SHA2_sha224_init(uint32_t *hash)
204
+ {
205
+ KRML_MAYBE_FOR8(i,
206
+ 0U,
207
+ 8U,
208
+ 1U,
209
+ uint32_t *os = hash;
210
+ uint32_t x = Hacl_Hash_SHA2_h224[i];
211
+ os[i] = x;);
212
+ }
213
+
214
+ static inline void sha224_update_nblocks(uint32_t len, uint8_t *b, uint32_t *st)
215
+ {
216
+ Hacl_Hash_SHA2_sha256_update_nblocks(len, b, st);
217
+ }
218
+
219
+ void Hacl_Hash_SHA2_sha224_update_last(uint64_t totlen, uint32_t len, uint8_t *b, uint32_t *st)
220
+ {
221
+ Hacl_Hash_SHA2_sha256_update_last(totlen, len, b, st);
222
+ }
223
+
224
+ void Hacl_Hash_SHA2_sha224_finish(uint32_t *st, uint8_t *h)
225
+ {
226
+ uint8_t hbuf[32U] = { 0U };
227
+ KRML_MAYBE_FOR8(i, 0U, 8U, 1U, store32_be(hbuf + i * 4U, st[i]););
228
+ memcpy(h, hbuf, 28U * sizeof (uint8_t));
229
+ }
230
+
231
+ void Hacl_Hash_SHA2_sha512_init(uint64_t *hash)
232
+ {
233
+ KRML_MAYBE_FOR8(i,
234
+ 0U,
235
+ 8U,
236
+ 1U,
237
+ uint64_t *os = hash;
238
+ uint64_t x = Hacl_Hash_SHA2_h512[i];
239
+ os[i] = x;);
240
+ }
241
+
242
+ static inline void sha512_update(uint8_t *b, uint64_t *hash)
243
+ {
244
+ uint64_t hash_old[8U] = { 0U };
245
+ uint64_t ws[16U] = { 0U };
246
+ memcpy(hash_old, hash, 8U * sizeof (uint64_t));
247
+ uint8_t *b10 = b;
248
+ uint64_t u = load64_be(b10);
249
+ ws[0U] = u;
250
+ uint64_t u0 = load64_be(b10 + 8U);
251
+ ws[1U] = u0;
252
+ uint64_t u1 = load64_be(b10 + 16U);
253
+ ws[2U] = u1;
254
+ uint64_t u2 = load64_be(b10 + 24U);
255
+ ws[3U] = u2;
256
+ uint64_t u3 = load64_be(b10 + 32U);
257
+ ws[4U] = u3;
258
+ uint64_t u4 = load64_be(b10 + 40U);
259
+ ws[5U] = u4;
260
+ uint64_t u5 = load64_be(b10 + 48U);
261
+ ws[6U] = u5;
262
+ uint64_t u6 = load64_be(b10 + 56U);
263
+ ws[7U] = u6;
264
+ uint64_t u7 = load64_be(b10 + 64U);
265
+ ws[8U] = u7;
266
+ uint64_t u8 = load64_be(b10 + 72U);
267
+ ws[9U] = u8;
268
+ uint64_t u9 = load64_be(b10 + 80U);
269
+ ws[10U] = u9;
270
+ uint64_t u10 = load64_be(b10 + 88U);
271
+ ws[11U] = u10;
272
+ uint64_t u11 = load64_be(b10 + 96U);
273
+ ws[12U] = u11;
274
+ uint64_t u12 = load64_be(b10 + 104U);
275
+ ws[13U] = u12;
276
+ uint64_t u13 = load64_be(b10 + 112U);
277
+ ws[14U] = u13;
278
+ uint64_t u14 = load64_be(b10 + 120U);
279
+ ws[15U] = u14;
280
+ KRML_MAYBE_FOR5(i0,
281
+ 0U,
282
+ 5U,
283
+ 1U,
284
+ KRML_MAYBE_FOR16(i,
285
+ 0U,
286
+ 16U,
287
+ 1U,
288
+ uint64_t k_t = Hacl_Hash_SHA2_k384_512[16U * i0 + i];
289
+ uint64_t ws_t = ws[i];
290
+ uint64_t a0 = hash[0U];
291
+ uint64_t b0 = hash[1U];
292
+ uint64_t c0 = hash[2U];
293
+ uint64_t d0 = hash[3U];
294
+ uint64_t e0 = hash[4U];
295
+ uint64_t f0 = hash[5U];
296
+ uint64_t g0 = hash[6U];
297
+ uint64_t h02 = hash[7U];
298
+ uint64_t k_e_t = k_t;
299
+ uint64_t
300
+ t1 =
301
+ h02
302
+ + ((e0 << 50U | e0 >> 14U) ^ ((e0 << 46U | e0 >> 18U) ^ (e0 << 23U | e0 >> 41U)))
303
+ + ((e0 & f0) ^ (~e0 & g0))
304
+ + k_e_t
305
+ + ws_t;
306
+ uint64_t
307
+ t2 =
308
+ ((a0 << 36U | a0 >> 28U) ^ ((a0 << 30U | a0 >> 34U) ^ (a0 << 25U | a0 >> 39U)))
309
+ + ((a0 & b0) ^ ((a0 & c0) ^ (b0 & c0)));
310
+ uint64_t a1 = t1 + t2;
311
+ uint64_t b1 = a0;
312
+ uint64_t c1 = b0;
313
+ uint64_t d1 = c0;
314
+ uint64_t e1 = d0 + t1;
315
+ uint64_t f1 = e0;
316
+ uint64_t g1 = f0;
317
+ uint64_t h12 = g0;
318
+ hash[0U] = a1;
319
+ hash[1U] = b1;
320
+ hash[2U] = c1;
321
+ hash[3U] = d1;
322
+ hash[4U] = e1;
323
+ hash[5U] = f1;
324
+ hash[6U] = g1;
325
+ hash[7U] = h12;);
326
+ if (i0 < 4U)
327
+ {
328
+ KRML_MAYBE_FOR16(i,
329
+ 0U,
330
+ 16U,
331
+ 1U,
332
+ uint64_t t16 = ws[i];
333
+ uint64_t t15 = ws[(i + 1U) % 16U];
334
+ uint64_t t7 = ws[(i + 9U) % 16U];
335
+ uint64_t t2 = ws[(i + 14U) % 16U];
336
+ uint64_t s1 = (t2 << 45U | t2 >> 19U) ^ ((t2 << 3U | t2 >> 61U) ^ t2 >> 6U);
337
+ uint64_t s0 = (t15 << 63U | t15 >> 1U) ^ ((t15 << 56U | t15 >> 8U) ^ t15 >> 7U);
338
+ ws[i] = s1 + t7 + s0 + t16;);
339
+ });
340
+ KRML_MAYBE_FOR8(i,
341
+ 0U,
342
+ 8U,
343
+ 1U,
344
+ uint64_t *os = hash;
345
+ uint64_t x = hash[i] + hash_old[i];
346
+ os[i] = x;);
347
+ }
348
+
349
+ void Hacl_Hash_SHA2_sha512_update_nblocks(uint32_t len, uint8_t *b, uint64_t *st)
350
+ {
351
+ uint32_t blocks = len / 128U;
352
+ for (uint32_t i = 0U; i < blocks; i++)
353
+ {
354
+ uint8_t *b0 = b;
355
+ uint8_t *mb = b0 + i * 128U;
356
+ sha512_update(mb, st);
357
+ }
358
+ }
359
+
360
+ void
361
+ Hacl_Hash_SHA2_sha512_update_last(
362
+ FStar_UInt128_uint128 totlen,
363
+ uint32_t len,
364
+ uint8_t *b,
365
+ uint64_t *hash
366
+ )
367
+ {
368
+ uint32_t blocks;
369
+ if (len + 16U + 1U <= 128U)
370
+ {
371
+ blocks = 1U;
372
+ }
373
+ else
374
+ {
375
+ blocks = 2U;
376
+ }
377
+ uint32_t fin = blocks * 128U;
378
+ uint8_t last[256U] = { 0U };
379
+ uint8_t totlen_buf[16U] = { 0U };
380
+ FStar_UInt128_uint128 total_len_bits = FStar_UInt128_shift_left(totlen, 3U);
381
+ store128_be(totlen_buf, total_len_bits);
382
+ uint8_t *b0 = b;
383
+ memcpy(last, b0, len * sizeof (uint8_t));
384
+ last[len] = 0x80U;
385
+ memcpy(last + fin - 16U, totlen_buf, 16U * sizeof (uint8_t));
386
+ uint8_t *last00 = last;
387
+ uint8_t *last10 = last + 128U;
388
+ uint8_t *l0 = last00;
389
+ uint8_t *l1 = last10;
390
+ uint8_t *lb0 = l0;
391
+ uint8_t *lb1 = l1;
392
+ uint8_t *last0 = lb0;
393
+ uint8_t *last1 = lb1;
394
+ sha512_update(last0, hash);
395
+ if (blocks > 1U)
396
+ {
397
+ sha512_update(last1, hash);
398
+ return;
399
+ }
400
+ }
401
+
402
+ void Hacl_Hash_SHA2_sha512_finish(uint64_t *st, uint8_t *h)
403
+ {
404
+ uint8_t hbuf[64U] = { 0U };
405
+ KRML_MAYBE_FOR8(i, 0U, 8U, 1U, store64_be(hbuf + i * 8U, st[i]););
406
+ memcpy(h, hbuf, 64U * sizeof (uint8_t));
407
+ }
408
+
409
+ void Hacl_Hash_SHA2_sha384_init(uint64_t *hash)
410
+ {
411
+ KRML_MAYBE_FOR8(i,
412
+ 0U,
413
+ 8U,
414
+ 1U,
415
+ uint64_t *os = hash;
416
+ uint64_t x = Hacl_Hash_SHA2_h384[i];
417
+ os[i] = x;);
418
+ }
419
+
420
+ void Hacl_Hash_SHA2_sha384_update_nblocks(uint32_t len, uint8_t *b, uint64_t *st)
421
+ {
422
+ Hacl_Hash_SHA2_sha512_update_nblocks(len, b, st);
423
+ }
424
+
425
+ void
426
+ Hacl_Hash_SHA2_sha384_update_last(
427
+ FStar_UInt128_uint128 totlen,
428
+ uint32_t len,
429
+ uint8_t *b,
430
+ uint64_t *st
431
+ )
432
+ {
433
+ Hacl_Hash_SHA2_sha512_update_last(totlen, len, b, st);
434
+ }
435
+
436
+ void Hacl_Hash_SHA2_sha384_finish(uint64_t *st, uint8_t *h)
437
+ {
438
+ uint8_t hbuf[64U] = { 0U };
439
+ KRML_MAYBE_FOR8(i, 0U, 8U, 1U, store64_be(hbuf + i * 8U, st[i]););
440
+ memcpy(h, hbuf, 48U * sizeof (uint8_t));
441
+ }
442
+
443
+ /**
444
+ Allocate initial state for the SHA2_256 hash. The state is to be freed by
445
+ calling `free_256`.
446
+ */
447
+ Hacl_Streaming_MD_state_32 *Hacl_Hash_SHA2_malloc_256(void)
448
+ {
449
+ uint8_t *buf = (uint8_t *)KRML_HOST_CALLOC(64U, sizeof (uint8_t));
450
+ uint32_t *block_state = (uint32_t *)KRML_HOST_CALLOC(8U, sizeof (uint32_t));
451
+ Hacl_Streaming_MD_state_32
452
+ s = { .block_state = block_state, .buf = buf, .total_len = (uint64_t)0U };
453
+ Hacl_Streaming_MD_state_32
454
+ *p = (Hacl_Streaming_MD_state_32 *)KRML_HOST_MALLOC(sizeof (Hacl_Streaming_MD_state_32));
455
+ p[0U] = s;
456
+ Hacl_Hash_SHA2_sha256_init(block_state);
457
+ return p;
458
+ }
459
+
460
+ /**
461
+ Copies the state passed as argument into a newly allocated state (deep copy).
462
+ The state is to be freed by calling `free_256`. Cloning the state this way is
463
+ useful, for instance, if your control-flow diverges and you need to feed
464
+ more (different) data into the hash in each branch.
465
+ */
466
+ Hacl_Streaming_MD_state_32 *Hacl_Hash_SHA2_copy_256(Hacl_Streaming_MD_state_32 *state)
467
+ {
468
+ Hacl_Streaming_MD_state_32 scrut = *state;
469
+ uint32_t *block_state0 = scrut.block_state;
470
+ uint8_t *buf0 = scrut.buf;
471
+ uint64_t total_len0 = scrut.total_len;
472
+ uint8_t *buf = (uint8_t *)KRML_HOST_CALLOC(64U, sizeof (uint8_t));
473
+ memcpy(buf, buf0, 64U * sizeof (uint8_t));
474
+ uint32_t *block_state = (uint32_t *)KRML_HOST_CALLOC(8U, sizeof (uint32_t));
475
+ memcpy(block_state, block_state0, 8U * sizeof (uint32_t));
476
+ Hacl_Streaming_MD_state_32
477
+ s = { .block_state = block_state, .buf = buf, .total_len = total_len0 };
478
+ Hacl_Streaming_MD_state_32
479
+ *p = (Hacl_Streaming_MD_state_32 *)KRML_HOST_MALLOC(sizeof (Hacl_Streaming_MD_state_32));
480
+ p[0U] = s;
481
+ return p;
482
+ }
483
+
484
+ /**
485
+ Reset an existing state to the initial hash state with empty data.
486
+ */
487
+ void Hacl_Hash_SHA2_reset_256(Hacl_Streaming_MD_state_32 *state)
488
+ {
489
+ Hacl_Streaming_MD_state_32 scrut = *state;
490
+ uint8_t *buf = scrut.buf;
491
+ uint32_t *block_state = scrut.block_state;
492
+ Hacl_Hash_SHA2_sha256_init(block_state);
493
+ Hacl_Streaming_MD_state_32
494
+ tmp = { .block_state = block_state, .buf = buf, .total_len = (uint64_t)0U };
495
+ state[0U] = tmp;
496
+ }
497
+
498
+ static inline Hacl_Streaming_Types_error_code
499
+ update_224_256(Hacl_Streaming_MD_state_32 *state, uint8_t *chunk, uint32_t chunk_len)
500
+ {
501
+ Hacl_Streaming_MD_state_32 s = *state;
502
+ uint64_t total_len = s.total_len;
503
+ if ((uint64_t)chunk_len > 2305843009213693951ULL - total_len)
504
+ {
505
+ return Hacl_Streaming_Types_MaximumLengthExceeded;
506
+ }
507
+ uint32_t sz;
508
+ if (total_len % (uint64_t)64U == 0ULL && total_len > 0ULL)
509
+ {
510
+ sz = 64U;
511
+ }
512
+ else
513
+ {
514
+ sz = (uint32_t)(total_len % (uint64_t)64U);
515
+ }
516
+ if (chunk_len <= 64U - sz)
517
+ {
518
+ Hacl_Streaming_MD_state_32 s1 = *state;
519
+ uint32_t *block_state1 = s1.block_state;
520
+ uint8_t *buf = s1.buf;
521
+ uint64_t total_len1 = s1.total_len;
522
+ uint32_t sz1;
523
+ if (total_len1 % (uint64_t)64U == 0ULL && total_len1 > 0ULL)
524
+ {
525
+ sz1 = 64U;
526
+ }
527
+ else
528
+ {
529
+ sz1 = (uint32_t)(total_len1 % (uint64_t)64U);
530
+ }
531
+ uint8_t *buf2 = buf + sz1;
532
+ memcpy(buf2, chunk, chunk_len * sizeof (uint8_t));
533
+ uint64_t total_len2 = total_len1 + (uint64_t)chunk_len;
534
+ *state
535
+ =
536
+ (
537
+ (Hacl_Streaming_MD_state_32){
538
+ .block_state = block_state1,
539
+ .buf = buf,
540
+ .total_len = total_len2
541
+ }
542
+ );
543
+ }
544
+ else if (sz == 0U)
545
+ {
546
+ Hacl_Streaming_MD_state_32 s1 = *state;
547
+ uint32_t *block_state1 = s1.block_state;
548
+ uint8_t *buf = s1.buf;
549
+ uint64_t total_len1 = s1.total_len;
550
+ uint32_t sz1;
551
+ if (total_len1 % (uint64_t)64U == 0ULL && total_len1 > 0ULL)
552
+ {
553
+ sz1 = 64U;
554
+ }
555
+ else
556
+ {
557
+ sz1 = (uint32_t)(total_len1 % (uint64_t)64U);
558
+ }
559
+ if (!(sz1 == 0U))
560
+ {
561
+ Hacl_Hash_SHA2_sha256_update_nblocks(64U, buf, block_state1);
562
+ }
563
+ uint32_t ite;
564
+ if ((uint64_t)chunk_len % (uint64_t)64U == 0ULL && (uint64_t)chunk_len > 0ULL)
565
+ {
566
+ ite = 64U;
567
+ }
568
+ else
569
+ {
570
+ ite = (uint32_t)((uint64_t)chunk_len % (uint64_t)64U);
571
+ }
572
+ uint32_t n_blocks = (chunk_len - ite) / 64U;
573
+ uint32_t data1_len = n_blocks * 64U;
574
+ uint32_t data2_len = chunk_len - data1_len;
575
+ uint8_t *data1 = chunk;
576
+ uint8_t *data2 = chunk + data1_len;
577
+ Hacl_Hash_SHA2_sha256_update_nblocks(data1_len / 64U * 64U, data1, block_state1);
578
+ uint8_t *dst = buf;
579
+ memcpy(dst, data2, data2_len * sizeof (uint8_t));
580
+ *state
581
+ =
582
+ (
583
+ (Hacl_Streaming_MD_state_32){
584
+ .block_state = block_state1,
585
+ .buf = buf,
586
+ .total_len = total_len1 + (uint64_t)chunk_len
587
+ }
588
+ );
589
+ }
590
+ else
591
+ {
592
+ uint32_t diff = 64U - sz;
593
+ uint8_t *chunk1 = chunk;
594
+ uint8_t *chunk2 = chunk + diff;
595
+ Hacl_Streaming_MD_state_32 s1 = *state;
596
+ uint32_t *block_state10 = s1.block_state;
597
+ uint8_t *buf0 = s1.buf;
598
+ uint64_t total_len10 = s1.total_len;
599
+ uint32_t sz10;
600
+ if (total_len10 % (uint64_t)64U == 0ULL && total_len10 > 0ULL)
601
+ {
602
+ sz10 = 64U;
603
+ }
604
+ else
605
+ {
606
+ sz10 = (uint32_t)(total_len10 % (uint64_t)64U);
607
+ }
608
+ uint8_t *buf2 = buf0 + sz10;
609
+ memcpy(buf2, chunk1, diff * sizeof (uint8_t));
610
+ uint64_t total_len2 = total_len10 + (uint64_t)diff;
611
+ *state
612
+ =
613
+ (
614
+ (Hacl_Streaming_MD_state_32){
615
+ .block_state = block_state10,
616
+ .buf = buf0,
617
+ .total_len = total_len2
618
+ }
619
+ );
620
+ Hacl_Streaming_MD_state_32 s10 = *state;
621
+ uint32_t *block_state1 = s10.block_state;
622
+ uint8_t *buf = s10.buf;
623
+ uint64_t total_len1 = s10.total_len;
624
+ uint32_t sz1;
625
+ if (total_len1 % (uint64_t)64U == 0ULL && total_len1 > 0ULL)
626
+ {
627
+ sz1 = 64U;
628
+ }
629
+ else
630
+ {
631
+ sz1 = (uint32_t)(total_len1 % (uint64_t)64U);
632
+ }
633
+ if (!(sz1 == 0U))
634
+ {
635
+ Hacl_Hash_SHA2_sha256_update_nblocks(64U, buf, block_state1);
636
+ }
637
+ uint32_t ite;
638
+ if
639
+ ((uint64_t)(chunk_len - diff) % (uint64_t)64U == 0ULL && (uint64_t)(chunk_len - diff) > 0ULL)
640
+ {
641
+ ite = 64U;
642
+ }
643
+ else
644
+ {
645
+ ite = (uint32_t)((uint64_t)(chunk_len - diff) % (uint64_t)64U);
646
+ }
647
+ uint32_t n_blocks = (chunk_len - diff - ite) / 64U;
648
+ uint32_t data1_len = n_blocks * 64U;
649
+ uint32_t data2_len = chunk_len - diff - data1_len;
650
+ uint8_t *data1 = chunk2;
651
+ uint8_t *data2 = chunk2 + data1_len;
652
+ Hacl_Hash_SHA2_sha256_update_nblocks(data1_len / 64U * 64U, data1, block_state1);
653
+ uint8_t *dst = buf;
654
+ memcpy(dst, data2, data2_len * sizeof (uint8_t));
655
+ *state
656
+ =
657
+ (
658
+ (Hacl_Streaming_MD_state_32){
659
+ .block_state = block_state1,
660
+ .buf = buf,
661
+ .total_len = total_len1 + (uint64_t)(chunk_len - diff)
662
+ }
663
+ );
664
+ }
665
+ return Hacl_Streaming_Types_Success;
666
+ }
667
+
668
+ /**
669
+ Feed an arbitrary amount of data into the hash. This function returns 0 for
670
+ success, or 1 if the combined length of all of the data passed to `update_256`
671
+ (since the last call to `reset_256`) exceeds 2^61-1 bytes.
672
+
673
+ This function is identical to the update function for SHA2_224.
674
+ */
675
+ Hacl_Streaming_Types_error_code
676
+ Hacl_Hash_SHA2_update_256(
677
+ Hacl_Streaming_MD_state_32 *state,
678
+ uint8_t *input,
679
+ uint32_t input_len
680
+ )
681
+ {
682
+ return update_224_256(state, input, input_len);
683
+ }
684
+
685
+ /**
686
+ Write the resulting hash into `output`, an array of 32 bytes. The state remains
687
+ valid after a call to `digest_256`, meaning the user may feed more data into
688
+ the hash via `update_256`. (The digest_256 function operates on an internal copy of
689
+ the state and therefore does not invalidate the client-held state `p`.)
690
+ */
691
+ void Hacl_Hash_SHA2_digest_256(Hacl_Streaming_MD_state_32 *state, uint8_t *output)
692
+ {
693
+ Hacl_Streaming_MD_state_32 scrut = *state;
694
+ uint32_t *block_state = scrut.block_state;
695
+ uint8_t *buf_ = scrut.buf;
696
+ uint64_t total_len = scrut.total_len;
697
+ uint32_t r;
698
+ if (total_len % (uint64_t)64U == 0ULL && total_len > 0ULL)
699
+ {
700
+ r = 64U;
701
+ }
702
+ else
703
+ {
704
+ r = (uint32_t)(total_len % (uint64_t)64U);
705
+ }
706
+ uint8_t *buf_1 = buf_;
707
+ uint32_t tmp_block_state[8U] = { 0U };
708
+ memcpy(tmp_block_state, block_state, 8U * sizeof (uint32_t));
709
+ uint32_t ite;
710
+ if (r % 64U == 0U && r > 0U)
711
+ {
712
+ ite = 64U;
713
+ }
714
+ else
715
+ {
716
+ ite = r % 64U;
717
+ }
718
+ uint8_t *buf_last = buf_1 + r - ite;
719
+ uint8_t *buf_multi = buf_1;
720
+ Hacl_Hash_SHA2_sha256_update_nblocks(0U, buf_multi, tmp_block_state);
721
+ uint64_t prev_len_last = total_len - (uint64_t)r;
722
+ Hacl_Hash_SHA2_sha256_update_last(prev_len_last + (uint64_t)r, r, buf_last, tmp_block_state);
723
+ Hacl_Hash_SHA2_sha256_finish(tmp_block_state, output);
724
+ }
725
+
726
+ /**
727
+ Free a state allocated with `malloc_256`.
728
+
729
+ This function is identical to the free function for SHA2_224.
730
+ */
731
+ void Hacl_Hash_SHA2_free_256(Hacl_Streaming_MD_state_32 *state)
732
+ {
733
+ Hacl_Streaming_MD_state_32 scrut = *state;
734
+ uint8_t *buf = scrut.buf;
735
+ uint32_t *block_state = scrut.block_state;
736
+ KRML_HOST_FREE(block_state);
737
+ KRML_HOST_FREE(buf);
738
+ KRML_HOST_FREE(state);
739
+ }
740
+
741
+ /**
742
+ Hash `input`, of len `input_len`, into `output`, an array of 32 bytes.
743
+ */
744
+ void Hacl_Hash_SHA2_hash_256(uint8_t *output, uint8_t *input, uint32_t input_len)
745
+ {
746
+ uint8_t *ib = input;
747
+ uint8_t *rb = output;
748
+ uint32_t st[8U] = { 0U };
749
+ Hacl_Hash_SHA2_sha256_init(st);
750
+ uint32_t rem = input_len % 64U;
751
+ uint64_t len_ = (uint64_t)input_len;
752
+ Hacl_Hash_SHA2_sha256_update_nblocks(input_len, ib, st);
753
+ uint32_t rem1 = input_len % 64U;
754
+ uint8_t *b0 = ib;
755
+ uint8_t *lb = b0 + input_len - rem1;
756
+ Hacl_Hash_SHA2_sha256_update_last(len_, rem, lb, st);
757
+ Hacl_Hash_SHA2_sha256_finish(st, rb);
758
+ }
759
+
760
+ Hacl_Streaming_MD_state_32 *Hacl_Hash_SHA2_malloc_224(void)
761
+ {
762
+ uint8_t *buf = (uint8_t *)KRML_HOST_CALLOC(64U, sizeof (uint8_t));
763
+ uint32_t *block_state = (uint32_t *)KRML_HOST_CALLOC(8U, sizeof (uint32_t));
764
+ Hacl_Streaming_MD_state_32
765
+ s = { .block_state = block_state, .buf = buf, .total_len = (uint64_t)0U };
766
+ Hacl_Streaming_MD_state_32
767
+ *p = (Hacl_Streaming_MD_state_32 *)KRML_HOST_MALLOC(sizeof (Hacl_Streaming_MD_state_32));
768
+ p[0U] = s;
769
+ Hacl_Hash_SHA2_sha224_init(block_state);
770
+ return p;
771
+ }
772
+
773
+ void Hacl_Hash_SHA2_reset_224(Hacl_Streaming_MD_state_32 *state)
774
+ {
775
+ Hacl_Streaming_MD_state_32 scrut = *state;
776
+ uint8_t *buf = scrut.buf;
777
+ uint32_t *block_state = scrut.block_state;
778
+ Hacl_Hash_SHA2_sha224_init(block_state);
779
+ Hacl_Streaming_MD_state_32
780
+ tmp = { .block_state = block_state, .buf = buf, .total_len = (uint64_t)0U };
781
+ state[0U] = tmp;
782
+ }
783
+
784
+ Hacl_Streaming_Types_error_code
785
+ Hacl_Hash_SHA2_update_224(
786
+ Hacl_Streaming_MD_state_32 *state,
787
+ uint8_t *input,
788
+ uint32_t input_len
789
+ )
790
+ {
791
+ return update_224_256(state, input, input_len);
792
+ }
793
+
794
+ /**
795
+ Write the resulting hash into `output`, an array of 28 bytes. The state remains
796
+ valid after a call to `digest_224`, meaning the user may feed more data into
797
+ the hash via `update_224`.
798
+ */
799
+ void Hacl_Hash_SHA2_digest_224(Hacl_Streaming_MD_state_32 *state, uint8_t *output)
800
+ {
801
+ Hacl_Streaming_MD_state_32 scrut = *state;
802
+ uint32_t *block_state = scrut.block_state;
803
+ uint8_t *buf_ = scrut.buf;
804
+ uint64_t total_len = scrut.total_len;
805
+ uint32_t r;
806
+ if (total_len % (uint64_t)64U == 0ULL && total_len > 0ULL)
807
+ {
808
+ r = 64U;
809
+ }
810
+ else
811
+ {
812
+ r = (uint32_t)(total_len % (uint64_t)64U);
813
+ }
814
+ uint8_t *buf_1 = buf_;
815
+ uint32_t tmp_block_state[8U] = { 0U };
816
+ memcpy(tmp_block_state, block_state, 8U * sizeof (uint32_t));
817
+ uint32_t ite;
818
+ if (r % 64U == 0U && r > 0U)
819
+ {
820
+ ite = 64U;
821
+ }
822
+ else
823
+ {
824
+ ite = r % 64U;
825
+ }
826
+ uint8_t *buf_last = buf_1 + r - ite;
827
+ uint8_t *buf_multi = buf_1;
828
+ sha224_update_nblocks(0U, buf_multi, tmp_block_state);
829
+ uint64_t prev_len_last = total_len - (uint64_t)r;
830
+ Hacl_Hash_SHA2_sha224_update_last(prev_len_last + (uint64_t)r, r, buf_last, tmp_block_state);
831
+ Hacl_Hash_SHA2_sha224_finish(tmp_block_state, output);
832
+ }
833
+
834
+ void Hacl_Hash_SHA2_free_224(Hacl_Streaming_MD_state_32 *state)
835
+ {
836
+ Hacl_Hash_SHA2_free_256(state);
837
+ }
838
+
839
+ /**
840
+ Hash `input`, of len `input_len`, into `output`, an array of 28 bytes.
841
+ */
842
+ void Hacl_Hash_SHA2_hash_224(uint8_t *output, uint8_t *input, uint32_t input_len)
843
+ {
844
+ uint8_t *ib = input;
845
+ uint8_t *rb = output;
846
+ uint32_t st[8U] = { 0U };
847
+ Hacl_Hash_SHA2_sha224_init(st);
848
+ uint32_t rem = input_len % 64U;
849
+ uint64_t len_ = (uint64_t)input_len;
850
+ sha224_update_nblocks(input_len, ib, st);
851
+ uint32_t rem1 = input_len % 64U;
852
+ uint8_t *b0 = ib;
853
+ uint8_t *lb = b0 + input_len - rem1;
854
+ Hacl_Hash_SHA2_sha224_update_last(len_, rem, lb, st);
855
+ Hacl_Hash_SHA2_sha224_finish(st, rb);
856
+ }
857
+
858
+ Hacl_Streaming_MD_state_64 *Hacl_Hash_SHA2_malloc_512(void)
859
+ {
860
+ uint8_t *buf = (uint8_t *)KRML_HOST_CALLOC(128U, sizeof (uint8_t));
861
+ uint64_t *block_state = (uint64_t *)KRML_HOST_CALLOC(8U, sizeof (uint64_t));
862
+ Hacl_Streaming_MD_state_64
863
+ s = { .block_state = block_state, .buf = buf, .total_len = (uint64_t)0U };
864
+ Hacl_Streaming_MD_state_64
865
+ *p = (Hacl_Streaming_MD_state_64 *)KRML_HOST_MALLOC(sizeof (Hacl_Streaming_MD_state_64));
866
+ p[0U] = s;
867
+ Hacl_Hash_SHA2_sha512_init(block_state);
868
+ return p;
869
+ }
870
+
871
+ /**
872
+ Copies the state passed as argument into a newly allocated state (deep copy).
873
+ The state is to be freed by calling `free_512`. Cloning the state this way is
874
+ useful, for instance, if your control-flow diverges and you need to feed
875
+ more (different) data into the hash in each branch.
876
+ */
877
+ Hacl_Streaming_MD_state_64 *Hacl_Hash_SHA2_copy_512(Hacl_Streaming_MD_state_64 *state)
878
+ {
879
+ Hacl_Streaming_MD_state_64 scrut = *state;
880
+ uint64_t *block_state0 = scrut.block_state;
881
+ uint8_t *buf0 = scrut.buf;
882
+ uint64_t total_len0 = scrut.total_len;
883
+ uint8_t *buf = (uint8_t *)KRML_HOST_CALLOC(128U, sizeof (uint8_t));
884
+ memcpy(buf, buf0, 128U * sizeof (uint8_t));
885
+ uint64_t *block_state = (uint64_t *)KRML_HOST_CALLOC(8U, sizeof (uint64_t));
886
+ memcpy(block_state, block_state0, 8U * sizeof (uint64_t));
887
+ Hacl_Streaming_MD_state_64
888
+ s = { .block_state = block_state, .buf = buf, .total_len = total_len0 };
889
+ Hacl_Streaming_MD_state_64
890
+ *p = (Hacl_Streaming_MD_state_64 *)KRML_HOST_MALLOC(sizeof (Hacl_Streaming_MD_state_64));
891
+ p[0U] = s;
892
+ return p;
893
+ }
894
+
895
+ void Hacl_Hash_SHA2_reset_512(Hacl_Streaming_MD_state_64 *state)
896
+ {
897
+ Hacl_Streaming_MD_state_64 scrut = *state;
898
+ uint8_t *buf = scrut.buf;
899
+ uint64_t *block_state = scrut.block_state;
900
+ Hacl_Hash_SHA2_sha512_init(block_state);
901
+ Hacl_Streaming_MD_state_64
902
+ tmp = { .block_state = block_state, .buf = buf, .total_len = (uint64_t)0U };
903
+ state[0U] = tmp;
904
+ }
905
+
906
+ static inline Hacl_Streaming_Types_error_code
907
+ update_384_512(Hacl_Streaming_MD_state_64 *state, uint8_t *chunk, uint32_t chunk_len)
908
+ {
909
+ Hacl_Streaming_MD_state_64 s = *state;
910
+ uint64_t total_len = s.total_len;
911
+ if ((uint64_t)chunk_len > 18446744073709551615ULL - total_len)
912
+ {
913
+ return Hacl_Streaming_Types_MaximumLengthExceeded;
914
+ }
915
+ uint32_t sz;
916
+ if (total_len % (uint64_t)128U == 0ULL && total_len > 0ULL)
917
+ {
918
+ sz = 128U;
919
+ }
920
+ else
921
+ {
922
+ sz = (uint32_t)(total_len % (uint64_t)128U);
923
+ }
924
+ if (chunk_len <= 128U - sz)
925
+ {
926
+ Hacl_Streaming_MD_state_64 s1 = *state;
927
+ uint64_t *block_state1 = s1.block_state;
928
+ uint8_t *buf = s1.buf;
929
+ uint64_t total_len1 = s1.total_len;
930
+ uint32_t sz1;
931
+ if (total_len1 % (uint64_t)128U == 0ULL && total_len1 > 0ULL)
932
+ {
933
+ sz1 = 128U;
934
+ }
935
+ else
936
+ {
937
+ sz1 = (uint32_t)(total_len1 % (uint64_t)128U);
938
+ }
939
+ uint8_t *buf2 = buf + sz1;
940
+ memcpy(buf2, chunk, chunk_len * sizeof (uint8_t));
941
+ uint64_t total_len2 = total_len1 + (uint64_t)chunk_len;
942
+ *state
943
+ =
944
+ (
945
+ (Hacl_Streaming_MD_state_64){
946
+ .block_state = block_state1,
947
+ .buf = buf,
948
+ .total_len = total_len2
949
+ }
950
+ );
951
+ }
952
+ else if (sz == 0U)
953
+ {
954
+ Hacl_Streaming_MD_state_64 s1 = *state;
955
+ uint64_t *block_state1 = s1.block_state;
956
+ uint8_t *buf = s1.buf;
957
+ uint64_t total_len1 = s1.total_len;
958
+ uint32_t sz1;
959
+ if (total_len1 % (uint64_t)128U == 0ULL && total_len1 > 0ULL)
960
+ {
961
+ sz1 = 128U;
962
+ }
963
+ else
964
+ {
965
+ sz1 = (uint32_t)(total_len1 % (uint64_t)128U);
966
+ }
967
+ if (!(sz1 == 0U))
968
+ {
969
+ Hacl_Hash_SHA2_sha512_update_nblocks(128U, buf, block_state1);
970
+ }
971
+ uint32_t ite;
972
+ if ((uint64_t)chunk_len % (uint64_t)128U == 0ULL && (uint64_t)chunk_len > 0ULL)
973
+ {
974
+ ite = 128U;
975
+ }
976
+ else
977
+ {
978
+ ite = (uint32_t)((uint64_t)chunk_len % (uint64_t)128U);
979
+ }
980
+ uint32_t n_blocks = (chunk_len - ite) / 128U;
981
+ uint32_t data1_len = n_blocks * 128U;
982
+ uint32_t data2_len = chunk_len - data1_len;
983
+ uint8_t *data1 = chunk;
984
+ uint8_t *data2 = chunk + data1_len;
985
+ Hacl_Hash_SHA2_sha512_update_nblocks(data1_len / 128U * 128U, data1, block_state1);
986
+ uint8_t *dst = buf;
987
+ memcpy(dst, data2, data2_len * sizeof (uint8_t));
988
+ *state
989
+ =
990
+ (
991
+ (Hacl_Streaming_MD_state_64){
992
+ .block_state = block_state1,
993
+ .buf = buf,
994
+ .total_len = total_len1 + (uint64_t)chunk_len
995
+ }
996
+ );
997
+ }
998
+ else
999
+ {
1000
+ uint32_t diff = 128U - sz;
1001
+ uint8_t *chunk1 = chunk;
1002
+ uint8_t *chunk2 = chunk + diff;
1003
+ Hacl_Streaming_MD_state_64 s1 = *state;
1004
+ uint64_t *block_state10 = s1.block_state;
1005
+ uint8_t *buf0 = s1.buf;
1006
+ uint64_t total_len10 = s1.total_len;
1007
+ uint32_t sz10;
1008
+ if (total_len10 % (uint64_t)128U == 0ULL && total_len10 > 0ULL)
1009
+ {
1010
+ sz10 = 128U;
1011
+ }
1012
+ else
1013
+ {
1014
+ sz10 = (uint32_t)(total_len10 % (uint64_t)128U);
1015
+ }
1016
+ uint8_t *buf2 = buf0 + sz10;
1017
+ memcpy(buf2, chunk1, diff * sizeof (uint8_t));
1018
+ uint64_t total_len2 = total_len10 + (uint64_t)diff;
1019
+ *state
1020
+ =
1021
+ (
1022
+ (Hacl_Streaming_MD_state_64){
1023
+ .block_state = block_state10,
1024
+ .buf = buf0,
1025
+ .total_len = total_len2
1026
+ }
1027
+ );
1028
+ Hacl_Streaming_MD_state_64 s10 = *state;
1029
+ uint64_t *block_state1 = s10.block_state;
1030
+ uint8_t *buf = s10.buf;
1031
+ uint64_t total_len1 = s10.total_len;
1032
+ uint32_t sz1;
1033
+ if (total_len1 % (uint64_t)128U == 0ULL && total_len1 > 0ULL)
1034
+ {
1035
+ sz1 = 128U;
1036
+ }
1037
+ else
1038
+ {
1039
+ sz1 = (uint32_t)(total_len1 % (uint64_t)128U);
1040
+ }
1041
+ if (!(sz1 == 0U))
1042
+ {
1043
+ Hacl_Hash_SHA2_sha512_update_nblocks(128U, buf, block_state1);
1044
+ }
1045
+ uint32_t ite;
1046
+ if
1047
+ ((uint64_t)(chunk_len - diff) % (uint64_t)128U == 0ULL && (uint64_t)(chunk_len - diff) > 0ULL)
1048
+ {
1049
+ ite = 128U;
1050
+ }
1051
+ else
1052
+ {
1053
+ ite = (uint32_t)((uint64_t)(chunk_len - diff) % (uint64_t)128U);
1054
+ }
1055
+ uint32_t n_blocks = (chunk_len - diff - ite) / 128U;
1056
+ uint32_t data1_len = n_blocks * 128U;
1057
+ uint32_t data2_len = chunk_len - diff - data1_len;
1058
+ uint8_t *data1 = chunk2;
1059
+ uint8_t *data2 = chunk2 + data1_len;
1060
+ Hacl_Hash_SHA2_sha512_update_nblocks(data1_len / 128U * 128U, data1, block_state1);
1061
+ uint8_t *dst = buf;
1062
+ memcpy(dst, data2, data2_len * sizeof (uint8_t));
1063
+ *state
1064
+ =
1065
+ (
1066
+ (Hacl_Streaming_MD_state_64){
1067
+ .block_state = block_state1,
1068
+ .buf = buf,
1069
+ .total_len = total_len1 + (uint64_t)(chunk_len - diff)
1070
+ }
1071
+ );
1072
+ }
1073
+ return Hacl_Streaming_Types_Success;
1074
+ }
1075
+
1076
+ /**
1077
+ Feed an arbitrary amount of data into the hash. This function returns 0 for
1078
+ success, or 1 if the combined length of all of the data passed to `update_512`
1079
+ (since the last call to `reset_512`) exceeds 2^125-1 bytes.
1080
+
1081
+ This function is identical to the update function for SHA2_384.
1082
+ */
1083
+ Hacl_Streaming_Types_error_code
1084
+ Hacl_Hash_SHA2_update_512(
1085
+ Hacl_Streaming_MD_state_64 *state,
1086
+ uint8_t *input,
1087
+ uint32_t input_len
1088
+ )
1089
+ {
1090
+ return update_384_512(state, input, input_len);
1091
+ }
1092
+
1093
+ /**
1094
+ Write the resulting hash into `output`, an array of 64 bytes. The state remains
1095
+ valid after a call to `digest_512`, meaning the user may feed more data into
1096
+ the hash via `update_512`. (The digest_512 function operates on an internal copy of
1097
+ the state and therefore does not invalidate the client-held state `p`.)
1098
+ */
1099
+ void Hacl_Hash_SHA2_digest_512(Hacl_Streaming_MD_state_64 *state, uint8_t *output)
1100
+ {
1101
+ Hacl_Streaming_MD_state_64 scrut = *state;
1102
+ uint64_t *block_state = scrut.block_state;
1103
+ uint8_t *buf_ = scrut.buf;
1104
+ uint64_t total_len = scrut.total_len;
1105
+ uint32_t r;
1106
+ if (total_len % (uint64_t)128U == 0ULL && total_len > 0ULL)
1107
+ {
1108
+ r = 128U;
1109
+ }
1110
+ else
1111
+ {
1112
+ r = (uint32_t)(total_len % (uint64_t)128U);
1113
+ }
1114
+ uint8_t *buf_1 = buf_;
1115
+ uint64_t tmp_block_state[8U] = { 0U };
1116
+ memcpy(tmp_block_state, block_state, 8U * sizeof (uint64_t));
1117
+ uint32_t ite;
1118
+ if (r % 128U == 0U && r > 0U)
1119
+ {
1120
+ ite = 128U;
1121
+ }
1122
+ else
1123
+ {
1124
+ ite = r % 128U;
1125
+ }
1126
+ uint8_t *buf_last = buf_1 + r - ite;
1127
+ uint8_t *buf_multi = buf_1;
1128
+ Hacl_Hash_SHA2_sha512_update_nblocks(0U, buf_multi, tmp_block_state);
1129
+ uint64_t prev_len_last = total_len - (uint64_t)r;
1130
+ Hacl_Hash_SHA2_sha512_update_last(FStar_UInt128_add(FStar_UInt128_uint64_to_uint128(prev_len_last),
1131
+ FStar_UInt128_uint64_to_uint128((uint64_t)r)),
1132
+ r,
1133
+ buf_last,
1134
+ tmp_block_state);
1135
+ Hacl_Hash_SHA2_sha512_finish(tmp_block_state, output);
1136
+ }
1137
+
1138
+ /**
1139
+ Free a state allocated with `malloc_512`.
1140
+
1141
+ This function is identical to the free function for SHA2_384.
1142
+ */
1143
+ void Hacl_Hash_SHA2_free_512(Hacl_Streaming_MD_state_64 *state)
1144
+ {
1145
+ Hacl_Streaming_MD_state_64 scrut = *state;
1146
+ uint8_t *buf = scrut.buf;
1147
+ uint64_t *block_state = scrut.block_state;
1148
+ KRML_HOST_FREE(block_state);
1149
+ KRML_HOST_FREE(buf);
1150
+ KRML_HOST_FREE(state);
1151
+ }
1152
+
1153
+ /**
1154
+ Hash `input`, of len `input_len`, into `output`, an array of 64 bytes.
1155
+ */
1156
+ void Hacl_Hash_SHA2_hash_512(uint8_t *output, uint8_t *input, uint32_t input_len)
1157
+ {
1158
+ uint8_t *ib = input;
1159
+ uint8_t *rb = output;
1160
+ uint64_t st[8U] = { 0U };
1161
+ Hacl_Hash_SHA2_sha512_init(st);
1162
+ uint32_t rem = input_len % 128U;
1163
+ FStar_UInt128_uint128 len_ = FStar_UInt128_uint64_to_uint128((uint64_t)input_len);
1164
+ Hacl_Hash_SHA2_sha512_update_nblocks(input_len, ib, st);
1165
+ uint32_t rem1 = input_len % 128U;
1166
+ uint8_t *b0 = ib;
1167
+ uint8_t *lb = b0 + input_len - rem1;
1168
+ Hacl_Hash_SHA2_sha512_update_last(len_, rem, lb, st);
1169
+ Hacl_Hash_SHA2_sha512_finish(st, rb);
1170
+ }
1171
+
1172
+ Hacl_Streaming_MD_state_64 *Hacl_Hash_SHA2_malloc_384(void)
1173
+ {
1174
+ uint8_t *buf = (uint8_t *)KRML_HOST_CALLOC(128U, sizeof (uint8_t));
1175
+ uint64_t *block_state = (uint64_t *)KRML_HOST_CALLOC(8U, sizeof (uint64_t));
1176
+ Hacl_Streaming_MD_state_64
1177
+ s = { .block_state = block_state, .buf = buf, .total_len = (uint64_t)0U };
1178
+ Hacl_Streaming_MD_state_64
1179
+ *p = (Hacl_Streaming_MD_state_64 *)KRML_HOST_MALLOC(sizeof (Hacl_Streaming_MD_state_64));
1180
+ p[0U] = s;
1181
+ Hacl_Hash_SHA2_sha384_init(block_state);
1182
+ return p;
1183
+ }
1184
+
1185
+ void Hacl_Hash_SHA2_reset_384(Hacl_Streaming_MD_state_64 *state)
1186
+ {
1187
+ Hacl_Streaming_MD_state_64 scrut = *state;
1188
+ uint8_t *buf = scrut.buf;
1189
+ uint64_t *block_state = scrut.block_state;
1190
+ Hacl_Hash_SHA2_sha384_init(block_state);
1191
+ Hacl_Streaming_MD_state_64
1192
+ tmp = { .block_state = block_state, .buf = buf, .total_len = (uint64_t)0U };
1193
+ state[0U] = tmp;
1194
+ }
1195
+
1196
+ Hacl_Streaming_Types_error_code
1197
+ Hacl_Hash_SHA2_update_384(
1198
+ Hacl_Streaming_MD_state_64 *state,
1199
+ uint8_t *input,
1200
+ uint32_t input_len
1201
+ )
1202
+ {
1203
+ return update_384_512(state, input, input_len);
1204
+ }
1205
+
1206
+ /**
1207
+ Write the resulting hash into `output`, an array of 48 bytes. The state remains
1208
+ valid after a call to `digest_384`, meaning the user may feed more data into
1209
+ the hash via `update_384`.
1210
+ */
1211
+ void Hacl_Hash_SHA2_digest_384(Hacl_Streaming_MD_state_64 *state, uint8_t *output)
1212
+ {
1213
+ Hacl_Streaming_MD_state_64 scrut = *state;
1214
+ uint64_t *block_state = scrut.block_state;
1215
+ uint8_t *buf_ = scrut.buf;
1216
+ uint64_t total_len = scrut.total_len;
1217
+ uint32_t r;
1218
+ if (total_len % (uint64_t)128U == 0ULL && total_len > 0ULL)
1219
+ {
1220
+ r = 128U;
1221
+ }
1222
+ else
1223
+ {
1224
+ r = (uint32_t)(total_len % (uint64_t)128U);
1225
+ }
1226
+ uint8_t *buf_1 = buf_;
1227
+ uint64_t tmp_block_state[8U] = { 0U };
1228
+ memcpy(tmp_block_state, block_state, 8U * sizeof (uint64_t));
1229
+ uint32_t ite;
1230
+ if (r % 128U == 0U && r > 0U)
1231
+ {
1232
+ ite = 128U;
1233
+ }
1234
+ else
1235
+ {
1236
+ ite = r % 128U;
1237
+ }
1238
+ uint8_t *buf_last = buf_1 + r - ite;
1239
+ uint8_t *buf_multi = buf_1;
1240
+ Hacl_Hash_SHA2_sha384_update_nblocks(0U, buf_multi, tmp_block_state);
1241
+ uint64_t prev_len_last = total_len - (uint64_t)r;
1242
+ Hacl_Hash_SHA2_sha384_update_last(FStar_UInt128_add(FStar_UInt128_uint64_to_uint128(prev_len_last),
1243
+ FStar_UInt128_uint64_to_uint128((uint64_t)r)),
1244
+ r,
1245
+ buf_last,
1246
+ tmp_block_state);
1247
+ Hacl_Hash_SHA2_sha384_finish(tmp_block_state, output);
1248
+ }
1249
+
1250
+ void Hacl_Hash_SHA2_free_384(Hacl_Streaming_MD_state_64 *state)
1251
+ {
1252
+ Hacl_Hash_SHA2_free_512(state);
1253
+ }
1254
+
1255
+ /**
1256
+ Hash `input`, of len `input_len`, into `output`, an array of 48 bytes.
1257
+ */
1258
+ void Hacl_Hash_SHA2_hash_384(uint8_t *output, uint8_t *input, uint32_t input_len)
1259
+ {
1260
+ uint8_t *ib = input;
1261
+ uint8_t *rb = output;
1262
+ uint64_t st[8U] = { 0U };
1263
+ Hacl_Hash_SHA2_sha384_init(st);
1264
+ uint32_t rem = input_len % 128U;
1265
+ FStar_UInt128_uint128 len_ = FStar_UInt128_uint64_to_uint128((uint64_t)input_len);
1266
+ Hacl_Hash_SHA2_sha384_update_nblocks(input_len, ib, st);
1267
+ uint32_t rem1 = input_len % 128U;
1268
+ uint8_t *b0 = ib;
1269
+ uint8_t *lb = b0 + input_len - rem1;
1270
+ Hacl_Hash_SHA2_sha384_update_last(len_, rem, lb, st);
1271
+ Hacl_Hash_SHA2_sha384_finish(st, rb);
1272
+ }
1273
+