@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
package/dist/index.js CHANGED
@@ -4,27 +4,33 @@ import { prepareExecutableModule } from "./executable/prepare.js";
4
4
  import { prepareLibrary, libraryLocalizeSymbols, libraryWasmExports, libraryWasmRefusal, } from "./library/prepare.js";
5
5
  import { analyzeWithFrontend } from "./frontend/analysis.js";
6
6
  import { checkerCacheIdentity } from "./frontend/ts7/checker-backend.js";
7
+ import { setLibDiagnosticsStore } from "./frontend/ts7/lib-diagnostics.js";
7
8
  import { analyzeWithVerdictCache, fileVerdictStore } from "./coverage/verdict-cache.js";
8
9
  import { coverageCompilerIdentity } from "./coverage/verdict-startup.js";
9
10
  import { commentOnlyReplay } from "./coverage/verdict-semantic.js";
10
11
  import { llvmRefusalDiag, targetRefusalDiag } from "./backend/target-diagnostics.js";
11
12
  import { compilePackedLibrary } from "./backend/library-pack.js";
12
13
  import { InternalCompilerError } from "./errors.js";
14
+ import { frontendProcessExecArgv } from "./frontend-process-args.js";
15
+ import { spawn } from "node:child_process";
13
16
  import { createHash } from "node:crypto";
14
- import { mkdir, readFile, rename, rm, writeFile } from "node:fs/promises";
17
+ import { existsSync } from "node:fs";
18
+ import { copyFile, mkdir, mkdtemp, readFile, rename, rm, writeFile } from "node:fs/promises";
19
+ import { tmpdir } from "node:os";
15
20
  import { basename, dirname, join, resolve } from "node:path";
21
+ import { fileURLToPath } from "node:url";
16
22
  import { clearCcCaches, configuredTargetPlatform, } from "./backend/native-toolchain.js";
17
23
  import { buildCacheRoot, prepareBuildCacheRoot, pruneBuildCache } from "./backend/build-cache.js";
18
24
  import { CcCompileError, compileExternalC, compileExternalCLibrary, executableNativeEnvironmentFingerprint, mobileLibraryTarget, mobileTargetRefusal, resolveCc, } from "./backend/external-c.js";
19
- import { emitLlvmModuleSource, LlvmUnsupportedError } from "./backend/llvm/emitter.js";
25
+ import { emitLlvmModuleSource, LlvmUnsupportedError, lowRegionTarget, } from "./backend/llvm/emitter.js";
20
26
  import { inlineRcOption } from "./backend/llvm/shapes.js";
21
- import { emitNativeArtifact, NativeCodegenError, writeLlvmSource, } from "./backend/native-codegen.js";
27
+ import { emitNativeArtifact, isLlvmFile, llvmInputBytes, NativeCodegenError, writeLlvmSource, } from "./backend/native-codegen.js";
22
28
  import { nativePartitionPaths, nativeProgramPartitions } from "./backend/native-codegen-core.js";
23
29
  import { privateSiblingPath } from "./backend/build-cache.js";
24
30
  import { nativeCodegenTarget, nativeCodegenTargetRefusal } from "./backend/targets.js";
25
31
  import { windowsSubsystemLinkerArgs } from "./backend/targets.js";
26
32
  import { createNativeLinkInfo } from "./backend/native-link-info.js";
27
- import { RuntimePackError, loadRuntimeBitcode } from "./backend/runtime-pack.js";
33
+ import { RuntimePackError } from "./backend/runtime-pack.js";
28
34
  import { createNativeLinkPlan } from "./backend/link-plan.js";
29
35
  import { nativeProfileKey, nativeProfileRefusal, } from "./backend/native-profile.js";
30
36
  import { executableLinkerEnvironmentFingerprint, linkNativeExecutable, platformLinkerSupportsPersistentCache, resolvePlatformLinker, } from "./backend/linker.js";
