@scriptc/compiler 0.4.1 → 0.4.3

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 (999) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +977 -113
  2. package/dist/backend/cycle-analysis.d.ts +5 -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 +9 -1
  8. package/dist/backend/cycle-mutability.js +21 -3
  9. package/dist/backend/cycle-mutability.js.map +1 -1
  10. package/dist/backend/executable-features.js +6 -1
  11. package/dist/backend/executable-features.js.map +1 -1
  12. package/dist/backend/immutability.d.ts +7 -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 +5 -0
  16. package/dist/backend/library-pack.js.map +1 -1
  17. package/dist/backend/llvm/alloc.d.ts +23 -4
  18. package/dist/backend/llvm/alloc.js +61 -8
  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 +23 -10
  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 +70 -7
  37. package/dist/backend/llvm/bytes-loop-versions.js +567 -30
  38. package/dist/backend/llvm/bytes-loop-versions.js.map +1 -1
  39. package/dist/backend/llvm/bytes-loop-versions.test.js +389 -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 +74 -1
  44. package/dist/backend/llvm/classes.js +364 -54
  45. package/dist/backend/llvm/classes.js.map +1 -1
  46. package/dist/backend/llvm/classes.test.js +384 -17
  47. package/dist/backend/llvm/classes.test.js.map +1 -1
  48. package/dist/backend/llvm/common.d.ts +10 -6
  49. package/dist/backend/llvm/common.js +10 -6
  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 +91 -56
  53. package/dist/backend/llvm/constant-callbacks.js.map +1 -1
  54. package/dist/backend/llvm/constant-callbacks.test.js +4 -4
  55. package/dist/backend/llvm/constant-callbacks.test.js.map +1 -1
  56. package/dist/backend/llvm/counted-loops.d.ts +11 -1
  57. package/dist/backend/llvm/counted-loops.js +80 -23
  58. package/dist/backend/llvm/counted-loops.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 +35 -16
  65. package/dist/backend/llvm/dense-array-loops.js +237 -12
  66. package/dist/backend/llvm/dense-array-loops.js.map +1 -1
  67. package/dist/backend/llvm/dense-array-loops.test.js +140 -15
  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 +51 -1
  72. package/dist/backend/llvm/dyn.js +683 -69
  73. package/dist/backend/llvm/dyn.js.map +1 -1
  74. package/dist/backend/llvm/emit-function.js +33 -26
  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 +208 -34
  80. package/dist/backend/llvm/emit-module.js.map +1 -1
  81. package/dist/backend/llvm/emit-statements.d.ts +0 -27
  82. package/dist/backend/llvm/emit-statements.js +577 -93
  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 +314 -49
  88. package/dist/backend/llvm/emitter.js +1241 -129
  89. package/dist/backend/llvm/emitter.js.map +1 -1
  90. package/dist/backend/llvm/emitter.test.js +54 -5
  91. package/dist/backend/llvm/emitter.test.js.map +1 -1
  92. package/dist/backend/llvm/expr-async.js +19 -0
  93. package/dist/backend/llvm/expr-async.js.map +1 -1
  94. package/dist/backend/llvm/expr-bytes.d.ts +5 -2
  95. package/dist/backend/llvm/expr-bytes.js +144 -52
  96. package/dist/backend/llvm/expr-bytes.js.map +1 -1
  97. package/dist/backend/llvm/expr-callbacks.js +47 -0
  98. package/dist/backend/llvm/expr-callbacks.js.map +1 -1
  99. package/dist/backend/llvm/expr-calls.d.ts +1 -1
  100. package/dist/backend/llvm/expr-calls.js +62 -36
  101. package/dist/backend/llvm/expr-calls.js.map +1 -1
  102. package/dist/backend/llvm/expr-containers.d.ts +14 -2
  103. package/dist/backend/llvm/expr-containers.js +148 -40
  104. package/dist/backend/llvm/expr-containers.js.map +1 -1
  105. package/dist/backend/llvm/expr-context.d.ts +14 -0
  106. package/dist/backend/llvm/expr-control.js +2 -3
  107. package/dist/backend/llvm/expr-control.js.map +1 -1
  108. package/dist/backend/llvm/expr-dynamic.js +71 -16
  109. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  110. package/dist/backend/llvm/expr-primitives.js +126 -36
  111. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  112. package/dist/backend/llvm/expr-primitives.test.js +11 -6
  113. package/dist/backend/llvm/expr-primitives.test.js.map +1 -1
  114. package/dist/backend/llvm/expr-records.d.ts +12 -0
  115. package/dist/backend/llvm/expr-records.js +106 -0
  116. package/dist/backend/llvm/expr-records.js.map +1 -1
  117. package/dist/backend/llvm/expr-stream-bridges.d.ts +2 -2
  118. package/dist/backend/llvm/expr-stream-bridges.js +225 -64
  119. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  120. package/dist/backend/llvm/expr-stream-bridges.test.js +1 -1
  121. package/dist/backend/llvm/expr-stream-bridges.test.js.map +1 -1
  122. package/dist/backend/llvm/expr-stream-callbacks.d.ts +2 -2
  123. package/dist/backend/llvm/expr-stream-callbacks.js +200 -50
  124. package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
  125. package/dist/backend/llvm/int32-kind-loops.d.ts +39 -0
  126. package/dist/backend/llvm/int32-kind-loops.js +106 -0
  127. package/dist/backend/llvm/int32-kind-loops.js.map +1 -0
  128. package/dist/backend/llvm/integer-or-nan-indexes.test.d.ts +1 -0
  129. package/dist/backend/llvm/integer-or-nan-indexes.test.js +118 -0
  130. package/dist/backend/llvm/integer-or-nan-indexes.test.js.map +1 -0
  131. package/dist/backend/llvm/integer-values.d.ts +20 -1
  132. package/dist/backend/llvm/integer-values.js +71 -0
  133. package/dist/backend/llvm/integer-values.js.map +1 -1
  134. package/dist/backend/llvm/js-ic.d.ts +1 -1
  135. package/dist/backend/llvm/js-ic.js +1 -1
  136. package/dist/backend/llvm/js-ic.js.map +1 -1
  137. package/dist/backend/llvm/key-orders.d.ts +7 -0
  138. package/dist/backend/llvm/key-orders.js +33 -0
  139. package/dist/backend/llvm/key-orders.js.map +1 -0
  140. package/dist/backend/llvm/lib-connect.js +4 -0
  141. package/dist/backend/llvm/lib-connect.js.map +1 -1
  142. package/dist/backend/llvm/lib-datagram.js +11 -0
  143. package/dist/backend/llvm/lib-datagram.js.map +1 -1
  144. package/dist/backend/llvm/lib-dispatch.js +90 -2
  145. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  146. package/dist/backend/llvm/lib-filesystem.js +65 -4
  147. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  148. package/dist/backend/llvm/lib-http2.d.ts +4 -0
  149. package/dist/backend/llvm/lib-http2.js +24 -17
  150. package/dist/backend/llvm/lib-http2.js.map +1 -1
  151. package/dist/backend/llvm/lib-lookup.js +16 -6
  152. package/dist/backend/llvm/lib-lookup.js.map +1 -1
  153. package/dist/backend/llvm/lib-process.js +65 -14
  154. package/dist/backend/llvm/lib-process.js.map +1 -1
  155. package/dist/backend/llvm/lib-shared.js +126 -3
  156. package/dist/backend/llvm/lib-shared.js.map +1 -1
  157. package/dist/backend/llvm/lib-stream.js +97 -30
  158. package/dist/backend/llvm/lib-stream.js.map +1 -1
  159. package/dist/backend/llvm/lib-tls.js +23 -0
  160. package/dist/backend/llvm/lib-tls.js.map +1 -1
  161. package/dist/backend/llvm/local-array-reads.js +181 -64
  162. package/dist/backend/llvm/local-array-reads.js.map +1 -1
  163. package/dist/backend/llvm/local-array-reads.test.js +28 -0
  164. package/dist/backend/llvm/local-array-reads.test.js.map +1 -1
  165. package/dist/backend/llvm/loop-state.d.ts +33 -0
  166. package/dist/backend/llvm/loop-state.js +42 -0
  167. package/dist/backend/llvm/loop-state.js.map +1 -0
  168. package/dist/backend/llvm/map-number-lookup.d.ts +26 -8
  169. package/dist/backend/llvm/map-number-lookup.js +91 -31
  170. package/dist/backend/llvm/map-number-lookup.js.map +1 -1
  171. package/dist/backend/llvm/map-number-lookup.test.js +55 -0
  172. package/dist/backend/llvm/map-number-lookup.test.js.map +1 -1
  173. package/dist/backend/llvm/map-read-lifetimes.js +4 -2
  174. package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
  175. package/dist/backend/llvm/nullable-unions.d.ts +2 -1
  176. package/dist/backend/llvm/nullable-unions.js +15 -3
  177. package/dist/backend/llvm/nullable-unions.js.map +1 -1
  178. package/dist/backend/llvm/publish.d.ts +18 -1
  179. package/dist/backend/llvm/publish.js +76 -25
  180. package/dist/backend/llvm/publish.js.map +1 -1
  181. package/dist/backend/llvm/publish.test.js +3 -0
  182. package/dist/backend/llvm/publish.test.js.map +1 -1
  183. package/dist/backend/llvm/receivers.js +7 -2
  184. package/dist/backend/llvm/receivers.js.map +1 -1
  185. package/dist/backend/llvm/record-results.d.ts +1 -9
  186. package/dist/backend/llvm/record-results.js +2 -11
  187. package/dist/backend/llvm/record-results.js.map +1 -1
  188. package/dist/backend/llvm/reference-writes.d.ts +7 -2
  189. package/dist/backend/llvm/reference-writes.js +91 -72
  190. package/dist/backend/llvm/reference-writes.js.map +1 -1
  191. package/dist/backend/llvm/regex-matchers.js +161 -14
  192. package/dist/backend/llvm/regex-matchers.js.map +1 -1
  193. package/dist/backend/llvm/regex-matchers.test.js +18 -0
  194. package/dist/backend/llvm/regex-matchers.test.js.map +1 -1
  195. package/dist/backend/llvm/running-extrema.d.ts +11 -0
  196. package/dist/backend/llvm/running-extrema.js +115 -0
  197. package/dist/backend/llvm/running-extrema.js.map +1 -0
  198. package/dist/backend/llvm/running-extrema.test.d.ts +1 -0
  199. package/dist/backend/llvm/running-extrema.test.js +89 -0
  200. package/dist/backend/llvm/running-extrema.test.js.map +1 -0
  201. package/dist/backend/llvm/shapes.d.ts +79 -21
  202. package/dist/backend/llvm/shapes.js +233 -42
  203. package/dist/backend/llvm/shapes.js.map +1 -1
  204. package/dist/backend/llvm/shapes.test.js +53 -7
  205. package/dist/backend/llvm/shapes.test.js.map +1 -1
  206. package/dist/backend/llvm/speculative-integers.d.ts +6 -0
  207. package/dist/backend/llvm/speculative-integers.js +2 -2
  208. package/dist/backend/llvm/speculative-integers.js.map +1 -1
  209. package/dist/backend/llvm/stack-objects.d.ts +3 -2
  210. package/dist/backend/llvm/stack-objects.js +5 -2
  211. package/dist/backend/llvm/stack-objects.js.map +1 -1
  212. package/dist/backend/llvm/string-lifetimes.test.js +2 -1
  213. package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
  214. package/dist/backend/llvm/string-reads.d.ts +15 -0
  215. package/dist/backend/llvm/string-reads.js +128 -0
  216. package/dist/backend/llvm/string-reads.js.map +1 -1
  217. package/dist/backend/llvm/walk-borrows.d.ts +3 -0
  218. package/dist/backend/llvm/walk-borrows.js +46 -41
  219. package/dist/backend/llvm/walk-borrows.js.map +1 -1
  220. package/dist/backend/llvm/walkers.d.ts +3 -0
  221. package/dist/backend/llvm/walkers.js +88 -65
  222. package/dist/backend/llvm/walkers.js.map +1 -1
  223. package/dist/backend/llvm/wasm-modules.d.ts +6 -5
  224. package/dist/backend/llvm/wasm-modules.js +32 -9
  225. package/dist/backend/llvm/wasm-modules.js.map +1 -1
  226. package/dist/backend/llvm/wrapping-sums.d.ts +16 -1
  227. package/dist/backend/llvm/wrapping-sums.js +126 -0
  228. package/dist/backend/llvm/wrapping-sums.js.map +1 -1
  229. package/dist/backend/mangle.d.ts +3 -0
  230. package/dist/backend/mangle.js +5 -0
  231. package/dist/backend/mangle.js.map +1 -1
  232. package/dist/backend/may-throw.d.ts +8 -10
  233. package/dist/backend/may-throw.js +14 -10
  234. package/dist/backend/may-throw.js.map +1 -1
  235. package/dist/backend/native/contracts.d.ts +27 -4
  236. package/dist/backend/native/executable.js +31 -8
  237. package/dist/backend/native/executable.js.map +1 -1
  238. package/dist/backend/native/library.js +1 -0
  239. package/dist/backend/native/library.js.map +1 -1
  240. package/dist/backend/native/runtime-inputs.d.ts +1 -1
  241. package/dist/backend/native/runtime-inputs.js +1 -0
  242. package/dist/backend/native/runtime-inputs.js.map +1 -1
  243. package/dist/backend/native-codegen.d.ts +11 -6
  244. package/dist/backend/native-codegen.js +36 -9
  245. package/dist/backend/native-codegen.js.map +1 -1
  246. package/dist/backend/native-codegen.test.js +0 -23
  247. package/dist/backend/native-codegen.test.js.map +1 -1
  248. package/dist/backend/native-link-info-core.d.ts +18 -4
  249. package/dist/backend/native-link-info-core.js.map +1 -1
  250. package/dist/backend/optimization.d.ts +2 -2
  251. package/dist/backend/publication.d.ts +12 -1
  252. package/dist/backend/publication.js +37 -14
  253. package/dist/backend/publication.js.map +1 -1
  254. package/dist/backend/publication.test.js +30 -0
  255. package/dist/backend/publication.test.js.map +1 -1
  256. package/dist/backend/result-slots.d.ts +16 -0
  257. package/dist/backend/result-slots.js +23 -0
  258. package/dist/backend/result-slots.js.map +1 -0
  259. package/dist/backend/runtime-abi.d.ts +2 -2
  260. package/dist/backend/runtime-abi.js +2 -2
  261. package/dist/backend/runtime-pack-core.d.ts +2 -1
  262. package/dist/backend/runtime-pack-core.js +2 -1
  263. package/dist/backend/runtime-pack-core.js.map +1 -1
  264. package/dist/backend/runtime-pack-targets.test.js +5 -1
  265. package/dist/backend/runtime-pack-targets.test.js.map +1 -1
  266. package/dist/backend/runtime-pack.d.ts +0 -21
  267. package/dist/backend/runtime-pack.js +0 -29
  268. package/dist/backend/runtime-pack.js.map +1 -1
  269. package/dist/backend/runtime-pack.test.js +10 -69
  270. package/dist/backend/runtime-pack.test.js.map +1 -1
  271. package/dist/backend/stack-observations.d.ts +2 -1
  272. package/dist/backend/stack-observations.js +67 -42
  273. package/dist/backend/stack-observations.js.map +1 -1
  274. package/dist/backend/target-diagnostics.js +33 -1
  275. package/dist/backend/target-diagnostics.js.map +1 -1
  276. package/dist/backend/warm-cache.js +4 -0
  277. package/dist/backend/warm-cache.js.map +1 -1
  278. package/dist/cli/command.js +26 -6
  279. package/dist/cli/command.js.map +1 -1
  280. package/dist/cli/usage.d.ts +5 -1
  281. package/dist/cli/usage.js +10 -5
  282. package/dist/cli/usage.js.map +1 -1
  283. package/dist/compat/fetch-profile.js +1 -1
  284. package/dist/compat/fetch-profile.js.map +1 -1
  285. package/dist/contracts/check.js +5 -4
  286. package/dist/contracts/check.js.map +1 -1
  287. package/dist/contracts/int32-elements.js +10 -2
  288. package/dist/contracts/int32-elements.js.map +1 -1
  289. package/dist/coverage/report.d.ts +7 -2
  290. package/dist/coverage/report.js +30 -3
  291. package/dist/coverage/report.js.map +1 -1
  292. package/dist/coverage/verdict-cache.d.ts +1 -0
  293. package/dist/coverage/verdict-cache.js +4 -0
  294. package/dist/coverage/verdict-cache.js.map +1 -1
  295. package/dist/coverage/verdict-semantic.js +4 -0
  296. package/dist/coverage/verdict-semantic.js.map +1 -1
  297. package/dist/diagnostics/diagnostic.d.ts +4 -0
  298. package/dist/diagnostics/diagnostic.js.map +1 -1
  299. package/dist/diagnostics/dynamic-tier.d.ts +40 -0
  300. package/dist/diagnostics/dynamic-tier.js +57 -0
  301. package/dist/diagnostics/dynamic-tier.js.map +1 -0
  302. package/dist/diagnostics/envelope.d.ts +5 -1
  303. package/dist/diagnostics/envelope.js +6 -2
  304. package/dist/diagnostics/envelope.js.map +1 -1
  305. package/dist/executable/executable-cache.d.ts +25 -1
  306. package/dist/executable/executable-cache.js +60 -7
  307. package/dist/executable/executable-cache.js.map +1 -1
  308. package/dist/executable/executable-cache.test.js +46 -3
  309. package/dist/executable/executable-cache.test.js.map +1 -1
  310. package/dist/executable/prepare.js +3 -1
  311. package/dist/executable/prepare.js.map +1 -1
  312. package/dist/frontend/analysis.js +1 -0
  313. package/dist/frontend/analysis.js.map +1 -1
  314. package/dist/frontend/decl-projection.d.ts +41 -0
  315. package/dist/frontend/decl-projection.js +854 -0
  316. package/dist/frontend/decl-projection.js.map +1 -0
  317. package/dist/frontend/decl-projection.test.d.ts +1 -0
  318. package/dist/frontend/decl-projection.test.js +30 -0
  319. package/dist/frontend/decl-projection.test.js.map +1 -0
  320. package/dist/frontend/dispose-hook.d.ts +2 -0
  321. package/dist/frontend/dispose-hook.js +14 -0
  322. package/dist/frontend/dispose-hook.js.map +1 -0
  323. package/dist/frontend/dts-paths.d.ts +15 -0
  324. package/dist/frontend/dts-paths.js +25 -0
  325. package/dist/frontend/dts-paths.js.map +1 -1
  326. package/dist/frontend/input-tracker.d.ts +6 -0
  327. package/dist/frontend/input-tracker.js +51 -28
  328. package/dist/frontend/input-tracker.js.map +1 -1
  329. package/dist/frontend/input-tracker.test.js +19 -0
  330. package/dist/frontend/input-tracker.test.js.map +1 -1
  331. package/dist/frontend/jsx-entities.d.ts +4 -0
  332. package/dist/frontend/jsx-entities.js +259 -0
  333. package/dist/frontend/jsx-entities.js.map +1 -0
  334. package/dist/frontend/jsx-source.d.ts +71 -0
  335. package/dist/frontend/jsx-source.js +781 -0
  336. package/dist/frontend/jsx-source.js.map +1 -0
  337. package/dist/frontend/jsx-source.test.d.ts +1 -0
  338. package/dist/frontend/jsx-source.test.js +200 -0
  339. package/dist/frontend/jsx-source.test.js.map +1 -0
  340. package/dist/frontend/literal-values.test.js +8 -9
  341. package/dist/frontend/literal-values.test.js.map +1 -1
  342. package/dist/frontend/lowering/array-indexed-mutation.js +2 -1
  343. package/dist/frontend/lowering/array-indexed-mutation.js.map +1 -1
  344. package/dist/frontend/lowering/array-values.js +103 -4
  345. package/dist/frontend/lowering/array-values.js.map +1 -1
  346. package/dist/frontend/lowering/binding-analysis.d.ts +1 -1
  347. package/dist/frontend/lowering/binding-analysis.js +2 -2
  348. package/dist/frontend/lowering/binding-analysis.js.map +1 -1
  349. package/dist/frontend/lowering/builtins/arguments.d.ts +3 -0
  350. package/dist/frontend/lowering/builtins/arguments.js +30 -15
  351. package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
  352. package/dist/frontend/lowering/builtins/atomics.js +10 -6
  353. package/dist/frontend/lowering/builtins/atomics.js.map +1 -1
  354. package/dist/frontend/lowering/builtins/child-process-async.js +2 -1
  355. package/dist/frontend/lowering/builtins/child-process-async.js.map +1 -1
  356. package/dist/frontend/lowering/builtins/child-process-methods.js +46 -15
  357. package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
  358. package/dist/frontend/lowering/builtins/child-process-sync.js +2 -1
  359. package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
  360. package/dist/frontend/lowering/builtins/child-process.js +13 -2
  361. package/dist/frontend/lowering/builtins/child-process.js.map +1 -1
  362. package/dist/frontend/lowering/builtins/crypto.d.ts +4 -2
  363. package/dist/frontend/lowering/builtins/crypto.js +136 -5
  364. package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
  365. package/dist/frontend/lowering/builtins/date-classes.d.ts +46 -0
  366. package/dist/frontend/lowering/builtins/date-classes.js +477 -0
  367. package/dist/frontend/lowering/builtins/date-classes.js.map +1 -0
  368. package/dist/frontend/lowering/builtins/dates.d.ts +11 -1
  369. package/dist/frontend/lowering/builtins/dates.js +55 -26
  370. package/dist/frontend/lowering/builtins/dates.js.map +1 -1
  371. package/dist/frontend/lowering/builtins/dh.d.ts +15 -0
  372. package/dist/frontend/lowering/builtins/dh.js +151 -0
  373. package/dist/frontend/lowering/builtins/dh.js.map +1 -0
  374. package/dist/frontend/lowering/builtins/disposable-stack.js +2 -1
  375. package/dist/frontend/lowering/builtins/disposable-stack.js.map +1 -1
  376. package/dist/frontend/lowering/builtins/ecdh.d.ts +12 -1
  377. package/dist/frontend/lowering/builtins/ecdh.js +7 -7
  378. package/dist/frontend/lowering/builtins/ecdh.js.map +1 -1
  379. package/dist/frontend/lowering/builtins/errors.d.ts +15 -0
  380. package/dist/frontend/lowering/builtins/errors.js +110 -0
  381. package/dist/frontend/lowering/builtins/errors.js.map +1 -1
  382. package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +1 -1
  383. package/dist/frontend/lowering/builtins/filesystem-calls.js +23 -17
  384. package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
  385. package/dist/frontend/lowering/builtins/filesystem.js +6 -4
  386. package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
  387. package/dist/frontend/lowering/builtins/fs-paths.d.ts +15 -0
  388. package/dist/frontend/lowering/builtins/fs-paths.js +209 -0
  389. package/dist/frontend/lowering/builtins/fs-paths.js.map +1 -0
  390. package/dist/frontend/lowering/builtins/global-namespace-keys.d.ts +3 -0
  391. package/dist/frontend/lowering/builtins/global-namespace-keys.js +122 -0
  392. package/dist/frontend/lowering/builtins/global-namespace-keys.js.map +1 -0
  393. package/dist/frontend/lowering/builtins/hash-stream.d.ts +16 -4
  394. package/dist/frontend/lowering/builtins/hash-stream.js +86 -23
  395. package/dist/frontend/lowering/builtins/hash-stream.js.map +1 -1
  396. package/dist/frontend/lowering/builtins/json.js +2 -1
  397. package/dist/frontend/lowering/builtins/json.js.map +1 -1
  398. package/dist/frontend/lowering/builtins/key-object.d.ts +2 -1
  399. package/dist/frontend/lowering/builtins/key-object.js +20 -7
  400. package/dist/frontend/lowering/builtins/key-object.js.map +1 -1
  401. package/dist/frontend/lowering/builtins/module-calls.js +11 -4
  402. package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
  403. package/dist/frontend/lowering/builtins/numbers.js +18 -6
  404. package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
  405. package/dist/frontend/lowering/builtins/operating-system.js +4 -3
  406. package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
  407. package/dist/frontend/lowering/builtins/performance.js +3 -2
  408. package/dist/frontend/lowering/builtins/performance.js.map +1 -1
  409. package/dist/frontend/lowering/builtins/process.js +3 -2
  410. package/dist/frontend/lowering/builtins/process.js.map +1 -1
  411. package/dist/frontend/lowering/builtins/promises.d.ts +6 -0
  412. package/dist/frontend/lowering/builtins/promises.js +91 -4
  413. package/dist/frontend/lowering/builtins/promises.js.map +1 -1
  414. package/dist/frontend/lowering/builtins/promisify-callback.js +2 -1
  415. package/dist/frontend/lowering/builtins/promisify-callback.js.map +1 -1
  416. package/dist/frontend/lowering/builtins/readline.d.ts +7 -2
  417. package/dist/frontend/lowering/builtins/readline.js +58 -9
  418. package/dist/frontend/lowering/builtins/readline.js.map +1 -1
  419. package/dist/frontend/lowering/builtins/strings.js +13 -5
  420. package/dist/frontend/lowering/builtins/strings.js.map +1 -1
  421. package/dist/frontend/lowering/builtins/text-codecs.js +2 -1
  422. package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
  423. package/dist/frontend/lowering/builtins/timers.js +1 -1
  424. package/dist/frontend/lowering/builtins/timers.js.map +1 -1
  425. package/dist/frontend/lowering/builtins/url.js +28 -4
  426. package/dist/frontend/lowering/builtins/url.js.map +1 -1
  427. package/dist/frontend/lowering/builtins/v8.js +2 -1
  428. package/dist/frontend/lowering/builtins/v8.js.map +1 -1
  429. package/dist/frontend/lowering/builtins/webassembly.js +6 -3
  430. package/dist/frontend/lowering/builtins/webassembly.js.map +1 -1
  431. package/dist/frontend/lowering/builtins/webcrypto.js +39 -20
  432. package/dist/frontend/lowering/builtins/webcrypto.js.map +1 -1
  433. package/dist/frontend/lowering/call-arguments.js +2 -1
  434. package/dist/frontend/lowering/call-arguments.js.map +1 -1
  435. package/dist/frontend/lowering/call-signatures.js +13 -6
  436. package/dist/frontend/lowering/call-signatures.js.map +1 -1
  437. package/dist/frontend/lowering/caught-value-dispatch.d.ts +18 -1
  438. package/dist/frontend/lowering/caught-value-dispatch.js +201 -32
  439. package/dist/frontend/lowering/caught-value-dispatch.js.map +1 -1
  440. package/dist/frontend/lowering/class-assertions.js +3 -2
  441. package/dist/frontend/lowering/class-assertions.js.map +1 -1
  442. package/dist/frontend/lowering/class-callbacks.d.ts +5 -2
  443. package/dist/frontend/lowering/class-callbacks.js +82 -12
  444. package/dist/frontend/lowering/class-callbacks.js.map +1 -1
  445. package/dist/frontend/lowering/class-construction.d.ts +6 -2
  446. package/dist/frontend/lowering/class-construction.js +25 -16
  447. package/dist/frontend/lowering/class-construction.js.map +1 -1
  448. package/dist/frontend/lowering/class-descriptors.js +1 -1
  449. package/dist/frontend/lowering/class-descriptors.js.map +1 -1
  450. package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +73 -2
  451. package/dist/frontend/lowering/class-dynamic-dispatch.js +1334 -259
  452. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  453. package/dist/frontend/lowering/class-dynamic-dispatch.test.js +124 -0
  454. package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
  455. package/dist/frontend/lowering/class-iterables.d.ts +2 -1
  456. package/dist/frontend/lowering/class-iterables.js +9 -1
  457. package/dist/frontend/lowering/class-iterables.js.map +1 -1
  458. package/dist/frontend/lowering/class-method-mutations.js +35 -9
  459. package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
  460. package/dist/frontend/lowering/class-method-values.js +1 -1
  461. package/dist/frontend/lowering/class-method-values.js.map +1 -1
  462. package/dist/frontend/lowering/class-protocols.d.ts +7 -0
  463. package/dist/frontend/lowering/class-protocols.js +64 -4
  464. package/dist/frontend/lowering/class-protocols.js.map +1 -1
  465. package/dist/frontend/lowering/class-prototypes.d.ts +5 -0
  466. package/dist/frontend/lowering/class-prototypes.js +67 -5
  467. package/dist/frontend/lowering/class-prototypes.js.map +1 -1
  468. package/dist/frontend/lowering/class-runtime-statics.d.ts +9 -3
  469. package/dist/frontend/lowering/class-runtime-statics.js +29 -4
  470. package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
  471. package/dist/frontend/lowering/class-to-primitive.js +25 -5
  472. package/dist/frontend/lowering/class-to-primitive.js.map +1 -1
  473. package/dist/frontend/lowering/class-unions.js +2 -1
  474. package/dist/frontend/lowering/class-unions.js.map +1 -1
  475. package/dist/frontend/lowering/coercions/function-adapters.js +6 -5
  476. package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
  477. package/dist/frontend/lowering/coercions/structural-plans.js +48 -1
  478. package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
  479. package/dist/frontend/lowering/coercions/structural.js +99 -8
  480. package/dist/frontend/lowering/coercions/structural.js.map +1 -1
  481. package/dist/frontend/lowering/coercions/unions.js +8 -7
  482. package/dist/frontend/lowering/coercions/unions.js.map +1 -1
  483. package/dist/frontend/lowering/collection-ingestion.js +2 -1
  484. package/dist/frontend/lowering/collection-ingestion.js.map +1 -1
  485. package/dist/frontend/lowering/containers/array-callback-call.js +2 -2
  486. package/dist/frontend/lowering/containers/array-callback-call.js.map +1 -1
  487. package/dist/frontend/lowering/containers/array-callbacks.d.ts +7 -0
  488. package/dist/frontend/lowering/containers/array-callbacks.js +352 -31
  489. package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
  490. package/dist/frontend/lowering/containers/array-concat.js +12 -1
  491. package/dist/frontend/lowering/containers/array-concat.js.map +1 -1
  492. package/dist/frontend/lowering/containers/array-construction.js +25 -4
  493. package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
  494. package/dist/frontend/lowering/containers/array-methods.js +21 -5
  495. package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
  496. package/dist/frontend/lowering/containers/array-pipelines.js +21 -9
  497. package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
  498. package/dist/frontend/lowering/containers/bytes.d.ts +1 -1
  499. package/dist/frontend/lowering/containers/bytes.js +131 -29
  500. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  501. package/dist/frontend/lowering/containers/callback-arguments.js +55 -2
  502. package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
  503. package/dist/frontend/lowering/containers/collection-grouping.js +3 -2
  504. package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -1
  505. package/dist/frontend/lowering/containers/collection-methods.js +15 -9
  506. package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
  507. package/dist/frontend/lowering/containers/filter-predicates.d.ts +6 -0
  508. package/dist/frontend/lowering/containers/filter-predicates.js +205 -0
  509. package/dist/frontend/lowering/containers/filter-predicates.js.map +1 -0
  510. package/dist/frontend/lowering/containers/indexed-objects.d.ts +0 -12
  511. package/dist/frontend/lowering/containers/indexed-objects.js +54 -14
  512. package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
  513. package/dist/frontend/lowering/containers/iterator-helpers.d.ts +32 -1
  514. package/dist/frontend/lowering/containers/iterator-helpers.js +6 -5
  515. package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -1
  516. package/dist/frontend/lowering/containers/string-and-regexp.js +87 -14
  517. package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
  518. package/dist/frontend/lowering/containers/string-replacement.js +45 -20
  519. package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
  520. package/dist/frontend/lowering/cycle-initialization.js +25 -4
  521. package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
  522. package/dist/frontend/lowering/deferred-module-initializers.d.ts +18 -1
  523. package/dist/frontend/lowering/deferred-module-initializers.js +226 -115
  524. package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
  525. package/dist/frontend/lowering/deferred-module-initializers.test.js +28 -0
  526. package/dist/frontend/lowering/deferred-module-initializers.test.js.map +1 -1
  527. package/dist/frontend/lowering/dispatch-sites.d.ts +59 -0
  528. package/dist/frontend/lowering/dispatch-sites.js +218 -0
  529. package/dist/frontend/lowering/dispatch-sites.js.map +1 -0
  530. package/dist/frontend/lowering/dispatch-sites.test.d.ts +1 -0
  531. package/dist/frontend/lowering/dispatch-sites.test.js +59 -0
  532. package/dist/frontend/lowering/dispatch-sites.test.js.map +1 -0
  533. package/dist/frontend/lowering/divergences.js +9 -1
  534. package/dist/frontend/lowering/divergences.js.map +1 -1
  535. package/dist/frontend/lowering/dyn-streams.d.ts +3 -0
  536. package/dist/frontend/lowering/dyn-streams.js +1 -1
  537. package/dist/frontend/lowering/dyn-streams.js.map +1 -1
  538. package/dist/frontend/lowering/dynamic-tier.d.ts +25 -0
  539. package/dist/frontend/lowering/dynamic-tier.js +327 -0
  540. package/dist/frontend/lowering/dynamic-tier.js.map +1 -0
  541. package/dist/frontend/lowering/error-methods.js +51 -2
  542. package/dist/frontend/lowering/error-methods.js.map +1 -1
  543. package/dist/frontend/lowering/expressions/array-literals.js +62 -0
  544. package/dist/frontend/lowering/expressions/array-literals.js.map +1 -1
  545. package/dist/frontend/lowering/expressions/binary.js +81 -5
  546. package/dist/frontend/lowering/expressions/binary.js.map +1 -1
  547. package/dist/frontend/lowering/expressions/element-access.js +107 -14
  548. package/dist/frontend/lowering/expressions/element-access.js.map +1 -1
  549. package/dist/frontend/lowering/expressions/identifiers.js +79 -11
  550. package/dist/frontend/lowering/expressions/identifiers.js.map +1 -1
  551. package/dist/frontend/lowering/expressions/narrowing.js +130 -6
  552. package/dist/frontend/lowering/expressions/narrowing.js.map +1 -1
  553. package/dist/frontend/lowering/expressions/nullish-assignment.js +3 -1
  554. package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
  555. package/dist/frontend/lowering/expressions/object-literals.d.ts +10 -3
  556. package/dist/frontend/lowering/expressions/object-literals.js +164 -56
  557. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  558. package/dist/frontend/lowering/expressions/optional-chains.js +17 -5
  559. package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
  560. package/dist/frontend/lowering/expressions/property-access.d.ts +0 -4
  561. package/dist/frontend/lowering/expressions/property-access.js +211 -17
  562. package/dist/frontend/lowering/expressions/property-access.js.map +1 -1
  563. package/dist/frontend/lowering/expressions/relational.js +267 -30
  564. package/dist/frontend/lowering/expressions/relational.js.map +1 -1
  565. package/dist/frontend/lowering/expressions/union-fields.js +4 -0
  566. package/dist/frontend/lowering/expressions/union-fields.js.map +1 -1
  567. package/dist/frontend/lowering/expressions/updates.js +85 -12
  568. package/dist/frontend/lowering/expressions/updates.js.map +1 -1
  569. package/dist/frontend/lowering/frozen-records.d.ts +28 -0
  570. package/dist/frontend/lowering/frozen-records.js +322 -0
  571. package/dist/frontend/lowering/frozen-records.js.map +1 -0
  572. package/dist/frontend/lowering/function-returns.js +49 -0
  573. package/dist/frontend/lowering/function-returns.js.map +1 -1
  574. package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +6 -1
  575. package/dist/frontend/lowering/generator-dynamic-dispatch.js +20 -30
  576. package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -1
  577. package/dist/frontend/lowering/generic-functions.d.ts +42 -1
  578. package/dist/frontend/lowering/generic-functions.js +455 -20
  579. package/dist/frontend/lowering/generic-functions.js.map +1 -1
  580. package/dist/frontend/lowering/intern-tables.js +2 -1
  581. package/dist/frontend/lowering/intern-tables.js.map +1 -1
  582. package/dist/frontend/lowering/iterable-values.d.ts +49 -0
  583. package/dist/frontend/lowering/iterable-values.js +297 -0
  584. package/dist/frontend/lowering/iterable-values.js.map +1 -0
  585. package/dist/frontend/lowering/iterator-adapters.js +195 -9
  586. package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
  587. package/dist/frontend/lowering/js-class-fields.d.ts +8 -0
  588. package/dist/frontend/lowering/js-class-fields.js +45 -10
  589. package/dist/frontend/lowering/js-class-fields.js.map +1 -1
  590. package/dist/frontend/lowering/js-dynamic-objects.js +3 -2
  591. package/dist/frontend/lowering/js-dynamic-objects.js.map +1 -1
  592. package/dist/frontend/lowering/json-require.js +2 -1
  593. package/dist/frontend/lowering/json-require.js.map +1 -1
  594. package/dist/frontend/lowering/key-order-witness.d.ts +24 -4
  595. package/dist/frontend/lowering/key-order-witness.js +790 -25
  596. package/dist/frontend/lowering/key-order-witness.js.map +1 -1
  597. package/dist/frontend/lowering/key-order-witness.test.js +466 -10
  598. package/dist/frontend/lowering/key-order-witness.test.js.map +1 -1
  599. package/dist/frontend/lowering/lifetime-regions.js +2 -1
  600. package/dist/frontend/lowering/lifetime-regions.js.map +1 -1
  601. package/dist/frontend/lowering/lower-assert.js +6 -5
  602. package/dist/frontend/lowering/lower-assert.js.map +1 -1
  603. package/dist/frontend/lowering/lower-async-iteration.js +7 -2
  604. package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
  605. package/dist/frontend/lowering/lower-calls.d.ts +11 -0
  606. package/dist/frontend/lowering/lower-calls.js +776 -126
  607. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  608. package/dist/frontend/lowering/lower-classes.d.ts +29 -2
  609. package/dist/frontend/lowering/lower-classes.js +581 -46
  610. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  611. package/dist/frontend/lowering/lower-dgram.js +6 -3
  612. package/dist/frontend/lowering/lower-dgram.js.map +1 -1
  613. package/dist/frontend/lowering/lower-event-emitter.d.ts +14 -0
  614. package/dist/frontend/lowering/lower-event-emitter.js +267 -20
  615. package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
  616. package/dist/frontend/lowering/lower-exprs.d.ts +19 -2
  617. package/dist/frontend/lowering/lower-exprs.js +126 -13
  618. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  619. package/dist/frontend/lowering/lower-functions.d.ts +11 -0
  620. package/dist/frontend/lowering/lower-functions.js +387 -72
  621. package/dist/frontend/lowering/lower-functions.js.map +1 -1
  622. package/dist/frontend/lowering/lower-generators.js +41 -31
  623. package/dist/frontend/lowering/lower-generators.js.map +1 -1
  624. package/dist/frontend/lowering/lower-global-value.js +6 -3
  625. package/dist/frontend/lowering/lower-global-value.js.map +1 -1
  626. package/dist/frontend/lowering/lower-inspect.js +28 -12
  627. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  628. package/dist/frontend/lowering/lower-mixins.js +2 -1
  629. package/dist/frontend/lowering/lower-mixins.js.map +1 -1
  630. package/dist/frontend/lowering/lower-mock.js +2 -1
  631. package/dist/frontend/lowering/lower-mock.js.map +1 -1
  632. package/dist/frontend/lowering/lower-modules.js +47 -5
  633. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  634. package/dist/frontend/lowering/lower-modules.test.js +2 -2
  635. package/dist/frontend/lowering/lower-modules.test.js.map +1 -1
  636. package/dist/frontend/lowering/lower-namespaces.d.ts +2 -1
  637. package/dist/frontend/lowering/lower-namespaces.js +9 -4
  638. package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
  639. package/dist/frontend/lowering/lower-server.d.ts +10 -0
  640. package/dist/frontend/lowering/lower-server.js +239 -61
  641. package/dist/frontend/lowering/lower-server.js.map +1 -1
  642. package/dist/frontend/lowering/lower-stdlib.d.ts +5 -0
  643. package/dist/frontend/lowering/lower-stdlib.js +42 -10
  644. package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
  645. package/dist/frontend/lowering/lower-stmts.d.ts +23 -0
  646. package/dist/frontend/lowering/lower-stmts.js +622 -68
  647. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  648. package/dist/frontend/lowering/lower-stmts.test.js +1 -1
  649. package/dist/frontend/lowering/lower-stmts.test.js.map +1 -1
  650. package/dist/frontend/lowering/lower-stream.d.ts +20 -2
  651. package/dist/frontend/lowering/lower-stream.js +2055 -318
  652. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  653. package/dist/frontend/lowering/lower-timers.js +4 -3
  654. package/dist/frontend/lowering/lower-timers.js.map +1 -1
  655. package/dist/frontend/lowering/lowerer.d.ts +197 -29
  656. package/dist/frontend/lowering/lowerer.js +862 -84
  657. package/dist/frontend/lowering/lowerer.js.map +1 -1
  658. package/dist/frontend/lowering/lowerer.test.js +21 -9
  659. package/dist/frontend/lowering/lowerer.test.js.map +1 -1
  660. package/dist/frontend/lowering/module-namespace-elements.d.ts +11 -1
  661. package/dist/frontend/lowering/module-namespace-elements.js +82 -5
  662. package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
  663. package/dist/frontend/lowering/narrowing-stability.js +5 -0
  664. package/dist/frontend/lowering/narrowing-stability.js.map +1 -1
  665. package/dist/frontend/lowering/native-ffi.js +1 -1
  666. package/dist/frontend/lowering/native-ffi.js.map +1 -1
  667. package/dist/frontend/lowering/new-target.d.ts +12 -0
  668. package/dist/frontend/lowering/new-target.js +280 -0
  669. package/dist/frontend/lowering/new-target.js.map +1 -0
  670. package/dist/frontend/lowering/object-enumeration-receiver.js +2 -1
  671. package/dist/frontend/lowering/object-enumeration-receiver.js.map +1 -1
  672. package/dist/frontend/lowering/pairs-snapshot.js +2 -1
  673. package/dist/frontend/lowering/pairs-snapshot.js.map +1 -1
  674. package/dist/frontend/lowering/private-brands.d.ts +9 -0
  675. package/dist/frontend/lowering/private-brands.js +66 -15
  676. package/dist/frontend/lowering/private-brands.js.map +1 -1
  677. package/dist/frontend/lowering/promise-executor-adapter.js +2 -1
  678. package/dist/frontend/lowering/promise-executor-adapter.js.map +1 -1
  679. package/dist/frontend/lowering/require-initialization.js +2 -1
  680. package/dist/frontend/lowering/require-initialization.js.map +1 -1
  681. package/dist/frontend/lowering/runtime-optional-elements.d.ts +5 -0
  682. package/dist/frontend/lowering/runtime-optional-elements.js +17 -1
  683. package/dist/frontend/lowering/runtime-optional-elements.js.map +1 -1
  684. package/dist/frontend/lowering/runtime-optional-records.d.ts +2 -0
  685. package/dist/frontend/lowering/runtime-optional-records.js +18 -5
  686. package/dist/frontend/lowering/runtime-optional-records.js.map +1 -1
  687. package/dist/frontend/lowering/site-dependencies.d.ts +35 -0
  688. package/dist/frontend/lowering/site-dependencies.js +84 -0
  689. package/dist/frontend/lowering/site-dependencies.js.map +1 -0
  690. package/dist/frontend/lowering/site-dependencies.test.d.ts +1 -0
  691. package/dist/frontend/lowering/site-dependencies.test.js +53 -0
  692. package/dist/frontend/lowering/site-dependencies.test.js.map +1 -0
  693. package/dist/frontend/lowering/stable-names.d.ts +11 -0
  694. package/dist/frontend/lowering/stable-names.js +35 -0
  695. package/dist/frontend/lowering/stable-names.js.map +1 -0
  696. package/dist/frontend/lowering/static-typeof.d.ts +2 -2
  697. package/dist/frontend/lowering/static-typeof.js +42 -3
  698. package/dist/frontend/lowering/static-typeof.js.map +1 -1
  699. package/dist/frontend/lowering/strict-equality.js +2 -1
  700. package/dist/frontend/lowering/strict-equality.js.map +1 -1
  701. package/dist/frontend/lowering/structural-positions.d.ts +32 -0
  702. package/dist/frontend/lowering/structural-positions.js +108 -0
  703. package/dist/frontend/lowering/structural-positions.js.map +1 -0
  704. package/dist/frontend/lowering/surfaces.d.ts +3 -0
  705. package/dist/frontend/lowering/surfaces.js +60 -32
  706. package/dist/frontend/lowering/surfaces.js.map +1 -1
  707. package/dist/frontend/lowering/undefined-index.d.ts +27 -0
  708. package/dist/frontend/lowering/undefined-index.js +82 -0
  709. package/dist/frontend/lowering/undefined-index.js.map +1 -0
  710. package/dist/frontend/lowering/var-hoisting.js +66 -16
  711. package/dist/frontend/lowering/var-hoisting.js.map +1 -1
  712. package/dist/frontend/lowering/width-lift.d.ts +18 -0
  713. package/dist/frontend/npm-static-bundled-chunks.js +9 -11
  714. package/dist/frontend/npm-static-bundled-chunks.js.map +1 -1
  715. package/dist/frontend/npm-static-bundled-chunks.test.js +6 -5
  716. package/dist/frontend/npm-static-bundled-chunks.test.js.map +1 -1
  717. package/dist/frontend/npm-static-rewrite-syntax.js +9 -1
  718. package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
  719. package/dist/frontend/npm-static-tsc-helpers.d.ts +5 -0
  720. package/dist/frontend/npm-static-tsc-helpers.js +106 -0
  721. package/dist/frontend/npm-static-tsc-helpers.js.map +1 -0
  722. package/dist/frontend/npm-static-tsc-helpers.test.d.ts +1 -0
  723. package/dist/frontend/npm-static-tsc-helpers.test.js +58 -0
  724. package/dist/frontend/npm-static-tsc-helpers.test.js.map +1 -0
  725. package/dist/frontend/npm-static-type-exports-host.d.ts +8 -0
  726. package/dist/frontend/npm-static-type-exports-host.js +214 -0
  727. package/dist/frontend/npm-static-type-exports-host.js.map +1 -0
  728. package/dist/frontend/npm-static-type-exports-host.test.d.ts +1 -0
  729. package/dist/frontend/npm-static-type-exports-host.test.js +53 -0
  730. package/dist/frontend/npm-static-type-exports-host.test.js.map +1 -0
  731. package/dist/frontend/npm-static-type-exports.d.ts +52 -0
  732. package/dist/frontend/npm-static-type-exports.js +261 -0
  733. package/dist/frontend/npm-static-type-exports.js.map +1 -0
  734. package/dist/frontend/npm-static-type-exports.test.d.ts +1 -0
  735. package/dist/frontend/npm-static-type-exports.test.js +103 -0
  736. package/dist/frontend/npm-static-type-exports.test.js.map +1 -0
  737. package/dist/frontend/npm-static-umd.d.ts +6 -0
  738. package/dist/frontend/npm-static-umd.js +203 -0
  739. package/dist/frontend/npm-static-umd.js.map +1 -0
  740. package/dist/frontend/npm-static-umd.test.d.ts +1 -0
  741. package/dist/frontend/npm-static-umd.test.js +105 -0
  742. package/dist/frontend/npm-static-umd.test.js.map +1 -0
  743. package/dist/frontend/npm-static.d.ts +8 -0
  744. package/dist/frontend/npm-static.js +51 -22
  745. package/dist/frontend/npm-static.js.map +1 -1
  746. package/dist/frontend/package-shims.d.ts +3 -0
  747. package/dist/frontend/package-shims.js +71 -8
  748. package/dist/frontend/package-shims.js.map +1 -1
  749. package/dist/frontend/pipeline.js +18 -10
  750. package/dist/frontend/pipeline.js.map +1 -1
  751. package/dist/frontend/process-fork.d.ts +25 -0
  752. package/dist/frontend/process-fork.js +2 -0
  753. package/dist/frontend/process-fork.js.map +1 -0
  754. package/dist/frontend/program.d.ts +21 -1
  755. package/dist/frontend/program.js +586 -74
  756. package/dist/frontend/program.js.map +1 -1
  757. package/dist/frontend/program.test.js +44 -4
  758. package/dist/frontend/program.test.js.map +1 -1
  759. package/dist/frontend/services.d.ts +6 -0
  760. package/dist/frontend/services.js +18 -0
  761. package/dist/frontend/services.js.map +1 -1
  762. package/dist/frontend/token-equivalence.d.ts +3 -0
  763. package/dist/frontend/token-equivalence.js +409 -0
  764. package/dist/frontend/token-equivalence.js.map +1 -0
  765. package/dist/frontend/token-equivalence.test.d.ts +1 -0
  766. package/dist/frontend/token-equivalence.test.js +67 -0
  767. package/dist/frontend/token-equivalence.test.js.map +1 -0
  768. package/dist/frontend/ts7/ast-node.d.ts +43 -7
  769. package/dist/frontend/ts7/ast-node.js +1176 -129
  770. package/dist/frontend/ts7/ast-node.js.map +1 -1
  771. package/dist/frontend/ts7/ast-node.test.js +84 -0
  772. package/dist/frontend/ts7/ast-node.test.js.map +1 -1
  773. package/dist/frontend/ts7/ast-wire.d.ts +29 -3
  774. package/dist/frontend/ts7/ast-wire.js +144 -31
  775. package/dist/frontend/ts7/ast-wire.js.map +1 -1
  776. package/dist/frontend/ts7/ast-wire.test.js +23 -0
  777. package/dist/frontend/ts7/ast-wire.test.js.map +1 -1
  778. package/dist/frontend/ts7/ast.d.ts +23 -2
  779. package/dist/frontend/ts7/ast.js +143 -2
  780. package/dist/frontend/ts7/ast.js.map +1 -1
  781. package/dist/frontend/ts7/checker-backend.d.ts +3 -4
  782. package/dist/frontend/ts7/checker-backend.js +2 -2
  783. package/dist/frontend/ts7/checker-backend.js.map +1 -1
  784. package/dist/frontend/ts7/checker-backend.test.js +5 -9
  785. package/dist/frontend/ts7/checker-backend.test.js.map +1 -1
  786. package/dist/frontend/ts7/checker.d.ts +17 -1
  787. package/dist/frontend/ts7/checker.js +82 -1
  788. package/dist/frontend/ts7/checker.js.map +1 -1
  789. package/dist/frontend/ts7/checker.test.js +9 -6
  790. package/dist/frontend/ts7/checker.test.js.map +1 -1
  791. package/dist/frontend/ts7/enums.d.ts +3 -3
  792. package/dist/frontend/ts7/enums.generated.d.ts +10 -0
  793. package/dist/frontend/ts7/enums.generated.js +21 -0
  794. package/dist/frontend/ts7/enums.generated.js.map +1 -1
  795. package/dist/frontend/ts7/enums.js +19 -0
  796. package/dist/frontend/ts7/enums.js.map +1 -1
  797. package/dist/frontend/ts7/lib-diagnostics.d.ts +24 -0
  798. package/dist/frontend/ts7/lib-diagnostics.js +307 -0
  799. package/dist/frontend/ts7/lib-diagnostics.js.map +1 -0
  800. package/dist/frontend/ts7/lib-diagnostics.test.d.ts +1 -0
  801. package/dist/frontend/ts7/lib-diagnostics.test.js +199 -0
  802. package/dist/frontend/ts7/lib-diagnostics.test.js.map +1 -0
  803. package/dist/frontend/ts7/program-host.d.ts +7 -0
  804. package/dist/frontend/ts7/program-host.js +30 -4
  805. package/dist/frontend/ts7/program-host.js.map +1 -1
  806. package/dist/frontend/ts7/semantic-checker.d.ts +10 -0
  807. package/dist/frontend/ts7/semantic-checker.js +25 -20
  808. package/dist/frontend/ts7/semantic-checker.js.map +1 -1
  809. package/dist/frontend/ts7/semantic-json.d.ts +13 -0
  810. package/dist/frontend/ts7/semantic-json.js +146 -0
  811. package/dist/frontend/ts7/semantic-json.js.map +1 -1
  812. package/dist/frontend/ts7/semantic-json.test.js +57 -1
  813. package/dist/frontend/ts7/semantic-json.test.js.map +1 -1
  814. package/dist/frontend/ts7/semantic-model.d.ts +15 -0
  815. package/dist/frontend/ts7/semantic-model.js +67 -19
  816. package/dist/frontend/ts7/semantic-model.js.map +1 -1
  817. package/dist/frontend/ts7/semantic-model.test.js +3 -2
  818. package/dist/frontend/ts7/semantic-model.test.js.map +1 -1
  819. package/dist/frontend/ts7/session.d.ts +14 -1
  820. package/dist/frontend/ts7/session.js +23 -1
  821. package/dist/frontend/ts7/session.js.map +1 -1
  822. package/dist/frontend/tsc-codes.d.ts +1 -1
  823. package/dist/frontend/tsc-codes.js +7 -0
  824. package/dist/frontend/tsc-codes.js.map +1 -1
  825. package/dist/frontend/type-mapper.d.ts +51 -7
  826. package/dist/frontend/type-mapper.js +456 -43
  827. package/dist/frontend/type-mapper.js.map +1 -1
  828. package/dist/frontend/type-mapper.test.js +1 -1
  829. package/dist/frontend/type-mapper.test.js.map +1 -1
  830. package/dist/frontend-process-args.d.ts +4 -0
  831. package/dist/frontend-process-args.js +52 -0
  832. package/dist/frontend-process-args.js.map +1 -0
  833. package/dist/frontend-process-args.test.d.ts +1 -0
  834. package/dist/frontend-process-args.test.js +47 -0
  835. package/dist/frontend-process-args.test.js.map +1 -0
  836. package/dist/frontend-process.d.ts +1 -0
  837. package/dist/frontend-process.js +23 -0
  838. package/dist/frontend-process.js.map +1 -0
  839. package/dist/heap-collection.d.ts +16 -0
  840. package/dist/heap-collection.js +42 -0
  841. package/dist/heap-collection.js.map +1 -0
  842. package/dist/heap-collection.test.d.ts +1 -0
  843. package/dist/heap-collection.test.js +59 -0
  844. package/dist/heap-collection.test.js.map +1 -0
  845. package/dist/heap-pressure.d.ts +2 -0
  846. package/dist/heap-pressure.js +12 -0
  847. package/dist/heap-pressure.js.map +1 -0
  848. package/dist/index.d.ts +2 -0
  849. package/dist/index.js +435 -89
  850. package/dist/index.js.map +1 -1
  851. package/dist/ir/analysis.js +5 -3
  852. package/dist/ir/analysis.js.map +1 -1
  853. package/dist/ir/array-length-stability.d.ts +4 -0
  854. package/dist/ir/array-length-stability.js +26 -6
  855. package/dist/ir/array-length-stability.js.map +1 -1
  856. package/dist/ir/array-length-stability.test.js +49 -0
  857. package/dist/ir/array-length-stability.test.js.map +1 -1
  858. package/dist/ir/builtin-effects.d.ts +7 -0
  859. package/dist/ir/builtin-effects.js +80 -0
  860. package/dist/ir/builtin-effects.js.map +1 -1
  861. package/dist/ir/builtin-signatures.d.ts +7 -1
  862. package/dist/ir/builtin-signatures.js +303 -21
  863. package/dist/ir/builtin-signatures.js.map +1 -1
  864. package/dist/ir/callback-specialization.d.ts +2 -1
  865. package/dist/ir/callback-specialization.js +23 -18
  866. package/dist/ir/callback-specialization.js.map +1 -1
  867. package/dist/ir/char-unit-locals.d.ts +19 -0
  868. package/dist/ir/char-unit-locals.js +185 -0
  869. package/dist/ir/char-unit-locals.js.map +1 -0
  870. package/dist/ir/char-unit-locals.test.d.ts +1 -0
  871. package/dist/ir/char-unit-locals.test.js +94 -0
  872. package/dist/ir/char-unit-locals.test.js.map +1 -0
  873. package/dist/ir/final-fields.d.ts +3 -1
  874. package/dist/ir/final-fields.js +15 -17
  875. package/dist/ir/final-fields.js.map +1 -1
  876. package/dist/ir/function-references.d.ts +2 -0
  877. package/dist/ir/function-references.js +2 -0
  878. package/dist/ir/function-references.js.map +1 -1
  879. package/dist/ir/function-references.test.js +5 -0
  880. package/dist/ir/function-references.test.js.map +1 -1
  881. package/dist/ir/initializer-bindings.d.ts +2 -1
  882. package/dist/ir/initializer-bindings.js +27 -20
  883. package/dist/ir/initializer-bindings.js.map +1 -1
  884. package/dist/ir/int32-arrays.d.ts +108 -0
  885. package/dist/ir/int32-arrays.js +831 -0
  886. package/dist/ir/int32-arrays.js.map +1 -0
  887. package/dist/ir/int32-slots.d.ts +36 -6
  888. package/dist/ir/int32-slots.js +370 -171
  889. package/dist/ir/int32-slots.js.map +1 -1
  890. package/dist/ir/int32-slots.test.js +3 -1
  891. package/dist/ir/int32-slots.test.js.map +1 -1
  892. package/dist/ir/integer-loop-facts.d.ts +9 -4
  893. package/dist/ir/integer-loop-facts.js +93 -18
  894. package/dist/ir/integer-loop-facts.js.map +1 -1
  895. package/dist/ir/integer-loops.d.ts +49 -0
  896. package/dist/ir/integer-loops.js +202 -40
  897. package/dist/ir/integer-loops.js.map +1 -1
  898. package/dist/ir/integer-loops.test.js +211 -1
  899. package/dist/ir/integer-loops.test.js.map +1 -1
  900. package/dist/ir/integer-ranges.d.ts +5 -0
  901. package/dist/ir/integer-ranges.js +125 -12
  902. package/dist/ir/integer-ranges.js.map +1 -1
  903. package/dist/ir/integer-ranges.test.js +94 -0
  904. package/dist/ir/integer-ranges.test.js.map +1 -1
  905. package/dist/ir/ir.d.ts +87 -9
  906. package/dist/ir/ir.js +61 -2
  907. package/dist/ir/ir.js.map +1 -1
  908. package/dist/ir/ir.test.js +21 -1
  909. package/dist/ir/ir.test.js.map +1 -1
  910. package/dist/ir/js-ic.d.ts +19 -2
  911. package/dist/ir/js-ic.js +95 -11
  912. package/dist/ir/js-ic.js.map +1 -1
  913. package/dist/ir/js-ic.test.js +188 -0
  914. package/dist/ir/js-ic.test.js.map +1 -1
  915. package/dist/ir/node-index.d.ts +57 -0
  916. package/dist/ir/node-index.js +215 -0
  917. package/dist/ir/node-index.js.map +1 -0
  918. package/dist/ir/paired-while-loops.d.ts +25 -0
  919. package/dist/ir/paired-while-loops.js +335 -0
  920. package/dist/ir/paired-while-loops.js.map +1 -0
  921. package/dist/ir/paired-while-loops.test.d.ts +1 -0
  922. package/dist/ir/paired-while-loops.test.js +163 -0
  923. package/dist/ir/paired-while-loops.test.js.map +1 -0
  924. package/dist/ir/parameter-versions.d.ts +25 -0
  925. package/dist/ir/parameter-versions.js +300 -0
  926. package/dist/ir/parameter-versions.js.map +1 -0
  927. package/dist/ir/runtime-features.d.ts +60 -15
  928. package/dist/ir/runtime-features.js +276 -35
  929. package/dist/ir/runtime-features.js.map +1 -1
  930. package/dist/ir/serialize.d.ts +12 -2
  931. package/dist/ir/serialize.js +16 -3
  932. package/dist/ir/serialize.js.map +1 -1
  933. package/dist/ir/serialize.test.js +17 -0
  934. package/dist/ir/serialize.test.js.map +1 -1
  935. package/dist/ir/tiers.js +1 -0
  936. package/dist/ir/tiers.js.map +1 -1
  937. package/dist/ir/traverse.d.ts +2 -0
  938. package/dist/ir/traverse.js +29 -5
  939. package/dist/ir/traverse.js.map +1 -1
  940. package/dist/ir/validate.js +171 -45
  941. package/dist/ir/validate.js.map +1 -1
  942. package/dist/library/ir-policy.js +12 -0
  943. package/dist/library/ir-policy.js.map +1 -1
  944. package/dist/library/library-cache.d.ts +2 -0
  945. package/dist/library/library-cache.js.map +1 -1
  946. package/dist/library/prepare.js +2 -0
  947. package/dist/library/prepare.js.map +1 -1
  948. package/dist/native/cache.d.ts +6 -1
  949. package/dist/native/cache.js +28 -5
  950. package/dist/native/cache.js.map +1 -1
  951. package/dist/native/cache.test.js +16 -2
  952. package/dist/native/cache.test.js.map +1 -1
  953. package/dist/native/cli.js +26 -1
  954. package/dist/native/cli.js.map +1 -1
  955. package/dist/native/compiler.js +8 -6
  956. package/dist/native/compiler.js.map +1 -1
  957. package/dist/native/executable-cache.d.ts +1 -1
  958. package/dist/native/executable-cache.js +2 -2
  959. package/dist/native/executable-cache.js.map +1 -1
  960. package/dist/native/prepare.d.ts +3 -1
  961. package/dist/native/prepare.js +123 -31
  962. package/dist/native/prepare.js.map +1 -1
  963. package/dist/native/prepare.test.js +78 -18
  964. package/dist/native/prepare.test.js.map +1 -1
  965. package/dist/native/sanitizer.test.js +6 -1
  966. package/dist/native/sanitizer.test.js.map +1 -1
  967. package/dist/native/text-file.d.ts +13 -3
  968. package/dist/native/text-file.js +63 -9
  969. package/dist/native/text-file.js.map +1 -1
  970. package/dist/native/text-file.test.d.ts +1 -0
  971. package/dist/native/text-file.test.js +49 -0
  972. package/dist/native/text-file.test.js.map +1 -0
  973. package/dist/native/toolchain.js +4 -4
  974. package/dist/native/toolchain.js.map +1 -1
  975. package/dist/native/toolchain.test.js +3 -3
  976. package/dist/native/toolchain.test.js.map +1 -1
  977. package/dist/startup-cache.d.ts +1 -0
  978. package/dist/startup-cache.js +1 -0
  979. package/dist/startup-cache.js.map +1 -1
  980. package/dist/text-parts.d.ts +7 -0
  981. package/dist/text-parts.js +44 -0
  982. package/dist/text-parts.js.map +1 -1
  983. package/dist/text-parts.test.d.ts +1 -0
  984. package/dist/text-parts.test.js +46 -0
  985. package/dist/text-parts.test.js.map +1 -0
  986. package/dist/timing.d.ts +9 -2
  987. package/dist/timing.js +7 -4
  988. package/dist/timing.js.map +1 -1
  989. package/dist/wasm/translate.d.ts +4 -0
  990. package/dist/wasm/translate.js +2 -2
  991. package/dist/wasm/translate.js.map +1 -1
  992. package/package.json +21 -21
  993. package/shims/chalk/v5.ts +688 -0
  994. package/shims/hono-node-server/v2.ts +645 -0
  995. package/shims/hot-shots/client.ts +1126 -0
  996. package/shims/hot-shots/v8-unix-dgram.ts +8 -0
  997. package/shims/hot-shots/v8.ts +8 -0
  998. package/shims/undici/core/client.ts +4 -4
  999. package/surface-manifest.json +44 -52
