@scriptc/compiler 0.4.2 → 0.4.4

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.
Files changed (726) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +470 -66
  2. package/dist/backend/cycle-analysis.d.ts +4 -1
  3. package/dist/backend/cycle-analysis.js +6 -4
  4. package/dist/backend/cycle-analysis.js.map +1 -1
  5. package/dist/backend/cycle-analysis.test.js +55 -0
  6. package/dist/backend/cycle-analysis.test.js.map +1 -1
  7. package/dist/backend/cycle-mutability.d.ts +7 -0
  8. package/dist/backend/cycle-mutability.js +19 -1
  9. package/dist/backend/cycle-mutability.js.map +1 -1
  10. package/dist/backend/executable-features.js +2 -0
  11. package/dist/backend/executable-features.js.map +1 -1
  12. package/dist/backend/immutability.d.ts +6 -3
  13. package/dist/backend/immutability.js +33 -29
  14. package/dist/backend/immutability.js.map +1 -1
  15. package/dist/backend/library-pack.js +1 -0
  16. package/dist/backend/library-pack.js.map +1 -1
  17. package/dist/backend/llvm/alloc.d.ts +16 -1
  18. package/dist/backend/llvm/alloc.js +54 -4
  19. package/dist/backend/llvm/alloc.js.map +1 -1
  20. package/dist/backend/llvm/appended-array-literals.d.ts +2 -1
  21. package/dist/backend/llvm/appended-array-literals.js +44 -36
  22. package/dist/backend/llvm/appended-array-literals.js.map +1 -1
  23. package/dist/backend/llvm/appended-array-literals.test.js +4 -3
  24. package/dist/backend/llvm/appended-array-literals.test.js.map +1 -1
  25. package/dist/backend/llvm/array-search.d.ts +4 -3
  26. package/dist/backend/llvm/array-search.js +21 -9
  27. package/dist/backend/llvm/array-search.js.map +1 -1
  28. package/dist/backend/llvm/blocks.d.ts +1 -1
  29. package/dist/backend/llvm/blocks.js +2 -2
  30. package/dist/backend/llvm/blocks.js.map +1 -1
  31. package/dist/backend/llvm/byte-windows.js +2 -0
  32. package/dist/backend/llvm/byte-windows.js.map +1 -1
  33. package/dist/backend/llvm/bytes-alias.d.ts +6 -1
  34. package/dist/backend/llvm/bytes-alias.js +8 -2
  35. package/dist/backend/llvm/bytes-alias.js.map +1 -1
  36. package/dist/backend/llvm/bytes-loop-versions.d.ts +47 -5
  37. package/dist/backend/llvm/bytes-loop-versions.js +479 -32
  38. package/dist/backend/llvm/bytes-loop-versions.js.map +1 -1
  39. package/dist/backend/llvm/bytes-loop-versions.test.js +263 -2
  40. package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -1
  41. package/dist/backend/llvm/checked-value-lifetimes.js +2 -0
  42. package/dist/backend/llvm/checked-value-lifetimes.js.map +1 -1
  43. package/dist/backend/llvm/classes.d.ts +7 -5
  44. package/dist/backend/llvm/classes.js +44 -20
  45. package/dist/backend/llvm/classes.js.map +1 -1
  46. package/dist/backend/llvm/classes.test.js +167 -7
  47. package/dist/backend/llvm/classes.test.js.map +1 -1
  48. package/dist/backend/llvm/common.d.ts +9 -3
  49. package/dist/backend/llvm/common.js +9 -3
  50. package/dist/backend/llvm/common.js.map +1 -1
  51. package/dist/backend/llvm/constant-callbacks.d.ts +2 -1
  52. package/dist/backend/llvm/constant-callbacks.js +83 -52
  53. package/dist/backend/llvm/constant-callbacks.js.map +1 -1
  54. package/dist/backend/llvm/counted-loops.d.ts +7 -0
  55. package/dist/backend/llvm/counted-loops.js +18 -0
  56. package/dist/backend/llvm/counted-loops.js.map +1 -1
  57. package/dist/backend/llvm/debug-info.js +2 -5
  58. package/dist/backend/llvm/debug-info.js.map +1 -1
  59. package/dist/backend/llvm/dense-array-access.d.ts +39 -8
  60. package/dist/backend/llvm/dense-array-access.js +222 -52
  61. package/dist/backend/llvm/dense-array-access.js.map +1 -1
  62. package/dist/backend/llvm/dense-array-access.test.js +36 -0
  63. package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
  64. package/dist/backend/llvm/dense-array-loops.d.ts +17 -1
  65. package/dist/backend/llvm/dense-array-loops.js +194 -5
  66. package/dist/backend/llvm/dense-array-loops.js.map +1 -1
  67. package/dist/backend/llvm/dense-array-loops.test.js +90 -1
  68. package/dist/backend/llvm/dense-array-loops.test.js.map +1 -1
  69. package/dist/backend/llvm/dyn-handle-tags.test.js +6 -1
  70. package/dist/backend/llvm/dyn-handle-tags.test.js.map +1 -1
  71. package/dist/backend/llvm/dyn.d.ts +30 -0
  72. package/dist/backend/llvm/dyn.js +373 -70
  73. package/dist/backend/llvm/dyn.js.map +1 -1
  74. package/dist/backend/llvm/emit-function.js +13 -28
  75. package/dist/backend/llvm/emit-function.js.map +1 -1
  76. package/dist/backend/llvm/emit-journal.d.ts +93 -0
  77. package/dist/backend/llvm/emit-journal.js +170 -0
  78. package/dist/backend/llvm/emit-journal.js.map +1 -0
  79. package/dist/backend/llvm/emit-module.js +211 -33
  80. package/dist/backend/llvm/emit-module.js.map +1 -1
  81. package/dist/backend/llvm/emit-statements.d.ts +0 -4
  82. package/dist/backend/llvm/emit-statements.js +268 -84
  83. package/dist/backend/llvm/emit-statements.js.map +1 -1
  84. package/dist/backend/llvm/emitter-state.d.ts +7 -0
  85. package/dist/backend/llvm/emitter-state.js +14 -0
  86. package/dist/backend/llvm/emitter-state.js.map +1 -0
  87. package/dist/backend/llvm/emitter.d.ts +186 -37
  88. package/dist/backend/llvm/emitter.js +733 -90
  89. package/dist/backend/llvm/emitter.js.map +1 -1
  90. package/dist/backend/llvm/emitter.test.js +65 -7
  91. package/dist/backend/llvm/emitter.test.js.map +1 -1
  92. package/dist/backend/llvm/expr-async.js +11 -13
  93. package/dist/backend/llvm/expr-async.js.map +1 -1
  94. package/dist/backend/llvm/expr-bytes.js +48 -20
  95. package/dist/backend/llvm/expr-bytes.js.map +1 -1
  96. package/dist/backend/llvm/expr-callbacks.js +47 -0
  97. package/dist/backend/llvm/expr-callbacks.js.map +1 -1
  98. package/dist/backend/llvm/expr-calls.js +28 -14
  99. package/dist/backend/llvm/expr-calls.js.map +1 -1
  100. package/dist/backend/llvm/expr-containers.d.ts +14 -2
  101. package/dist/backend/llvm/expr-containers.js +143 -37
  102. package/dist/backend/llvm/expr-containers.js.map +1 -1
  103. package/dist/backend/llvm/expr-context.d.ts +14 -0
  104. package/dist/backend/llvm/expr-dynamic.js +18 -11
  105. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  106. package/dist/backend/llvm/expr-primitives.js +119 -38
  107. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  108. package/dist/backend/llvm/expr-primitives.test.js +11 -6
  109. package/dist/backend/llvm/expr-primitives.test.js.map +1 -1
  110. package/dist/backend/llvm/expr-records.d.ts +12 -0
  111. package/dist/backend/llvm/expr-records.js +106 -0
  112. package/dist/backend/llvm/expr-records.js.map +1 -1
  113. package/dist/backend/llvm/expr-stream-bridges.d.ts +2 -2
  114. package/dist/backend/llvm/expr-stream-bridges.js +210 -69
  115. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  116. package/dist/backend/llvm/expr-stream-bridges.test.js +1 -1
  117. package/dist/backend/llvm/expr-stream-bridges.test.js.map +1 -1
  118. package/dist/backend/llvm/expr-stream-callbacks.d.ts +2 -2
  119. package/dist/backend/llvm/expr-stream-callbacks.js +74 -20
  120. package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
  121. package/dist/backend/llvm/int32-kind-loops.d.ts +39 -0
  122. package/dist/backend/llvm/int32-kind-loops.js +106 -0
  123. package/dist/backend/llvm/int32-kind-loops.js.map +1 -0
  124. package/dist/backend/llvm/integer-or-nan-indexes.test.d.ts +1 -0
  125. package/dist/backend/llvm/integer-or-nan-indexes.test.js +118 -0
  126. package/dist/backend/llvm/integer-or-nan-indexes.test.js.map +1 -0
  127. package/dist/backend/llvm/integer-values.d.ts +25 -1
  128. package/dist/backend/llvm/integer-values.js +95 -0
  129. package/dist/backend/llvm/integer-values.js.map +1 -1
  130. package/dist/backend/llvm/js-ic.d.ts +1 -1
  131. package/dist/backend/llvm/js-ic.js +1 -1
  132. package/dist/backend/llvm/js-ic.js.map +1 -1
  133. package/dist/backend/llvm/key-orders.d.ts +7 -0
  134. package/dist/backend/llvm/key-orders.js +33 -0
  135. package/dist/backend/llvm/key-orders.js.map +1 -0
  136. package/dist/backend/llvm/lib-connect.js +4 -0
  137. package/dist/backend/llvm/lib-connect.js.map +1 -1
  138. package/dist/backend/llvm/lib-datagram.js +11 -0
  139. package/dist/backend/llvm/lib-datagram.js.map +1 -1
  140. package/dist/backend/llvm/lib-dispatch.js +213 -5
  141. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  142. package/dist/backend/llvm/lib-filesystem.js +4 -4
  143. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  144. package/dist/backend/llvm/lib-http2.js +4 -0
  145. package/dist/backend/llvm/lib-http2.js.map +1 -1
  146. package/dist/backend/llvm/lib-lookup.js +16 -6
  147. package/dist/backend/llvm/lib-lookup.js.map +1 -1
  148. package/dist/backend/llvm/lib-process.js +37 -1
  149. package/dist/backend/llvm/lib-process.js.map +1 -1
  150. package/dist/backend/llvm/lib-shared.js +94 -2
  151. package/dist/backend/llvm/lib-shared.js.map +1 -1
  152. package/dist/backend/llvm/lib-stream.js +35 -5
  153. package/dist/backend/llvm/lib-stream.js.map +1 -1
  154. package/dist/backend/llvm/local-array-reads.js +115 -19
  155. package/dist/backend/llvm/local-array-reads.js.map +1 -1
  156. package/dist/backend/llvm/local-array-reads.test.js +14 -0
  157. package/dist/backend/llvm/local-array-reads.test.js.map +1 -1
  158. package/dist/backend/llvm/loop-state.d.ts +33 -0
  159. package/dist/backend/llvm/loop-state.js +42 -0
  160. package/dist/backend/llvm/loop-state.js.map +1 -0
  161. package/dist/backend/llvm/map-number-lookup.d.ts +26 -8
  162. package/dist/backend/llvm/map-number-lookup.js +91 -31
  163. package/dist/backend/llvm/map-number-lookup.js.map +1 -1
  164. package/dist/backend/llvm/map-number-lookup.test.js +55 -0
  165. package/dist/backend/llvm/map-number-lookup.test.js.map +1 -1
  166. package/dist/backend/llvm/map-read-lifetimes.js +4 -2
  167. package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
  168. package/dist/backend/llvm/nullable-unions.d.ts +2 -1
  169. package/dist/backend/llvm/nullable-unions.js +15 -3
  170. package/dist/backend/llvm/nullable-unions.js.map +1 -1
  171. package/dist/backend/llvm/publish.d.ts +10 -0
  172. package/dist/backend/llvm/publish.js +15 -3
  173. package/dist/backend/llvm/publish.js.map +1 -1
  174. package/dist/backend/llvm/receivers.js +6 -1
  175. package/dist/backend/llvm/receivers.js.map +1 -1
  176. package/dist/backend/llvm/record-results.d.ts +1 -9
  177. package/dist/backend/llvm/record-results.js +2 -11
  178. package/dist/backend/llvm/record-results.js.map +1 -1
  179. package/dist/backend/llvm/reference-effects.js +3 -0
  180. package/dist/backend/llvm/reference-effects.js.map +1 -1
  181. package/dist/backend/llvm/reference-writes.d.ts +7 -2
  182. package/dist/backend/llvm/reference-writes.js +89 -72
  183. package/dist/backend/llvm/reference-writes.js.map +1 -1
  184. package/dist/backend/llvm/running-extrema.d.ts +11 -0
  185. package/dist/backend/llvm/running-extrema.js +115 -0
  186. package/dist/backend/llvm/running-extrema.js.map +1 -0
  187. package/dist/backend/llvm/running-extrema.test.d.ts +1 -0
  188. package/dist/backend/llvm/running-extrema.test.js +89 -0
  189. package/dist/backend/llvm/running-extrema.test.js.map +1 -0
  190. package/dist/backend/llvm/shapes.d.ts +71 -15
  191. package/dist/backend/llvm/shapes.js +224 -40
  192. package/dist/backend/llvm/shapes.js.map +1 -1
  193. package/dist/backend/llvm/shapes.test.js +53 -7
  194. package/dist/backend/llvm/shapes.test.js.map +1 -1
  195. package/dist/backend/llvm/speculative-integers.d.ts +6 -0
  196. package/dist/backend/llvm/speculative-integers.js +2 -2
  197. package/dist/backend/llvm/speculative-integers.js.map +1 -1
  198. package/dist/backend/llvm/stack-captures.js +1 -5
  199. package/dist/backend/llvm/stack-captures.js.map +1 -1
  200. package/dist/backend/llvm/stack-objects.d.ts +3 -2
  201. package/dist/backend/llvm/stack-objects.js +5 -2
  202. package/dist/backend/llvm/stack-objects.js.map +1 -1
  203. package/dist/backend/llvm/string-reads.d.ts +12 -0
  204. package/dist/backend/llvm/string-reads.js +44 -0
  205. package/dist/backend/llvm/string-reads.js.map +1 -1
  206. package/dist/backend/llvm/union-repr.d.ts +4 -3
  207. package/dist/backend/llvm/union-repr.js +6 -5
  208. package/dist/backend/llvm/union-repr.js.map +1 -1
  209. package/dist/backend/llvm/walk-borrows.d.ts +3 -0
  210. package/dist/backend/llvm/walk-borrows.js +46 -41
  211. package/dist/backend/llvm/walk-borrows.js.map +1 -1
  212. package/dist/backend/llvm/walkers.d.ts +3 -0
  213. package/dist/backend/llvm/walkers.js +101 -65
  214. package/dist/backend/llvm/walkers.js.map +1 -1
  215. package/dist/backend/llvm/wrapping-sums.d.ts +16 -1
  216. package/dist/backend/llvm/wrapping-sums.js +126 -0
  217. package/dist/backend/llvm/wrapping-sums.js.map +1 -1
  218. package/dist/backend/may-throw.d.ts +8 -10
  219. package/dist/backend/may-throw.js +14 -10
  220. package/dist/backend/may-throw.js.map +1 -1
  221. package/dist/backend/native/contracts.d.ts +5 -0
  222. package/dist/backend/native/executable.js +7 -0
  223. package/dist/backend/native/executable.js.map +1 -1
  224. package/dist/backend/native/runtime-inputs.d.ts +1 -1
  225. package/dist/backend/native/runtime-inputs.js +1 -0
  226. package/dist/backend/native/runtime-inputs.js.map +1 -1
  227. package/dist/backend/native-codegen-core.d.ts +5 -3
  228. package/dist/backend/native-codegen-core.js +13 -6
  229. package/dist/backend/native-codegen-core.js.map +1 -1
  230. package/dist/backend/native-codegen.test.js +6 -4
  231. package/dist/backend/native-codegen.test.js.map +1 -1
  232. package/dist/backend/native-link-info-core.d.ts +4 -0
  233. package/dist/backend/native-link-info-core.js.map +1 -1
  234. package/dist/backend/publication.d.ts +12 -1
  235. package/dist/backend/publication.js +37 -14
  236. package/dist/backend/publication.js.map +1 -1
  237. package/dist/backend/publication.test.js +30 -0
  238. package/dist/backend/publication.test.js.map +1 -1
  239. package/dist/backend/result-slots.d.ts +16 -0
  240. package/dist/backend/result-slots.js +23 -0
  241. package/dist/backend/result-slots.js.map +1 -0
  242. package/dist/backend/runtime-abi.d.ts +2 -2
  243. package/dist/backend/runtime-abi.js +2 -2
  244. package/dist/backend/runtime-pack-core.d.ts +1 -0
  245. package/dist/backend/runtime-pack-core.js +1 -0
  246. package/dist/backend/runtime-pack-core.js.map +1 -1
  247. package/dist/backend/runtime-pack-targets.test.js +2 -1
  248. package/dist/backend/runtime-pack-targets.test.js.map +1 -1
  249. package/dist/backend/runtime-pack.test.js +2 -1
  250. package/dist/backend/runtime-pack.test.js.map +1 -1
  251. package/dist/backend/stack-observations.d.ts +2 -1
  252. package/dist/backend/stack-observations.js +67 -42
  253. package/dist/backend/stack-observations.js.map +1 -1
  254. package/dist/backend/target-cpu.d.ts +26 -0
  255. package/dist/backend/target-cpu.js +98 -0
  256. package/dist/backend/target-cpu.js.map +1 -0
  257. package/dist/backend/target-cpu.test.d.ts +1 -0
  258. package/dist/backend/target-cpu.test.js +38 -0
  259. package/dist/backend/target-cpu.test.js.map +1 -0
  260. package/dist/backend/target-diagnostics.js +5 -3
  261. package/dist/backend/target-diagnostics.js.map +1 -1
  262. package/dist/backend/warm-cache.js +1 -0
  263. package/dist/backend/warm-cache.js.map +1 -1
  264. package/dist/cli/command.js +20 -1
  265. package/dist/cli/command.js.map +1 -1
  266. package/dist/cli/usage.d.ts +4 -1
  267. package/dist/cli/usage.js +10 -3
  268. package/dist/cli/usage.js.map +1 -1
  269. package/dist/compat/fetch-profile.js +1 -1
  270. package/dist/compat/fetch-profile.js.map +1 -1
  271. package/dist/compile-types.d.ts +7 -0
  272. package/dist/contracts/check.js +4 -3
  273. package/dist/contracts/check.js.map +1 -1
  274. package/dist/contracts/int32-elements.js +10 -2
  275. package/dist/contracts/int32-elements.js.map +1 -1
  276. package/dist/coverage/report.js +12 -3
  277. package/dist/coverage/report.js.map +1 -1
  278. package/dist/diagnostics/diagnostic.d.ts +4 -0
  279. package/dist/diagnostics/diagnostic.js +1 -1
  280. package/dist/diagnostics/diagnostic.js.map +1 -1
  281. package/dist/diagnostics/envelope.d.ts +3 -0
  282. package/dist/diagnostics/envelope.js +1 -0
  283. package/dist/diagnostics/envelope.js.map +1 -1
  284. package/dist/executable/executable-cache.d.ts +5 -0
  285. package/dist/executable/executable-cache.js +5 -0
  286. package/dist/executable/executable-cache.js.map +1 -1
  287. package/dist/executable/executable-cache.test.js +3 -0
  288. package/dist/executable/executable-cache.test.js.map +1 -1
  289. package/dist/frontend/decl-projection.d.ts +41 -0
  290. package/dist/frontend/decl-projection.js +949 -0
  291. package/dist/frontend/decl-projection.js.map +1 -0
  292. package/dist/frontend/decl-projection.test.d.ts +1 -0
  293. package/dist/frontend/decl-projection.test.js +30 -0
  294. package/dist/frontend/decl-projection.test.js.map +1 -0
  295. package/dist/frontend/dts-paths.d.ts +15 -0
  296. package/dist/frontend/dts-paths.js +25 -0
  297. package/dist/frontend/dts-paths.js.map +1 -1
  298. package/dist/frontend/input-tracker.d.ts +6 -0
  299. package/dist/frontend/input-tracker.js +51 -28
  300. package/dist/frontend/input-tracker.js.map +1 -1
  301. package/dist/frontend/input-tracker.test.js +19 -0
  302. package/dist/frontend/input-tracker.test.js.map +1 -1
  303. package/dist/frontend/lowering/array-values.js +100 -2
  304. package/dist/frontend/lowering/array-values.js.map +1 -1
  305. package/dist/frontend/lowering/builtins/async-context.d.ts +8 -2
  306. package/dist/frontend/lowering/builtins/async-context.js +62 -3
  307. package/dist/frontend/lowering/builtins/async-context.js.map +1 -1
  308. package/dist/frontend/lowering/builtins/child-process-methods.js +46 -15
  309. package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
  310. package/dist/frontend/lowering/builtins/child-process.js +13 -2
  311. package/dist/frontend/lowering/builtins/child-process.js.map +1 -1
  312. package/dist/frontend/lowering/builtins/crypto.js +87 -10
  313. package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
  314. package/dist/frontend/lowering/builtins/dates.js +4 -1
  315. package/dist/frontend/lowering/builtins/dates.js.map +1 -1
  316. package/dist/frontend/lowering/builtins/filesystem-calls.js +3 -3
  317. package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
  318. package/dist/frontend/lowering/builtins/fs-glob.js +6 -3
  319. package/dist/frontend/lowering/builtins/fs-glob.js.map +1 -1
  320. package/dist/frontend/lowering/builtins/fs-paths.d.ts +43 -5
  321. package/dist/frontend/lowering/builtins/fs-paths.js +245 -93
  322. package/dist/frontend/lowering/builtins/fs-paths.js.map +1 -1
  323. package/dist/frontend/lowering/builtins/global-namespace-keys.d.ts +3 -0
  324. package/dist/frontend/lowering/builtins/global-namespace-keys.js +122 -0
  325. package/dist/frontend/lowering/builtins/global-namespace-keys.js.map +1 -0
  326. package/dist/frontend/lowering/builtins/module-calls.js +6 -3
  327. package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
  328. package/dist/frontend/lowering/builtins/numbers.js +9 -1
  329. package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
  330. package/dist/frontend/lowering/builtins/promises.d.ts +7 -1
  331. package/dist/frontend/lowering/builtins/promises.js +236 -139
  332. package/dist/frontend/lowering/builtins/promises.js.map +1 -1
  333. package/dist/frontend/lowering/builtins/readline.d.ts +5 -1
  334. package/dist/frontend/lowering/builtins/readline.js +35 -3
  335. package/dist/frontend/lowering/builtins/readline.js.map +1 -1
  336. package/dist/frontend/lowering/builtins/url.js +24 -1
  337. package/dist/frontend/lowering/builtins/url.js.map +1 -1
  338. package/dist/frontend/lowering/builtins/webassembly.js +6 -3
  339. package/dist/frontend/lowering/builtins/webassembly.js.map +1 -1
  340. package/dist/frontend/lowering/call-signatures.js +0 -1
  341. package/dist/frontend/lowering/call-signatures.js.map +1 -1
  342. package/dist/frontend/lowering/cjs-exports-object.js +1 -1
  343. package/dist/frontend/lowering/cjs-exports-object.js.map +1 -1
  344. package/dist/frontend/lowering/cjs-inline-require.d.ts +32 -0
  345. package/dist/frontend/lowering/cjs-inline-require.js +307 -4
  346. package/dist/frontend/lowering/cjs-inline-require.js.map +1 -1
  347. package/dist/frontend/lowering/class-callbacks.d.ts +5 -2
  348. package/dist/frontend/lowering/class-callbacks.js +82 -12
  349. package/dist/frontend/lowering/class-callbacks.js.map +1 -1
  350. package/dist/frontend/lowering/class-construction.d.ts +4 -1
  351. package/dist/frontend/lowering/class-construction.js +17 -3
  352. package/dist/frontend/lowering/class-construction.js.map +1 -1
  353. package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +49 -2
  354. package/dist/frontend/lowering/class-dynamic-dispatch.js +880 -108
  355. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  356. package/dist/frontend/lowering/class-dynamic-dispatch.test.js +47 -0
  357. package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
  358. package/dist/frontend/lowering/class-iterables.d.ts +2 -1
  359. package/dist/frontend/lowering/class-iterables.js +9 -1
  360. package/dist/frontend/lowering/class-iterables.js.map +1 -1
  361. package/dist/frontend/lowering/class-method-mutations.js +83 -24
  362. package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
  363. package/dist/frontend/lowering/class-protocols.d.ts +25 -0
  364. package/dist/frontend/lowering/class-protocols.js +183 -1
  365. package/dist/frontend/lowering/class-protocols.js.map +1 -1
  366. package/dist/frontend/lowering/class-prototypes.js +31 -2
  367. package/dist/frontend/lowering/class-prototypes.js.map +1 -1
  368. package/dist/frontend/lowering/class-runtime-statics.d.ts +9 -3
  369. package/dist/frontend/lowering/class-runtime-statics.js +29 -4
  370. package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
  371. package/dist/frontend/lowering/coercions/structural-plans.js +48 -1
  372. package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
  373. package/dist/frontend/lowering/coercions/structural.js +91 -1
  374. package/dist/frontend/lowering/coercions/structural.js.map +1 -1
  375. package/dist/frontend/lowering/completion-callbacks.d.ts +4 -0
  376. package/dist/frontend/lowering/completion-callbacks.js +146 -0
  377. package/dist/frontend/lowering/completion-callbacks.js.map +1 -0
  378. package/dist/frontend/lowering/containers/array-callback-call.js +2 -2
  379. package/dist/frontend/lowering/containers/array-callback-call.js.map +1 -1
  380. package/dist/frontend/lowering/containers/array-callbacks.d.ts +5 -4
  381. package/dist/frontend/lowering/containers/array-callbacks.js +345 -24
  382. package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
  383. package/dist/frontend/lowering/containers/array-concat.js +10 -0
  384. package/dist/frontend/lowering/containers/array-concat.js.map +1 -1
  385. package/dist/frontend/lowering/containers/array-construction.js +5 -0
  386. package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
  387. package/dist/frontend/lowering/containers/array-methods.js +26 -3
  388. package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
  389. package/dist/frontend/lowering/containers/array-pipelines.js +19 -8
  390. package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
  391. package/dist/frontend/lowering/containers/bytes.d.ts +25 -17
  392. package/dist/frontend/lowering/containers/bytes.js +455 -46
  393. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  394. package/dist/frontend/lowering/containers/callback-arguments.js +3 -0
  395. package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
  396. package/dist/frontend/lowering/containers/collection-methods.js +7 -2
  397. package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
  398. package/dist/frontend/lowering/containers/filter-predicates.d.ts +6 -0
  399. package/dist/frontend/lowering/containers/filter-predicates.js +205 -0
  400. package/dist/frontend/lowering/containers/filter-predicates.js.map +1 -0
  401. package/dist/frontend/lowering/containers/indexed-objects.d.ts +0 -12
  402. package/dist/frontend/lowering/containers/indexed-objects.js +46 -7
  403. package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
  404. package/dist/frontend/lowering/containers/string-and-regexp.js +55 -9
  405. package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
  406. package/dist/frontend/lowering/containers/string-replacement.js +43 -19
  407. package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
  408. package/dist/frontend/lowering/date-values.d.ts +11 -0
  409. package/dist/frontend/lowering/date-values.js +207 -0
  410. package/dist/frontend/lowering/date-values.js.map +1 -0
  411. package/dist/frontend/lowering/dispatch-sites.js +15 -1
  412. package/dist/frontend/lowering/dispatch-sites.js.map +1 -1
  413. package/dist/frontend/lowering/divergences.js +9 -1
  414. package/dist/frontend/lowering/divergences.js.map +1 -1
  415. package/dist/frontend/lowering/error-methods.js +47 -2
  416. package/dist/frontend/lowering/error-methods.js.map +1 -1
  417. package/dist/frontend/lowering/expressions/array-literals.js +53 -0
  418. package/dist/frontend/lowering/expressions/array-literals.js.map +1 -1
  419. package/dist/frontend/lowering/expressions/binary.js +100 -28
  420. package/dist/frontend/lowering/expressions/binary.js.map +1 -1
  421. package/dist/frontend/lowering/expressions/element-access.js +169 -13
  422. package/dist/frontend/lowering/expressions/element-access.js.map +1 -1
  423. package/dist/frontend/lowering/expressions/identifiers.js +64 -5
  424. package/dist/frontend/lowering/expressions/identifiers.js.map +1 -1
  425. package/dist/frontend/lowering/expressions/narrowing.js +95 -1
  426. package/dist/frontend/lowering/expressions/narrowing.js.map +1 -1
  427. package/dist/frontend/lowering/expressions/nullish-assignment.js +3 -1
  428. package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
  429. package/dist/frontend/lowering/expressions/object-literals.d.ts +10 -0
  430. package/dist/frontend/lowering/expressions/object-literals.js +138 -51
  431. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  432. package/dist/frontend/lowering/expressions/optional-chains.js +12 -0
  433. package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
  434. package/dist/frontend/lowering/expressions/property-access.js +168 -10
  435. package/dist/frontend/lowering/expressions/property-access.js.map +1 -1
  436. package/dist/frontend/lowering/expressions/relational.js +212 -33
  437. package/dist/frontend/lowering/expressions/relational.js.map +1 -1
  438. package/dist/frontend/lowering/expressions/typeof.js +6 -0
  439. package/dist/frontend/lowering/expressions/typeof.js.map +1 -1
  440. package/dist/frontend/lowering/expressions/union-fields.js +4 -0
  441. package/dist/frontend/lowering/expressions/union-fields.js.map +1 -1
  442. package/dist/frontend/lowering/expressions/updates.js +39 -3
  443. package/dist/frontend/lowering/expressions/updates.js.map +1 -1
  444. package/dist/frontend/lowering/frozen-records.d.ts +28 -0
  445. package/dist/frontend/lowering/frozen-records.js +322 -0
  446. package/dist/frontend/lowering/frozen-records.js.map +1 -0
  447. package/dist/frontend/lowering/function-returns.js +64 -0
  448. package/dist/frontend/lowering/function-returns.js.map +1 -1
  449. package/dist/frontend/lowering/generic-functions.js +7 -2
  450. package/dist/frontend/lowering/generic-functions.js.map +1 -1
  451. package/dist/frontend/lowering/indexed-unions.d.ts +54 -0
  452. package/dist/frontend/lowering/indexed-unions.js +401 -0
  453. package/dist/frontend/lowering/indexed-unions.js.map +1 -0
  454. package/dist/frontend/lowering/iterable-values.d.ts +49 -0
  455. package/dist/frontend/lowering/iterable-values.js +297 -0
  456. package/dist/frontend/lowering/iterable-values.js.map +1 -0
  457. package/dist/frontend/lowering/iterator-adapters.js +186 -1
  458. package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
  459. package/dist/frontend/lowering/js-class-fields.d.ts +8 -0
  460. package/dist/frontend/lowering/js-class-fields.js +45 -10
  461. package/dist/frontend/lowering/js-class-fields.js.map +1 -1
  462. package/dist/frontend/lowering/key-order-witness.d.ts +18 -3
  463. package/dist/frontend/lowering/key-order-witness.js +974 -48
  464. package/dist/frontend/lowering/key-order-witness.js.map +1 -1
  465. package/dist/frontend/lowering/key-order-witness.test.js +530 -10
  466. package/dist/frontend/lowering/key-order-witness.test.js.map +1 -1
  467. package/dist/frontend/lowering/lower-assert.js +15 -3
  468. package/dist/frontend/lowering/lower-assert.js.map +1 -1
  469. package/dist/frontend/lowering/lower-async-iteration.js +4 -1
  470. package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
  471. package/dist/frontend/lowering/lower-calls.d.ts +7 -0
  472. package/dist/frontend/lowering/lower-calls.js +462 -44
  473. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  474. package/dist/frontend/lowering/lower-classes.d.ts +11 -2
  475. package/dist/frontend/lowering/lower-classes.js +324 -69
  476. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  477. package/dist/frontend/lowering/lower-dgram.js +3 -1
  478. package/dist/frontend/lowering/lower-dgram.js.map +1 -1
  479. package/dist/frontend/lowering/lower-exprs.js +215 -3
  480. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  481. package/dist/frontend/lowering/lower-functions.d.ts +11 -0
  482. package/dist/frontend/lowering/lower-functions.js +83 -0
  483. package/dist/frontend/lowering/lower-functions.js.map +1 -1
  484. package/dist/frontend/lowering/lower-generators.js +42 -32
  485. package/dist/frontend/lowering/lower-generators.js.map +1 -1
  486. package/dist/frontend/lowering/lower-global-value.js +6 -3
  487. package/dist/frontend/lowering/lower-global-value.js.map +1 -1
  488. package/dist/frontend/lowering/lower-inspect.d.ts +1 -1
  489. package/dist/frontend/lowering/lower-inspect.js +53 -17
  490. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  491. package/dist/frontend/lowering/lower-modules.js +53 -5
  492. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  493. package/dist/frontend/lowering/lower-namespaces.js +5 -1
  494. package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
  495. package/dist/frontend/lowering/lower-server.js +2 -2
  496. package/dist/frontend/lowering/lower-server.js.map +1 -1
  497. package/dist/frontend/lowering/lower-stdlib.d.ts +5 -0
  498. package/dist/frontend/lowering/lower-stdlib.js +30 -0
  499. package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
  500. package/dist/frontend/lowering/lower-stmts.d.ts +23 -0
  501. package/dist/frontend/lowering/lower-stmts.js +553 -81
  502. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  503. package/dist/frontend/lowering/lower-stream.d.ts +20 -2
  504. package/dist/frontend/lowering/lower-stream.js +1483 -156
  505. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  506. package/dist/frontend/lowering/lowerer.d.ts +107 -8
  507. package/dist/frontend/lowering/lowerer.js +381 -36
  508. package/dist/frontend/lowering/lowerer.js.map +1 -1
  509. package/dist/frontend/lowering/module-namespace-elements.d.ts +11 -1
  510. package/dist/frontend/lowering/module-namespace-elements.js +82 -5
  511. package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
  512. package/dist/frontend/lowering/new-target.d.ts +12 -0
  513. package/dist/frontend/lowering/new-target.js +280 -0
  514. package/dist/frontend/lowering/new-target.js.map +1 -0
  515. package/dist/frontend/lowering/object-factory-new.d.ts +5 -0
  516. package/dist/frontend/lowering/object-factory-new.js +20 -6
  517. package/dist/frontend/lowering/object-factory-new.js.map +1 -1
  518. package/dist/frontend/lowering/overload-choice.d.ts +33 -0
  519. package/dist/frontend/lowering/overload-choice.js +190 -0
  520. package/dist/frontend/lowering/overload-choice.js.map +1 -0
  521. package/dist/frontend/lowering/surfaces.d.ts +3 -0
  522. package/dist/frontend/lowering/surfaces.js +73 -8
  523. package/dist/frontend/lowering/surfaces.js.map +1 -1
  524. package/dist/frontend/lowering/undefined-index.d.ts +27 -0
  525. package/dist/frontend/lowering/undefined-index.js +82 -0
  526. package/dist/frontend/lowering/undefined-index.js.map +1 -0
  527. package/dist/frontend/lowering/var-hoisting.js +29 -13
  528. package/dist/frontend/lowering/var-hoisting.js.map +1 -1
  529. package/dist/frontend/lowering/width-lift.d.ts +18 -0
  530. package/dist/frontend/npm-static-bundled-chunks.js +9 -11
  531. package/dist/frontend/npm-static-bundled-chunks.js.map +1 -1
  532. package/dist/frontend/npm-static-bundled-chunks.test.js +6 -5
  533. package/dist/frontend/npm-static-bundled-chunks.test.js.map +1 -1
  534. package/dist/frontend/npm-static-rewrite-syntax.js +9 -1
  535. package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
  536. package/dist/frontend/npm-static.js +4 -20
  537. package/dist/frontend/npm-static.js.map +1 -1
  538. package/dist/frontend/package-shims.d.ts +3 -0
  539. package/dist/frontend/package-shims.js +71 -8
  540. package/dist/frontend/package-shims.js.map +1 -1
  541. package/dist/frontend/pipeline.js +19 -11
  542. package/dist/frontend/pipeline.js.map +1 -1
  543. package/dist/frontend/process-fork.d.ts +25 -0
  544. package/dist/frontend/process-fork.js +2 -0
  545. package/dist/frontend/process-fork.js.map +1 -0
  546. package/dist/frontend/program-analysis.d.ts +5 -1
  547. package/dist/frontend/program-analysis.js +5 -0
  548. package/dist/frontend/program-analysis.js.map +1 -1
  549. package/dist/frontend/program.d.ts +21 -6
  550. package/dist/frontend/program.js +681 -83
  551. package/dist/frontend/program.js.map +1 -1
  552. package/dist/frontend/program.test.js +43 -3
  553. package/dist/frontend/program.test.js.map +1 -1
  554. package/dist/frontend/token-equivalence.d.ts +3 -0
  555. package/dist/frontend/token-equivalence.js +409 -0
  556. package/dist/frontend/token-equivalence.js.map +1 -0
  557. package/dist/frontend/token-equivalence.test.d.ts +1 -0
  558. package/dist/frontend/token-equivalence.test.js +67 -0
  559. package/dist/frontend/token-equivalence.test.js.map +1 -0
  560. package/dist/frontend/ts7/ast-node.d.ts +22 -0
  561. package/dist/frontend/ts7/ast-node.js +1048 -103
  562. package/dist/frontend/ts7/ast-node.js.map +1 -1
  563. package/dist/frontend/ts7/ast-node.test.js +24 -0
  564. package/dist/frontend/ts7/ast-node.test.js.map +1 -1
  565. package/dist/frontend/ts7/ast-wire.d.ts +4 -3
  566. package/dist/frontend/ts7/ast-wire.js +34 -24
  567. package/dist/frontend/ts7/ast-wire.js.map +1 -1
  568. package/dist/frontend/ts7/ast-wire.test.js +23 -0
  569. package/dist/frontend/ts7/ast-wire.test.js.map +1 -1
  570. package/dist/frontend/ts7/checker-backend.d.ts +3 -4
  571. package/dist/frontend/ts7/checker-backend.js +2 -2
  572. package/dist/frontend/ts7/checker-backend.js.map +1 -1
  573. package/dist/frontend/ts7/checker-backend.test.js +5 -9
  574. package/dist/frontend/ts7/checker-backend.test.js.map +1 -1
  575. package/dist/frontend/ts7/checker.d.ts +4 -0
  576. package/dist/frontend/ts7/checker.js +7 -0
  577. package/dist/frontend/ts7/checker.js.map +1 -1
  578. package/dist/frontend/ts7/lib-diagnostics.d.ts +24 -0
  579. package/dist/frontend/ts7/lib-diagnostics.js +307 -0
  580. package/dist/frontend/ts7/lib-diagnostics.js.map +1 -0
  581. package/dist/frontend/ts7/lib-diagnostics.test.d.ts +1 -0
  582. package/dist/frontend/ts7/lib-diagnostics.test.js +199 -0
  583. package/dist/frontend/ts7/lib-diagnostics.test.js.map +1 -0
  584. package/dist/frontend/ts7/program-host.d.ts +7 -0
  585. package/dist/frontend/ts7/program-host.js +25 -2
  586. package/dist/frontend/ts7/program-host.js.map +1 -1
  587. package/dist/frontend/ts7/semantic-model.d.ts +3 -0
  588. package/dist/frontend/ts7/semantic-model.js +5 -0
  589. package/dist/frontend/ts7/semantic-model.js.map +1 -1
  590. package/dist/frontend/ts7/semantic-model.test.js +6 -1
  591. package/dist/frontend/ts7/semantic-model.test.js.map +1 -1
  592. package/dist/frontend/ts7/semantic-types.d.ts +1 -1
  593. package/dist/frontend/ts7/semantic-types.js +1 -1
  594. package/dist/frontend/ts7/semantic-types.js.map +1 -1
  595. package/dist/frontend/ts7/session.d.ts +14 -1
  596. package/dist/frontend/ts7/session.js +22 -0
  597. package/dist/frontend/ts7/session.js.map +1 -1
  598. package/dist/frontend/type-mapper.d.ts +13 -1
  599. package/dist/frontend/type-mapper.js +229 -20
  600. package/dist/frontend/type-mapper.js.map +1 -1
  601. package/dist/index.d.ts +0 -5
  602. package/dist/index.js +46 -4
  603. package/dist/index.js.map +1 -1
  604. package/dist/ir/analysis.js +5 -3
  605. package/dist/ir/analysis.js.map +1 -1
  606. package/dist/ir/array-length-stability.d.ts +4 -0
  607. package/dist/ir/array-length-stability.js +19 -6
  608. package/dist/ir/array-length-stability.js.map +1 -1
  609. package/dist/ir/array-length-stability.test.js +24 -0
  610. package/dist/ir/array-length-stability.test.js.map +1 -1
  611. package/dist/ir/builtin-effects.d.ts +7 -0
  612. package/dist/ir/builtin-effects.js +60 -0
  613. package/dist/ir/builtin-effects.js.map +1 -1
  614. package/dist/ir/builtin-signatures.d.ts +6 -4
  615. package/dist/ir/builtin-signatures.js +222 -13
  616. package/dist/ir/builtin-signatures.js.map +1 -1
  617. package/dist/ir/callback-specialization.d.ts +2 -1
  618. package/dist/ir/callback-specialization.js +23 -18
  619. package/dist/ir/callback-specialization.js.map +1 -1
  620. package/dist/ir/char-unit-locals.d.ts +19 -0
  621. package/dist/ir/char-unit-locals.js +185 -0
  622. package/dist/ir/char-unit-locals.js.map +1 -0
  623. package/dist/ir/char-unit-locals.test.d.ts +1 -0
  624. package/dist/ir/char-unit-locals.test.js +94 -0
  625. package/dist/ir/char-unit-locals.test.js.map +1 -0
  626. package/dist/ir/final-fields.d.ts +2 -1
  627. package/dist/ir/final-fields.js +14 -16
  628. package/dist/ir/final-fields.js.map +1 -1
  629. package/dist/ir/function-references.d.ts +2 -0
  630. package/dist/ir/function-references.js +2 -0
  631. package/dist/ir/function-references.js.map +1 -1
  632. package/dist/ir/function-references.test.js +3 -0
  633. package/dist/ir/function-references.test.js.map +1 -1
  634. package/dist/ir/initializer-bindings.d.ts +2 -1
  635. package/dist/ir/initializer-bindings.js +27 -20
  636. package/dist/ir/initializer-bindings.js.map +1 -1
  637. package/dist/ir/int32-arrays.d.ts +108 -0
  638. package/dist/ir/int32-arrays.js +831 -0
  639. package/dist/ir/int32-arrays.js.map +1 -0
  640. package/dist/ir/int32-slots.d.ts +24 -2
  641. package/dist/ir/int32-slots.js +266 -57
  642. package/dist/ir/int32-slots.js.map +1 -1
  643. package/dist/ir/int32-slots.test.js +33 -0
  644. package/dist/ir/int32-slots.test.js.map +1 -1
  645. package/dist/ir/integer-loops.d.ts +3 -3
  646. package/dist/ir/integer-loops.js +28 -10
  647. package/dist/ir/integer-loops.js.map +1 -1
  648. package/dist/ir/integer-loops.test.js +10 -0
  649. package/dist/ir/integer-loops.test.js.map +1 -1
  650. package/dist/ir/integer-ranges.d.ts +5 -0
  651. package/dist/ir/integer-ranges.js +125 -12
  652. package/dist/ir/integer-ranges.js.map +1 -1
  653. package/dist/ir/integer-ranges.test.js +30 -0
  654. package/dist/ir/integer-ranges.test.js.map +1 -1
  655. package/dist/ir/ir.d.ts +83 -10
  656. package/dist/ir/ir.js +77 -6
  657. package/dist/ir/ir.js.map +1 -1
  658. package/dist/ir/ir.test.js +23 -2
  659. package/dist/ir/ir.test.js.map +1 -1
  660. package/dist/ir/js-ic.d.ts +4 -0
  661. package/dist/ir/js-ic.js +17 -1
  662. package/dist/ir/js-ic.js.map +1 -1
  663. package/dist/ir/js-ic.test.js +46 -0
  664. package/dist/ir/js-ic.test.js.map +1 -1
  665. package/dist/ir/node-index.d.ts +57 -0
  666. package/dist/ir/node-index.js +215 -0
  667. package/dist/ir/node-index.js.map +1 -0
  668. package/dist/ir/paired-while-loops.d.ts +25 -0
  669. package/dist/ir/paired-while-loops.js +335 -0
  670. package/dist/ir/paired-while-loops.js.map +1 -0
  671. package/dist/ir/paired-while-loops.test.d.ts +1 -0
  672. package/dist/ir/paired-while-loops.test.js +163 -0
  673. package/dist/ir/paired-while-loops.test.js.map +1 -0
  674. package/dist/ir/parameter-versions.d.ts +25 -0
  675. package/dist/ir/parameter-versions.js +300 -0
  676. package/dist/ir/parameter-versions.js.map +1 -0
  677. package/dist/ir/runtime-features.d.ts +34 -13
  678. package/dist/ir/runtime-features.js +177 -39
  679. package/dist/ir/runtime-features.js.map +1 -1
  680. package/dist/ir/serialize.d.ts +12 -2
  681. package/dist/ir/serialize.js +16 -3
  682. package/dist/ir/serialize.js.map +1 -1
  683. package/dist/ir/serialize.test.js +17 -0
  684. package/dist/ir/serialize.test.js.map +1 -1
  685. package/dist/ir/traverse.js +18 -6
  686. package/dist/ir/traverse.js.map +1 -1
  687. package/dist/ir/validate.js +167 -40
  688. package/dist/ir/validate.js.map +1 -1
  689. package/dist/library/ir-policy.js +3 -0
  690. package/dist/library/ir-policy.js.map +1 -1
  691. package/dist/native/cache.d.ts +6 -1
  692. package/dist/native/cache.js +28 -5
  693. package/dist/native/cache.js.map +1 -1
  694. package/dist/native/cache.test.js +16 -2
  695. package/dist/native/cache.test.js.map +1 -1
  696. package/dist/native/cli.js +21 -1
  697. package/dist/native/cli.js.map +1 -1
  698. package/dist/native/compiler.js +8 -6
  699. package/dist/native/compiler.js.map +1 -1
  700. package/dist/native/executable-cache.d.ts +1 -1
  701. package/dist/native/executable-cache.js +2 -2
  702. package/dist/native/executable-cache.js.map +1 -1
  703. package/dist/native/prepare.d.ts +4 -2
  704. package/dist/native/prepare.js +130 -32
  705. package/dist/native/prepare.js.map +1 -1
  706. package/dist/native/prepare.test.js +96 -20
  707. package/dist/native/prepare.test.js.map +1 -1
  708. package/dist/native/sanitizer.test.js +2 -0
  709. package/dist/native/sanitizer.test.js.map +1 -1
  710. package/dist/native/text-file.d.ts +13 -3
  711. package/dist/native/text-file.js +63 -9
  712. package/dist/native/text-file.js.map +1 -1
  713. package/dist/native/text-file.test.d.ts +1 -0
  714. package/dist/native/text-file.test.js +49 -0
  715. package/dist/native/text-file.test.js.map +1 -0
  716. package/dist/native/toolchain.js +4 -4
  717. package/dist/native/toolchain.js.map +1 -1
  718. package/dist/native/toolchain.test.js +3 -3
  719. package/dist/native/toolchain.test.js.map +1 -1
  720. package/package.json +21 -21
  721. package/shims/chalk/v5.ts +688 -0
  722. package/shims/hono-node-server/v2.ts +645 -0
  723. package/shims/hot-shots/client.ts +1126 -0
  724. package/shims/hot-shots/v8-unix-dgram.ts +8 -0
  725. package/shims/hot-shots/v8.ts +8 -0
  726. package/surface-manifest.json +27 -7