@@ -37,25 +43,28 @@ import { canonicalModuleGraph, clearSidecarCaches, compilerReleaseVersion, libra
37
43
  import {} from "./ir/ir.js";
38
44
  import { moduleRuntimeFeatures } from "./ir/runtime-features.js";
39
45
  import { serializeModuleParts } from "./ir/serialize.js";
40
- import { writeTextParts } from "./text-parts.js";
46
+ import { readTextParts, writeTextParts } from "./text-parts.js";
41
47
  import { validateModule } from "./ir/validate.js";
48
+ import { compilerOwnedFileRoots } from "./frontend/dts-paths.js";
42
49
  import { loadProgram } from "./frontend/program-node.js";
43
50
  import { runFrontend } from "./frontend/pipeline.js";
44
- import { provenanceSources } from "./frontend/provenance-registry.js";
51
+ import { provenanceSources, setProvenanceSources, } from "./frontend/provenance-registry.js";
45
52
  import { clearResolveCaches } from "./frontend/resolve.js";
46
53
  import { loadFfiProfile } from "./ffi/ffi-manifest.js";
47
54
  import { executableLinkFeatures } from "./backend/executable-features.js";
48
55
  import { youngNurseryRequested } from "./backend/young-nursery.js";
49
- import { FrontendInputTracker, trackedReadFile } from "./frontend/input-tracker.js";
56
+ import { FrontendInputTracker, trackedReadFile, } from "./frontend/input-tracker.js";
50
57
  import { libraryFrontendImplementationFingerprint, publishEarlyLibraryCache, readEarlyLibraryCache, readSemanticLibraryCache, } from "./library/library-cache.js";
51
- import { publishEarlyExecutableCache, publishEarlyExecutableRoute, readEarlyExecutableCache, } from "./executable/executable-cache.js";
58
+ import { hasEarlyExecutableNativeBuild, publishEarlyExecutableCache, publishEarlyExecutableRoute, readEarlyExecutableCache, recordEarlyExecutableNativeBuild, } from "./executable/executable-cache.js";
52
59
  import { compilerImplementationIdentity } from "./library/compiler-self-identity.js";
60
+ import { isPerformanceCode } from "./diagnostics/dynamic-tier.js";
53
61
  export const VERSION = "0.0.1";
54
62
  export { EXTERNAL_OBJECT_ABI_STABILITY, RUNTIME_ABI_MARKER, RUNTIME_ABI_VERSION, } from "./backend/runtime-abi.js";
55
63
  export { InternalCompilerError } from "./errors.js";
56
64
  export { compileExternalC as compileC, compileExternalC, runtimeSrcDir, } from "./backend/external-c.js";
57
65
  export { warmNativeCaches } from "./backend/warm-cache.js";
58
66
  export { mergeNativeProfiles as mergeProfiles } from "./backend/native-codegen.js";
67
+ export { collectGarbageUnderHeapPressure } from "./heap-collection.js";
59
68
  export { ANDROID_MIN_API, IPHONEOS_MIN_VERSION, isAndroidTarget, isIosTarget, isMobileTarget, mobileLibraryTarget, mobileTargetRefusal, } from "./backend/external-c.js";
60
69
  export { emitLlvmModule } from "./backend/llvm/emitter.js";
61
70
  export { renderDiagnostics, renderDiagnostics as renderAll, renderDiagnostic, } from "./diagnostics/render.js";
@@ -146,8 +155,22 @@ export async function compile(entryPath, opts) {
146
155
  clearCompileSessionCaches();
147
156
  const frontendInputs = new FrontendInputTracker();
148
157
  const warnings = { warnings: [], sourceTexts: null };
149
- const result = await frontendInputs.run(() => compileTracked(entryPath, opts, frontendInputs, warnings));
150
- return withCompileWarnings(result, warnings);
158
+ // compileTracked starts it for a build with no earlier build of the same invocation.
159
+ const frontendProcess = preparesInChildProcess(opts) ? new FrontendProcess() : undefined;
160
+ try {
161
+ const result = await frontendInputs.run(() => compileTracked(entryPath, opts, frontendInputs, warnings, frontendProcess));
162
+ return withCompileWarnings(result, warnings);
163
+ }
164
+ finally {
165
+ setLibDiagnosticsStore(null);
166
+ frontendProcess?.release();
167
+ }
168
+ }
169
+ /** The build's performance warnings (SC61xx), stored with its cache entry
170
+ * so a cache hit repeats them. */
171
+ function performanceWarnings(sink) {
172
+ const performance = (sink?.warnings ?? []).filter((d) => isPerformanceCode(d.code));
173
+ return performance.length === 0 ? {} : { performance };
151
174
  }
152
175
  function withCompileWarnings(result, sink) {
153
176
  if (!result.ok || sink.warnings.length === 0)
@@ -179,7 +202,10 @@ function executableNativeFeatures(mod, backend, optimization) {
179
202
  ...executableLinkFeatures(mod),
180
203
  };
181
204
  }
182
- async function compileExecutableNative(features, llvmPath, outPath, sanitize, ffi, windowsSubsystem, strip, programSplit = null, programObjectDependencies = [], onArtifactReady, programPartitions = [], profileGenerate = false) {
205
+ async function compileExecutableNative(features, llvmPath, outPath, sanitize, ffi, windowsSubsystem, strip, programSplit = null, programObjectDependencies = [], onArtifactReady, programPartitions = [], profileGenerate = false,
206
+ /** The kept LLVM text's shared name, when `llvmPath` is the build's private copy of it
207
+ * (BuildSources): the spelling clang sees and native cache keys name. */
208
+ llvmVisiblePath) {
183
209
  const programIsObject = /\.(?:o|obj)$/.test(llvmPath);
184
210
  const runtimePackTarget = programIsObject && !sanitize ? nativeCodegenTarget() : null;
185
211
  if (runtimePackTarget !== null) {
@@ -216,7 +242,9 @@ async function compileExecutableNative(features, llvmPath, outPath, sanitize, ff
216
242
  if (programIsObject)
217
243
  throw new InternalCompilerError("program objects must link against a precompiled runtime pack");
218
244
  await compileExternalC({
219
- cPath: llvmPath,
245
+ ...(llvmVisiblePath === undefined || llvmVisiblePath === llvmPath
246
+ ? { cPath: llvmPath }
247
+ : { cPath: llvmVisiblePath, cSourcePath: llvmPath }),
220
248
  outPath,
221
249
  cacheIdentity: "scriptc-generated-v1",
222
250
  ...optimizationField(features.optimization),
@@ -247,9 +275,10 @@ async function compileExecutableNative(features, llvmPath, outPath, sanitize, ff
247
275
  ...(features.dynTier ? { dynTier: true } : {}),
248
276
  ...(features.streamDyn ? { streamDyn: true } : {}),
249
277
  ...(features.handleProps ? { handleProps: true } : {}),
278
+ ...(features.declAdopt ? { declAdopt: true } : {}),
250
279
  ...(features.dynForAwait ? { dynForAwait: true } : {}),
251
280
  ...(features.eventsOnceSignal ? { eventsOnceSignal: true } : {}),
252
- ...(features.dynBufferNum ? { dynBufferNum: true } : {}),
281
+ ...(features.dynBuffer ? { dynBuffer: true } : {}),
253
282
  ...(features.builtinValues ? { builtinValues: true } : {}),
254
283
  events: features.events,
255
284
  emitter: features.emitter,
@@ -268,6 +297,7 @@ async function compileExecutableNative(features, llvmPath, outPath, sanitize, ff
268
297
  dgram: features.dgram,
269
298
  dnsPromises: features.dnsPromises,
270
299
  dgramDyn: features.dgramDyn,
300
+ textCodecDyn: features.textCodecDyn,
271
301
  watch: features.watch,
272
302
  foreignFfi: features.foreignFfi,
273
303
  ...(features.workers ? { workers: true } : {}),
@@ -277,6 +307,9 @@ async function compileExecutableNative(features, llvmPath, outPath, sanitize, ff
277
307
  tlsCa: features.tlsCa,
278
308
  cipher: features.cipher,
279
309
  ecdh: features.ecdh,
310
+ dh: features.dh,
311
+ pki: features.pki,
312
+ ed25519: features.ed25519,
280
313
  webcrypto: features.webcrypto,
281
314
  perfLoop: features.perfLoop,
282
315
  ...(onArtifactReady === undefined ? {} : { onArtifactReady }),
@@ -289,7 +322,7 @@ async function compileExecutableNative(features, llvmPath, outPath, sanitize, ff
289
322
  }),
290
323
  });
291
324
  }
292
- async function emitNativeProgramObject(entryPath, opts, llvm, features, profile) {
325
+ async function emitNativeProgramObject(entryPath, opts, llvm, profile) {
293
326
  const stem = basename(entryPath).replace(/\.(ts|mts|cts|js|mjs|cjs)$/, "");
294
327
  const artifactPath = join(opts.outDir, `${stem}.helper.o`);
295
328
  // compileExecutableNative recognizes object inputs by suffix. The random
@@ -298,25 +331,8 @@ async function emitNativeProgramObject(entryPath, opts, llvm, features, profile)
298
331
  const linkPath = `${privateSiblingPath(artifactPath, "native-program-object")}.o`;
299
332
  // The validated program-object artifact is a single object by contract.
300
333
  const target = nativeCodegenTarget();
301
- const llvmBytes = (typeof llvm === "string" ? [llvm] : llvm).reduce((bytes, part) => bytes + Buffer.byteLength(part), 0);
334
+ const llvmBytes = llvmInputBytes(llvm);
302
335
  const partitions = opts.nativeProgramObject === true || target === null ? 1 : nativeProgramPartitions(llvmBytes);
303
- // Optimized programs import small runtime functions from the bitcode of
304
- // the exact runtime units they link, so LLVM can inline across the
305
- // boundary. Release units ship only the bodies that need none of their
306
- // unit-local state, which keeps the import cheap; speed units promote
307
- // that state and offer more. Every partition reads the bitcode again, so
308
- // release imports only into programs small enough for one partition: in
309
- // larger ones the build-time and size cost outgrows the gain.
310
- const runtimeBitcode = opts.sanitize !== true &&
311
- target !== null &&
312
- (opts.optimization === "speed" ||
313
- (opts.optimization !== "dev" && nativeProgramPartitions(llvmBytes) === 1))
314
- ? await loadRuntimeBitcode({
315
- target,
316
- features,
317
- optimization: opts.optimization === "speed" ? "speed" : "release",
318
- })
319
- : null;
320
336
  try {
321
337
  const artifact = await emitNativeArtifact({
322
338
  outputPath: linkPath,
@@ -326,16 +342,13 @@ async function emitNativeProgramObject(entryPath, opts, llvm, features, profile)
326
342
  optimization: opts.optimization === "dev" ? "0" : "2",
327
343
  ...(opts.sanitize === undefined ? {} : { sanitize: opts.sanitize }),
328
344
  partitions,
329
- ...(runtimeBitcode === null
330
- ? {}
331
- : { importBitcode: { paths: runtimeBitcode.paths, digests: runtimeBitcode.digests } }),
332
345
  ...(profile === undefined ? {} : { profile }),
333
346
  });
334
347
  return {
335
348
  linkPath,
336
349
  partitionPaths: artifact.outputPaths.slice(1),
337
350
  artifactPath,
338
- dependencies: [...artifact.dependencies, ...(runtimeBitcode?.dependencies ?? [])],
351
+ dependencies: artifact.dependencies,
339
352
  };
340
353
  }
341
354
  catch (error) {
@@ -391,7 +404,7 @@ async function prepareExecutableInput(entryPath, opts, ffi, buildPlatform, timin
391
404
  const debugOptions = opts.optimization === "dev" && !opts.strip ? { debugSources: sourceTexts } : {};
392
405
  if (outputKind === "ir") {
393
406
  await mkdir(dirname(opts.outPath), { recursive: true });
394
- await writeTextParts(opts.outPath, serializeModuleParts(mod));
407
+ await writeTextParts(opts.outPath, serializeModuleParts(mod, compilerOwnedFileRoots()));
395
408
  return { ok: true, artifact: { kind: "ir", path: opts.outPath } };
396
409
  }
397
410
  if (outputKind === "llvm" || outputKind === "asm" || outputKind === "obj") {
@@ -404,6 +417,7 @@ async function prepareExecutableInput(entryPath, opts, ffi, buildPlatform, timin
404
417
  wasi: buildPlatform === "wasi",
405
418
  runtimeAbiMarker: outputKind === "obj",
406
419
  objectAudit: opts.sanitize === true,
420
+ lowRegion: lowRegionTarget(buildPlatform, opts.sanitize === true),
407
421
  ...(opts.sanitize === true ? { wasmBoundsChecks: true } : {}),
408
422
  ...inlineRcOption(opts.optimization, opts.sanitize === true),
409
423
  });
@@ -462,6 +476,8 @@ async function prepareExecutableInput(entryPath, opts, ffi, buildPlatform, timin
462
476
  }
463
477
  await mkdir(opts.outDir, { recursive: true });
464
478
  const llvmPath = defaultSourcePaths.llvm;
479
+ // The extension keeps clang reading the copy as LLVM IR rather than as a linker input.
480
+ const llvmSourcePath = `${privateSiblingPath(llvmPath, "llvm")}.ll`;
465
481
  const backend = "llvm";
466
482
  const useRuntimePack = opts.nativeProgramObject === true || usesPrecompiledRuntimePack(opts, backend);
467
483
  let llvmSource;
@@ -473,6 +489,7 @@ async function prepareExecutableInput(entryPath, opts, ffi, buildPlatform, timin
473
489
  wasi: buildPlatform === "wasi",
474
490
  runtimeAbiMarker: useRuntimePack,
475
491
  objectAudit: opts.sanitize === true,
492
+ lowRegion: lowRegionTarget(buildPlatform, opts.sanitize === true),
476
493
  ...(opts.sanitize === true ? { wasmBoundsChecks: true } : {}),
477
494
  ...inlineRcOption(opts.optimization, opts.sanitize === true),
478
495
  ...(opts.detachedExit === true ? { detachedExit: true } : {}),
@@ -484,12 +501,14 @@ async function prepareExecutableInput(entryPath, opts, ffi, buildPlatform, timin
484
501
  return { ok: false, diagnostics: [llvmRefusalDiag(err, entryPath)], sourceTexts };
485
502
  }
486
503
  timing("llvm-emit");
487
- await writeLlvmSource(llvmPath, llvmSource);
504
+ await writeLlvmSource(llvmSourcePath, llvmSource);
488
505
  timing("llvm-write");
489
506
  let irPath;
507
+ let irSourcePath;
490
508
  if (opts.emitIr) {
491
509
  irPath = defaultSourcePaths.ir;
492
- await writeTextParts(irPath, serializeModuleParts(mod));
510
+ irSourcePath = privateSiblingPath(irPath, "ir");
511
+ await writeTextParts(irSourcePath, serializeModuleParts(mod, compilerOwnedFileRoots()));
493
512
  }
494
513
  const nativeFeatures = executableNativeFeatures(mod, backend, opts.optimization ?? "release");
495
514
  timing("link-features");
@@ -501,10 +520,267 @@ async function prepareExecutableInput(entryPath, opts, ffi, buildPlatform, timin
501
520
  ? splitLlvmProgram(llvmSource)
502
521
  : null;
503
522
  timing("llvm-split");
504
- return { llvmSource, llvmPath, irPath, nativeFeatures, programSplit, sourceTexts };
523
+ return {
524
+ llvmSource,
525
+ llvmPath,
526
+ llvmSourcePath,
527
+ irPath,
528
+ irSourcePath,
529
+ nativeFeatures,
530
+ programSplit,
531
+ sourceTexts,
532
+ };
533
+ }
534
+ /** Moves a build's private copies to the shared names, or drops them when that fails. */
535
+ async function installBuildSources(sources) {
536
+ const install = async (source, destination, current) => {
537
+ if (source === undefined || destination === undefined || source === destination)
538
+ return;
539
+ if (current === true)
540
+ await rm(source, { force: true });
541
+ else
542
+ await rename(source, destination).catch(() => rm(source, { force: true }));
543
+ };
544
+ await Promise.all([
545
+ install(sources.llvmSourcePath, sources.llvmPath, sources.llvmPathCurrent),
546
+ install(sources.irSourcePath, sources.irPath, sources.irPathCurrent),
547
+ ]);
548
+ }
549
+ /**
550
+ * A build that compiles the LLVM text with the C driver (no precompiled runtime pack) records the
551
+ * output directory in its native cache proofs, so that directory has to be in its final state before
552
+ * the native build starts. The build therefore installs the shared names first and compiles and
553
+ * caches copies in a private directory outside the output directory. Returns that directory and the
554
+ * copies.
555
+ */
556
+ async function stageDriverBuildSources(sources) {
557
+ const dir = await mkdtemp(join(tmpdir(), "scriptc-program-"));
558
+ const llvmSourcePath = join(dir, basename(sources.llvmPath));
559
+ const irSourcePath = sources.irPath === undefined || sources.irSourcePath === undefined
560
+ ? undefined
561
+ : join(dir, basename(sources.irPath));
562
+ try {
563
+ await Promise.all([
564
+ copyFile(sources.llvmSourcePath, llvmSourcePath),
565
+ irSourcePath === undefined || sources.irSourcePath === undefined
566
+ ? undefined
567
+ : copyFile(sources.irSourcePath, irSourcePath),
568
+ ]);
569
+ }
570
+ catch (err) {
571
+ await rm(dir, { recursive: true, force: true });
572
+ throw err;
573
+ }
574
+ await installBuildSources(sources);
575
+ return {
576
+ dir,
577
+ sources: { llvmPath: sources.llvmPath, llvmSourcePath, irPath: sources.irPath, irSourcePath },
578
+ };
579
+ }
580
+ /**
581
+ * The child process that prepares an executable build's input: frontend, lowering and LLVM emission
582
+ * (`runFrontendProcess`). Node's heap keeps the pages a build's frontend used for the life of the
583
+ * process, so running them in a process of their own leaves the native helper the memory they took.
584
+ */
585
+ const frontendProcessEntry = fileURLToPath(new URL("./frontend-process.js", import.meta.url));
586
+ /**
587
+ * Whether `prepareExecutableInputInChild` may prepare this build: optimized executables, when the
588
+ * compiler runs from its built files. Development builds split the LLVM text in this process, and
589
+ * SCRIPTC_FRONTEND_PROCESS=0 keeps the frontend in-process.
590
+ *
591
+ * compileTracked starts the process only when no earlier build of the same invocation emitted its
592
+ * native program object (`hasEarlyExecutableNativeBuild`). A rebuild finds most native partitions
593
+ * in the helper's cache, so its memory peaks in the frontend, and the parent process would add to
594
+ * that peak.
595
+ */
596
+ function preparesInChildProcess(opts) {
597
+ return (process.env["SCRIPTC_FRONTEND_PROCESS"] !== "0" &&
598
+ (opts.outputKind ?? "exe") === "exe" &&
599
+ (opts.optimization ?? "release") !== "dev" &&
600
+ existsSync(frontendProcessEntry));
601
+ }
602
+ /**
603
+ * The frontend process (frontend-process.ts) of one compile. `start` launches it; it then waits on
604
+ * its stdin for the paths of a request and its result (`run`), and exits once its stdin closes
605
+ * without them (`release`).
606
+ */
607
+ class FrontendProcess {
608
+ child;
609
+ exited;
610
+ sent = false;
611
+ /** Whether `start` launched the process. */
612
+ get started() {
613
+ return this.child !== undefined;
614
+ }
615
+ start() {
616
+ if (this.child !== undefined)
617
+ return;
618
+ const execArgv = frontendProcessExecArgv(process.execArgv);
619
+ const child = spawn(process.execPath, [...execArgv, frontendProcessEntry], {
620
+ stdio: ["pipe", "inherit", "inherit"],
621
+ });
622
+ this.exited = new Promise((resolveExit) => {
623
+ child.on("error", () => resolveExit(null));
624
+ child.on("exit", (code) => resolveExit(code));
625
+ });
626
+ // A failed start surfaces as a failed run; the build then prepares its input in-process.
627
+ child.stdin.on("error", () => undefined);
628
+ this.child = child;
629
+ }
630
+ /** Sends the request at `requestPath`; resolves with the process's exit code. */
631
+ run(requestPath, resultPath) {
632
+ if (this.child === undefined || this.exited === undefined || this.sent)
633
+ return Promise.resolve(null);
634
+ this.sent = true;
635
+ this.child.stdin.end(`${requestPath}\n${resultPath}\n`);
636
+ return this.exited;
637
+ }
638
+ /** Lets the process exit if no request was sent. */
639
+ release() {
640
+ if (this.child === undefined || this.sent)
641
+ return;
642
+ this.sent = true;
643
+ this.child.stdin.end();
644
+ // The build is done with it: this process need not wait for it to exit.
645
+ this.child.unref();
646
+ this.child.stdin.unref?.();
647
+ }
648
+ }
649
+ /**
650
+ * `prepareExecutableInput` in the frontend process, with the LLVM text passed on as its file. The
651
+ * process's frontend inputs join `frontendInputs` and its warnings `warningSink`. If it fails, the
652
+ * input is prepared here, so the build reports the same errors.
653
+ */
654
+ async function prepareExecutableInputInChild(frontendProcess, entryPath, opts, ffi, buildPlatform, timing, timingClock, frontendInputs, warningSink) {
655
+ await mkdir(opts.outDir, { recursive: true });
656
+ const requestPath = privateSiblingPath(join(opts.outDir, "frontend-request.json"), "frontend");
657
+ const resultPath = privateSiblingPath(join(opts.outDir, "frontend-result.json"), "frontend");
658
+ let result = { kind: "failed" };
659
+ try {
660
+ const request = {
661
+ entryPath,
662
+ opts,
663
+ buildPlatform,
664
+ timing: timingClock,
665
+ provenance: provenanceSources(),
666
+ };
667
+ await writeFile(requestPath, JSON.stringify(request), { mode: 0o600 });
668
+ const exitCode = await frontendProcess.run(requestPath, resultPath);
669
+ if (exitCode === 0)
670
+ result = JSON.parse(await readFile(resultPath, "utf8"));
671
+ }
672
+ catch {
673
+ result = { kind: "failed" };
674
+ }
675
+ finally {
676
+ await rm(requestPath, { force: true });
677
+ await rm(resultPath, { force: true });
678
+ }
679
+ if (result.kind === "failed")
680
+ return prepareExecutableInput(entryPath, opts, ffi, buildPlatform, timing, warningSink);
681
+ timing("frontend-process");
682
+ for (const probe of result.frontend.probes)
683
+ frontendInputs.record(probe);
684
+ if (!result.frontend.stable)
685
+ frontendInputs.markUnstable();
686
+ const sourceTexts = new Map(result.sourceTexts);
687
+ if (warningSink !== undefined && result.warnings.length > 0) {
688
+ warningSink.warnings = result.warnings;
689
+ warningSink.sourceTexts = sourceTexts;
690
+ }
691
+ if (result.kind === "diagnostics")
692
+ return { ok: false, diagnostics: result.diagnostics, sourceTexts };
693
+ return {
694
+ llvmSource: { file: result.nativeInputPath, bytes: result.llvmBytes },
695
+ llvmPath: result.llvmPath,
696
+ llvmSourcePath: result.nativeInputPath,
697
+ irPath: result.irPath,
698
+ irSourcePath: result.irSourcePath,
699
+ nativeFeatures: result.nativeFeatures,
700
+ programSplit: null,
701
+ sourceTexts,
702
+ };
703
+ }
704
+ /**
705
+ * The frontend process (frontend-process.ts): prepares the executable input of the request at
706
+ * `requestPath` as `compileTracked` would in-process, and writes what it prepared, without the LLVM
707
+ * text, to `resultPath`.
708
+ */
709
+ /** Has the build reuse the diagnostics of the declaration files scriptc
710
+ * supplies (lib-diagnostics.ts) through the build cache at `root`, when the
711
+ * build uses one (executables; source outputs create no cache) and the
712
+ * checker is tsc-ts. */
713
+ function configureLibDiagnostics(root) {
714
+ let checker;
715
+ try {
716
+ checker = root === null ? undefined : checkerCacheIdentity();
717
+ }
718
+ catch {
719
+ // A missing checker fails where the build starts it.
720
+ checker = undefined;
721
+ }
722
+ setLibDiagnosticsStore(root === null || checker === undefined
723
+ ? null
724
+ : fileVerdictStore(join(root, "lib-diagnostics-v1")), checker ?? "");
725
+ }
726
+ export async function runFrontendProcess(requestPath, resultPath) {
727
+ const request = JSON.parse(await readFile(requestPath, "utf8"));
728
+ clearCompileSessionCaches();
729
+ setProvenanceSources(request.provenance);
730
+ // The compile that started this process prepared the cache root.
731
+ configureLibDiagnostics((request.opts.outputKind ?? "exe") === "exe" && provenanceSources() === null
732
+ ? await prepareBuildCacheRoot(buildCacheRoot())
733
+ : null);
734
+ const frontendInputs = new FrontendInputTracker();
735
+ const warnings = { warnings: [], sourceTexts: null };
736
+ let result = { kind: "failed" };
737
+ try {
738
+ let ffi = null;
739
+ if (request.opts.ffiProfilePath !== undefined) {
740
+ const loaded = loadFfiProfile(resolve(request.opts.ffiProfilePath));
741
+ if (!loaded.ok)
742
+ throw new InternalCompilerError("the FFI profile could not be reloaded");
743
+ ffi = loaded.profile;
744
+ }
745
+ const prepared = await frontendInputs.run(() => prepareExecutableInput(request.entryPath, request.opts, ffi, request.buildPlatform, compilationTiming(request.timing), warnings));
746
+ const frontend = frontendInputs.snapshot();
747
+ if (!("ok" in prepared)) {
748
+ if (isLlvmFile(prepared.llvmSource))
749
+ throw new InternalCompilerError("in-process preparation returned LLVM text as a file");
750
+ result = {
751
+ kind: "prepared",
752
+ llvmPath: prepared.llvmPath,
753
+ nativeInputPath: prepared.llvmSourcePath,
754
+ llvmBytes: llvmInputBytes(prepared.llvmSource),
755
+ irPath: prepared.irPath,
756
+ irSourcePath: prepared.irSourcePath,
757
+ nativeFeatures: prepared.nativeFeatures,
758
+ sourceTexts: [...prepared.sourceTexts],
759
+ warnings: warnings.warnings,
760
+ frontend,
761
+ };
762
+ }
763
+ else if (!prepared.ok) {
764
+ result = {
765
+ kind: "diagnostics",
766
+ diagnostics: prepared.diagnostics,
767
+ sourceTexts: [...prepared.sourceTexts],
768
+ warnings: warnings.warnings,
769
+ frontend,
770
+ };
771
+ }
772
+ }
773
+ catch {
774
+ result = { kind: "failed" };
775
+ }
776
+ finally {
777
+ setLibDiagnosticsStore(null);
778
+ }
779
+ await writeFile(resultPath, JSON.stringify(result), { mode: 0o600 });
505
780
  }
506
- async function compileTracked(entryPath, opts, frontendInputs, warningSink) {
781
+ async function compileTracked(entryPath, opts, frontendInputs, warningSink, frontendProcess) {
507
782
  const timing = compilationTiming();
783
+ const timingStart = Date.now();
508
784
  entryPath = resolve(entryPath);
509
785
  const outputKind = opts.outputKind ?? "exe";
510
786
  if ((opts.backend !== undefined && opts.backend !== "llvm") ||
@@ -704,19 +980,11 @@ async function compileTracked(entryPath, opts, frontendInputs, warningSink) {
704
980
  const cacheRoot = outputKind === "exe" && provenanceSources() === null
705
981
  ? await prepareBuildCacheRoot(buildCacheRoot())
706
982
  : null;
983
+ configureLibDiagnostics(cacheRoot);
707
984
  let earlyCacheOptions = null;
708
985
  if (outputKind === "exe") {
709
986
  const helperObjectRoute = opts.nativeProgramObject === true || usesPrecompiledRuntimePack(opts, "llvm");
710
- // Package content and native driver discovery are independent inputs to
711
- // the same cache key. Start both before waiting so edits do not pay their
712
- // filesystem and subprocess latency serially.
713
- const [implementation, nativeEnvironment] = await Promise.all([
714
- compilerImplementationIdentity(),
715
- helperObjectRoute
716
- ? executableLinkerEnvironmentFingerprint(process.env, nativeCodegenTarget()?.defaultLinker)
717
- : executableNativeEnvironmentFingerprint(),
718
- ]);
719
- earlyCacheOptions = {
987
+ const routeOptions = {
720
988
  entryPath,
721
989
  outDir: opts.outDir,
722
990
  outPath: opts.outPath,
@@ -744,8 +1012,25 @@ async function compileTracked(entryPath, opts, frontendInputs, warningSink) {
744
1012
  ? resolvePlatformLinker(process.env, nativeCodegenTarget()?.defaultLinker)
745
1013
  : (process.env["SCRIPTC_CC"] ?? "clang"),
746
1014
  ],
747
- nativeEnvironment,
748
1015
  nodeVersion: process.version,
1016
+ };
1017
+ // The frontend process prepares the first build of an invocation (preparesInChildProcess).
1018
+ // Started here, it loads the compiler while this process computes the rest of the cache key.
1019
+ if (frontendProcess !== undefined &&
1020
+ !(await hasEarlyExecutableNativeBuild(cacheRoot, routeOptions)))
1021
+ frontendProcess.start();
1022
+ // Package content and native driver discovery are independent inputs to
1023
+ // the same cache key. Start both before waiting so edits do not pay their
1024
+ // filesystem and subprocess latency serially.
1025
+ const [implementation, nativeEnvironment] = await Promise.all([
1026
+ compilerImplementationIdentity(),
1027
+ helperObjectRoute
1028
+ ? executableLinkerEnvironmentFingerprint(process.env, nativeCodegenTarget()?.defaultLinker)
1029
+ : executableNativeEnvironmentFingerprint(),
1030
+ ]);
1031
+ earlyCacheOptions = {
1032
+ ...routeOptions,
1033
+ nativeEnvironment,
749
1034
  implementation: implementation.digest,
750
1035
  implementationDependencies: implementation.dependencies,
751
1036
  };
@@ -758,6 +1043,12 @@ async function compileTracked(entryPath, opts, frontendInputs, warningSink) {
758
1043
  if (earlyCacheOptions === null) {
759
1044
  throw new InternalCompilerError("executable cache hit without executable cache options");
760
1045
  }
1046
+ // A cached build repeats its performance warning (SC6101): the code it
1047
+ // names is just as untyped as when it was built.
1048
+ if (warningSink !== undefined && earlyHit.performance !== undefined) {
1049
+ warningSink.warnings = earlyHit.performance;
1050
+ warningSink.sourceTexts = new Map();
1051
+ }
761
1052
  const executableCacheOptions = earlyCacheOptions;
762
1053
  // Route/proof metadata is independently evictable. A full-compiler
763
1054
  // fallback that still finds the validated payload repairs that lightweight
@@ -780,39 +1071,64 @@ async function compileTracked(entryPath, opts, frontendInputs, warningSink) {
780
1071
  ...(earlyHit.irPath === undefined ? {} : { irPath: earlyHit.irPath }),
781
1072
  };
782
1073
  }
783
- let nativeInputPath = earlyHit.llvmPath;
1074
+ // The build's private copies of the cached LLVM text and IR (BuildSources).
1075
+ const hitSources = {
1076
+ llvmPath: earlyHit.llvmPath,
1077
+ llvmSourcePath: earlyHit.llvmSourcePath ?? earlyHit.llvmPath,
1078
+ irPath: earlyHit.irPath,
1079
+ irSourcePath: earlyHit.irSourcePath,
1080
+ llvmPathCurrent: earlyHit.llvmPathCurrent,
1081
+ irPathCurrent: earlyHit.irPathCurrent,
1082
+ };
1083
+ // What the native build compiles and the cache publishes: hitSources, or their staged copies.
1084
+ let nativeSources = hitSources;
1085
+ let stagedDir = null;
1086
+ let nativeInputPath = hitSources.llvmSourcePath;
784
1087
  let nativeProgramObject = null;
785
1088
  const useRuntimePack = opts.nativeProgramObject === true ||
786
1089
  usesPrecompiledRuntimePack(opts, earlyHit.native.backend);
787
- if (useRuntimePack) {
788
- if (earlyHit.native.backend !== "llvm") {
789
- throw new InternalCompilerError("native program-object cache hit restored a non-LLVM translation unit");
790
- }
791
- try {
792
- nativeProgramObject = await emitNativeProgramObject(entryPath, opts, await readFile(earlyHit.llvmPath, "utf8"), earlyHit.native, profile);
793
- nativeInputPath = nativeProgramObject.linkPath;
1090
+ try {
1091
+ if (useRuntimePack) {
1092
+ if (earlyHit.native.backend !== "llvm") {
1093
+ throw new InternalCompilerError("native program-object cache hit restored a non-LLVM translation unit");
1094
+ }
1095
+ try {
1096
+ nativeProgramObject = await emitNativeProgramObject(entryPath, opts,
1097
+ // A large program's LLVM exceeds the engine's string limit as one
1098
+ // string; the emitter takes it in parts, as on a cold build.
1099
+ await readTextParts(hitSources.llvmSourcePath), profile);
1100
+ nativeInputPath = nativeProgramObject.linkPath;
1101
+ }
1102
+ catch (err) {
1103
+ if (!(err instanceof NativeCodegenError))
1104
+ throw err;
1105
+ return {
1106
+ ok: false,
1107
+ diagnostics: [nativeCodegenDiag(err.diagnosticCode, err.message, entryPath)],
1108
+ sourceTexts: new Map(),
1109
+ };
1110
+ }
794
1111
  }
795
- catch (err) {
796
- if (!(err instanceof NativeCodegenError))
797
- throw err;
798
- return {
799
- ok: false,
800
- diagnostics: [nativeCodegenDiag(err.diagnosticCode, err.message, entryPath)],
801
- sourceTexts: new Map(),
802
- };
1112
+ else {
1113
+ const staged = await stageDriverBuildSources(hitSources);
1114
+ stagedDir = staged.dir;
1115
+ nativeSources = staged.sources;
1116
+ nativeInputPath = nativeSources.llvmSourcePath;
803
1117
  }
804
- }
805
- try {
806
1118
  await compileExecutableNative(earlyHit.native, nativeInputPath, opts.outPath, opts.sanitize ?? false, ffi, opts.windowsSubsystem, opts.strip, null, nativeProgramObject?.dependencies, opts.nativeProgramObject === true
807
1119
  ? undefined
808
1120
  : async ({ dependencies }) => {
809
1121
  await publishEarlyExecutableCache(cacheRoot, executableCacheOptions, {
810
1122
  ...earlyHit,
1123
+ llvmPath: nativeSources.llvmSourcePath,
1124
+ ...(nativeSources.irSourcePath === undefined
1125
+ ? {}
1126
+ : { irPath: nativeSources.irSourcePath }),
811
1127
  executableRestored: true,
812
1128
  nativeDependencies: dependencies,
813
1129
  frontend: earlyHit.frontend,
814
1130
  });
815
- }, nativeProgramObject?.partitionPaths, profile?.generate !== undefined);
1131
+ }, nativeProgramObject?.partitionPaths, profile?.generate !== undefined, hitSources.llvmPath);
816
1132
  if (nativeProgramObject !== null && opts.nativeProgramObject === true) {
817
1133
  await rename(nativeProgramObject.linkPath, nativeProgramObject.artifactPath);
818
1134
  }
@@ -840,6 +1156,10 @@ async function compileTracked(entryPath, opts, frontendInputs, warningSink) {
840
1156
  if (nativeProgramObject !== null) {
841
1157
  await removeNativeProgramObject(nativeProgramObject.linkPath, nativeProgramObject.partitionPaths);
842
1158
  }
1159
+ if (stagedDir === null)
1160
+ await installBuildSources(hitSources);
1161
+ else
1162
+ await rm(stagedDir, { recursive: true, force: true });
843
1163
  }
844
1164
  await pruneBuildCache(cacheRoot);
845
1165
  return {
@@ -857,10 +1177,22 @@ async function compileTracked(entryPath, opts, frontendInputs, warningSink) {
857
1177
  };
858
1178
  }
859
1179
  timing("executable-cache-miss");
860
- const prepared = await prepareExecutableInput(entryPath, opts, ffi, buildPlatform, timing, warningSink);
1180
+ const prepared = frontendProcess?.started === true
1181
+ ? await prepareExecutableInputInChild(frontendProcess, entryPath, opts, ffi, buildPlatform, timing, { start: timingStart, previous: Date.now() }, frontendInputs, warningSink)
1182
+ : await prepareExecutableInput(entryPath, opts, ffi, buildPlatform, timing, warningSink);
861
1183
  if ("ok" in prepared)
862
1184
  return prepared;
863
- const { llvmSource, llvmPath, irPath, nativeFeatures, programSplit, sourceTexts } = prepared;
1185
+ const buildSources = {
1186
+ llvmPath: prepared.llvmPath,
1187
+ llvmSourcePath: prepared.llvmSourcePath,
1188
+ irPath: prepared.irPath,
1189
+ irSourcePath: prepared.irSourcePath,
1190
+ };
1191
+ const { llvmSource, llvmPath, irPath } = prepared;
1192
+ const { nativeFeatures, programSplit, sourceTexts } = prepared;
1193
+ // What the native build compiles and the cache publishes: buildSources, or their staged copies.
1194
+ let { llvmSourcePath, irSourcePath } = buildSources;
1195
+ let stagedDir = null;
864
1196
  const backend = "llvm";
865
1197
  await mkdir(dirname(opts.outPath), { recursive: true });
866
1198
  if (earlyCacheOptions === null) {
@@ -876,8 +1208,9 @@ async function compileTracked(entryPath, opts, frontendInputs, warningSink) {
876
1208
  throw new InternalCompilerError("native program-object validation requires the LLVM backend");
877
1209
  }
878
1210
  try {
879
- nativeProgramObject = await emitNativeProgramObject(entryPath, opts, llvmSource, nativeFeatures, profile);
1211
+ nativeProgramObject = await emitNativeProgramObject(entryPath, opts, llvmSource, profile);
880
1212
  timing("native-object");
1213
+ await recordEarlyExecutableNativeBuild(cacheRoot, executableCacheOptions).catch(() => undefined);
881
1214
  }
882
1215
  catch (err) {
883
1216
  if (!(err instanceof NativeCodegenError))
@@ -889,23 +1222,39 @@ async function compileTracked(entryPath, opts, frontendInputs, warningSink) {
889
1222
  };
890
1223
  }
891
1224
  }
892
- await compileExecutableNative(nativeFeatures, nativeProgramObject?.linkPath ?? llvmPath, opts.outPath, opts.sanitize ?? false, ffi, opts.windowsSubsystem, opts.strip, programSplit, nativeProgramObject?.dependencies, opts.nativeProgramObject === true
1225
+ else {
1226
+ const staged = await stageDriverBuildSources(buildSources);
1227
+ stagedDir = staged.dir;
1228
+ ({ llvmSourcePath, irSourcePath } = staged.sources);
1229
+ }
1230
+ await compileExecutableNative(nativeFeatures, nativeProgramObject?.linkPath ?? llvmSourcePath, opts.outPath, opts.sanitize ?? false, ffi, opts.windowsSubsystem, opts.strip, programSplit, nativeProgramObject?.dependencies, opts.nativeProgramObject === true
893
1231
  ? undefined
894
1232
  : async ({ dependencies }) => {
895
1233
  await publishEarlyExecutableCache(cacheRoot, executableCacheOptions, {
896
- llvmPath,
1234
+ llvmPath: llvmSourcePath,
897
1235
  native: nativeFeatures,
898
1236
  executableRestored: true,
899
1237
  nativeDependencies: dependencies,
900
1238
  frontend: frontendInputs.snapshot(),
901
- ...(irPath === undefined ? {} : { irPath }),
1239
+ ...(irSourcePath === undefined ? {} : { irPath: irSourcePath }),
1240
+ ...performanceWarnings(warningSink),
902
1241
  });
903
1242
  publishedExecutable = true;
904
- }, nativeProgramObject?.partitionPaths, profile?.generate !== undefined);
1243
+ }, nativeProgramObject?.partitionPaths, profile?.generate !== undefined, llvmPath);
905
1244
  timing("native-link");
906
1245
  if (nativeProgramObject !== null && opts.nativeProgramObject === true) {
907
1246
  await rename(nativeProgramObject.linkPath, nativeProgramObject.artifactPath);
908
1247
  }
1248
+ if (!publishedExecutable) {
1249
+ await publishEarlyExecutableCache(cacheRoot, executableCacheOptions, {
1250
+ llvmPath: llvmSourcePath,
1251
+ native: nativeFeatures,
1252
+ executableRestored: false,
1253
+ frontend: frontendInputs.snapshot(),
1254
+ ...(irSourcePath === undefined ? {} : { irPath: irSourcePath }),
1255
+ ...performanceWarnings(warningSink),
1256
+ }).catch(() => undefined);
1257
+ }
909
1258
  }
910
1259
  catch (err) {
911
1260
  if (err instanceof RuntimePackError) {
@@ -926,15 +1275,10 @@ async function compileTracked(entryPath, opts, frontendInputs, warningSink) {
926
1275
  if (nativeProgramObject !== null) {
927
1276
  await removeNativeProgramObject(nativeProgramObject.linkPath, nativeProgramObject.partitionPaths);
928
1277
  }
929
- }
930
- if (!publishedExecutable) {
931
- await publishEarlyExecutableCache(cacheRoot, executableCacheOptions, {
932
- llvmPath,
933
- native: nativeFeatures,
934
- executableRestored: false,
935
- frontend: frontendInputs.snapshot(),
936
- ...(irPath === undefined ? {} : { irPath }),
937
- }).catch(() => undefined);
1278
+ if (stagedDir === null)
1279
+ await installBuildSources(buildSources);
1280
+ else
1281
+ await rm(stagedDir, { recursive: true, force: true });
938
1282
  }
939
1283
  await pruneBuildCache(cacheRoot);
940
1284
  timing("complete");
@@ -974,6 +1318,7 @@ function libraryNativeFeatures(mod, backend) {
974
1318
  copying: features.copying,
975
1319
  textDecoderLegacy: features.legacyTextDecoder,
976
1320
  dynInvoke: features.dynInvoke,
1321
+ ...(features.dynBuffer ? { dynBuffer: true } : {}),
977
1322
  ...(features.dynTier ? { dynTier: true } : {}),
978
1323
  ...(mod.lib?.identity !== undefined ? { buildId: mod.lib.identity.buildId } : {}),
979
1324
  };
@@ -1048,6 +1393,7 @@ async function compileLibraryNative(profile, llvmPath, archivePath, sanitize, fe
1048
1393
  copying: features.copying,
1049
1394
  textDecoderLegacy: features.textDecoderLegacy,
1050
1395
  dynInvoke: features.dynInvoke,
1396
+ ...(features.dynBuffer === true ? { dynBuffer: true } : {}),
1051
1397
  ...(features.dynTier === true ? { dynTier: true } : {}),
1052
1398
  };
1053
1399
  if (packTarget !== null)
@@ -1089,7 +1435,7 @@ async function emitSemanticLibraryHit(hit, profile, opts, archivePath, cacheRoot
1089
1435
  let irPath;
1090
1436
  if (opts.emitIr) {
1091
1437
  irPath = join(opts.outDir, `${stem}.lib.ir.json`);
1092
- await writeTextParts(irPath, serializeModuleParts(mod));
1438
+ await writeTextParts(irPath, serializeModuleParts(mod, compilerOwnedFileRoots()));
1093
1439
  }
1094
1440
  await compileLibraryNative(profile, llvmPath, archivePath, opts.sanitize ?? false, hit.native);
1095
1441
  timing("native-archive");
@@ -1326,7 +1672,7 @@ async function compileLibraryTracked(opts, frontendInputs) {
1326
1672
  let irPath;
1327
1673
  if (opts.emitIr) {
1328
1674
  irPath = join(opts.outDir, `${stem}.lib.ir.json`);
1329
- await writeTextParts(irPath, serializeModuleParts(mod));
1675
+ await writeTextParts(irPath, serializeModuleParts(mod, compilerOwnedFileRoots()));
1330
1676
  }
1331
1677
  const nativeFeatures = libraryNativeFeatures(mod, profile.emission);
1332
1678
  await compileLibraryNative(profile, llvmPath, archivePath, opts.sanitize ?? false, nativeFeatures);