@@ -1,11 +1,11 @@
1
1
  import { JsIcSites } from "../../ir/js-ic.js";
2
2
  import { type ArraySearchKind } from "./array-search.js";
3
3
  import type { IrBytesElem, IrExpr, IrFfiCallbackParam, IrFfiImport, IrFunction, IrGlobal, IrLocal, IrModule, IrRecordShape, IrStmt, IrType, IrUnionDef, SrcLoc } from "../../ir/ir.js";
4
- import { type DenseArrayLoop } from "./dense-array-loops.js";
5
- import { findInitializedByteLoopBindings } from "./byte-windows.js";
4
+ import { type RuntimeFeatures } from "../../ir/runtime-features.js";
6
5
  import { matchBytesLoopVersion } from "./bytes-loop-versions.js";
7
- import type { IntegerCountedForLoop } from "../../ir/integer-loops.js";
6
+ import type { IntegerCountedForLoop, IntegerPairedForLoop } from "../../ir/integer-loops.js";
8
7
  import { type SplitSpan, type StoredSplitSnapshot } from "./split-loops.js";
8
+ import { type ChunkResult, EmitJournal } from "./emit-journal.js";
9
9
  import { type IntegerRange, type IntegerRanges } from "../../ir/integer-ranges.js";
10
10
  import { type Int32Slots } from "../../ir/int32-slots.js";