@@ -1,12 +1,12 @@
1
+ import type { TargetCpu } from "../target-cpu.js";
1
2
  import { JsIcSites } from "../../ir/js-ic.js";
2
3
  import { type ArraySearchKind } from "./array-search.js";
3
4
  import type { IrBytesElem, IrExpr, IrFfiCallbackParam, IrFfiImport, IrFunction, IrGlobal, IrLocal, IrModule, IrRecordShape, IrStmt, IrType, IrUnionDef, SrcLoc } from "../../ir/ir.js";
4
5
  import { type RuntimeFeatures } from "../../ir/runtime-features.js";
5
- import { type DenseArrayLoop } from "./dense-array-loops.js";
6
- import { findInitializedByteLoopBindings } from "./byte-windows.js";
7
6
  import { matchBytesLoopVersion } from "./bytes-loop-versions.js";
8
- import type { IntegerCountedForLoop } from "../../ir/integer-loops.js";
7
+ import type { IntegerCountedForLoop, IntegerPairedForLoop } from "../../ir/integer-loops.js";
9
8
  import { type SplitSpan, type StoredSplitSnapshot } from "./split-loops.js";
9
+ import { type ChunkResult, EmitJournal } from "./emit-journal.js";
10
10
  import { type IntegerRange, type IntegerRanges } from "../../ir/integer-ranges.js";
11
11
  import { type Int32Slots } from "../../ir/int32-slots.js";
12
12
  import { type FinalFields } from "../../ir/final-fields.js";
@@ -24,9 +24,11 @@ import { NullableRefFields, type NullableRefField } from "./nullable-fields.js";
24
24
  import { InlineUnionFields } from "./inline-unions.js";
25
25
  import { OptionalArrayReads, type LocalArrayRead } from "./local-array-reads.js";
26
26
  import { CheckedNarrows } from "./checked-narrows.js";
27
+ import { type ArrayAccess } from "./dense-array-access.js";
27
28
  import { type MapReadLifetimes } from "./map-read-lifetimes.js";
28
29
  import { type MapEntryFusion } from "./map-entry-fusion.js";
29
30
  import { type WalkBorrowHost } from "./walk-borrows.js";
31
+ import { IrNodeIndex } from "../../ir/node-index.js";
30
32
  import { ReferenceEffects } from "./reference-effects.js";
31
33
  import { ReferenceWrites, type Writes } from "./reference-writes.js";
32
34
  import { LlvmDebugInfo } from "./debug-info.js";
@@ -65,9 +67,31 @@ export interface LlScopeEntry {
65
67
  * environment, which skip the release call. */
66
68
  lazy?: boolean;
67
69
  }