11
11
  import { type FinalFields } from "../../ir/final-fields.js";
@@ -23,9 +23,11 @@ import { NullableRefFields, type NullableRefField } from "./nullable-fields.js";
23
23
  import { InlineUnionFields } from "./inline-unions.js";
24
24
  import { OptionalArrayReads, type LocalArrayRead } from "./local-array-reads.js";
25
25
  import { CheckedNarrows } from "./checked-narrows.js";
26
+ import { type ArrayAccess } from "./dense-array-access.js";
26
27
  import { type MapReadLifetimes } from "./map-read-lifetimes.js";
27
28
  import { type MapEntryFusion } from "./map-entry-fusion.js";
28
29
  import { type WalkBorrowHost } from "./walk-borrows.js";
30
+ import { IrNodeIndex } from "../../ir/node-index.js";
29
31
  import { ReferenceEffects } from "./reference-effects.js";
30
32
  import { ReferenceWrites, type Writes } from "./reference-writes.js";
31
33
  import { LlvmDebugInfo } from "./debug-info.js";
@@ -64,9 +66,31 @@ export interface LlScopeEntry {
64
66
  * environment, which skip the release call. */
65
67
  lazy?: boolean;
66
68
  }
69
+ /** Process primitives for forked emission workers. */
70
+ export interface ForkPrimitives {
71
+ /** 0 in the worker, the worker's pid in the parent, -1 on failure. */
72
+ fork(): number;
73
+ /** Ends the worker without running exit handlers. */
74
+ exit(code: number): void;
75
+ /** The worker's exit status, 128 plus a signal number, or -1. */
76
+ wait(pid: number): number;
77
+ }
67
78
  export interface LlvmTargetOptions {
68
79
  /** C ABI target; omitted direct emission uses the host ABI. */
69
80
  targetTriple?: string;
81
+ /** Emit the function bodies in this many contiguous ranges, each by its
82
+ * own emitter, and merge them in function order (emit-journal.ts). The
83
+ * output is the same as one emitter's. Debug builds (`debugSources`)
84
+ * emit in one emitter. */
85
+ functionChunks?: number;
86
+ /** Emit the function bodies of a large module on this many forked worker
87
+ * processes at a time (emit-module.ts), forked with `forkPrimitives`. The
88
+ * output is the same as one emitter's. Debug builds (`debugSources`)
89
+ * emit in one emitter. */
90
+ functionWorkers?: number;
91
+ /** The host's process primitives, where it can fork (the native
92
+ * compiler's). */
93
+ forkPrimitives?: ForkPrimitives | undefined;
70
94
  /** Exact frontend sources for dev-build locations and variable metadata. */
71
95
  debugSources?: ReadonlyMap<string, string>;
72
96
  /** Pointer width of the target C ABI. Native targets are 64-bit today. */
@@ -98,8 +122,22 @@ export interface LlvmTargetOptions {
98
122
  /** Translated WebAssembly memories check bounds explicitly instead of
99
123
  * relying on guard pages (wasm-modules.ts wasmBoundsChecks). */
100
124
  wasmBoundsChecks?: boolean;
125
+ /** The executable can reserve its program-lifetime region below 32 GiB
126
+ * (lowRegionTarget): fields that refer to compact class instances then
127
+ * store the instance's address over 8 in 32 bits (classes.ts
128
+ * compactRefLoadLines). Elsewhere they keep 8-byte pointers. */
129
+ lowRegion?: boolean;
101
130
  }
131
+ /** LlvmTargetOptions.lowRegion for an executable: Linux targets without
132
+ * sanitizers, whose address space below 32 GiB is free (ASan keeps its
133
+ * shadow memory there; other systems map their own images and libraries
134
+ * there). `platform` is a target platform (`linux`, `darwin`, `win32`,
135
+ * `wasi`). */
136
+ export declare function lowRegionTarget(platform: string, sanitize: boolean): boolean;
102
137
  export declare function emitLlvmModule(input: IrModule, options?: LlvmTargetOptions): string;
138
+ /** emitLlvmModule's text as parts that concatenate to it, without the copy
139
+ * that joining them makes: a large program's text is 150 MB. */
140
+ export declare function emitLlvmModuleParts(input: IrModule, options?: LlvmTargetOptions): string[];
103
141
  /** Keep large translation units below the host's single-string limit. */
104
142
  export declare function emitLlvmModuleSource(input: IrModule, options?: LlvmTargetOptions): string | readonly string[];
105
143
  export declare function llStrBytes(text: string): string;
@@ -129,6 +167,8 @@ export declare function boxSlotCount(fn: IrFunction): number;
129
167
  export declare const MAX_BYTES_LOOP_VERSION_DEPTH = 3;
130
168
  export declare class LlEmitter {
131
169
  readonly mod: IrModule;
170
+ /** Per-feature state (emitter-state.ts), indexed by each key's slot. */
171
+ readonly moduleStates: unknown[];
132
172
  localArrayReads: Map<string, LocalArrayRead>;
133
173
  loopArrayBorrows: ReadonlySet<IrStmt>;
134
174
  scalarStringSlices: Map<string, {
@@ -207,6 +247,15 @@ export declare class LlEmitter {
207
247
  integerArrayBindings: Set<string>;
208
248
  readonly fieldAliasTags: Map<string, number>;
209
249
  readonly fieldPointerTags: Map<string, number>;
250
+ /** The field pointers (classFieldPtr) of this function whose fields hold
251
+ * 32-bit references to compact class instances (LlClassMeta.compressed):
252
+ * loadField/loadRef decode them and storeField/storeRef encode them. */
253
+ readonly compressedFieldPtrs: Set<string>;
254
+ /** Compact class instances live in the program-lifetime region below
255
+ * 32 GiB (LlvmTargetOptions.lowRegion, and the program has compact
256
+ * classes): main reserves it before compiled code runs (scr_plr_init), and
257
+ * fields and arrays of compactRefType hold 32-bit references. */
258
+ compactRegion: boolean;
210
259
  /** Native class fields with different property names cannot occupy the
211
260
  * same slot of one object. Inherited views of the same property share a
212
261
  * tag. Array storage has its own disjoint categories; untagged runtime
@@ -216,9 +265,64 @@ export declare class LlEmitter {
216
265
  /** The alias tag of a runtime word that emitted code reads and writes
217
266
  * outside every field (the lifetime-region count, owner and cursors). */
218
267
  memoryAliasAttachment(category: string): string;
268
+ /** The current function's int32 array allocations: the array literals
269
+ * its int32 arrays are written with. They construct SCR_ELEM_I32 arrays. */
270
+ int32Allocations: Set<IrExpr>;
271
+ /** The fill temporaries (`new Array(n).fill(v)`) of those allocations:
272
+ * the same arrays, so int32 too. */
273
+ int32ArrayTemps: Set<string>;
274
+ /** The same for the current function's int32 arrays with checked stores,
275
+ * which are only allocated by fills (ir/int32-arrays.ts
276
+ * checkableInt32Allocations): their temporaries' literals, with the fill's
277
+ * length (a literal constructs SCR_ELEM_I32 storage when that length is at
278
+ * least CHECKED_INT32_MIN_LENGTH, SCR_ELEM_F64 otherwise), and their
279
+ * temporaries. */
280
+ checkedAllocations: Map<IrExpr, IrExpr>;
281
+ checkedArrayTemps: Set<string>;
282
+ /** The fill calls (`.fill(v)`) of those allocations: a value that is not
283
+ * an int32 widens the new array first. */
284
+ checkedFills: Set<IrExpr>;
285
+ /** Collect the int32 allocations of `fn`, about to be emitted. */
286
+ findInt32Allocations(fn: IrFunction): void;
287
+ /** Whether `arr` reads one of the int32 arrays (ir/int32-arrays.ts, kept
288
+ * by the int32 slot analysis): a local or parameter of the current
289
+ * function, or a module global. */
290
+ int32Array(arr: IrExpr): boolean;
291
+ /** Whether `arr` is one of the current function's int32 arrays with
292
+ * checked stores: int32 slots until a store widens it to doubles. Every
293
+ * access tests its kind (emitByElementKind), except in the fast copy of
294
+ * an int32 kind loop, which reads and writes it as an int32 array. */
295
+ checkedInt32Array(arr: IrExpr): boolean;
296
+ /** Whether the local `localId` holds one of the current function's int32
297
+ * arrays with checked stores. */
298
+ checkedInt32Local(localId: string): boolean;
299
+ /** Whether `arr` is an int32 array with checked stores that the fast copy
300
+ * of the int32 kind loop being emitted holds as an int32 array. */
301
+ int32KindArray(arr: IrExpr): boolean;
302
+ /** Before a store of `value` (of `expr`) into `arr`, in the fast copy of
303
+ * an int32 kind loop: continue when it is an int32 that is not -0, and
304
+ * otherwise leave for the statement's resume point, where it re-executes
305
+ * with kind tests. Returns the value as an i32 when it is at hand as an
306
+ * integer, or null when the store converts the double itself. */
307
+ emitInt32KindStoreCheck(arr: IrExpr, value: LlValue, expr: IrExpr): string | null;
308
+ /** Emit an access to the checked int32 array `array` once per element
309
+ * kind: `arm("i32", widened)` while it holds int32 slots and
310
+ * `arm("f64", widened)` after it widened, joined after both. `widened` is
311
+ * the label of the double arm, where an int32 arm's store of a value that
312
+ * is not an int32 continues after widening the array. Returns the phi of
313
+ * the arms' results (of LLVM type `ty`), or null when `ty` is null. */
314
+ emitByElementKind(array: string, ty: string | null, arm: (acc: "i32" | "f64", widened: string) => string | null): string | null;
315
+ /** Before storing the double `value` (of `expr`) into an int32 arm
316
+ * (emitByElementKind) of the checked int32 array `array`: continue in this
317
+ * arm when it is an int32 that is not -0, or widen the array and continue
318
+ * at `widened`. A value proven an int32 needs no test. */
319
+ emitCheckedInt32Store(array: string, value: string, expr: IrExpr, widened: string): void;
320
+ /** The access an element operation on `arr` (of element type `elem`)
321
+ * takes: int32 arrays read and write their 4-byte slots. */
322
+ arrayAccess(arr: IrExpr, elem: IrType): ArrayAccess;
219
323
  /** Whether an element access at `index` of `arr` lies in the hole-free
220
- * prefix: the counter of a dense array loop's fast copy indexing one of
221
- * the arrays its entry test covered. */
324
+ * prefix: a counter of a dense array loop's fast copy indexing one of the
325
+ * arrays its entry test covered. */
222
326
  provenDenseIndex(arr: IrExpr, index: IrExpr): boolean;
223
327
  fieldAliasAttachment(ptr: string): string;
224
328
  fieldAliasMetadata(): string[];
@@ -322,6 +426,10 @@ export declare class LlEmitter {
322
426
  }>;
323
427
  /** Interned ScrMapOps descriptors (scr_map.h): initializer → symbol. */
324
428
  readonly mapOpsConsts: Map<string, string>;
429
+ /** Method-id slots of checked-dynamic method calls
430
+ * (scr_dyn_invoke_prepared_id): method name → symbol of an i32 the
431
+ * runtime fills with the name's id on the first call. */
432
+ readonly methodIdSlots: Map<string, string>;
325
433
  /** Type-directed walker functions (JSON serializers, the indent
326
434
  * rewriter, union ToString/join) — interned per typeKey/unionId, defs
327
435
  * flushed with the shape helpers. */
@@ -370,6 +478,15 @@ export declare class LlEmitter {
370
478
  readonly callLifetimes: CallLifetimes;
371
479
  readonly constantCallbacks: Map<string, Map<string, string>>;
372
480
  currentConstantCallbacks: ReadonlyMap<string, string>;
481
+ /** The current function's running maximum and minimum updates, whose
482
+ * branches are weighted as rarely taken (running-extrema.ts). */
483
+ runningExtrema: ReadonlySet<IrStmt>;
484
+ /** Callback bindings whose closures an enclosing callback loop version
485
+ * proved to hold their known function: calls take the direct entry with
486
+ * no fallback (emitCallbackVersionedLoop). */
487
+ knownCallbacks: Set<string>;
488
+ readonly callbackVersioning: Set<IrStmt>;
489
+ callbackVersionsEnabled: boolean;
373
490
  readonly stackCallbacks: StackCallbacks;
374
491
  readonly receiverReaders: AmbientReceiverReaders;
375
492
  readonly stackCaptures: StackCaptures;
@@ -412,6 +529,9 @@ export declare class LlEmitter {
412
529
  /** Module constants that keep one value once initialized
413
530
  * (immutability.ts stableGlobals). */
414
531
  stableGlobals: ReadonlySet<string>;
532
+ /** Every function body's nodes in walk order (ir/node-index.ts), for the
533
+ * constructor's analyses. */
534
+ readonly nodeIndex: IrNodeIndex;
415
535
  private readonly tdzGlobals;
416
536
  readonly constantNumericTables: ReadonlyMap<string, ConstantNumericTable>;
417
537
  /** Constant-key reads on checked-dynamic objects, each with its own
@@ -451,9 +571,15 @@ export declare class LlEmitter {
451
571
  /** Fiberless async functions a stackless coroutine body awaits directly;
452
572
  * each gets an inline await entry (emitCoroInlineAwait). */
453
573
  readonly inlineAwaitCallees: Set<string>;
574
+ /** Stackless async functions some coroutine body awaits directly: each
575
+ * gets a direct spawn entry (emitCoroDirectAwait). */
576
+ readonly directAwaitCallees: Set<string>;
454
577
  /** The async functions whose bodies never suspend and that a direct
455
578
  * await may enter in place (selectStacklessAsync). */
456
579
  private inlineAwaitable;
580
+ /** Locals whose array literal emitStmts left for the `await Promise.all`
581
+ * that reads them (deferredPromiseAllLocal). */
582
+ private readonly deferredPromiseAllEntries;
457
583
  /** The promise a `return` emitted past its finally regions already
458
584
  * produced for its adopting await (borrowed from the return's parked
459
585
  * slot); that await takes it instead of evaluating its operand. */
@@ -465,7 +591,10 @@ export declare class LlEmitter {
465
591
  /** The program calls mock.timers members (moduleUsesMockTimers): timer
466
592
  * calls emit scr_test.c's mock-aware entry points. */
467
593
  readonly mockTimers: boolean;
468
- private schedulesInContextValue;
594
+ private runtimeFeaturesValue;
595
+ /** The module's runtime features (moduleRuntimeFeatures), found with one
596
+ * walk of the module the first time any of them is read. */
597
+ get runtimeFeatures(): RuntimeFeatures;
469
598
  /** Whether timer and tick scheduling goes through the *_als entry
470
599
  * points (RuntimeFeatures asyncContext). */
471
600
  get schedulesInContext(): boolean;
@@ -483,9 +612,11 @@ export declare class LlEmitter {
483
612
  /** Identity-preserving static→dyn capsules for program classes and Web
484
613
  * APIs whose values remain directly observable. */
485
614
  readonly liveDynRefAdapters: Map<string, LlStreamTypedRefAdapter>;
486
- private dynBuiltinStreamUse;
487
615
  /** See moduleUsesDynBuiltinStream. */
488
616
  get usesDynBuiltinStream(): boolean;
617
+ /** A checked-dynamic for-await may hold a native stream: the program
618
+ * links the stream unit (and the dyn-async one the loop needs). */
619
+ get dynForAwaitStreams(): boolean;
489
620
  /** Runtime-arm dispatchers for live union values. */
490
621
  readonly liveDynUnionRefAdapters: Map<string, string>;
491
622
  readonly dynPromiseAdapters: Map<string, string>;
@@ -607,14 +738,6 @@ export declare class LlEmitter {
607
738
  * immortal from construction (classes.ts programLifetimeClass). */
608
739
  readonly programLifetime: ReadonlySet<string>;
609
740
  numericLocals: Map<string, IrLocal>;
610
- /** Local arrays of the current function that no other binding can hold
611
- * (ir/array-length-stability.ts). */
612
- unaliasedArrays: ReadonlySet<string>;
613
- /** Dense array loops (dense-array-loops.ts) run in this function. */
614
- denseLoopsEnabled: boolean;
615
- denseLoopEntries: ReturnType<typeof findInitializedByteLoopBindings>;
616
- /** The fast copy of a dense array loop being emitted. */
617
- denseLoop: DenseArrayLoop | null;
618
741
  captureIds: Set<string>;
619
742
  /** Active induction bindings retain their width independently of size_t. */
620
743
  integerLoopBindings: Map<string, {
@@ -626,7 +749,19 @@ export declare class LlEmitter {
626
749
  max: number;
627
750
  };
628
751
  }>;
629
- countedLoopsEnabled: boolean;
752
+ /** Constant number locals whose latest emitted declaration stored an
753
+ * exact integer beside the double, such as `const j = i * 4` in a
754
+ * typed-array loop version: an i64 slot and the integer's range. */
755
+ integerTemps: Map<string, {
756
+ slot: string;
757
+ type: "i64";
758
+ signed: true;
759
+ range: IntegerRange;
760
+ }>;
761
+ /** Integer temps are kept only in optimized synchronous functions: an
762
+ * async or generator body resumes with its locals in its frame, which
763
+ * an entry alloca is not part of. */
764
+ integerTempsEnabled: boolean;
630
765
  /** Speculative integer loops (speculative-integers.ts) run in this function. */
631
766
  speculativeLoopsEnabled: boolean;
632
767
  /** The fast copy of a speculative integer loop being emitted: its
@@ -636,12 +771,35 @@ export declare class LlEmitter {
636
771
  resume: Map<IrStmt, string>;
637
772
  /** Globals whose double is written back only when the copy is left. */
638
773
  deferred: Set<string>;
774
+ /** The loop site's count of bailing entries in a row (a global), and
775
+ * whether this entry completed a speculated write (a slot). A proven
776
+ * integer loop has neither. */
777
+ bails?: string;
778
+ ran?: string;
639
779
  } | null;
780
+ /** Speculative loop sites numbered so far in the module. */
781
+ speculativeLoopSites: number;
640
782
  /** The ordinary copy being emitted: resume labels still to place. */
641
783
  speculationResume: Map<IrStmt, {
642
784
  label: string;
643
785
  placed: boolean;
644
786
  }> | null;
787
+ /** Run once at the top of the next loop copy's header
788
+ * (`enterLoopHeader`): records the ordinary copy's header, or sends the
789
+ * third copy's header there. */
790
+ speculationHeader: ((header: string) => void) | null;
791
+ /** A copy of an int32 kind loop (int32-kind-loops.ts) being emitted: the
792
+ * int32 arrays with checked stores it reads and writes as int32 arrays
793
+ * (the fast copy) or as double arrays (an ordinary copy entered only
794
+ * after they widened), as `function\0local` keys, and where each of the
795
+ * fast copy's writes resumes in the third copy. */
796
+ int32Kinds: {
797
+ int32: Set<string>;
798
+ wide: Set<string>;
799
+ resume: Map<IrStmt, string>;
800
+ } | null;
801
+ /** The resume label of the fast-copy write being emitted. */
802
+ int32KindResume: string | null;
645
803
  /** The function being emitted, for speculative globals. */
646
804
  speculativeFunction: string;
647
805
  /** Every function that writes each number global (computed on demand). */
@@ -659,20 +817,17 @@ export declare class LlEmitter {
659
817
  int32Elements: ((arr: IrExpr) => boolean) | null;
660
818
  /** Sums whose result only feeds 32-bit conversions (wrapping-sums.ts). */
661
819
  wrappingSums: Set<IrExpr>;
662
- byteWindowsEnabled: boolean;
663
- byteWindowEntries: ReturnType<typeof findInitializedByteLoopBindings>;
664
- /** Typed-array loop versioning (bytes-loop-versions.ts) for the current
665
- * function: off in debug and suspending functions and inside a copy. */
666
- bytesLoopVersionsEnabled: boolean;
667
- /** Loops being versioned around the statement being emitted: a loop is
668
- * never versioned inside its own copies, and versions nest boundedly. */
669
- readonly bytesLoopVersioning: Set<IrStmt>;
670
- bytesLoopEntries: ReturnType<typeof findInitializedByteLoopBindings> | null;
671
- bytesLoopFunction: IrFunction | null;
672
- /** Counted loops whose integer-form safety test an enclosing version
673
- * guard already passed. */
674
- readonly provenCountedGuards: Set<IrStmt>;
820
+ /** Number locals of the current function that hold exact integers or NaN
821
+ * (findIntegerOrNaNLocals in wrapping-sums.ts). */
822
+ integerOrNaNLocals: ReadonlyMap<string, IntegerRange>;
675
823
  bytesBounds: ReadonlySet<IrExpr | IrStmt>;
824
+ /** The charCodeAt reads standing for charAt reads the emitter rewrote
825
+ * (one-unit tests and switches, charAtUnitRead), with the charAt each
826
+ * stands for: a loop version's proof for the charAt covers its read. */
827
+ readonly charAtUnitReads: Map<IrExpr, IrExpr>;
828
+ /** Worker programs: typed-array accesses whose views an enclosing version
829
+ * guard proved thread-owned. */
830
+ bytesOwned: ReadonlySet<IrExpr | IrStmt>;
676
831
  integerViews: Map<string, string>;
677
832
  /** Module globals the current function owns outright (initializer
678
833
  * bindings): their function-local slot, which stands in for the global. */
@@ -748,9 +903,17 @@ export declare class LlEmitter {
748
903
  readonly chainSlots: Map<string, LlValue>;
749
904
  logArgSlots: number;
750
905
  readonly stackTraces: boolean;
906
+ /** The options this emitter was built with (chunk emitters reuse them). */
907
+ readonly targetOptions: LlvmTargetOptions;
908
+ /** Records the module-level effects of emitting a range of functions,
909
+ * which the emitter that merges the range replays (emit-journal.ts). Null
910
+ * when this emitter emits the whole module itself. */
911
+ journal: EmitJournal | null;
912
+ /** The emitter's hosts forward to `journal` (journal set, or workers). */
913
+ private readonly journaled;
751
914
  /** Stack-trace mode: functions no capture can include (no frame push). */
752
915
  readonly unframedFunctions: ReadonlySet<string>;
753
- constructor(mod: IrModule, options: LlvmTargetOptions);
916
+ constructor(mod: IrModule, options: LlvmTargetOptions, journal?: EmitJournal | null);
754
917
  /** The borrowed parameters of a hierarchy's vtable slot (empty: owned). */
755
918
  virtualSlotBorrowed(rootName: string, slotIndex: number): ReadonlySet<number>;
756
919
  /** Optimized emission: no debug-info (dev) posture. */
@@ -808,10 +971,19 @@ export declare class LlEmitter {
808
971
  * fiberless, and module evaluation bodies and `dyn` results keep fibers
809
972
  * as they do there. The runtime traps if a stackless body ever parks. */
810
973
  selectStacklessAsync(fnDefs: string[]): void;
974
+ /** Whether a fiberless body running on its caller's stack needs the
975
+ * frame scr_async_inline_enter/exit keep: it isolates the Error.stack
976
+ * frame chain, which only stack-observing programs push, as a fresh fiber
977
+ * would. Other programs run the body with a plain call. The body runs in
978
+ * its caller's AsyncLocalStorage context either way, as Node runs an async
979
+ * body up to its first await. The frame also counts the bodies running on
980
+ * a fiber's stack for the runtime's trap on a fiberless body that
981
+ * suspends. */
982
+ get fiberlessFrames(): boolean;
811
983
  /** The spawn wrapper of a fiberless async function: runs the body on the
812
- * caller's stack between scr_async_inline_enter/leave and settles the
813
- * fresh promise from its outcome — the fiber trampoline's epilogue,
814
- * without the fiber. */
984
+ * caller's stack (between scr_async_inline_enter/leave when
985
+ * fiberlessFrames) and settles a fresh promise from its outcome — the
986
+ * fiber trampoline's epilogue, without the fiber. */
815
987
  emitFiberlessAsyncSpawn(fn: IrFunction, spawnParams: string[]): string[];
816
988
  /** Whether `await f(...)` may enter f through its await-call entry. The
817
989
  * entry's result is the awaited value of f's own body type; direct calls
@@ -821,10 +993,23 @@ export declare class LlEmitter {
821
993
  * place (emitCoroInlineAwait): f never suspends, and its direct call is
822
994
  * one an await-call entry could take. */
823
995
  inlineAwaitEligible(fnName: string): boolean;
996
+ /** Whether a stackless coroutine body's `await f(...)` may await f's
997
+ * fiber record instead of its promise (emitCoroDirectAwait): f is a
998
+ * stackless async function whose direct call an await-call entry could
999
+ * take. The await consumes the promise, so nothing else can observe it.
1000
+ * Worker programs keep the promise for their stop checkpoint. */
1001
+ directAwaitEligible(fnName: string): boolean;
1002
+ /** A stackless coroutine body's `await f(...)` of a stackless f, without
1003
+ * f's promise object: f's prefix runs as the spawn of a fiber record that
1004
+ * keeps the promise inside. A body still running wakes this coroutine
1005
+ * when it finishes, where its promise's settlement would wake its one
1006
+ * waiter; a finished one takes the settled await's turn. The result (or
1007
+ * the rejection, re-thrown) comes out of the record, which goes. */
1008
+ emitCoroDirectAwait(call: ExprOf<"call">, type: IrType): LlValue;
824
1009
  /** The inline await entry of a fiberless async function (`sc_ai_*`): its
825
- * body on the caller's stack between scr_async_inline_enter/exit, as in
826
- * its spawn wrapper, returning the result and leaving a throw pending for
827
- * the awaiting coroutine (emitCoroInlineAwait). */
1010
+ * body on the caller's stack (between scr_async_inline_enter/exit when
1011
+ * fiberlessFrames), as in its spawn wrapper, returning the result and
1012
+ * leaving a throw pending for the awaiting coroutine (emitCoroInlineAwait). */
828
1013
  emitAsyncInlineAwaitCall(fn: IrFunction): string[];
829
1014
  /** A stackless coroutine body's `await f(...)` of a fiberless f, the
830
1015
  * await-call entry's turns without its promise: the body runs in place,
@@ -833,6 +1018,32 @@ export declare class LlEmitter {
833
1018
  * the spawn wrapper's promise would. An adopting await (`return f(...)`)
834
1019
  * first takes the adoption's then-job turn either way. */
835
1020
  emitCoroInlineAwait(call: ExprOf<"call">, adopt: boolean): LlValue;
1021
+ /** The entries of `Promise.all(arg)` that a stackless coroutine body's
1022
+ * await may run in place (emitCoroInlinePromiseAll): `arg` is a non-empty
1023
+ * array literal, or the local whose declaration emitStmts deferred to this
1024
+ * await (deferredPromiseAllEntries), whose every entry is a call to a
1025
+ * never-suspending async function, and the result is an array. Null
1026
+ * otherwise. Consumes a deferred local's entries. */
1027
+ inlinePromiseAllEntries(all: ExprOf<"intrinsic">): ExprOf<"arrayLit"> | null;
1028
+ /** Whether every entry of `entries` is a call an await could run in place
1029
+ * (inlineAwaitEligible) that yields its promise's inner type. */
1030
+ private promiseAllInlineable;
1031
+ /** Whether `stmts[i]` declares a local holding an array literal that only
1032
+ * `stmts[i + 1]` reads, as the operand of `await Promise.all(local)` that
1033
+ * runs first in that statement and may run its entries in place. Nothing
1034
+ * runs between the literal and the await, so the await evaluates the
1035
+ * literal itself (inlinePromiseAllEntries). Debug builds keep the local. */
1036
+ deferredPromiseAllLocal(stmts: readonly IrStmt[], i: number): ExprOf<"arrayLit"> | null;
1037
+ /** A stackless coroutine body's `await Promise.all([f(...), ...])` of
1038
+ * never-suspending calls, with Promise.all's turns and without its
1039
+ * promises: the entries run in place in order and their values fill the
1040
+ * result array. Promise.all queues one reaction job per entry, back to
1041
+ * back, and the last of them settles the result, whose await then takes a
1042
+ * turn: here one turn stands for the entries' jobs and a second for the
1043
+ * await. A throwing entry becomes the rejection the await re-throws from
1044
+ * its turn; the remaining entries still run, and later throws are handled
1045
+ * rejections, as Promise.all's subscriptions make them. */
1046
+ emitCoroInlinePromiseAll(entries: ExprOf<"arrayLit">, type: IrType): LlValue;
836
1047
  emitAsyncAwaitCall(fn: IrFunction, argPackLines: string[] | null, adopt?: boolean): string[];
837
1048
  emitAsyncScaffolding(): string[];
838
1049
  /** Whether `fn`'s body is emitted as an LLVM switched coroutine: every
@@ -858,6 +1069,8 @@ export declare class LlEmitter {
858
1069
  /** Interned NUL-terminated C-string constant (the scr_jb_puts /
859
1070
  * stringify-indent currency) — `@`-ref, first-use order. */
860
1071
  cstr(text: string): string;
1072
+ /** The method-id slot for a constant method name (methodIdSlots). */
1073
+ methodIdSlot(name: string): string;
861
1074
  needBadTag(): void;
862
1075
  /** The ScrMapOps descriptor holding these operands (ShapeHost.mapOps). */
863
1076
  mapOps(operands: readonly string[]): string;
@@ -975,11 +1188,13 @@ export declare class LlEmitter {
975
1188
  * releases the dummy (NULL for refcounted kinds) harmlessly. A scalar
976
1189
  * call result of the function's return type may be passed as the unwind's
977
1190
  * dummy value (see emitUnwind). `poll` marks a worker termination poll
978
- * (function entry or loop budget), whose test must stay ordered. */
1191
+ * (function entry or loop budget), whose test must stay ordered. A
1192
+ * `guard` (an i1) limits the test to the paths where it is true: false
1193
+ * where the joined call could not have left anything pending. */
979
1194
  emitPendingCheck(passThrough?: {
980
1195
  name: string;
981
1196
  type: IrType;
982
- }, poll?: boolean): void;
1197
+ }, poll?: boolean, guard?: string): void;
983
1198
  /** After a runtime call that ALWAYS leaves an exception pending (the
984
1199
  * compiler-resolved Node throws): the pending test would always answer
985
1200
  * true, so unwind unconditionally. Emission continues in a block with no
@@ -1068,11 +1283,25 @@ export declare class LlEmitter {
1068
1283
  * 1 on hierarchy members, then the flattened field list. Runtime error
1069
1284
  * classes GEP through %ScrError (their structs live in the runtime; the
1070
1285
  * def's [name, message, %code, %cause] order matches the layout). */
1071
- classFieldPtr(objName: string, className: string, field: string): {
1286
+ classFieldPtr(objName: string, className: string, field: string, refs?: "pointer" | "compressed"): {
1072
1287
  ptr: string;
1073
1288
  type: IrType;
1074
1289
  inline: boolean;
1290
+ compressed: boolean;
1075
1291
  };
1292
+ /** Whether values of `t` are NULL or a compact class instance: `C`,
1293
+ * `C | undefined` or `C | null` for a compact class `C`. `C | null |
1294
+ * undefined` is not: its null is a sentinel outside the region. */
1295
+ compactRefType(t: IrType, isCompact?: (className: string) => boolean): boolean;
1296
+ /** Whether arrays of `elem` hold 32-bit references (SCR_ELEM_CREF). */
1297
+ compactArrayElem(elem: IrType): boolean;
1298
+ /** Loads the reference a field pointer addresses: a pointer, or the
1299
+ * decoded 32-bit reference of a compressed field (compressedFieldPtrs).
1300
+ * `tagged`: the load carries the field's alias tags. */
1301
+ loadRef(ptr: string, tagged?: boolean): string;
1302
+ /** Stores `value` (a pointer) through a field pointer: as is, or encoded
1303
+ * as the 32-bit reference of a compressed field. */
1304
+ storeRef(ptr: string, value: string): void;
1076
1305
  /** The dynamic class's preorder number (borrowed object; the static class
1077
1306
  * names the struct spelling and where the number is, classPreLines). */
1078
1307
  loadVtPre(objName: string, staticClassName: string): string;
@@ -1126,8 +1355,8 @@ export declare class LlEmitter {
1126
1355
  /** A binding's storage: a module global, a plain local slot, or a boxed
1127
1356
  * local (the slot holds the capture BOX; access goes through it). */
1128
1357
  matchBytesLoopVersion(s: IrStmt & {
1129
- kind: "for";
1130
- }, counted: IntegerCountedForLoop | null): ReturnType<typeof matchBytesLoopVersion>;
1358
+ kind: "for" | "while";
1359
+ }, counted: IntegerCountedForLoop | null, paired?: IntegerPairedForLoop | null): ReturnType<typeof matchBytesLoopVersion>;
1131
1360
  /** The alias tag of a whole-slot load of a binding (module globals only). */
1132
1361
  slotAlias(id: string): string;
1133
1362
  binding(id: string): {
@@ -1139,6 +1368,13 @@ export declare class LlEmitter {
1139
1368
  emitDebugLocal(local: IrLocal, slot: string, arg?: number, captured?: boolean): void;
1140
1369
  /** Loads a boxed binding's box pointer out of its slot. */
1141
1370
  loadBox(slot: string): string;
1371
+ /** The function a call through `callee` is known to reach (a literal
1372
+ * closure, or a binding the constant-callback census resolves) and the
1373
+ * entry it calls directly. Async and generator functions stay indirect. */
1374
+ knownCallbackTarget(callee: IrExpr): {
1375
+ known: IrFunction;
1376
+ direct: string;
1377
+ } | undefined;
1142
1378
  /** The payload slot of a capture box (ScrBox.slot, field 5). */
1143
1379
  boxSlot(box: string): string;
1144
1380
  boxGet(box: string, t: IrType): string;
@@ -1218,6 +1454,26 @@ export declare class LlEmitter {
1218
1454
  * parameter, at the top of the body. */
1219
1455
  doubleCopies(fn: IrFunction): string[];
1220
1456
  emitFunction(fn: IrFunction): string;
1457
+ /** What this range emitter (chunkEmitter) hands the merging emitter, as
1458
+ * plain data a worker process can write: its journal and the sets and
1459
+ * flags its functions set. */
1460
+ chunkResult(): ChunkResult;
1461
+ /** Merges a range emitter's result (chunkResult) into this emitter, in
1462
+ * the range's order, and answers the rename of the range's text to this
1463
+ * emitter's numbered helpers. Ranges merge in function order. */
1464
+ mergeChunk(chunk: ChunkResult): (text: string) => string;
1465
+ /** Adds a content-named constant a chunk interned. Its symbol is this
1466
+ * emitter's own: a digest collision retries in first-use order, which a
1467
+ * chunk alone does not know. */
1468
+ private addContentEntry;
1469
+ /** Applies a chunk's table entry (EmitJournal.entry) at its place in the
1470
+ * chunk's order: a key this emitter lacks is added, numbered after its
1471
+ * own entries where the table numbers them, and the chunk's name for it
1472
+ * is renamed to this emitter's. */
1473
+ applyJournalEntry(table: string, key: string, value: unknown, names: Map<string, string>, tags: Map<number, number>): void;
1474
+ /** An emitter for a range of this module's functions: the same facts,
1475
+ * empty module-level tables, and a journal of what the range adds. */
1476
+ chunkEmitter(): LlEmitter;
1221
1477
  /** The double-ABI entry of a function with an i32 entry: every caller
1222
1478
  * that is not a direct call (closures, dispatch, adapters, the runtime)
1223
1479
  * enters here. A pending exception passes through to its caller. */
@@ -1454,9 +1710,15 @@ export declare class LlEmitter {
1454
1710
  private emitPublish;
1455
1711
  /** Branches on "`obj` is published" (rc == SIZE_MAX, or a count of
1456
1712
  * UINT32_MAX in the low half for `count` i32: classes.ts
1457
- * LlClassMeta.idInRc); leaves the builder in the cold block and answers
1458
- * the continuation label. */
1713
+ * LlClassMeta.idInRc, or the top bit of a compact header word for
1714
+ * "compact": classes.ts COMPACT_PUBLISHED); leaves the builder in the cold
1715
+ * block and answers the continuation label. */
1459
1716
  private emitPublishedTest;
1717
+ /** Branches on "the array `arr` is frozen" (SCR_ARR_FROZEN in its storage
1718
+ * flags, scr_array.h), or published too when `published`; like
1719
+ * emitPublishedTest, leaves the builder in the cold block and answers the
1720
+ * continuation label. */
1721
+ private emitFrozenArrayTest;
1460
1722
  private publishedNamesSym;
1461
1723
  /** The class-name table the hierarchy field guards index by preorder. */
1462
1724
  publishedClassNamesDefs(): string[];
@@ -1471,7 +1733,7 @@ export declare class LlEmitter {
1471
1733
  emitPublishedFieldGuard(obj: string, className: string | null, field: string): void;
1472
1734
  /** The frozen-array guard (scr_throw_published_array's ops): `index` and
1473
1735
  * `count` are doubles (the written index, the argument count). */
1474
- emitPublishedArrayGuard(arr: string, arrType: IrType, op: number, index?: string, count?: string): void;
1736
+ emitPublishedArrayGuard(arr: string, arrType: IrType, op: number, index?: string, count?: string, third?: string | null): void;
1475
1737
  /** The published Map/Set guard: "Cannot modify a published Map/Set". */
1476
1738
  emitPublishedCollectionGuard(m: string, t: IrType): void;
1477
1739
  emitSerializationExpr(e: ExprOf<"jsonStringify" | "dynCheck">): LlValue;
@@ -1547,6 +1809,9 @@ export declare class LlEmitter {
1547
1809
  jsIcSite(): string;
1548
1810
  /** A fresh read-site cache for one constant-key dyn read. */
1549
1811
  dynReadIcSite(): string;
1812
+ /** A fresh speculative loop site: the global that counts its bailing
1813
+ * entries in a row. */
1814
+ speculativeLoopSite(): string;
1550
1815
  dynKind(d: string): string;
1551
1816
  raceAdapterFor(from: IrType, to: IrType): string;
1552
1817
  genResultThunkFor(genT: IrType & {
@@ -1586,7 +1851,7 @@ export declare class LlEmitter {
1586
1851
  streamDataAdapter(cbT: IrType & {
1587
1852
  kind: "func";
1588
1853
  }): string;
1589
- streamDoneFnFor(kind: "w" | "f" | "d" | "t" | "l", doneT: IrType & {
1854
+ streamDoneFnFor(kind: "w" | "f" | "d" | "t" | "l" | "c", doneT: IrType & {
1590
1855
  kind: "func";
1591
1856
  }): string;
1592
1857
  fsRenameThunkFor(cbT: IrType & {
@@ -1601,10 +1866,10 @@ export declare class LlEmitter {
1601
1866
  zlibBytesThunkFor(cbT: IrType & {
1602
1867
  kind: "func";
1603
1868
  }): string;
1604
- streamCbThunkFor(kind: "r" | "w" | "f" | "d" | "t" | "l" | "e", cbT: IrType): string;
1869
+ streamCbThunkFor(kind: "r" | "w" | "f" | "d" | "t" | "l" | "e" | "c" | "v", cbT: IrType): string;
1605
1870
  resolveThunkFor(inner: IrType): string;
1606
1871
  tagInSet(uName: string, unionId: string, tags: number[]): string;
1607
- arrPush(arr: string, acc: "f64" | "bool" | "ref", value: string): string;
1872
+ arrPush(arr: string, acc: ArrayAccess, value: string, element: IrType | null): string;
1608
1873
  emitArrayCopyLoop(dst: string, src: string, acc: "f64" | "bool" | "ref"): void;
1609
1874
  emitStrIntrinsic(e: IrExpr & {
1610
1875
  kind: "strIntrinsic";
@@ -1630,7 +1895,7 @@ export declare class LlEmitter {
1630
1895
  emitBytesIndex(receiver: string, index: LlValue, expr?: IrExpr, inBounds?: boolean): string;
1631
1896
  emitBytesData(receiver: string): string;
1632
1897
  emitBytesLength(elem: IrBytesElem, receiver: string, bytes: boolean): LlValue;
1633
- emitBytesGet(elem: IrBytesElem, receiver: string, index: LlValue, expr?: IrExpr, inBounds?: boolean, invalidNaN?: boolean): LlValue;
1898
+ emitBytesGet(elem: IrBytesElem, receiver: string, index: LlValue, expr?: IrExpr, inBounds?: boolean, invalidNaN?: boolean, owned?: boolean): LlValue;
1634
1899
  emitToUint32(value: string, expr?: IrExpr, uint32?: string): string;
1635
1900
  /** Stores a number into its int32-stored local, when it is one. The
1636
1901
  * value is proven to be in the local's range, so its low 32 bits are the
@@ -1641,7 +1906,7 @@ export declare class LlEmitter {
1641
1906
  * as its incoming double, which is the same number. */
1642
1907
  int32LocalValue(localId: string, bits: string, type: IrType): LlValue;
1643
1908
  storeIntegerView(localId: string, value: LlValue, expr?: IrExpr): void;
1644
- emitBytesSet(elem: IrBytesElem, receiver: string, index: LlValue, value: LlValue, indexExpr?: IrExpr, expr?: IrExpr, inBounds?: boolean): void;
1909
+ emitBytesSet(elem: IrBytesElem, receiver: string, index: LlValue, value: LlValue, indexExpr?: IrExpr, expr?: IrExpr, inBounds?: boolean, owned?: boolean): void;
1645
1910
  emitBytesIntrinsic(e: IrExpr & {
1646
1911
  kind: "bytesIntrinsic";
1647
1912
  }): LlValue;