70
+ /** Process primitives for forked emission workers. */
71
+ export interface ForkPrimitives {
72
+ /** 0 in the worker, the worker's pid in the parent, -1 on failure. */
73
+ fork(): number;
74
+ /** Ends the worker without running exit handlers. */
75
+ exit(code: number): void;
76
+ /** The worker's exit status, 128 plus a signal number, or -1. */
77
+ wait(pid: number): number;
78
+ }
68
79
  export interface LlvmTargetOptions {
69
80
  /** C ABI target; omitted direct emission uses the host ABI. */
70
81
  targetTriple?: string;
82
+ /** Emit the function bodies in this many contiguous ranges, each by its
83
+ * own emitter, and merge them in function order (emit-journal.ts). The
84
+ * output is the same as one emitter's. Debug builds (`debugSources`)
85
+ * emit in one emitter. */
86
+ functionChunks?: number;
87
+ /** Emit the function bodies of a large module on this many forked worker
88
+ * processes at a time (emit-module.ts), forked with `forkPrimitives`. The
89
+ * output is the same as one emitter's. Debug builds (`debugSources`)
90
+ * emit in one emitter. */
91
+ functionWorkers?: number;
92
+ /** The host's process primitives, where it can fork (the native
93
+ * compiler's). */
94
+ forkPrimitives?: ForkPrimitives | undefined;
71
95
  /** Exact frontend sources for dev-build locations and variable metadata. */
72
96
  debugSources?: ReadonlyMap<string, string>;
73
97
  /** Pointer width of the target C ABI. Native targets are 64-bit today. */
@@ -104,6 +128,10 @@ export interface LlvmTargetOptions {
104
128
  * store the instance's address over 8 in 32 bits (classes.ts
105
129
  * compactRefLoadLines). Elsewhere they keep 8-byte pointers. */
106
130
  lowRegion?: boolean;
131
+ /** The x86-64 level the program's code may require (`--target-cpu`):
132
+ * every emitted function carries it as its `target-cpu`. Unset, code
133
+ * runs on any x86-64 CPU. */
134
+ targetCpu?: TargetCpu;
107
135
  }
108
136
  /** LlvmTargetOptions.lowRegion for an executable: Linux targets without
109
137
  * sanitizers, whose address space below 32 GiB is free (ASan keeps its
@@ -112,6 +140,9 @@ export interface LlvmTargetOptions {
112
140
  * `wasi`). */
113
141
  export declare function lowRegionTarget(platform: string, sanitize: boolean): boolean;
114
142
  export declare function emitLlvmModule(input: IrModule, options?: LlvmTargetOptions): string;
143
+ /** emitLlvmModule's text as parts that concatenate to it, without the copy
144
+ * that joining them makes: a large program's text is 150 MB. */
145
+ export declare function emitLlvmModuleParts(input: IrModule, options?: LlvmTargetOptions): string[];
115
146
  /** Keep large translation units below the host's single-string limit. */
116
147
  export declare function emitLlvmModuleSource(input: IrModule, options?: LlvmTargetOptions): string | readonly string[];
117
148
  export declare function llStrBytes(text: string): string;
@@ -141,6 +172,8 @@ export declare function boxSlotCount(fn: IrFunction): number;
141
172
  export declare const MAX_BYTES_LOOP_VERSION_DEPTH = 3;
142
173
  export declare class LlEmitter {
143
174
  readonly mod: IrModule;
175
+ /** Per-feature state (emitter-state.ts), indexed by each key's slot. */
176
+ readonly moduleStates: unknown[];
144
177
  localArrayReads: Map<string, LocalArrayRead>;
145
178
  loopArrayBorrows: ReadonlySet<IrStmt>;
146
179
  scalarStringSlices: Map<string, {
@@ -223,9 +256,11 @@ export declare class LlEmitter {
223
256
  * 32-bit references to compact class instances (LlClassMeta.compressed):
224
257
  * loadField/loadRef decode them and storeField/storeRef encode them. */
225
258
  readonly compressedFieldPtrs: Set<string>;
226
- /** Whether a class has compressed fields: main reserves the region before
227
- * compiled code runs (scr_plr_init). */
228
- usesCompactRefs: boolean;
259
+ /** Compact class instances live in the program-lifetime region below
260
+ * 32 GiB (LlvmTargetOptions.lowRegion, and the program has compact
261
+ * classes): main reserves it before compiled code runs (scr_plr_init), and
262
+ * fields and arrays of compactRefType hold 32-bit references. */
263
+ compactRegion: boolean;
229
264
  /** Native class fields with different property names cannot occupy the
230
265
  * same slot of one object. Inherited views of the same property share a
231
266
  * tag. Array storage has its own disjoint categories; untagged runtime
@@ -235,9 +270,64 @@ export declare class LlEmitter {
235
270
  /** The alias tag of a runtime word that emitted code reads and writes
236
271
  * outside every field (the lifetime-region count, owner and cursors). */
237
272
  memoryAliasAttachment(category: string): string;
273
+ /** The current function's int32 array allocations: the array literals
274
+ * its int32 arrays are written with. They construct SCR_ELEM_I32 arrays. */
275
+ int32Allocations: Set<IrExpr>;
276
+ /** The fill temporaries (`new Array(n).fill(v)`) of those allocations:
277
+ * the same arrays, so int32 too. */
278
+ int32ArrayTemps: Set<string>;
279
+ /** The same for the current function's int32 arrays with checked stores,
280
+ * which are only allocated by fills (ir/int32-arrays.ts
281
+ * checkableInt32Allocations): their temporaries' literals, with the fill's
282
+ * length (a literal constructs SCR_ELEM_I32 storage when that length is at
283
+ * least CHECKED_INT32_MIN_LENGTH, SCR_ELEM_F64 otherwise), and their
284
+ * temporaries. */
285
+ checkedAllocations: Map<IrExpr, IrExpr>;
286
+ checkedArrayTemps: Set<string>;
287
+ /** The fill calls (`.fill(v)`) of those allocations: a value that is not
288
+ * an int32 widens the new array first. */
289
+ checkedFills: Set<IrExpr>;
290
+ /** Collect the int32 allocations of `fn`, about to be emitted. */
291
+ findInt32Allocations(fn: IrFunction): void;
292
+ /** Whether `arr` reads one of the int32 arrays (ir/int32-arrays.ts, kept
293
+ * by the int32 slot analysis): a local or parameter of the current
294
+ * function, or a module global. */
295
+ int32Array(arr: IrExpr): boolean;
296
+ /** Whether `arr` is one of the current function's int32 arrays with
297
+ * checked stores: int32 slots until a store widens it to doubles. Every
298
+ * access tests its kind (emitByElementKind), except in the fast copy of
299
+ * an int32 kind loop, which reads and writes it as an int32 array. */
300
+ checkedInt32Array(arr: IrExpr): boolean;
301
+ /** Whether the local `localId` holds one of the current function's int32
302
+ * arrays with checked stores. */
303
+ checkedInt32Local(localId: string): boolean;
304
+ /** Whether `arr` is an int32 array with checked stores that the fast copy
305
+ * of the int32 kind loop being emitted holds as an int32 array. */
306
+ int32KindArray(arr: IrExpr): boolean;
307
+ /** Before a store of `value` (of `expr`) into `arr`, in the fast copy of
308
+ * an int32 kind loop: continue when it is an int32 that is not -0, and
309
+ * otherwise leave for the statement's resume point, where it re-executes
310
+ * with kind tests. Returns the value as an i32 when it is at hand as an
311
+ * integer, or null when the store converts the double itself. */
312
+ emitInt32KindStoreCheck(arr: IrExpr, value: LlValue, expr: IrExpr): string | null;
313
+ /** Emit an access to the checked int32 array `array` once per element
314
+ * kind: `arm("i32", widened)` while it holds int32 slots and
315
+ * `arm("f64", widened)` after it widened, joined after both. `widened` is
316
+ * the label of the double arm, where an int32 arm's store of a value that
317
+ * is not an int32 continues after widening the array. Returns the phi of
318
+ * the arms' results (of LLVM type `ty`), or null when `ty` is null. */
319
+ emitByElementKind(array: string, ty: string | null, arm: (acc: "i32" | "f64", widened: string) => string | null): string | null;
320
+ /** Before storing the double `value` (of `expr`) into an int32 arm
321
+ * (emitByElementKind) of the checked int32 array `array`: continue in this
322
+ * arm when it is an int32 that is not -0, or widen the array and continue
323
+ * at `widened`. A value proven an int32 needs no test. */
324
+ emitCheckedInt32Store(array: string, value: string, expr: IrExpr, widened: string): void;
325
+ /** The access an element operation on `arr` (of element type `elem`)
326
+ * takes: int32 arrays read and write their 4-byte slots. */
327
+ arrayAccess(arr: IrExpr, elem: IrType): ArrayAccess;
238
328
  /** Whether an element access at `index` of `arr` lies in the hole-free
239
- * prefix: the counter of a dense array loop's fast copy indexing one of
240
- * the arrays its entry test covered. */
329
+ * prefix: a counter of a dense array loop's fast copy indexing one of the
330
+ * arrays its entry test covered. */
241
331
  provenDenseIndex(arr: IrExpr, index: IrExpr): boolean;
242
332
  fieldAliasAttachment(ptr: string): string;
243
333
  fieldAliasMetadata(): string[];
@@ -282,6 +372,7 @@ export declare class LlEmitter {
282
372
  readonly emitLibraryIdentity: boolean;
283
373
  readonly runtimeAbiMarker: boolean;
284
374
  readonly detachedExit: boolean;
375
+ readonly targetCpu: TargetCpu | undefined;
285
376
  readonly wasmBoundsChecks: boolean;
286
377
  /** Interned string literals: UTF-8 text → { symbol, byte length } —
287
378
  * first-use order, the runtime ABI’s determinism discipline. */
@@ -341,6 +432,10 @@ export declare class LlEmitter {
341
432
  }>;
342
433
  /** Interned ScrMapOps descriptors (scr_map.h): initializer → symbol. */
343
434
  readonly mapOpsConsts: Map<string, string>;
435
+ /** Method-id slots of checked-dynamic method calls
436
+ * (scr_dyn_invoke_prepared_id): method name → symbol of an i32 the
437
+ * runtime fills with the name's id on the first call. */
438
+ readonly methodIdSlots: Map<string, string>;
344
439
  /** Type-directed walker functions (JSON serializers, the indent
345
440
  * rewriter, union ToString/join) — interned per typeKey/unionId, defs
346
441
  * flushed with the shape helpers. */
@@ -389,6 +484,9 @@ export declare class LlEmitter {
389
484
  readonly callLifetimes: CallLifetimes;
390
485
  readonly constantCallbacks: Map<string, Map<string, string>>;
391
486
  currentConstantCallbacks: ReadonlyMap<string, string>;
487
+ /** The current function's running maximum and minimum updates, whose
488
+ * branches are weighted as rarely taken (running-extrema.ts). */
489
+ runningExtrema: ReadonlySet<IrStmt>;
392
490
  /** Callback bindings whose closures an enclosing callback loop version
393
491
  * proved to hold their known function: calls take the direct entry with
394
492
  * no fallback (emitCallbackVersionedLoop). */
@@ -437,6 +535,9 @@ export declare class LlEmitter {
437
535
  /** Module constants that keep one value once initialized
438
536
  * (immutability.ts stableGlobals). */
439
537
  stableGlobals: ReadonlySet<string>;
538
+ /** Every function body's nodes in walk order (ir/node-index.ts), for the
539
+ * constructor's analyses. */
540
+ readonly nodeIndex: IrNodeIndex;
440
541
  private readonly tdzGlobals;
441
542
  readonly constantNumericTables: ReadonlyMap<string, ConstantNumericTable>;
442
543
  /** Constant-key reads on checked-dynamic objects, each with its own
@@ -519,6 +620,9 @@ export declare class LlEmitter {
519
620
  readonly liveDynRefAdapters: Map<string, LlStreamTypedRefAdapter>;
520
621
  /** See moduleUsesDynBuiltinStream. */
521
622
  get usesDynBuiltinStream(): boolean;
623
+ /** A checked-dynamic for-await may hold a native stream: the program
624
+ * links the stream unit (and the dyn-async one the loop needs). */
625
+ get dynForAwaitStreams(): boolean;
522
626
  /** Runtime-arm dispatchers for live union values. */
523
627
  readonly liveDynUnionRefAdapters: Map<string, string>;
524
628
  readonly dynPromiseAdapters: Map<string, string>;
@@ -640,14 +744,6 @@ export declare class LlEmitter {
640
744
  * immortal from construction (classes.ts programLifetimeClass). */
641
745
  readonly programLifetime: ReadonlySet<string>;
642
746
  numericLocals: Map<string, IrLocal>;
643
- /** Local arrays of the current function that no other binding can hold
644
- * (ir/array-length-stability.ts). */
645
- unaliasedArrays: ReadonlySet<string>;
646
- /** Dense array loops (dense-array-loops.ts) run in this function. */
647
- denseLoopsEnabled: boolean;
648
- denseLoopEntries: ReturnType<typeof findInitializedByteLoopBindings>;
649
- /** The fast copy of a dense array loop being emitted. */
650
- denseLoop: DenseArrayLoop | null;
651
747
  captureIds: Set<string>;
652
748
  /** Active induction bindings retain their width independently of size_t. */
653
749
  integerLoopBindings: Map<string, {
@@ -672,7 +768,6 @@ export declare class LlEmitter {
672
768
  * async or generator body resumes with its locals in its frame, which
673
769
  * an entry alloca is not part of. */
674
770
  integerTempsEnabled: boolean;
675
- countedLoopsEnabled: boolean;
676
771
  /** Speculative integer loops (speculative-integers.ts) run in this function. */
677
772
  speculativeLoopsEnabled: boolean;
678
773
  /** The fast copy of a speculative integer loop being emitted: its
@@ -699,6 +794,18 @@ export declare class LlEmitter {
699
794
  * (`enterLoopHeader`): records the ordinary copy's header, or sends the
700
795
  * third copy's header there. */
701
796
  speculationHeader: ((header: string) => void) | null;
797
+ /** A copy of an int32 kind loop (int32-kind-loops.ts) being emitted: the
798
+ * int32 arrays with checked stores it reads and writes as int32 arrays
799
+ * (the fast copy) or as double arrays (an ordinary copy entered only
800
+ * after they widened), as `function\0local` keys, and where each of the
801
+ * fast copy's writes resumes in the third copy. */
802
+ int32Kinds: {
803
+ int32: Set<string>;
804
+ wide: Set<string>;
805
+ resume: Map<IrStmt, string>;
806
+ } | null;
807
+ /** The resume label of the fast-copy write being emitted. */
808
+ int32KindResume: string | null;
702
809
  /** The function being emitted, for speculative globals. */
703
810
  speculativeFunction: string;
704
811
  /** Every function that writes each number global (computed on demand). */
@@ -716,20 +823,14 @@ export declare class LlEmitter {
716
823
  int32Elements: ((arr: IrExpr) => boolean) | null;
717
824
  /** Sums whose result only feeds 32-bit conversions (wrapping-sums.ts). */
718
825
  wrappingSums: Set<IrExpr>;
719
- byteWindowsEnabled: boolean;
720
- byteWindowEntries: ReturnType<typeof findInitializedByteLoopBindings>;
721
- /** Typed-array loop versioning (bytes-loop-versions.ts) for the current
722
- * function: off in debug and suspending functions and inside a copy. */
723
- bytesLoopVersionsEnabled: boolean;
724
- /** Loops being versioned around the statement being emitted: a loop is
725
- * never versioned inside its own copies, and versions nest boundedly. */
726
- readonly bytesLoopVersioning: Set<IrStmt>;
727
- bytesLoopEntries: ReturnType<typeof findInitializedByteLoopBindings> | null;
728
- bytesLoopFunction: IrFunction | null;
729
- /** Counted loops whose integer-form safety test an enclosing version
730
- * guard already passed. */
731
- readonly provenCountedGuards: Set<IrStmt>;
826
+ /** Number locals of the current function that hold exact integers or NaN
827
+ * (findIntegerOrNaNLocals in wrapping-sums.ts). */
828
+ integerOrNaNLocals: ReadonlyMap<string, IntegerRange>;
732
829
  bytesBounds: ReadonlySet<IrExpr | IrStmt>;
830
+ /** The charCodeAt reads standing for charAt reads the emitter rewrote
831
+ * (one-unit tests and switches, charAtUnitRead), with the charAt each
832
+ * stands for: a loop version's proof for the charAt covers its read. */
833
+ readonly charAtUnitReads: Map<IrExpr, IrExpr>;
733
834
  /** Worker programs: typed-array accesses whose views an enclosing version
734
835
  * guard proved thread-owned. */
735
836
  bytesOwned: ReadonlySet<IrExpr | IrStmt>;
@@ -808,9 +909,17 @@ export declare class LlEmitter {
808
909
  readonly chainSlots: Map<string, LlValue>;
809
910
  logArgSlots: number;
810
911
  readonly stackTraces: boolean;
912
+ /** The options this emitter was built with (chunk emitters reuse them). */
913
+ readonly targetOptions: LlvmTargetOptions;
914
+ /** Records the module-level effects of emitting a range of functions,
915
+ * which the emitter that merges the range replays (emit-journal.ts). Null
916
+ * when this emitter emits the whole module itself. */
917
+ journal: EmitJournal | null;
918
+ /** The emitter's hosts forward to `journal` (journal set, or workers). */
919
+ private readonly journaled;
811
920
  /** Stack-trace mode: functions no capture can include (no frame push). */
812
921
  readonly unframedFunctions: ReadonlySet<string>;
813
- constructor(mod: IrModule, options: LlvmTargetOptions);
922
+ constructor(mod: IrModule, options: LlvmTargetOptions, journal?: EmitJournal | null);
814
923
  /** The borrowed parameters of a hierarchy's vtable slot (empty: owned). */
815
924
  virtualSlotBorrowed(rootName: string, slotIndex: number): ReadonlySet<number>;
816
925
  /** Optimized emission: no debug-info (dev) posture. */
@@ -966,6 +1075,8 @@ export declare class LlEmitter {
966
1075
  /** Interned NUL-terminated C-string constant (the scr_jb_puts /
967
1076
  * stringify-indent currency) — `@`-ref, first-use order. */
968
1077
  cstr(text: string): string;
1078
+ /** The method-id slot for a constant method name (methodIdSlots). */
1079
+ methodIdSlot(name: string): string;
969
1080
  needBadTag(): void;
970
1081
  /** The ScrMapOps descriptor holding these operands (ShapeHost.mapOps). */
971
1082
  mapOps(operands: readonly string[]): string;
@@ -1147,6 +1258,10 @@ export declare class LlEmitter {
1147
1258
  private truthyOf;
1148
1259
  /** A union value's tag (i32): the box's tag word, or the NULL test of a
1149
1260
  * nullable union's pointer. */
1261
+ /** A box's tag and payload words are written only where the box is
1262
+ * built (runtime constructors and untagged stack stores), so their loads
1263
+ * carry their own alias tags: element and field stores cannot change
1264
+ * them, and loops keep them hoisted. */
1150
1265
  unionTag(uName: string, unionId: string): string;
1151
1266
  /** Guard for helpers that build or read a union's `%ScrUnion` box
1152
1267
  * directly (library-shaped unions with fixed arms): a nullable union
@@ -1184,6 +1299,12 @@ export declare class LlEmitter {
1184
1299
  inline: boolean;
1185
1300
  compressed: boolean;
1186
1301
  };
1302
+ /** Whether values of `t` are NULL or a compact class instance: `C`,
1303
+ * `C | undefined` or `C | null` for a compact class `C`. `C | null |
1304
+ * undefined` is not: its null is a sentinel outside the region. */
1305
+ compactRefType(t: IrType, isCompact?: (className: string) => boolean): boolean;
1306
+ /** Whether arrays of `elem` hold 32-bit references (SCR_ELEM_CREF). */
1307
+ compactArrayElem(elem: IrType): boolean;
1187
1308
  /** Loads the reference a field pointer addresses: a pointer, or the
1188
1309
  * decoded 32-bit reference of a compressed field (compressedFieldPtrs).
1189
1310
  * `tagged`: the load carries the field's alias tags. */
@@ -1244,8 +1365,8 @@ export declare class LlEmitter {
1244
1365
  /** A binding's storage: a module global, a plain local slot, or a boxed
1245
1366
  * local (the slot holds the capture BOX; access goes through it). */
1246
1367
  matchBytesLoopVersion(s: IrStmt & {
1247
- kind: "for";
1248
- }, counted: IntegerCountedForLoop | null): ReturnType<typeof matchBytesLoopVersion>;
1368
+ kind: "for" | "while";
1369
+ }, counted: IntegerCountedForLoop | null, paired?: IntegerPairedForLoop | null): ReturnType<typeof matchBytesLoopVersion>;
1249
1370
  /** The alias tag of a whole-slot load of a binding (module globals only). */
1250
1371
  slotAlias(id: string): string;
1251
1372
  binding(id: string): {
@@ -1343,6 +1464,26 @@ export declare class LlEmitter {
1343
1464
  * parameter, at the top of the body. */
1344
1465
  doubleCopies(fn: IrFunction): string[];
1345
1466
  emitFunction(fn: IrFunction): string;
1467
+ /** What this range emitter (chunkEmitter) hands the merging emitter, as
1468
+ * plain data a worker process can write: its journal and the sets and
1469
+ * flags its functions set. */
1470
+ chunkResult(): ChunkResult;
1471
+ /** Merges a range emitter's result (chunkResult) into this emitter, in
1472
+ * the range's order, and answers the rename of the range's text to this
1473
+ * emitter's numbered helpers. Ranges merge in function order. */
1474
+ mergeChunk(chunk: ChunkResult): (text: string) => string;
1475
+ /** Adds a content-named constant a chunk interned. Its symbol is this
1476
+ * emitter's own: a digest collision retries in first-use order, which a
1477
+ * chunk alone does not know. */
1478
+ private addContentEntry;
1479
+ /** Applies a chunk's table entry (EmitJournal.entry) at its place in the
1480
+ * chunk's order: a key this emitter lacks is added, numbered after its
1481
+ * own entries where the table numbers them, and the chunk's name for it
1482
+ * is renamed to this emitter's. */
1483
+ applyJournalEntry(table: string, key: string, value: unknown, names: Map<string, string>, tags: Map<number, number>): void;
1484
+ /** An emitter for a range of this module's functions: the same facts,
1485
+ * empty module-level tables, and a journal of what the range adds. */
1486
+ chunkEmitter(): LlEmitter;
1346
1487
  /** The double-ABI entry of a function with an i32 entry: every caller
1347
1488
  * that is not a direct call (closures, dispatch, adapters, the runtime)
1348
1489
  * enters here. A pending exception passes through to its caller. */
@@ -1583,6 +1724,11 @@ export declare class LlEmitter {
1583
1724
  * "compact": classes.ts COMPACT_PUBLISHED); leaves the builder in the cold
1584
1725
  * block and answers the continuation label. */
1585
1726
  private emitPublishedTest;
1727
+ /** Branches on "the array `arr` is frozen" (SCR_ARR_FROZEN in its storage
1728
+ * flags, scr_array.h), or published too when `published`; like
1729
+ * emitPublishedTest, leaves the builder in the cold block and answers the
1730
+ * continuation label. */
1731
+ private emitFrozenArrayTest;
1586
1732
  private publishedNamesSym;
1587
1733
  /** The class-name table the hierarchy field guards index by preorder. */
1588
1734
  publishedClassNamesDefs(): string[];
@@ -1597,7 +1743,7 @@ export declare class LlEmitter {
1597
1743
  emitPublishedFieldGuard(obj: string, className: string | null, field: string): void;
1598
1744
  /** The frozen-array guard (scr_throw_published_array's ops): `index` and
1599
1745
  * `count` are doubles (the written index, the argument count). */
1600
- emitPublishedArrayGuard(arr: string, arrType: IrType, op: number, index?: string, count?: string): void;
1746
+ emitPublishedArrayGuard(arr: string, arrType: IrType, op: number, index?: string, count?: string, third?: string | null): void;
1601
1747
  /** The published Map/Set guard: "Cannot modify a published Map/Set". */
1602
1748
  emitPublishedCollectionGuard(m: string, t: IrType): void;
1603
1749
  emitSerializationExpr(e: ExprOf<"jsonStringify" | "dynCheck">): LlValue;
@@ -1673,6 +1819,9 @@ export declare class LlEmitter {
1673
1819
  jsIcSite(): string;
1674
1820
  /** A fresh read-site cache for one constant-key dyn read. */
1675
1821
  dynReadIcSite(): string;
1822
+ /** A fresh speculative loop site: the global that counts its bailing
1823
+ * entries in a row. */
1824
+ speculativeLoopSite(): string;
1676
1825
  dynKind(d: string): string;
1677
1826
  raceAdapterFor(from: IrType, to: IrType): string;
1678
1827
  genResultThunkFor(genT: IrType & {
@@ -1712,7 +1861,7 @@ export declare class LlEmitter {
1712
1861
  streamDataAdapter(cbT: IrType & {
1713
1862
  kind: "func";
1714
1863
  }): string;
1715
- streamDoneFnFor(kind: "w" | "f" | "d" | "t" | "l", doneT: IrType & {
1864
+ streamDoneFnFor(kind: "w" | "f" | "d" | "t" | "l" | "c", doneT: IrType & {
1716
1865
  kind: "func";
1717
1866
  }): string;
1718
1867
  fsRenameThunkFor(cbT: IrType & {
@@ -1727,10 +1876,10 @@ export declare class LlEmitter {
1727
1876
  zlibBytesThunkFor(cbT: IrType & {
1728
1877
  kind: "func";
1729
1878
  }): string;
1730
- streamCbThunkFor(kind: "r" | "w" | "f" | "d" | "t" | "l" | "e", cbT: IrType): string;
1879
+ streamCbThunkFor(kind: "r" | "w" | "f" | "d" | "t" | "l" | "e" | "c" | "v", cbT: IrType): string;
1731
1880
  resolveThunkFor(inner: IrType): string;
1732
1881
  tagInSet(uName: string, unionId: string, tags: number[]): string;
1733
- arrPush(arr: string, acc: "f64" | "bool" | "ref", value: string): string;
1882
+ arrPush(arr: string, acc: ArrayAccess, value: string, element: IrType | null): string;
1734
1883
  emitArrayCopyLoop(dst: string, src: string, acc: "f64" | "bool" | "ref"): void;
1735
1884
  emitStrIntrinsic(e: IrExpr & {
1736
1885
  kind: "strIntrinsic";