@scriptc/compiler 0.2.4 → 0.2.5

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 (1104) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +915 -215
  2. package/ambient/scriptc-overrides.d.ts +5 -1
  3. package/ambient/scriptc.d.ts +22 -2
  4. package/dist/backend/build-cache.d.ts +4 -0
  5. package/dist/backend/build-cache.js +16 -2
  6. package/dist/backend/build-cache.js.map +1 -1
  7. package/dist/backend/cycle-analysis.js +17 -5
  8. package/dist/backend/cycle-analysis.js.map +1 -1
  9. package/dist/backend/cycle-analysis.test.js +50 -11
  10. package/dist/backend/cycle-analysis.test.js.map +1 -1
  11. package/dist/backend/debug-symbols.js.map +1 -1
  12. package/dist/backend/executable-features.js +2 -1
  13. package/dist/backend/executable-features.js.map +1 -1
  14. package/dist/backend/external-c.d.ts +13 -6
  15. package/dist/backend/external-c.js +15 -3
  16. package/dist/backend/external-c.js.map +1 -1
  17. package/dist/backend/ffi-callbacks.js +6 -9
  18. package/dist/backend/ffi-callbacks.js.map +1 -1
  19. package/dist/backend/library-identity-markers.js.map +1 -1
  20. package/dist/backend/library-pack.d.ts +1 -1
  21. package/dist/backend/library-pack.js +81 -24
  22. package/dist/backend/library-pack.js.map +1 -1
  23. package/dist/backend/link-plan-core.js +9 -2
  24. package/dist/backend/link-plan-core.js.map +1 -1
  25. package/dist/backend/link-plan.d.ts +1 -1
  26. package/dist/backend/link-plan.js +4 -5
  27. package/dist/backend/link-plan.js.map +1 -1
  28. package/dist/backend/linker.d.ts +1 -1
  29. package/dist/backend/linker.js +42 -23
  30. package/dist/backend/linker.js.map +1 -1
  31. package/dist/backend/literals.js +5 -4
  32. package/dist/backend/literals.js.map +1 -1
  33. package/dist/backend/literals.test.js +30 -5
  34. package/dist/backend/literals.test.js.map +1 -1
  35. package/dist/backend/llvm/blocks.test.js +5 -2
  36. package/dist/backend/llvm/blocks.test.js.map +1 -1
  37. package/dist/backend/llvm/borrowed-inputs.js.map +1 -1
  38. package/dist/backend/llvm/borrowed-receivers.js +43 -19
  39. package/dist/backend/llvm/borrowed-receivers.js.map +1 -1
  40. package/dist/backend/llvm/byte-numbers.js +6 -1
  41. package/dist/backend/llvm/byte-numbers.js.map +1 -1
  42. package/dist/backend/llvm/bytes-bounds.js +73 -22
  43. package/dist/backend/llvm/bytes-bounds.js.map +1 -1
  44. package/dist/backend/llvm/call-lifetimes.d.ts +3 -0
  45. package/dist/backend/llvm/call-lifetimes.js +60 -17
  46. package/dist/backend/llvm/call-lifetimes.js.map +1 -1
  47. package/dist/backend/llvm/call-lifetimes.test.js +159 -28
  48. package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
  49. package/dist/backend/llvm/checked-value-lifetimes.d.ts +4 -0
  50. package/dist/backend/llvm/checked-value-lifetimes.js +14 -4
  51. package/dist/backend/llvm/checked-value-lifetimes.js.map +1 -1
  52. package/dist/backend/llvm/classes.js +16 -12
  53. package/dist/backend/llvm/classes.js.map +1 -1
  54. package/dist/backend/llvm/common.js +4 -1
  55. package/dist/backend/llvm/common.js.map +1 -1
  56. package/dist/backend/llvm/counted-loops.js +10 -3
  57. package/dist/backend/llvm/counted-loops.js.map +1 -1
  58. package/dist/backend/llvm/debug-info.js +33 -13
  59. package/dist/backend/llvm/debug-info.js.map +1 -1
  60. package/dist/backend/llvm/debug-info.test.js +28 -6
  61. package/dist/backend/llvm/debug-info.test.js.map +1 -1
  62. package/dist/backend/llvm/dyn.js +68 -22
  63. package/dist/backend/llvm/dyn.js.map +1 -1
  64. package/dist/backend/llvm/emitter.d.ts +9 -3
  65. package/dist/backend/llvm/emitter.js +238 -105
  66. package/dist/backend/llvm/emitter.js.map +1 -1
  67. package/dist/backend/llvm/emitter.test.js +233 -42
  68. package/dist/backend/llvm/emitter.test.js.map +1 -1
  69. package/dist/backend/llvm/expr-async.js +25 -6
  70. package/dist/backend/llvm/expr-async.js.map +1 -1
  71. package/dist/backend/llvm/expr-bytes.js +13 -4
  72. package/dist/backend/llvm/expr-bytes.js.map +1 -1
  73. package/dist/backend/llvm/expr-callbacks.js +10 -4
  74. package/dist/backend/llvm/expr-callbacks.js.map +1 -1
  75. package/dist/backend/llvm/expr-calls.js +20 -9
  76. package/dist/backend/llvm/expr-calls.js.map +1 -1
  77. package/dist/backend/llvm/expr-containers.d.ts +2 -0
  78. package/dist/backend/llvm/expr-containers.js +92 -33
  79. package/dist/backend/llvm/expr-containers.js.map +1 -1
  80. package/dist/backend/llvm/expr-control.js +1 -3
  81. package/dist/backend/llvm/expr-control.js.map +1 -1
  82. package/dist/backend/llvm/expr-dispatch.js +3 -1
  83. package/dist/backend/llvm/expr-dispatch.js.map +1 -1
  84. package/dist/backend/llvm/expr-dynamic.js +19 -4
  85. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  86. package/dist/backend/llvm/expr-island.js +26 -6
  87. package/dist/backend/llvm/expr-island.js.map +1 -1
  88. package/dist/backend/llvm/expr-primitives.js +88 -19
  89. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  90. package/dist/backend/llvm/expr-primitives.test.js +43 -1
  91. package/dist/backend/llvm/expr-primitives.test.js.map +1 -1
  92. package/dist/backend/llvm/expr-records.js +10 -9
  93. package/dist/backend/llvm/expr-records.js.map +1 -1
  94. package/dist/backend/llvm/expr-stream-bridges.js +44 -26
  95. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  96. package/dist/backend/llvm/expr-stream-bridges.test.js +51 -14
  97. package/dist/backend/llvm/expr-stream-bridges.test.js.map +1 -1
  98. package/dist/backend/llvm/expr-stream-callbacks.js +34 -14
  99. package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
  100. package/dist/backend/llvm/integer-values.js +15 -4
  101. package/dist/backend/llvm/integer-values.js.map +1 -1
  102. package/dist/backend/llvm/integer-views.js +23 -7
  103. package/dist/backend/llvm/integer-views.js.map +1 -1
  104. package/dist/backend/llvm/integer-views.test.js +42 -7
  105. package/dist/backend/llvm/integer-views.test.js.map +1 -1
  106. package/dist/backend/llvm/lib-abi.js +13 -4
  107. package/dist/backend/llvm/lib-abi.js.map +1 -1
  108. package/dist/backend/llvm/lib-connect.js +7 -1
  109. package/dist/backend/llvm/lib-connect.js.map +1 -1
  110. package/dist/backend/llvm/lib-datagram.js +35 -10
  111. package/dist/backend/llvm/lib-datagram.js.map +1 -1
  112. package/dist/backend/llvm/lib-dispatch.js +35 -16
  113. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  114. package/dist/backend/llvm/lib-filesystem.js +33 -18
  115. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  116. package/dist/backend/llvm/lib-http2.js +60 -15
  117. package/dist/backend/llvm/lib-http2.js.map +1 -1
  118. package/dist/backend/llvm/lib-lookup.js +12 -5
  119. package/dist/backend/llvm/lib-lookup.js.map +1 -1
  120. package/dist/backend/llvm/lib-network.js +97 -31
  121. package/dist/backend/llvm/lib-network.js.map +1 -1
  122. package/dist/backend/llvm/lib-process.js +57 -14
  123. package/dist/backend/llvm/lib-process.js.map +1 -1
  124. package/dist/backend/llvm/lib-shared.js +107 -31
  125. package/dist/backend/llvm/lib-shared.js.map +1 -1
  126. package/dist/backend/llvm/lib-stream.js +33 -14
  127. package/dist/backend/llvm/lib-stream.js.map +1 -1
  128. package/dist/backend/llvm/lib-test.js +21 -7
  129. package/dist/backend/llvm/lib-test.js.map +1 -1
  130. package/dist/backend/llvm/lib-tls.js +69 -20
  131. package/dist/backend/llvm/lib-tls.js.map +1 -1
  132. package/dist/backend/llvm/local-array-reads.d.ts +1 -0
  133. package/dist/backend/llvm/local-array-reads.js +96 -30
  134. package/dist/backend/llvm/local-array-reads.js.map +1 -1
  135. package/dist/backend/llvm/local-array-reads.test.js +368 -60
  136. package/dist/backend/llvm/local-array-reads.test.js.map +1 -1
  137. package/dist/backend/llvm/local-union-storage.d.ts +25 -0
  138. package/dist/backend/llvm/local-union-storage.js +109 -0
  139. package/dist/backend/llvm/local-union-storage.js.map +1 -0
  140. package/dist/backend/llvm/local-union-storage.test.d.ts +1 -0
  141. package/dist/backend/llvm/local-union-storage.test.js +210 -0
  142. package/dist/backend/llvm/local-union-storage.test.js.map +1 -0
  143. package/dist/backend/llvm/map-read-lifetimes.d.ts +6 -2
  144. package/dist/backend/llvm/map-read-lifetimes.js +44 -14
  145. package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
  146. package/dist/backend/llvm/map-read-lifetimes.test.js +89 -17
  147. package/dist/backend/llvm/map-read-lifetimes.test.js.map +1 -1
  148. package/dist/backend/llvm/reference-effects.d.ts +3 -2
  149. package/dist/backend/llvm/reference-effects.js +67 -36
  150. package/dist/backend/llvm/reference-effects.js.map +1 -1
  151. package/dist/backend/llvm/reference-effects.test.js +92 -9
  152. package/dist/backend/llvm/reference-effects.test.js.map +1 -1
  153. package/dist/backend/llvm/shapes.js +60 -17
  154. package/dist/backend/llvm/shapes.js.map +1 -1
  155. package/dist/backend/llvm/shapes.test.js +3 -1
  156. package/dist/backend/llvm/shapes.test.js.map +1 -1
  157. package/dist/backend/llvm/split.js +4 -4
  158. package/dist/backend/llvm/split.js.map +1 -1
  159. package/dist/backend/llvm/split.test.js +14 -6
  160. package/dist/backend/llvm/split.test.js.map +1 -1
  161. package/dist/backend/llvm/stack-unions.js +14 -5
  162. package/dist/backend/llvm/stack-unions.js.map +1 -1
  163. package/dist/backend/llvm/stack-unions.test.js +151 -32
  164. package/dist/backend/llvm/stack-unions.test.js.map +1 -1
  165. package/dist/backend/llvm/string-construction.js.map +1 -1
  166. package/dist/backend/llvm/string-construction.test.js +32 -7
  167. package/dist/backend/llvm/string-construction.test.js.map +1 -1
  168. package/dist/backend/llvm/string-lifetimes.js +14 -8
  169. package/dist/backend/llvm/string-lifetimes.js.map +1 -1
  170. package/dist/backend/llvm/string-lifetimes.test.js +112 -26
  171. package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
  172. package/dist/backend/llvm/switch-dispatch.d.ts +9 -0
  173. package/dist/backend/llvm/switch-dispatch.js +114 -0
  174. package/dist/backend/llvm/switch-dispatch.js.map +1 -0
  175. package/dist/backend/llvm/switch-dispatch.test.d.ts +1 -0
  176. package/dist/backend/llvm/switch-dispatch.test.js +83 -0
  177. package/dist/backend/llvm/switch-dispatch.test.js.map +1 -0
  178. package/dist/backend/llvm/unsupported.js.map +1 -1
  179. package/dist/backend/llvm/walkers.js +6 -3
  180. package/dist/backend/llvm/walkers.js.map +1 -1
  181. package/dist/backend/mangle.js +9 -3
  182. package/dist/backend/mangle.js.map +1 -1
  183. package/dist/backend/may-throw.js +18 -8
  184. package/dist/backend/may-throw.js.map +1 -1
  185. package/dist/backend/may-throw.test.js +118 -22
  186. package/dist/backend/may-throw.test.js.map +1 -1
  187. package/dist/backend/native/artifact-stamps.d.ts +39 -0
  188. package/dist/backend/native/artifact-stamps.js +371 -0
  189. package/dist/backend/native/artifact-stamps.js.map +1 -0
  190. package/dist/backend/native/cache-warm.d.ts +24 -0
  191. package/dist/backend/native/cache-warm.js +80 -0
  192. package/dist/backend/native/cache-warm.js.map +1 -0
  193. package/dist/backend/native/compiler-fingerprint.d.ts +19 -0
  194. package/dist/backend/native/compiler-fingerprint.js +357 -0
  195. package/dist/backend/native/compiler-fingerprint.js.map +1 -0
  196. package/dist/backend/native/contracts.d.ts +314 -0
  197. package/dist/backend/native/contracts.js +2 -0
  198. package/dist/backend/native/contracts.js.map +1 -0
  199. package/dist/backend/native/dependency-files.d.ts +5 -0
  200. package/dist/backend/native/dependency-files.js +83 -0
  201. package/dist/backend/native/dependency-files.js.map +1 -0
  202. package/dist/backend/native/driver.d.ts +50 -0
  203. package/dist/backend/native/driver.js +294 -0
  204. package/dist/backend/native/driver.js.map +1 -0
  205. package/dist/backend/native/executable.d.ts +18 -0
  206. package/dist/backend/native/executable.js +1267 -0
  207. package/dist/backend/native/executable.js.map +1 -0
  208. package/dist/backend/native/library.d.ts +2 -0
  209. package/dist/backend/native/library.js +614 -0
  210. package/dist/backend/native/library.js.map +1 -0
  211. package/dist/backend/native/linker-fingerprint.d.ts +8 -0
  212. package/dist/backend/native/linker-fingerprint.js +174 -0
  213. package/dist/backend/native/linker-fingerprint.js.map +1 -0
  214. package/dist/backend/native/object-merge.d.ts +2 -0
  215. package/dist/backend/native/object-merge.js +154 -0
  216. package/dist/backend/native/object-merge.js.map +1 -0
  217. package/dist/backend/native/process.d.ts +17 -0
  218. package/dist/backend/native/process.js +42 -0
  219. package/dist/backend/native/process.js.map +1 -0
  220. package/dist/backend/native/program-shards.d.ts +21 -0
  221. package/dist/backend/native/program-shards.js +99 -0
  222. package/dist/backend/native/program-shards.js.map +1 -0
  223. package/dist/backend/native/runtime-inputs.d.ts +12 -0
  224. package/dist/backend/native/runtime-inputs.js +163 -0
  225. package/dist/backend/native/runtime-inputs.js.map +1 -0
  226. package/dist/backend/native/runtime-inputs.test.d.ts +1 -0
  227. package/dist/backend/native/runtime-inputs.test.js +64 -0
  228. package/dist/backend/native/runtime-inputs.test.js.map +1 -0
  229. package/dist/backend/native/runtime-objects.d.ts +16 -0
  230. package/dist/backend/native/runtime-objects.js +122 -0
  231. package/dist/backend/native/runtime-objects.js.map +1 -0
  232. package/dist/backend/native/session.d.ts +12 -0
  233. package/dist/backend/native/session.js +31 -0
  234. package/dist/backend/native/session.js.map +1 -0
  235. package/dist/backend/native/tool-identity.d.ts +37 -0
  236. package/dist/backend/native/tool-identity.js +310 -0
  237. package/dist/backend/native/tool-identity.js.map +1 -0
  238. package/dist/backend/native/trace-paths.d.ts +12 -0
  239. package/dist/backend/native/trace-paths.js +73 -0
  240. package/dist/backend/native/trace-paths.js.map +1 -0
  241. package/dist/backend/native/vendor.d.ts +1 -0
  242. package/dist/backend/native/vendor.js +12 -0
  243. package/dist/backend/native/vendor.js.map +1 -0
  244. package/dist/backend/native-codegen-core.js +2 -1
  245. package/dist/backend/native-codegen-core.js.map +1 -1
  246. package/dist/backend/native-codegen.d.ts +1 -1
  247. package/dist/backend/native-codegen.js +24 -13
  248. package/dist/backend/native-codegen.js.map +1 -1
  249. package/dist/backend/native-codegen.test.js +12 -9
  250. package/dist/backend/native-codegen.test.js.map +1 -1
  251. package/dist/backend/native-link-info-core.js +9 -5
  252. package/dist/backend/native-link-info-core.js.map +1 -1
  253. package/dist/backend/native-link-info.js +14 -5
  254. package/dist/backend/native-link-info.js.map +1 -1
  255. package/dist/backend/native-link-info.test.js +58 -13
  256. package/dist/backend/native-link-info.test.js.map +1 -1
  257. package/dist/backend/native-toolchain.d.ts +17 -450
  258. package/dist/backend/native-toolchain.js +17 -3971
  259. package/dist/backend/native-toolchain.js.map +1 -1
  260. package/dist/backend/native-toolchain.test.js +103 -72
  261. package/dist/backend/native-toolchain.test.js.map +1 -1
  262. package/dist/backend/native-tools.js +27 -8
  263. package/dist/backend/native-tools.js.map +1 -1
  264. package/dist/backend/object-localize.js +17 -14
  265. package/dist/backend/object-localize.js.map +1 -1
  266. package/dist/backend/object-localize.test.js +59 -12
  267. package/dist/backend/object-localize.test.js.map +1 -1
  268. package/dist/backend/runtime-pack-core.js +96 -49
  269. package/dist/backend/runtime-pack-core.js.map +1 -1
  270. package/dist/backend/runtime-pack-native.js +5 -3
  271. package/dist/backend/runtime-pack-native.js.map +1 -1
  272. package/dist/backend/runtime-pack-targets.test.js +87 -15
  273. package/dist/backend/runtime-pack-targets.test.js.map +1 -1
  274. package/dist/backend/runtime-pack.d.ts +1 -1
  275. package/dist/backend/runtime-pack.js +11 -12
  276. package/dist/backend/runtime-pack.js.map +1 -1
  277. package/dist/backend/runtime-pack.test.js +40 -24
  278. package/dist/backend/runtime-pack.test.js.map +1 -1
  279. package/dist/backend/source-locations.js.map +1 -1
  280. package/dist/backend/source-locations.test.js +7 -2
  281. package/dist/backend/source-locations.test.js.map +1 -1
  282. package/dist/backend/target-diagnostics.js +44 -14
  283. package/dist/backend/target-diagnostics.js.map +1 -1
  284. package/dist/backend/target-diagnostics.test.js +93 -20
  285. package/dist/backend/target-diagnostics.test.js.map +1 -1
  286. package/dist/backend/targets.js +230 -86
  287. package/dist/backend/targets.js.map +1 -1
  288. package/dist/backend/targets.test.js +32 -18
  289. package/dist/backend/targets.test.js.map +1 -1
  290. package/dist/backend/toolchain-environment.js +5 -1
  291. package/dist/backend/toolchain-environment.js.map +1 -1
  292. package/dist/backend/vendor-archives.d.ts +2 -2
  293. package/dist/backend/vendor-archives.js +84 -35
  294. package/dist/backend/vendor-archives.js.map +1 -1
  295. package/dist/backend/vendor-inputs.js +13 -1
  296. package/dist/backend/vendor-inputs.js.map +1 -1
  297. package/dist/backend/warm-cache.d.ts +1 -1
  298. package/dist/backend/warm-cache.js +33 -9
  299. package/dist/backend/warm-cache.js.map +1 -1
  300. package/dist/cli/command.js +39 -9
  301. package/dist/cli/command.js.map +1 -1
  302. package/dist/cli/output-options.js +14 -4
  303. package/dist/cli/output-options.js.map +1 -1
  304. package/dist/cli/paths.js.map +1 -1
  305. package/dist/cli/wasi-runner.js.map +1 -1
  306. package/dist/compat/fetch-profile.js +36 -35
  307. package/dist/compat/fetch-profile.js.map +1 -1
  308. package/dist/coverage/report.js +16 -17
  309. package/dist/coverage/report.js.map +1 -1
  310. package/dist/coverage/surface-manifest.js +112 -26
  311. package/dist/coverage/surface-manifest.js.map +1 -1
  312. package/dist/diagnostics/diagnostic.js +55 -16
  313. package/dist/diagnostics/diagnostic.js.map +1 -1
  314. package/dist/executable/executable-cache.d.ts +1 -1
  315. package/dist/executable/executable-cache.js +78 -48
  316. package/dist/executable/executable-cache.js.map +1 -1
  317. package/dist/executable/executable-cache.test.js +75 -26
  318. package/dist/executable/executable-cache.test.js.map +1 -1
  319. package/dist/executable/prepare.js +2 -2
  320. package/dist/executable/prepare.js.map +1 -1
  321. package/dist/ffi/ffi-manifest.js +78 -20
  322. package/dist/ffi/ffi-manifest.js.map +1 -1
  323. package/dist/ffi/ffi-manifest.test.js +96 -16
  324. package/dist/ffi/ffi-manifest.test.js.map +1 -1
  325. package/dist/format-integer.js.map +1 -1
  326. package/dist/frontend/analysis.js +12 -2
  327. package/dist/frontend/analysis.js.map +1 -1
  328. package/dist/frontend/arguments-usage.js.map +1 -1
  329. package/dist/frontend/binding-source.js +9 -3
  330. package/dist/frontend/binding-source.js.map +1 -1
  331. package/dist/frontend/builtin-modules.js +46 -2
  332. package/dist/frontend/builtin-modules.js.map +1 -1
  333. package/dist/frontend/cjs-resolve.js +40 -17
  334. package/dist/frontend/cjs-resolve.js.map +1 -1
  335. package/dist/frontend/cjs-syntax.js +31 -10
  336. package/dist/frontend/cjs-syntax.js.map +1 -1
  337. package/dist/frontend/comptime-node.test.js +10 -11
  338. package/dist/frontend/comptime-node.test.js.map +1 -1
  339. package/dist/frontend/dts-paths.js +7 -3
  340. package/dist/frontend/dts-paths.js.map +1 -1
  341. package/dist/frontend/fork-target.js +17 -12
  342. package/dist/frontend/fork-target.js.map +1 -1
  343. package/dist/frontend/function-completion.js +11 -6
  344. package/dist/frontend/function-completion.js.map +1 -1
  345. package/dist/frontend/helper-tokens.js +53 -6
  346. package/dist/frontend/helper-tokens.js.map +1 -1
  347. package/dist/frontend/helper-tokens.test.js +18 -2
  348. package/dist/frontend/helper-tokens.test.js.map +1 -1
  349. package/dist/frontend/inferred-js-diagnostics.js +32 -12
  350. package/dist/frontend/inferred-js-diagnostics.js.map +1 -1
  351. package/dist/frontend/inferred-js-diagnostics.test.js +11 -15
  352. package/dist/frontend/inferred-js-diagnostics.test.js.map +1 -1
  353. package/dist/frontend/input-tracker.js +11 -11
  354. package/dist/frontend/input-tracker.js.map +1 -1
  355. package/dist/frontend/input-tracker.test.js +4 -1
  356. package/dist/frontend/input-tracker.test.js.map +1 -1
  357. package/dist/frontend/lib-contract.js +38 -9
  358. package/dist/frontend/lib-contract.js.map +1 -1
  359. package/dist/frontend/literal-values.js.map +1 -1
  360. package/dist/frontend/literal-values.test.js +28 -8
  361. package/dist/frontend/literal-values.test.js.map +1 -1
  362. package/dist/frontend/lowering/abstract-equality.js +53 -10
  363. package/dist/frontend/lowering/abstract-equality.js.map +1 -1
  364. package/dist/frontend/lowering/array-indexed-mutation.d.ts +1 -1
  365. package/dist/frontend/lowering/array-indexed-mutation.js +108 -106
  366. package/dist/frontend/lowering/array-indexed-mutation.js.map +1 -1
  367. package/dist/frontend/lowering/array-values.js +37 -14
  368. package/dist/frontend/lowering/array-values.js.map +1 -1
  369. package/dist/frontend/lowering/binding-analysis.d.ts +50 -0
  370. package/dist/frontend/lowering/binding-analysis.js +376 -0
  371. package/dist/frontend/lowering/binding-analysis.js.map +1 -0
  372. package/dist/frontend/lowering/builtin-calls.d.ts +9 -0
  373. package/dist/frontend/lowering/builtin-calls.js +60 -0
  374. package/dist/frontend/lowering/builtin-calls.js.map +1 -0
  375. package/dist/frontend/lowering/builtins/arguments.d.ts +43 -0
  376. package/dist/frontend/lowering/builtins/arguments.js +247 -0
  377. package/dist/frontend/lowering/builtins/arguments.js.map +1 -0
  378. package/dist/frontend/lowering/builtins/async-context.d.ts +52 -0
  379. package/dist/frontend/lowering/builtins/async-context.js +436 -0
  380. package/dist/frontend/lowering/builtins/async-context.js.map +1 -0
  381. package/dist/frontend/lowering/builtins/atomics.d.ts +15 -0
  382. package/dist/frontend/lowering/builtins/atomics.js +46 -0
  383. package/dist/frontend/lowering/builtins/atomics.js.map +1 -0
  384. package/dist/frontend/lowering/builtins/callable-aliases.d.ts +13 -0
  385. package/dist/frontend/lowering/builtins/callable-aliases.js +87 -0
  386. package/dist/frontend/lowering/builtins/callable-aliases.js.map +1 -0
  387. package/dist/frontend/lowering/builtins/child-process-async.d.ts +18 -0
  388. package/dist/frontend/lowering/builtins/child-process-async.js +245 -0
  389. package/dist/frontend/lowering/builtins/child-process-async.js.map +1 -0
  390. package/dist/frontend/lowering/builtins/child-process-methods.d.ts +21 -0
  391. package/dist/frontend/lowering/builtins/child-process-methods.js +362 -0
  392. package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -0
  393. package/dist/frontend/lowering/builtins/child-process-sync.d.ts +4 -0
  394. package/dist/frontend/lowering/builtins/child-process-sync.js +639 -0
  395. package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -0
  396. package/dist/frontend/lowering/builtins/child-process.d.ts +55 -0
  397. package/dist/frontend/lowering/builtins/child-process.js +669 -0
  398. package/dist/frontend/lowering/builtins/child-process.js.map +1 -0
  399. package/dist/frontend/lowering/builtins/compression.d.ts +7 -0
  400. package/dist/frontend/lowering/builtins/compression.js +115 -0
  401. package/dist/frontend/lowering/builtins/compression.js.map +1 -0
  402. package/dist/frontend/lowering/builtins/console.d.ts +10 -0
  403. package/dist/frontend/lowering/builtins/console.js +38 -0
  404. package/dist/frontend/lowering/builtins/console.js.map +1 -0
  405. package/dist/frontend/lowering/builtins/constants.d.ts +24 -0
  406. package/dist/frontend/lowering/builtins/constants.js +141 -0
  407. package/dist/frontend/lowering/builtins/constants.js.map +1 -0
  408. package/dist/frontend/lowering/builtins/crypto.d.ts +22 -0
  409. package/dist/frontend/lowering/builtins/crypto.js +517 -0
  410. package/dist/frontend/lowering/builtins/crypto.js.map +1 -0
  411. package/dist/frontend/lowering/builtins/dates.d.ts +7 -0
  412. package/dist/frontend/lowering/builtins/dates.js +101 -0
  413. package/dist/frontend/lowering/builtins/dates.js.map +1 -0
  414. package/dist/frontend/lowering/builtins/environment.d.ts +34 -0
  415. package/dist/frontend/lowering/builtins/environment.js +95 -0
  416. package/dist/frontend/lowering/builtins/environment.js.map +1 -0
  417. package/dist/frontend/lowering/builtins/errors.d.ts +14 -0
  418. package/dist/frontend/lowering/builtins/errors.js +83 -0
  419. package/dist/frontend/lowering/builtins/errors.js.map +1 -0
  420. package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +32 -0
  421. package/dist/frontend/lowering/builtins/filesystem-calls.js +678 -0
  422. package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -0
  423. package/dist/frontend/lowering/builtins/filesystem.d.ts +108 -0
  424. package/dist/frontend/lowering/builtins/filesystem.js +1061 -0
  425. package/dist/frontend/lowering/builtins/filesystem.js.map +1 -0
  426. package/dist/frontend/lowering/builtins/ipc.d.ts +8 -0
  427. package/dist/frontend/lowering/builtins/ipc.js +76 -0
  428. package/dist/frontend/lowering/builtins/ipc.js.map +1 -0
  429. package/dist/frontend/lowering/builtins/json.d.ts +12 -0
  430. package/dist/frontend/lowering/builtins/json.js +387 -0
  431. package/dist/frontend/lowering/builtins/json.js.map +1 -0
  432. package/dist/frontend/lowering/builtins/module-bindings.d.ts +85 -0
  433. package/dist/frontend/lowering/builtins/module-bindings.js +346 -0
  434. package/dist/frontend/lowering/builtins/module-bindings.js.map +1 -0
  435. package/dist/frontend/lowering/builtins/module-calls.d.ts +8 -0
  436. package/dist/frontend/lowering/builtins/module-calls.js +303 -0
  437. package/dist/frontend/lowering/builtins/module-calls.js.map +1 -0
  438. package/dist/frontend/lowering/builtins/module-resolution.d.ts +38 -0
  439. package/dist/frontend/lowering/builtins/module-resolution.js +344 -0
  440. package/dist/frontend/lowering/builtins/module-resolution.js.map +1 -0
  441. package/dist/frontend/lowering/builtins/numbers.d.ts +15 -0
  442. package/dist/frontend/lowering/builtins/numbers.js +124 -0
  443. package/dist/frontend/lowering/builtins/numbers.js.map +1 -0
  444. package/dist/frontend/lowering/builtins/operating-system.d.ts +13 -0
  445. package/dist/frontend/lowering/builtins/operating-system.js +148 -0
  446. package/dist/frontend/lowering/builtins/operating-system.js.map +1 -0
  447. package/dist/frontend/lowering/builtins/performance.d.ts +13 -0
  448. package/dist/frontend/lowering/builtins/performance.js +100 -0
  449. package/dist/frontend/lowering/builtins/performance.js.map +1 -0
  450. package/dist/frontend/lowering/builtins/process.d.ts +50 -0
  451. package/dist/frontend/lowering/builtins/process.js +1138 -0
  452. package/dist/frontend/lowering/builtins/process.js.map +1 -0
  453. package/dist/frontend/lowering/builtins/promises.d.ts +14 -0
  454. package/dist/frontend/lowering/builtins/promises.js +356 -0
  455. package/dist/frontend/lowering/builtins/promises.js.map +1 -0
  456. package/dist/frontend/lowering/builtins/properties.d.ts +11 -0
  457. package/dist/frontend/lowering/builtins/properties.js +186 -0
  458. package/dist/frontend/lowering/builtins/properties.js.map +1 -0
  459. package/dist/frontend/lowering/builtins/querystring.d.ts +19 -0
  460. package/dist/frontend/lowering/builtins/querystring.js +150 -0
  461. package/dist/frontend/lowering/builtins/querystring.js.map +1 -0
  462. package/dist/frontend/lowering/builtins/readline.d.ts +13 -0
  463. package/dist/frontend/lowering/builtins/readline.js +138 -0
  464. package/dist/frontend/lowering/builtins/readline.js.map +1 -0
  465. package/dist/frontend/lowering/builtins/receiver-types.d.ts +5 -0
  466. package/dist/frontend/lowering/builtins/receiver-types.js +15 -0
  467. package/dist/frontend/lowering/builtins/receiver-types.js.map +1 -0
  468. package/dist/frontend/lowering/builtins/reflection.d.ts +13 -0
  469. package/dist/frontend/lowering/builtins/reflection.js +95 -0
  470. package/dist/frontend/lowering/builtins/reflection.js.map +1 -0
  471. package/dist/frontend/lowering/builtins/strings.d.ts +14 -0
  472. package/dist/frontend/lowering/builtins/strings.js +121 -0
  473. package/dist/frontend/lowering/builtins/strings.js.map +1 -0
  474. package/dist/frontend/lowering/builtins/text-codecs.d.ts +29 -0
  475. package/dist/frontend/lowering/builtins/text-codecs.js +590 -0
  476. package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -0
  477. package/dist/frontend/lowering/builtins/timers.d.ts +22 -0
  478. package/dist/frontend/lowering/builtins/timers.js +180 -0
  479. package/dist/frontend/lowering/builtins/timers.js.map +1 -0
  480. package/dist/frontend/lowering/builtins/url.d.ts +37 -0
  481. package/dist/frontend/lowering/builtins/url.js +596 -0
  482. package/dist/frontend/lowering/builtins/url.js.map +1 -0
  483. package/dist/frontend/lowering/builtins/util-types.d.ts +7 -0
  484. package/dist/frontend/lowering/builtins/util-types.js +31 -0
  485. package/dist/frontend/lowering/builtins/util-types.js.map +1 -0
  486. package/dist/frontend/lowering/call-arguments.d.ts +72 -0
  487. package/dist/frontend/lowering/call-arguments.js +618 -0
  488. package/dist/frontend/lowering/call-arguments.js.map +1 -0
  489. package/dist/frontend/lowering/call-signatures.d.ts +115 -0
  490. package/dist/frontend/lowering/call-signatures.js +719 -0
  491. package/dist/frontend/lowering/call-signatures.js.map +1 -0
  492. package/dist/frontend/lowering/callback-arg.js.map +1 -1
  493. package/dist/frontend/lowering/checked-iterable-spread.js +53 -10
  494. package/dist/frontend/lowering/checked-iterable-spread.js.map +1 -1
  495. package/dist/frontend/lowering/checked-promise-all.js +41 -9
  496. package/dist/frontend/lowering/checked-promise-all.js.map +1 -1
  497. package/dist/frontend/lowering/class-callbacks.d.ts +1 -1
  498. package/dist/frontend/lowering/class-callbacks.js +130 -27
  499. package/dist/frontend/lowering/class-callbacks.js.map +1 -1
  500. package/dist/frontend/lowering/class-construction.d.ts +1 -1
  501. package/dist/frontend/lowering/class-construction.js +247 -50
  502. package/dist/frontend/lowering/class-construction.js.map +1 -1
  503. package/dist/frontend/lowering/class-descriptors.js +109 -29
  504. package/dist/frontend/lowering/class-descriptors.js.map +1 -1
  505. package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +6 -1
  506. package/dist/frontend/lowering/class-dynamic-dispatch.js +2471 -465
  507. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  508. package/dist/frontend/lowering/class-dynamic-dispatch.test.js +284 -44
  509. package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
  510. package/dist/frontend/lowering/class-instance-constructor.js +17 -5
  511. package/dist/frontend/lowering/class-instance-constructor.js.map +1 -1
  512. package/dist/frontend/lowering/class-method-values.js +199 -51
  513. package/dist/frontend/lowering/class-method-values.js.map +1 -1
  514. package/dist/frontend/lowering/class-prototypes.js +345 -86
  515. package/dist/frontend/lowering/class-prototypes.js.map +1 -1
  516. package/dist/frontend/lowering/class-runtime-statics.d.ts +1 -1
  517. package/dist/frontend/lowering/class-runtime-statics.js +80 -17
  518. package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
  519. package/dist/frontend/lowering/class-static-data.js +76 -16
  520. package/dist/frontend/lowering/class-static-data.js.map +1 -1
  521. package/dist/frontend/lowering/coercions/builders.d.ts +13 -0
  522. package/dist/frontend/lowering/coercions/builders.js +77 -0
  523. package/dist/frontend/lowering/coercions/builders.js.map +1 -0
  524. package/dist/frontend/lowering/coercions/function-adapters.d.ts +58 -0
  525. package/dist/frontend/lowering/coercions/function-adapters.js +430 -0
  526. package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -0
  527. package/dist/frontend/lowering/coercions/island.d.ts +37 -0
  528. package/dist/frontend/lowering/coercions/island.js +350 -0
  529. package/dist/frontend/lowering/coercions/island.js.map +1 -0
  530. package/dist/frontend/lowering/coercions/state.d.ts +14 -0
  531. package/dist/frontend/lowering/coercions/state.js +16 -0
  532. package/dist/frontend/lowering/coercions/state.js.map +1 -0
  533. package/dist/frontend/lowering/coercions/structural-plans.d.ts +40 -0
  534. package/dist/frontend/lowering/coercions/structural-plans.js +447 -0
  535. package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -0
  536. package/dist/frontend/lowering/coercions/structural.d.ts +63 -0
  537. package/dist/frontend/lowering/coercions/structural.js +616 -0
  538. package/dist/frontend/lowering/coercions/structural.js.map +1 -0
  539. package/dist/frontend/lowering/coercions/unions.d.ts +65 -0
  540. package/dist/frontend/lowering/coercions/unions.js +318 -0
  541. package/dist/frontend/lowering/coercions/unions.js.map +1 -0
  542. package/dist/frontend/lowering/collection-ingestion.js +355 -72
  543. package/dist/frontend/lowering/collection-ingestion.js.map +1 -1
  544. package/dist/frontend/lowering/containers/array-callbacks.d.ts +92 -0
  545. package/dist/frontend/lowering/containers/array-callbacks.js +1646 -0
  546. package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -0
  547. package/dist/frontend/lowering/containers/array-construction.d.ts +42 -0
  548. package/dist/frontend/lowering/containers/array-construction.js +1044 -0
  549. package/dist/frontend/lowering/containers/array-construction.js.map +1 -0
  550. package/dist/frontend/lowering/containers/array-iteration.d.ts +16 -0
  551. package/dist/frontend/lowering/containers/array-iteration.js +95 -0
  552. package/dist/frontend/lowering/containers/array-iteration.js.map +1 -0
  553. package/dist/frontend/lowering/containers/array-methods.d.ts +27 -0
  554. package/dist/frontend/lowering/containers/array-methods.js +1854 -0
  555. package/dist/frontend/lowering/containers/array-methods.js.map +1 -0
  556. package/dist/frontend/lowering/containers/bytes.d.ts +17 -17
  557. package/dist/frontend/lowering/containers/bytes.js +419 -105
  558. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  559. package/dist/frontend/lowering/containers/callback-arguments.d.ts +26 -0
  560. package/dist/frontend/lowering/containers/callback-arguments.js +179 -0
  561. package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -0
  562. package/dist/frontend/lowering/containers/collection-grouping.d.ts +19 -0
  563. package/dist/frontend/lowering/containers/collection-grouping.js +297 -0
  564. package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -0
  565. package/dist/frontend/lowering/containers/collection-methods.d.ts +57 -0
  566. package/dist/frontend/lowering/containers/collection-methods.js +1314 -0
  567. package/dist/frontend/lowering/containers/collection-methods.js.map +1 -0
  568. package/dist/frontend/lowering/containers/dynamic-receivers.d.ts +18 -0
  569. package/dist/frontend/lowering/containers/dynamic-receivers.js +114 -0
  570. package/dist/frontend/lowering/containers/dynamic-receivers.js.map +1 -0
  571. package/dist/frontend/lowering/containers/for-of.d.ts +60 -0
  572. package/dist/frontend/lowering/containers/for-of.js +643 -0
  573. package/dist/frontend/lowering/containers/for-of.js.map +1 -0
  574. package/dist/frontend/lowering/containers/indexed-objects.d.ts +132 -0
  575. package/dist/frontend/lowering/containers/indexed-objects.js +1743 -0
  576. package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -0
  577. package/dist/frontend/lowering/containers/iterator-helpers.d.ts +20 -0
  578. package/dist/frontend/lowering/containers/iterator-helpers.js +809 -0
  579. package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -0
  580. package/dist/frontend/lowering/containers/string-and-regexp.js +580 -158
  581. package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
  582. package/dist/frontend/lowering/containers/string-replacement.js +213 -63
  583. package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
  584. package/dist/frontend/lowering/crypto-tables.js +263 -64
  585. package/dist/frontend/lowering/crypto-tables.js.map +1 -1
  586. package/dist/frontend/lowering/deferred-module-initializers.js +172 -68
  587. package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
  588. package/dist/frontend/lowering/deferred-module-initializers.test.js +41 -8
  589. package/dist/frontend/lowering/deferred-module-initializers.test.js.map +1 -1
  590. package/dist/frontend/lowering/error-methods.js +339 -65
  591. package/dist/frontend/lowering/error-methods.js.map +1 -1
  592. package/dist/frontend/lowering/expressions/evaluation-safety.js +3 -2
  593. package/dist/frontend/lowering/expressions/evaluation-safety.js.map +1 -1
  594. package/dist/frontend/lowering/expressions/global-symbols.js +2 -1
  595. package/dist/frontend/lowering/expressions/global-symbols.js.map +1 -1
  596. package/dist/frontend/lowering/expressions/native-proxy.js +11 -5
  597. package/dist/frontend/lowering/expressions/native-proxy.js.map +1 -1
  598. package/dist/frontend/lowering/expressions/nullish-assignment.js +67 -13
  599. package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
  600. package/dist/frontend/lowering/expressions/object-literals.js +589 -162
  601. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  602. package/dist/frontend/lowering/expressions/optional-chains.d.ts +1 -1
  603. package/dist/frontend/lowering/expressions/optional-chains.js +68 -17
  604. package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
  605. package/dist/frontend/lowering/expressions/union-field-write.js +45 -18
  606. package/dist/frontend/lowering/expressions/union-field-write.js.map +1 -1
  607. package/dist/frontend/lowering/function-context.js +5 -1
  608. package/dist/frontend/lowering/function-context.js.map +1 -1
  609. package/dist/frontend/lowering/function-returns.d.ts +67 -0
  610. package/dist/frontend/lowering/function-returns.js +392 -0
  611. package/dist/frontend/lowering/function-returns.js.map +1 -0
  612. package/dist/frontend/lowering/generator-delegation.d.ts +1 -1
  613. package/dist/frontend/lowering/generator-delegation.js +171 -39
  614. package/dist/frontend/lowering/generator-delegation.js.map +1 -1
  615. package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +1 -1
  616. package/dist/frontend/lowering/generator-dynamic-dispatch.js +176 -36
  617. package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -1
  618. package/dist/frontend/lowering/generic-functions.d.ts +274 -0
  619. package/dist/frontend/lowering/generic-functions.js +1727 -0
  620. package/dist/frontend/lowering/generic-functions.js.map +1 -0
  621. package/dist/frontend/lowering/import-meta.d.ts +1 -1
  622. package/dist/frontend/lowering/import-meta.js +37 -14
  623. package/dist/frontend/lowering/import-meta.js.map +1 -1
  624. package/dist/frontend/lowering/indexed-comparison.js +6 -2
  625. package/dist/frontend/lowering/indexed-comparison.js.map +1 -1
  626. package/dist/frontend/lowering/iterator-consumption.d.ts +9 -0
  627. package/dist/frontend/lowering/iterator-consumption.js +91 -0
  628. package/dist/frontend/lowering/iterator-consumption.js.map +1 -0
  629. package/dist/frontend/lowering/lib-boundary.js +40 -17
  630. package/dist/frontend/lowering/lib-boundary.js.map +1 -1
  631. package/dist/frontend/lowering/lib-boundary.test.js +49 -11
  632. package/dist/frontend/lowering/lib-boundary.test.js.map +1 -1
  633. package/dist/frontend/lowering/lower-array-sort.d.ts +0 -19
  634. package/dist/frontend/lowering/lower-array-sort.js +331 -566
  635. package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
  636. package/dist/frontend/lowering/lower-assert.js +248 -43
  637. package/dist/frontend/lowering/lower-assert.js.map +1 -1
  638. package/dist/frontend/lowering/lower-async-iteration.js +71 -16
  639. package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
  640. package/dist/frontend/lowering/lower-builtin-values.js +420 -71
  641. package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
  642. package/dist/frontend/lowering/lower-calls.d.ts +39 -558
  643. package/dist/frontend/lowering/lower-calls.js +2593 -5667
  644. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  645. package/dist/frontend/lowering/lower-classes.d.ts +243 -242
  646. package/dist/frontend/lowering/lower-classes.js +1701 -724
  647. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  648. package/dist/frontend/lowering/lower-comptime.d.ts +35 -35
  649. package/dist/frontend/lowering/lower-comptime.js +39 -37
  650. package/dist/frontend/lowering/lower-comptime.js.map +1 -1
  651. package/dist/frontend/lowering/lower-dgram.js +59 -31
  652. package/dist/frontend/lowering/lower-dgram.js.map +1 -1
  653. package/dist/frontend/lowering/lower-enums.js +5 -2
  654. package/dist/frontend/lowering/lower-enums.js.map +1 -1
  655. package/dist/frontend/lowering/lower-event-emitter.js +322 -85
  656. package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
  657. package/dist/frontend/lowering/lower-expando.js +19 -7
  658. package/dist/frontend/lowering/lower-expando.js.map +1 -1
  659. package/dist/frontend/lowering/lower-exprs.d.ts +194 -194
  660. package/dist/frontend/lowering/lower-exprs.js +3446 -1154
  661. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  662. package/dist/frontend/lowering/lower-functions.d.ts +23 -0
  663. package/dist/frontend/lowering/lower-functions.js +449 -0
  664. package/dist/frontend/lowering/lower-functions.js.map +1 -0
  665. package/dist/frontend/lowering/lower-generators.js +121 -32
  666. package/dist/frontend/lowering/lower-generators.js.map +1 -1
  667. package/dist/frontend/lowering/lower-global-value.js +15 -4
  668. package/dist/frontend/lowering/lower-global-value.js.map +1 -1
  669. package/dist/frontend/lowering/lower-inspect.js +479 -89
  670. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  671. package/dist/frontend/lowering/lower-island.d.ts +79 -79
  672. package/dist/frontend/lowering/lower-island.js +365 -273
  673. package/dist/frontend/lowering/lower-island.js.map +1 -1
  674. package/dist/frontend/lowering/lower-island.test.js +7 -2
  675. package/dist/frontend/lowering/lower-island.test.js.map +1 -1
  676. package/dist/frontend/lowering/lower-mixins.js +17 -8
  677. package/dist/frontend/lowering/lower-mixins.js.map +1 -1
  678. package/dist/frontend/lowering/lower-modules.d.ts +94 -94
  679. package/dist/frontend/lowering/lower-modules.js +612 -321
  680. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  681. package/dist/frontend/lowering/lower-modules.test.js +91 -20
  682. package/dist/frontend/lowering/lower-modules.test.js.map +1 -1
  683. package/dist/frontend/lowering/lower-namespaces.js +25 -8
  684. package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
  685. package/dist/frontend/lowering/lower-node-module.js +115 -34
  686. package/dist/frontend/lowering/lower-node-module.js.map +1 -1
  687. package/dist/frontend/lowering/lower-server.js +1210 -290
  688. package/dist/frontend/lowering/lower-server.js.map +1 -1
  689. package/dist/frontend/lowering/lower-stmts.d.ts +148 -148
  690. package/dist/frontend/lowering/lower-stmts.js +2312 -984
  691. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  692. package/dist/frontend/lowering/lower-stmts.test.js +13 -5
  693. package/dist/frontend/lowering/lower-stmts.test.js.map +1 -1
  694. package/dist/frontend/lowering/lower-stream.js +362 -90
  695. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  696. package/dist/frontend/lowering/lower-system-errors.js +30 -8
  697. package/dist/frontend/lowering/lower-system-errors.js.map +1 -1
  698. package/dist/frontend/lowering/lower-test.js +40 -13
  699. package/dist/frontend/lowering/lower-test.js.map +1 -1
  700. package/dist/frontend/lowering/lower-timers.d.ts +31 -0
  701. package/dist/frontend/lowering/lower-timers.js +336 -0
  702. package/dist/frontend/lowering/lower-timers.js.map +1 -0
  703. package/dist/frontend/lowering/lower-url.d.ts +1 -1
  704. package/dist/frontend/lowering/lower-url.js +46 -13
  705. package/dist/frontend/lowering/lower-url.js.map +1 -1
  706. package/dist/frontend/lowering/lowerer.d.ts +21 -351
  707. package/dist/frontend/lowering/lowerer.js +1024 -2704
  708. package/dist/frontend/lowering/lowerer.js.map +1 -1
  709. package/dist/frontend/lowering/lowerer.test.js +85 -17
  710. package/dist/frontend/lowering/lowerer.test.js.map +1 -1
  711. package/dist/frontend/lowering/module-namespace-elements.js +43 -8
  712. package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
  713. package/dist/frontend/lowering/native-ffi.d.ts +21 -1
  714. package/dist/frontend/lowering/native-ffi.js +487 -18
  715. package/dist/frontend/lowering/native-ffi.js.map +1 -1
  716. package/dist/frontend/lowering/object-enumeration-receiver.js +55 -10
  717. package/dist/frontend/lowering/object-enumeration-receiver.js.map +1 -1
  718. package/dist/frontend/lowering/object-factory-new.d.ts +1 -1
  719. package/dist/frontend/lowering/object-factory-new.js +36 -11
  720. package/dist/frontend/lowering/object-factory-new.js.map +1 -1
  721. package/dist/frontend/lowering/optional-arguments.js +49 -20
  722. package/dist/frontend/lowering/optional-arguments.js.map +1 -1
  723. package/dist/frontend/lowering/pairs-snapshot.js +66 -14
  724. package/dist/frontend/lowering/pairs-snapshot.js.map +1 -1
  725. package/dist/frontend/lowering/runtime-optional-locals.js +3 -1
  726. package/dist/frontend/lowering/runtime-optional-locals.js.map +1 -1
  727. package/dist/frontend/lowering/runtime-optional-locals.test.js.map +1 -1
  728. package/dist/frontend/lowering/sanitize-class-types.js +4 -1
  729. package/dist/frontend/lowering/sanitize-class-types.js.map +1 -1
  730. package/dist/frontend/lowering/sanitize-class-types.test.js +86 -18
  731. package/dist/frontend/lowering/sanitize-class-types.test.js.map +1 -1
  732. package/dist/frontend/lowering/static-this.js +13 -6
  733. package/dist/frontend/lowering/static-this.js.map +1 -1
  734. package/dist/frontend/lowering/string-index.js +32 -10
  735. package/dist/frontend/lowering/string-index.js.map +1 -1
  736. package/dist/frontend/lowering/surfaces.d.ts +42 -42
  737. package/dist/frontend/lowering/surfaces.js +1094 -249
  738. package/dist/frontend/lowering/surfaces.js.map +1 -1
  739. package/dist/frontend/lowering/symbol-fields.js +40 -15
  740. package/dist/frontend/lowering/symbol-fields.js.map +1 -1
  741. package/dist/frontend/lowering/symbol-methods.js.map +1 -1
  742. package/dist/frontend/lowering/text-decoder-encoding.js +236 -24
  743. package/dist/frontend/lowering/text-decoder-encoding.js.map +1 -1
  744. package/dist/frontend/lowering/text-decoder-encoding.test.js +84 -12
  745. package/dist/frontend/lowering/text-decoder-encoding.test.js.map +1 -1
  746. package/dist/frontend/lowering/union-narrow.js +59 -16
  747. package/dist/frontend/lowering/union-narrow.js.map +1 -1
  748. package/dist/frontend/lowering/union-narrow.test.js +24 -7
  749. package/dist/frontend/lowering/union-narrow.test.js.map +1 -1
  750. package/dist/frontend/lowering/union-retag.js +155 -40
  751. package/dist/frontend/lowering/union-retag.js.map +1 -1
  752. package/dist/frontend/lowering/union-retag.test.js +131 -33
  753. package/dist/frontend/lowering/union-retag.test.js.map +1 -1
  754. package/dist/frontend/lowering/unregistered-class-types.js.map +1 -1
  755. package/dist/frontend/lowering/unregistered-class-types.test.js +34 -8
  756. package/dist/frontend/lowering/unregistered-class-types.test.js.map +1 -1
  757. package/dist/frontend/module-syntax.js +21 -8
  758. package/dist/frontend/module-syntax.js.map +1 -1
  759. package/dist/frontend/module-syntax.test.js +37 -13
  760. package/dist/frontend/module-syntax.test.js.map +1 -1
  761. package/dist/frontend/npm-fetch-analysis.js +13 -4
  762. package/dist/frontend/npm-fetch-analysis.js.map +1 -1
  763. package/dist/frontend/npm-fetch-analysis.test.js +33 -10
  764. package/dist/frontend/npm-fetch-analysis.test.js.map +1 -1
  765. package/dist/frontend/npm-fetch-node.js.map +1 -1
  766. package/dist/frontend/npm-fetch-syntax.js +4 -9
  767. package/dist/frontend/npm-fetch-syntax.js.map +1 -1
  768. package/dist/frontend/npm-node.js +3 -1
  769. package/dist/frontend/npm-node.js.map +1 -1
  770. package/dist/frontend/npm-static-bundled-cjs.js +88 -29
  771. package/dist/frontend/npm-static-bundled-cjs.js.map +1 -1
  772. package/dist/frontend/npm-static-bundled-cjs.test.js +29 -10
  773. package/dist/frontend/npm-static-bundled-cjs.test.js.map +1 -1
  774. package/dist/frontend/npm-static-declaration-syntax.js +148 -56
  775. package/dist/frontend/npm-static-declaration-syntax.js.map +1 -1
  776. package/dist/frontend/npm-static-declarations.d.ts +1 -1
  777. package/dist/frontend/npm-static-declarations.js.map +1 -1
  778. package/dist/frontend/npm-static-declarations.test.js +33 -7
  779. package/dist/frontend/npm-static-declarations.test.js.map +1 -1
  780. package/dist/frontend/npm-static-prune.js +26 -12
  781. package/dist/frontend/npm-static-prune.js.map +1 -1
  782. package/dist/frontend/npm-static-prune.test.js +17 -3
  783. package/dist/frontend/npm-static-prune.test.js.map +1 -1
  784. package/dist/frontend/npm-static-rewrite-host.js +2 -3
  785. package/dist/frontend/npm-static-rewrite-host.js.map +1 -1
  786. package/dist/frontend/npm-static-rewrite-syntax.js +64 -21
  787. package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
  788. package/dist/frontend/npm-static-rewrite.js.map +1 -1
  789. package/dist/frontend/npm-static-subtyping.js +9 -4
  790. package/dist/frontend/npm-static-subtyping.js.map +1 -1
  791. package/dist/frontend/npm-static-subtyping.test.js +30 -6
  792. package/dist/frontend/npm-static-subtyping.test.js.map +1 -1
  793. package/dist/frontend/npm-static.js +15 -4
  794. package/dist/frontend/npm-static.js.map +1 -1
  795. package/dist/frontend/npm.js +122 -36
  796. package/dist/frontend/npm.js.map +1 -1
  797. package/dist/frontend/npm.test.js +30 -10
  798. package/dist/frontend/npm.test.js.map +1 -1
  799. package/dist/frontend/pipeline-native.js.map +1 -1
  800. package/dist/frontend/pipeline.js +25 -8
  801. package/dist/frontend/pipeline.js.map +1 -1
  802. package/dist/frontend/pipeline.test.js +21 -7
  803. package/dist/frontend/pipeline.test.js.map +1 -1
  804. package/dist/frontend/program-node.js +5 -3
  805. package/dist/frontend/program-node.js.map +1 -1
  806. package/dist/frontend/program.d.ts +2 -2
  807. package/dist/frontend/program.js +234 -101
  808. package/dist/frontend/program.js.map +1 -1
  809. package/dist/frontend/program.test.js +27 -27
  810. package/dist/frontend/program.test.js.map +1 -1
  811. package/dist/frontend/provenance-core.js +8 -4
  812. package/dist/frontend/provenance-core.js.map +1 -1
  813. package/dist/frontend/provenance-registry.js +1 -4
  814. package/dist/frontend/provenance-registry.js.map +1 -1
  815. package/dist/frontend/resolve.js +32 -20
  816. package/dist/frontend/resolve.js.map +1 -1
  817. package/dist/frontend/resolve.test.js +1 -1
  818. package/dist/frontend/resolve.test.js.map +1 -1
  819. package/dist/frontend/runtime-resolve.js +13 -4
  820. package/dist/frontend/runtime-resolve.js.map +1 -1
  821. package/dist/frontend/runtime-resolve.test.js +25 -9
  822. package/dist/frontend/runtime-resolve.test.js.map +1 -1
  823. package/dist/frontend/services-node.js +6 -2
  824. package/dist/frontend/services-node.js.map +1 -1
  825. package/dist/frontend/services-node.test.js +18 -6
  826. package/dist/frontend/services-node.test.js.map +1 -1
  827. package/dist/frontend/services.js +8 -4
  828. package/dist/frontend/services.js.map +1 -1
  829. package/dist/frontend/services.test.js +6 -2
  830. package/dist/frontend/services.test.js.map +1 -1
  831. package/dist/frontend/ts7/api.js +12 -4
  832. package/dist/frontend/ts7/api.js.map +1 -1
  833. package/dist/frontend/ts7/ast-bytes.js +10 -3
  834. package/dist/frontend/ts7/ast-bytes.js.map +1 -1
  835. package/dist/frontend/ts7/ast-bytes.test.js +23 -4
  836. package/dist/frontend/ts7/ast-bytes.test.js.map +1 -1
  837. package/dist/frontend/ts7/ast-guards.test.js +14 -5
  838. package/dist/frontend/ts7/ast-guards.test.js.map +1 -1
  839. package/dist/frontend/ts7/ast-node.d.ts +6 -1
  840. package/dist/frontend/ts7/ast-node.js +484 -164
  841. package/dist/frontend/ts7/ast-node.js.map +1 -1
  842. package/dist/frontend/ts7/ast-node.test.js +109 -36
  843. package/dist/frontend/ts7/ast-node.test.js.map +1 -1
  844. package/dist/frontend/ts7/ast-text.js +13 -3
  845. package/dist/frontend/ts7/ast-text.js.map +1 -1
  846. package/dist/frontend/ts7/ast-text.test.js.map +1 -1
  847. package/dist/frontend/ts7/ast-types.js.map +1 -1
  848. package/dist/frontend/ts7/ast-wire.d.ts +1 -1
  849. package/dist/frontend/ts7/ast-wire.js +55 -20
  850. package/dist/frontend/ts7/ast-wire.js.map +1 -1
  851. package/dist/frontend/ts7/ast-wire.test.js +53 -8
  852. package/dist/frontend/ts7/ast-wire.test.js.map +1 -1
  853. package/dist/frontend/ts7/ast.js +47 -28
  854. package/dist/frontend/ts7/ast.js.map +1 -1
  855. package/dist/frontend/ts7/census-check.js +1 -1
  856. package/dist/frontend/ts7/census-check.js.map +1 -1
  857. package/dist/frontend/ts7/checker-cache.js.map +1 -1
  858. package/dist/frontend/ts7/checker.js +5 -3
  859. package/dist/frontend/ts7/checker.js.map +1 -1
  860. package/dist/frontend/ts7/checker.test.js +54 -17
  861. package/dist/frontend/ts7/checker.test.js.map +1 -1
  862. package/dist/frontend/ts7/enums.test.js +9 -4
  863. package/dist/frontend/ts7/enums.test.js.map +1 -1
  864. package/dist/frontend/ts7/native-api.js.map +1 -1
  865. package/dist/frontend/ts7/native-host.js.map +1 -1
  866. package/dist/frontend/ts7/native-process.js +9 -3
  867. package/dist/frontend/ts7/native-process.js.map +1 -1
  868. package/dist/frontend/ts7/program-adapter.js +1 -1
  869. package/dist/frontend/ts7/program-adapter.js.map +1 -1
  870. package/dist/frontend/ts7/program-host.js +7 -4
  871. package/dist/frontend/ts7/program-host.js.map +1 -1
  872. package/dist/frontend/ts7/program-host.test.js +43 -11
  873. package/dist/frontend/ts7/program-host.test.js.map +1 -1
  874. package/dist/frontend/ts7/rpc-api.js +3 -1
  875. package/dist/frontend/ts7/rpc-api.js.map +1 -1
  876. package/dist/frontend/ts7/rpc-client.js +15 -5
  877. package/dist/frontend/ts7/rpc-client.js.map +1 -1
  878. package/dist/frontend/ts7/rpc-client.test.js +26 -8
  879. package/dist/frontend/ts7/rpc-client.test.js.map +1 -1
  880. package/dist/frontend/ts7/rpc-filesystem.js.map +1 -1
  881. package/dist/frontend/ts7/rpc-filesystem.test.js +43 -10
  882. package/dist/frontend/ts7/rpc-filesystem.test.js.map +1 -1
  883. package/dist/frontend/ts7/rpc-process.js +16 -6
  884. package/dist/frontend/ts7/rpc-process.js.map +1 -1
  885. package/dist/frontend/ts7/rpc-process.test.js.map +1 -1
  886. package/dist/frontend/ts7/rpc-wire.d.ts +1 -0
  887. package/dist/frontend/ts7/rpc-wire.js +41 -14
  888. package/dist/frontend/ts7/rpc-wire.js.map +1 -1
  889. package/dist/frontend/ts7/rpc-wire.test.js +36 -6
  890. package/dist/frontend/ts7/rpc-wire.test.js.map +1 -1
  891. package/dist/frontend/ts7/semantic-checker.js +209 -68
  892. package/dist/frontend/ts7/semantic-checker.js.map +1 -1
  893. package/dist/frontend/ts7/semantic-checker.test.js +29 -14
  894. package/dist/frontend/ts7/semantic-checker.test.js.map +1 -1
  895. package/dist/frontend/ts7/semantic-json.js +7 -1
  896. package/dist/frontend/ts7/semantic-json.js.map +1 -1
  897. package/dist/frontend/ts7/semantic-json.test.js +17 -3
  898. package/dist/frontend/ts7/semantic-json.test.js.map +1 -1
  899. package/dist/frontend/ts7/semantic-model.js +147 -51
  900. package/dist/frontend/ts7/semantic-model.js.map +1 -1
  901. package/dist/frontend/ts7/semantic-model.test.js +72 -19
  902. package/dist/frontend/ts7/semantic-model.test.js.map +1 -1
  903. package/dist/frontend/ts7/semantic-types.d.ts +2 -2
  904. package/dist/frontend/ts7/session-cache.js +10 -3
  905. package/dist/frontend/ts7/session-cache.js.map +1 -1
  906. package/dist/frontend/ts7/session-cache.test.js +13 -4
  907. package/dist/frontend/ts7/session-cache.test.js.map +1 -1
  908. package/dist/frontend/ts7/session-path.js +25 -10
  909. package/dist/frontend/ts7/session-path.js.map +1 -1
  910. package/dist/frontend/ts7/session-path.test.js +47 -4
  911. package/dist/frontend/ts7/session-path.test.js.map +1 -1
  912. package/dist/frontend/ts7/session-timing.js +22 -3
  913. package/dist/frontend/ts7/session-timing.js.map +1 -1
  914. package/dist/frontend/ts7/session-timing.test.js +12 -3
  915. package/dist/frontend/ts7/session-timing.test.js.map +1 -1
  916. package/dist/frontend/ts7/session.d.ts +1 -0
  917. package/dist/frontend/ts7/session.js +109 -35
  918. package/dist/frontend/ts7/session.js.map +1 -1
  919. package/dist/frontend/ts7/session.test.js +69 -15
  920. package/dist/frontend/ts7/session.test.js.map +1 -1
  921. package/dist/frontend/ts7/source-parser.js +17 -6
  922. package/dist/frontend/ts7/source-parser.js.map +1 -1
  923. package/dist/frontend/ts7/source-parser.test.js +32 -9
  924. package/dist/frontend/ts7/source-parser.test.js.map +1 -1
  925. package/dist/frontend/tsc-codes.js +56 -11
  926. package/dist/frontend/tsc-codes.js.map +1 -1
  927. package/dist/frontend/tsc-codes.test.d.ts +1 -0
  928. package/dist/frontend/tsc-codes.test.js +16 -0
  929. package/dist/frontend/tsc-codes.test.js.map +1 -0
  930. package/dist/frontend/type-mapper.js +545 -204
  931. package/dist/frontend/type-mapper.js.map +1 -1
  932. package/dist/frontend/type-mapper.test.js +108 -33
  933. package/dist/frontend/type-mapper.test.js.map +1 -1
  934. package/dist/frontend/union-discriminants.js +8 -2
  935. package/dist/frontend/union-discriminants.js.map +1 -1
  936. package/dist/frontend/union-discriminants.test.js +77 -20
  937. package/dist/frontend/union-discriminants.test.js.map +1 -1
  938. package/dist/index.d.ts +9 -8
  939. package/dist/index.js +150 -81
  940. package/dist/index.js.map +1 -1
  941. package/dist/ir/analysis.js +95 -38
  942. package/dist/ir/analysis.js.map +1 -1
  943. package/dist/ir/analysis.test.js +91 -15
  944. package/dist/ir/analysis.test.js.map +1 -1
  945. package/dist/ir/api.d.ts +4 -0
  946. package/dist/ir/api.js +6 -0
  947. package/dist/ir/api.js.map +1 -0
  948. package/dist/ir/build.d.ts +7 -0
  949. package/dist/ir/build.js +27 -1
  950. package/dist/ir/build.js.map +1 -1
  951. package/dist/ir/builtin-effects.d.ts +9 -0
  952. package/dist/ir/builtin-effects.js +631 -0
  953. package/dist/ir/builtin-effects.js.map +1 -0
  954. package/dist/ir/builtin-signatures.d.ts +15 -0
  955. package/dist/ir/builtin-signatures.js +3396 -0
  956. package/dist/ir/builtin-signatures.js.map +1 -0
  957. package/dist/ir/byte-numbers.js +67 -16
  958. package/dist/ir/byte-numbers.js.map +1 -1
  959. package/dist/ir/byte-numbers.test.js +17 -4
  960. package/dist/ir/byte-numbers.test.js.map +1 -1
  961. package/dist/ir/constant-tables.js +13 -5
  962. package/dist/ir/constant-tables.js.map +1 -1
  963. package/dist/ir/constant-tables.test.js +47 -7
  964. package/dist/ir/constant-tables.test.js.map +1 -1
  965. package/dist/ir/control-flow.js +2 -1
  966. package/dist/ir/control-flow.js.map +1 -1
  967. package/dist/ir/control-flow.test.js +35 -11
  968. package/dist/ir/control-flow.test.js.map +1 -1
  969. package/dist/ir/initializer-bindings.d.ts +9 -0
  970. package/dist/ir/initializer-bindings.js +115 -0
  971. package/dist/ir/initializer-bindings.js.map +1 -0
  972. package/dist/ir/initializer-bindings.test.d.ts +1 -0
  973. package/dist/ir/initializer-bindings.test.js +118 -0
  974. package/dist/ir/initializer-bindings.test.js.map +1 -0
  975. package/dist/ir/integer-loop-facts.d.ts +12 -0
  976. package/dist/ir/integer-loop-facts.js +137 -0
  977. package/dist/ir/integer-loop-facts.js.map +1 -0
  978. package/dist/ir/integer-loops.js +85 -30
  979. package/dist/ir/integer-loops.js.map +1 -1
  980. package/dist/ir/integer-loops.test.js +76 -13
  981. package/dist/ir/integer-loops.test.js.map +1 -1
  982. package/dist/ir/integer-ranges.js +93 -21
  983. package/dist/ir/integer-ranges.js.map +1 -1
  984. package/dist/ir/integer-ranges.test.js +199 -21
  985. package/dist/ir/integer-ranges.test.js.map +1 -1
  986. package/dist/ir/intrinsic-signatures.d.ts +20 -0
  987. package/dist/ir/intrinsic-signatures.js +57 -0
  988. package/dist/ir/intrinsic-signatures.js.map +1 -0
  989. package/dist/ir/ir.d.ts +6 -2150
  990. package/dist/ir/ir.js +160 -1396
  991. package/dist/ir/ir.js.map +1 -1
  992. package/dist/ir/ir.test.js +98 -77
  993. package/dist/ir/ir.test.js.map +1 -1
  994. package/dist/ir/runtime-features.d.ts +221 -0
  995. package/dist/ir/runtime-features.js +551 -0
  996. package/dist/ir/runtime-features.js.map +1 -0
  997. package/dist/ir/runtime-features.test.d.ts +1 -0
  998. package/dist/ir/runtime-features.test.js +98 -0
  999. package/dist/ir/runtime-features.test.js.map +1 -0
  1000. package/dist/ir/scalar-records.js +130 -40
  1001. package/dist/ir/scalar-records.js.map +1 -1
  1002. package/dist/ir/scalar-records.test.js +146 -27
  1003. package/dist/ir/scalar-records.test.js.map +1 -1
  1004. package/dist/ir/serialize.js +4 -2
  1005. package/dist/ir/serialize.js.map +1 -1
  1006. package/dist/ir/serialize.test.js +44 -9
  1007. package/dist/ir/serialize.test.js.map +1 -1
  1008. package/dist/ir/traverse.js +156 -43
  1009. package/dist/ir/traverse.js.map +1 -1
  1010. package/dist/ir/traverse.test.js +99 -24
  1011. package/dist/ir/traverse.test.js.map +1 -1
  1012. package/dist/ir/validate.d.ts +1 -31
  1013. package/dist/ir/validate.js +782 -1889
  1014. package/dist/ir/validate.js.map +1 -1
  1015. package/dist/ir/validate.test.js +610 -114
  1016. package/dist/ir/validate.test.js.map +1 -1
  1017. package/dist/library/cache-primitives.js +9 -10
  1018. package/dist/library/cache-primitives.js.map +1 -1
  1019. package/dist/library/cache-reset.test.js +2 -1
  1020. package/dist/library/cache-reset.test.js.map +1 -1
  1021. package/dist/library/compiler-self-identity.js +11 -5
  1022. package/dist/library/compiler-self-identity.js.map +1 -1
  1023. package/dist/library/compiler-self-identity.test.js +10 -3
  1024. package/dist/library/compiler-self-identity.test.js.map +1 -1
  1025. package/dist/library/fence-eval.js +24 -7
  1026. package/dist/library/fence-eval.js.map +1 -1
  1027. package/dist/library/fence-eval.test.js +31 -7
  1028. package/dist/library/fence-eval.test.js.map +1 -1
  1029. package/dist/library/int-infer.js +199 -59
  1030. package/dist/library/int-infer.js.map +1 -1
  1031. package/dist/library/int-infer.test.js +133 -57
  1032. package/dist/library/int-infer.test.js.map +1 -1
  1033. package/dist/library/ir-policy.d.ts +27 -0
  1034. package/dist/library/ir-policy.js +232 -0
  1035. package/dist/library/ir-policy.js.map +1 -0
  1036. package/dist/library/library-cache.js +40 -17
  1037. package/dist/library/library-cache.js.map +1 -1
  1038. package/dist/library/library-cache.test.js +24 -13
  1039. package/dist/library/library-cache.test.js.map +1 -1
  1040. package/dist/library/library-profile.js +68 -13
  1041. package/dist/library/library-profile.js.map +1 -1
  1042. package/dist/library/prepare.js +48 -20
  1043. package/dist/library/prepare.js.map +1 -1
  1044. package/dist/library/semantic-source.js +16 -14
  1045. package/dist/library/semantic-source.js.map +1 -1
  1046. package/dist/library/semantic-source.test.js +9 -14
  1047. package/dist/library/semantic-source.test.js.map +1 -1
  1048. package/dist/library/sidecar-validate.js +53 -12
  1049. package/dist/library/sidecar-validate.js.map +1 -1
  1050. package/dist/library/sidecar.js +85 -24
  1051. package/dist/library/sidecar.js.map +1 -1
  1052. package/dist/library/trap-teaching.js +11 -2
  1053. package/dist/library/trap-teaching.js.map +1 -1
  1054. package/dist/native/cache.js +10 -4
  1055. package/dist/native/cache.js.map +1 -1
  1056. package/dist/native/cli.js +34 -9
  1057. package/dist/native/cli.js.map +1 -1
  1058. package/dist/native/compiler.js +167 -43
  1059. package/dist/native/compiler.js.map +1 -1
  1060. package/dist/native/compiler.test.js +129 -32
  1061. package/dist/native/compiler.test.js.map +1 -1
  1062. package/dist/native/comptime.js +23 -7
  1063. package/dist/native/comptime.js.map +1 -1
  1064. package/dist/native/comptime.test.js +26 -6
  1065. package/dist/native/comptime.test.js.map +1 -1
  1066. package/dist/native/executable-cache.js +77 -27
  1067. package/dist/native/executable-cache.js.map +1 -1
  1068. package/dist/native/executable-cache.test.js +41 -6
  1069. package/dist/native/executable-cache.test.js.map +1 -1
  1070. package/dist/native/file-identity.js +9 -2
  1071. package/dist/native/file-identity.js.map +1 -1
  1072. package/dist/native/file-identity.test.js.map +1 -1
  1073. package/dist/native/library.js +50 -12
  1074. package/dist/native/library.js.map +1 -1
  1075. package/dist/native/prepare.js +119 -34
  1076. package/dist/native/prepare.js.map +1 -1
  1077. package/dist/native/prepare.test.js +22 -6
  1078. package/dist/native/prepare.test.js.map +1 -1
  1079. package/dist/native/runtime-typescript.js +24 -11
  1080. package/dist/native/runtime-typescript.js.map +1 -1
  1081. package/dist/native/runtime-typescript.test.js.map +1 -1
  1082. package/dist/native/sanitizer.js +71 -18
  1083. package/dist/native/sanitizer.js.map +1 -1
  1084. package/dist/native/sanitizer.test.js +77 -20
  1085. package/dist/native/sanitizer.test.js.map +1 -1
  1086. package/dist/native/task.js.map +1 -1
  1087. package/dist/native/task.test.js +7 -2
  1088. package/dist/native/task.test.js.map +1 -1
  1089. package/dist/native/toolchain.js +68 -26
  1090. package/dist/native/toolchain.js.map +1 -1
  1091. package/dist/native/toolchain.test.js +59 -20
  1092. package/dist/native/toolchain.test.js.map +1 -1
  1093. package/dist/startup-cache.d.ts +1 -1
  1094. package/dist/startup-cache.js +1 -1
  1095. package/dist/startup-cache.js.map +1 -1
  1096. package/dist/timing.js.map +1 -1
  1097. package/package.json +20 -20
  1098. package/surface-manifest.json +1 -1
  1099. package/dist/frontend/lowering/lower-builtins.d.ts +0 -601
  1100. package/dist/frontend/lowering/lower-builtins.js +0 -8986
  1101. package/dist/frontend/lowering/lower-builtins.js.map +0 -1
  1102. package/dist/frontend/lowering/lower-containers.d.ts +0 -382
  1103. package/dist/frontend/lowering/lower-containers.js +0 -7344
  1104. package/dist/frontend/lowering/lower-containers.js.map +0 -1
@@ -0,0 +1,12 @@
1
+ /** Recipe bytes and dependency snapshots must cover every extracted owner in
2
+ * both source and installed builds. Keep this explicit: directory enumeration
3
+ * could accidentally hash tests, source maps, or stale installed modules. */
4
+ export declare const NATIVE_RECIPE_IMPLEMENTATION_PATHS: string[];
5
+ export declare const EXECUTABLE_RUNTIME_SOURCES: readonly ["scr_number.c", "scr_bigint.c", "scr_string.c", "scr_grapheme.c", "scr_array.c", "scr_bytes.c", "scr_bytes_io.c", "scr_map.c", "scr_closure.c", "scr_ffi.c", "scr_object.c", "scr_union.c", "scr_exception.c", "scr_error.c", "scr_console.c", "scr_lib.c", "scr_path.c", "scr_url.c", "scr_url_params.c", "scr_json.c", "scr_node_builtin.c", "scr_async.c", "scr_crypto_async.c", "scr_child.c", "scr_cycle.c"];
6
+ export declare function runtimeSrcDir(): string;
7
+ /** The library base: the executable lane's unconditional sources minus the
8
+ * fiber/loop and child-process units, plus the library-mode TU. */
9
+ export declare const LIB_RUNTIME_SOURCES: string[];
10
+ export declare function nativeSourceFiles(directory: string, recursive: boolean, include?: (name: string) => boolean): Promise<string[]>;
11
+ export declare function runtimeFingerprintInputPaths(rtDir: string): Promise<string[]>;
12
+ export declare function runtimeFingerprint(rtDir: string): Promise<string>;
@@ -0,0 +1,163 @@
1
+ import { createHash } from "node:crypto";
2
+ import { createRequire } from "node:module";
3
+ import { readdir, readFile, realpath, stat } from "node:fs/promises";
4
+ import { basename, dirname, extname, join, relative, resolve } from "node:path";
5
+ import { fileURLToPath } from "node:url";
6
+ import { MBEDTLS_VERSION, QJS_COMMIT, ZLIB_VERSION } from "../vendor-inputs.js";
7
+ import { stableTestMemo } from "./session.js";
8
+ const implementationPath = fileURLToPath(import.meta.url);
9
+ const backendDir = dirname(dirname(implementationPath));
10
+ /** Recipe bytes and dependency snapshots must cover every extracted owner in
11
+ * both source and installed builds. Keep this explicit: directory enumeration
12
+ * could accidentally hash tests, source maps, or stale installed modules. */
13
+ export const NATIVE_RECIPE_IMPLEMENTATION_PATHS = [
14
+ "native-toolchain",
15
+ "build-cache",
16
+ "vendor-archives",
17
+ "native/process",
18
+ "native/runtime-inputs",
19
+ "native/session",
20
+ "native/driver",
21
+ "native/tool-identity",
22
+ "native/contracts",
23
+ "native/program-shards",
24
+ "native/library",
25
+ "native/object-merge",
26
+ "native/compiler-fingerprint",
27
+ "native/linker-fingerprint",
28
+ "native/dependency-files",
29
+ "native/trace-paths",
30
+ "native/runtime-objects",
31
+ "native/vendor",
32
+ "native/artifact-stamps",
33
+ "native/executable",
34
+ "native/cache-warm",
35
+ ].map((stem) => join(backendDir, `${stem}${extname(implementationPath)}`));
36
+ export const EXECUTABLE_RUNTIME_SOURCES = [
37
+ "scr_number.c",
38
+ "scr_bigint.c",
39
+ "scr_string.c",
40
+ "scr_grapheme.c",
41
+ "scr_array.c",
42
+ "scr_bytes.c",
43
+ "scr_bytes_io.c",
44
+ "scr_map.c",
45
+ "scr_closure.c",
46
+ "scr_ffi.c",
47
+ "scr_object.c",
48
+ "scr_union.c",
49
+ "scr_exception.c",
50
+ "scr_error.c",
51
+ "scr_console.c",
52
+ "scr_lib.c",
53
+ "scr_path.c",
54
+ "scr_url.c",
55
+ "scr_url_params.c",
56
+ "scr_json.c",
57
+ "scr_node_builtin.c",
58
+ "scr_async.c",
59
+ "scr_crypto_async.c",
60
+ "scr_child.c",
61
+ "scr_cycle.c",
62
+ ];
63
+ export function runtimeSrcDir() {
64
+ const testRoot = process.env["SCRIPTC_TEST_RUNTIME_SRC_DIR"];
65
+ if (testRoot !== undefined)
66
+ return resolve(testRoot);
67
+ const require = createRequire(import.meta.url);
68
+ return join(dirname(require.resolve("@scriptc/runtime/package.json")), "src");
69
+ }
70
+ /** The library base: the executable lane's unconditional sources minus the
71
+ * fiber/loop and child-process units, plus the library-mode TU. */
72
+ export const LIB_RUNTIME_SOURCES = [
73
+ ...EXECUTABLE_RUNTIME_SOURCES.filter((f) => f !== "scr_async.c" && f !== "scr_crypto_async.c" && f !== "scr_child.c" && f !== "scr_ffi.c"),
74
+ "scr_library.c",
75
+ ];
76
+ export async function nativeSourceFiles(directory, recursive, include = (name) => name.endsWith(".c") || name.endsWith(".h")) {
77
+ const files = [];
78
+ const walk = async (current, ancestors) => {
79
+ const canonical = await realpath(current).catch(() => resolve(current));
80
+ if (ancestors.has(canonical))
81
+ return;
82
+ const nestedAncestors = new Set(ancestors).add(canonical);
83
+ const entries = await readdir(current, { withFileTypes: true }).catch(() => []);
84
+ for (const entry of entries) {
85
+ const path = join(current, entry.name);
86
+ if (entry.isDirectory() && recursive) {
87
+ await walk(path, nestedAncestors);
88
+ }
89
+ else if (entry.isSymbolicLink()) {
90
+ const target = await stat(path).catch(() => null);
91
+ if (target?.isDirectory() && recursive)
92
+ await walk(path, nestedAncestors);
93
+ else if (target?.isFile() && include(entry.name))
94
+ files.push(path);
95
+ }
96
+ else if (entry.isFile() && include(entry.name)) {
97
+ files.push(path);
98
+ }
99
+ }
100
+ };
101
+ await walk(directory, new Set());
102
+ return files.sort();
103
+ }
104
+ /** Content hash of every owned native source/header plus this backend's build
105
+ * recipe implementation. It keys complete artifacts, runtime objects, and the
106
+ * separately built vendor prerequisites, so two installed scriptc versions or
107
+ * worktrees can share a user cache without exchanging outputs produced from
108
+ * different vendored bytes or compile/archive recipes. Recursive enumeration
109
+ * also catches a newly added nested header that begins shadowing a system
110
+ * include, while content hashing catches same-size timestamp-preserving edits. */
111
+ async function runtimeFingerprintFresh(rtDir) {
112
+ const groups = await runtimeFingerprintInputGroups(rtDir);
113
+ const h = createHash("sha256")
114
+ .update("native-owned-inputs-v2\0")
115
+ .update(QJS_COMMIT)
116
+ .update(MBEDTLS_VERSION)
117
+ .update(ZLIB_VERSION)
118
+ .update("\0backend-recipe\0");
119
+ for (const path of NATIVE_RECIPE_IMPLEMENTATION_PATHS) {
120
+ h.update(basename(path))
121
+ .update("\0")
122
+ .update(await readFile(path))
123
+ .update("\0");
124
+ }
125
+ for (const group of groups) {
126
+ for (const n of group.names) {
127
+ h.update(group.label)
128
+ .update("/")
129
+ .update(n)
130
+ .update("\0")
131
+ .update(await readFile(join(group.dir, n)))
132
+ .update("\0");
133
+ }
134
+ }
135
+ return h.digest("hex");
136
+ }
137
+ async function runtimeFingerprintInputGroups(rtDir) {
138
+ return Promise.all([
139
+ { label: "runtime", dir: rtDir },
140
+ { label: "ryu", dir: join(rtDir, "..", "vendor", "ryu") },
141
+ { label: "quickjs-ng", dir: join(rtDir, "..", "vendor", "quickjs-ng") },
142
+ { label: "mbedtls", dir: join(rtDir, "..", "vendor", "mbedtls") },
143
+ { label: "zlib", dir: join(rtDir, "..", "vendor", "zlib") },
144
+ { label: "curl", dir: join(rtDir, "..", "vendor", "curl") },
145
+ ].map(async (group) => {
146
+ const names = (await nativeSourceFiles(group.dir, true))
147
+ .map((path) => relative(group.dir, path))
148
+ .sort();
149
+ return { ...group, names };
150
+ }));
151
+ }
152
+ export async function runtimeFingerprintInputPaths(rtDir) {
153
+ return [
154
+ ...(await runtimeFingerprintInputGroups(rtDir)).flatMap((group) => group.names.map((name) => join(group.dir, name))),
155
+ ...NATIVE_RECIPE_IMPLEMENTATION_PATHS,
156
+ ];
157
+ }
158
+ const stableRuntimeFingerprintMemos = new Map();
159
+ export function runtimeFingerprint(rtDir) {
160
+ const key = resolve(rtDir);
161
+ return stableTestMemo(stableRuntimeFingerprintMemos, key, () => runtimeFingerprintFresh(rtDir));
162
+ }
163
+ //# sourceMappingURL=runtime-inputs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-inputs.js","sourceRoot":"","sources":["../../../src/backend/native/runtime-inputs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,64 @@
1
+ import { execFile } from "node:child_process";
2
+ import { copyFile, mkdir, mkdtemp, readdir, rm, writeFile } from "node:fs/promises";
3
+ import { tmpdir } from "node:os";
4
+ import { basename, dirname, join } from "node:path";
5
+ import { fileURLToPath, pathToFileURL } from "node:url";
6
+ import { promisify } from "node:util";
7
+ import { afterEach, expect, test } from "vitest";
8
+ import { NATIVE_RECIPE_IMPLEMENTATION_PATHS } from "./runtime-inputs.js";
9
+ const execute = promisify(execFile);
10
+ const backend = fileURLToPath(new URL("..", import.meta.url));
11
+ const temporary = [];
12
+ afterEach(async () => {
13
+ await Promise.all(temporary.splice(0).map((path) => rm(path, { recursive: true, force: true })));
14
+ });
15
+ test("the recipe identity covers every native owner and retains the original recipes", async () => {
16
+ const owners = (await readdir(join(backend, "native")))
17
+ .filter((name) => name.endsWith(".ts") && !name.endsWith(".test.ts"))
18
+ .map((name) => join(backend, "native", name));
19
+ expect(new Set(NATIVE_RECIPE_IMPLEMENTATION_PATHS).size).toBe(NATIVE_RECIPE_IMPLEMENTATION_PATHS.length);
20
+ expect(NATIVE_RECIPE_IMPLEMENTATION_PATHS.filter((path) => dirname(path) === join(backend, "native")).sort()).toEqual(owners.sort());
21
+ for (const name of ["native-toolchain.ts", "build-cache.ts", "vendor-archives.ts"]) {
22
+ expect(NATIVE_RECIPE_IMPLEMENTATION_PATHS).toContain(join(backend, name));
23
+ }
24
+ });
25
+ test("editing any recipe owner changes the fingerprint and every owner joins the dependency proof", async () => {
26
+ const work = await mkdtemp(join(tmpdir(), "scriptc-recipe-identity-"));
27
+ temporary.push(work);
28
+ const native = join(work, "backend", "native");
29
+ const runtime = join(work, "runtime", "src");
30
+ await mkdir(native, { recursive: true });
31
+ await mkdir(runtime, { recursive: true });
32
+ await writeFile(join(work, "package.json"), '{"type":"module"}\n');
33
+ await writeFile(join(runtime, "source.c"), "int recipe_identity_probe;\n");
34
+ for (const source of NATIVE_RECIPE_IMPLEMENTATION_PATHS) {
35
+ const destination = join(dirname(source) === join(backend, "native") ? native : dirname(native), basename(source));
36
+ await copyFile(source, destination);
37
+ }
38
+ await copyFile(join(backend, "vendor-inputs.ts"), join(dirname(native), "vendor-inputs.ts"));
39
+ // A separate process imports the copied implementation so import.meta.url
40
+ // exercises source-path resolution without modifying the running checkout.
41
+ const moduleUrl = pathToFileURL(join(native, "runtime-inputs.ts")).href;
42
+ const script = `
43
+ import { appendFile } from "node:fs/promises";
44
+ import { NATIVE_RECIPE_IMPLEMENTATION_PATHS as recipes, runtimeFingerprint, runtimeFingerprintInputPaths } from ${JSON.stringify(moduleUrl)};
45
+ const runtime = ${JSON.stringify(runtime)};
46
+ const dependencies = await runtimeFingerprintInputPaths(runtime);
47
+ let previous = await runtimeFingerprint(runtime);
48
+ const changed = [];
49
+ for (const recipe of recipes) {
50
+ await appendFile(recipe, "\\n// recipe mutation probe\\n");
51
+ const current = await runtimeFingerprint(runtime);
52
+ changed.push(current !== previous && dependencies.includes(recipe));
53
+ previous = current;
54
+ }
55
+ process.stdout.write(JSON.stringify(changed));
56
+ `;
57
+ const { stdout } = await execute(process.execPath, ["--import", "tsx", "--input-type=module", "--eval", script], {
58
+ cwd: fileURLToPath(new URL("../../../../..", import.meta.url)),
59
+ env: { ...process.env, SCRIPTC_TEST_STABLE_TOOLCHAIN: "0" },
60
+ timeout: 30_000,
61
+ });
62
+ expect(JSON.parse(stdout)).toEqual(NATIVE_RECIPE_IMPLEMENTATION_PATHS.map(() => true));
63
+ });
64
+ //# sourceMappingURL=runtime-inputs.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-inputs.test.js","sourceRoot":"","sources":["../../../src/backend/native/runtime-inputs.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /** Reset process observations whose validity is bounded to one public native
2
+ * build. A long-lived caller may change PATH or install/remove ccache between
3
+ * invocations; the next build must probe that environment again. */
4
+ export declare function clearCcCaches(): void;
5
+ /** The cached .o set for one flag flavor, compiled on first need. Concurrent
6
+ * first builds (parallel test workers on a cold cache) may duplicate work;
7
+ * per-file atomic renames make every winner equivalent. Publication is held
8
+ * until verifyInputs confirms that the source/header fingerprint used by the
9
+ * key still describes the bytes clang just read. */
10
+ export declare function ensureRuntimeObjects(root: string, ccArgv: string[], cflags: string[], sources: string[], keyPrefix: string, verifyInputs: () => Promise<boolean>, protectedPaths?: Set<string>): Promise<Map<string, string>>;
11
+ /** Give one active link/archive operation private names for its cached
12
+ * runtime objects. A hard link keeps the inode alive if another process's LRU
13
+ * sweep unlinks the cache entry; filesystems that cannot hard-link across the
14
+ * cache/tmp boundary fall back to a copy. If eviction wins before staging,
15
+ * the caller catches the read failure and performs a fully fresh compile. */
16
+ export declare function stageRuntimeObjects(objects: ReadonlyMap<string, string>, stageDir: string): Promise<Map<string, string>>;
@@ -0,0 +1,122 @@
1
+ import { createHash } from "node:crypto";
2
+ import { mkdir, mkdtemp, rm } from "node:fs/promises";
3
+ import { tmpdir } from "node:os";
4
+ import { basename, join } from "node:path";
5
+ import { stageCachedFile, cacheDigestPath, publishCachedFile, validCachedFile, } from "../build-cache.js";
6
+ import { execFileAsync } from "./process.js";
7
+ import { CacheInputsChangedError } from "./session.js";
8
+ let ccacheMemo = null;
9
+ /** Reset process observations whose validity is bounded to one public native
10
+ * build. A long-lived caller may change PATH or install/remove ccache between
11
+ * invocations; the next build must probe that environment again. */
12
+ export function clearCcCaches() {
13
+ ccacheMemo = null;
14
+ }
15
+ function ccacheAvailable() {
16
+ ccacheMemo ??= execFileAsync("ccache", ["--version"]).then(() => true, () => false);
17
+ return ccacheMemo;
18
+ }
19
+ /** The cached .o set for one flag flavor, compiled on first need. Concurrent
20
+ * first builds (parallel test workers on a cold cache) may duplicate work;
21
+ * per-file atomic renames make every winner equivalent. Publication is held
22
+ * until verifyInputs confirms that the source/header fingerprint used by the
23
+ * key still describes the bytes clang just read. */
24
+ export async function ensureRuntimeObjects(root, ccArgv, cflags, sources, keyPrefix, verifyInputs, protectedPaths) {
25
+ const setKey = createHash("sha256")
26
+ .update(keyPrefix)
27
+ .update(cflags.join("\x1f"))
28
+ .digest("hex")
29
+ .slice(0, 24);
30
+ const objDir = join(root, "obj", setKey);
31
+ const objOf = (src) => join(objDir, `${basename(src, ".c")}.o`);
32
+ if (protectedPaths !== undefined) {
33
+ for (const source of sources) {
34
+ const object = objOf(source);
35
+ protectedPaths.add(object);
36
+ protectedPaths.add(cacheDigestPath(object));
37
+ }
38
+ }
39
+ const present = await Promise.all(sources.map((s) => validCachedFile(objOf(s))));
40
+ const missing = sources.filter((_, i) => !present[i]);
41
+ if (missing.length > 0) {
42
+ // ccache wraps only the default clang driver — multi-word drivers
43
+ // (`zig cc`) run bare; their object sets are keyed apart anyway.
44
+ const useCcache = process.env["SCRIPTC_TEST_DISABLE_CCACHE"] !== "1" &&
45
+ ccArgv.length === 1 &&
46
+ ccArgv[0] === "clang" &&
47
+ (await ccacheAvailable());
48
+ await mkdir(objDir, { recursive: true });
49
+ const tmpDir = await mkdtemp(join(tmpdir(), "scriptc-cache-obj-"));
50
+ try {
51
+ const compiled = new Map();
52
+ // Modest parallelism: a flavor's objects build once, but several cold
53
+ // workers can race here — keep each build's CPU footprint small.
54
+ const width = 4;
55
+ for (let i = 0; i < missing.length; i += width) {
56
+ await Promise.all(missing.slice(i, i + width).map(async (src) => {
57
+ const tmpObj = join(tmpDir, `${basename(src, ".c")}.o`);
58
+ const argv = [
59
+ ...(useCcache ? ["ccache"] : []),
60
+ ...ccArgv,
61
+ ...cflags,
62
+ "-c",
63
+ src,
64
+ "-o",
65
+ tmpObj,
66
+ ];
67
+ await execFileAsync(argv[0] ?? "clang", argv.slice(1), useCcache
68
+ ? {
69
+ // ccache direct mode remembers only the headers selected by
70
+ // its previous manifest and can miss a newly created,
71
+ // higher-priority header. The scriptc object-set key already
72
+ // includes the recursive runtime namespace fingerprint, so
73
+ // carry it into ccache's own keyspace as well.
74
+ env: {
75
+ ...process.env,
76
+ CCACHE_NAMESPACE: [process.env["CCACHE_NAMESPACE"], `scriptc-${setKey}`]
77
+ .filter((value) => value !== undefined && value !== "")
78
+ .join(":"),
79
+ },
80
+ }
81
+ : undefined);
82
+ compiled.set(src, tmpObj);
83
+ }));
84
+ }
85
+ // The fingerprint was computed before these subprocesses started. Do
86
+ // not place their outputs under that key if a checkout/package update
87
+ // changed any runtime source or included header while clang was reading.
88
+ if (!(await verifyInputs()))
89
+ throw new CacheInputsChangedError();
90
+ for (const [src, built] of compiled) {
91
+ const destination = objOf(src);
92
+ await publishCachedFile(built, destination);
93
+ }
94
+ }
95
+ finally {
96
+ await rm(tmpDir, { recursive: true, force: true });
97
+ }
98
+ }
99
+ if (!(await verifyInputs()))
100
+ throw new CacheInputsChangedError();
101
+ const objects = new Map(sources.map((s) => [s, objOf(s)]));
102
+ if (!(await Promise.all([...objects.values()].map(validCachedFile))).every(Boolean)) {
103
+ throw new Error("native object cache integrity check failed");
104
+ }
105
+ return objects;
106
+ }
107
+ /** Give one active link/archive operation private names for its cached
108
+ * runtime objects. A hard link keeps the inode alive if another process's LRU
109
+ * sweep unlinks the cache entry; filesystems that cannot hard-link across the
110
+ * cache/tmp boundary fall back to a copy. If eviction wins before staging,
111
+ * the caller catches the read failure and performs a fully fresh compile. */
112
+ export async function stageRuntimeObjects(objects, stageDir) {
113
+ await mkdir(stageDir, { recursive: true });
114
+ const now = new Date();
115
+ const staged = await Promise.all([...objects].map(async ([source, object]) => {
116
+ const destination = join(stageDir, basename(object));
117
+ await stageCachedFile(object, destination, now);
118
+ return [source, destination];
119
+ }));
120
+ return new Map(staged);
121
+ }
122
+ //# sourceMappingURL=runtime-objects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-objects.js","sourceRoot":"","sources":["../../../src/backend/native/runtime-objects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EACL,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAEvD,IAAI,UAAU,GAA4B,IAAI,CAAC;AAE/C;;oEAEoE;AACpE,MAAM,UAAU,aAAa;IAC3B,UAAU,GAAG,IAAI,CAAC;AACpB,CAAC;AAED,SAAS,eAAe;IACtB,UAAU,KAAK,aAAa,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CACxD,GAAG,EAAE,CAAC,IAAI,EACV,GAAG,EAAE,CAAC,KAAK,CACZ,CAAC;IACF,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;oDAIoD;AACpD,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAAY,EACZ,MAAgB,EAChB,MAAgB,EAChB,OAAiB,EACjB,SAAiB,EACjB,YAAoC,EACpC,cAA4B;IAE5B,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC;SAChC,MAAM,CAAC,SAAS,CAAC;SACjB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC3B,MAAM,CAAC,KAAK,CAAC;SACb,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAChB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,CAAC,GAAW,EAAU,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAChF,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;YAC7B,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC3B,cAAc,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjF,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,kEAAkE;QAClE,iEAAiE;QACjE,MAAM,SAAS,GACb,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,KAAK,GAAG;YAClD,MAAM,CAAC,MAAM,KAAK,CAAC;YACnB,MAAM,CAAC,CAAC,CAAC,KAAK,OAAO;YACrB,CAAC,MAAM,eAAe,EAAE,CAAC,CAAC;QAC5B,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,oBAAoB,CAAC,CAAC,CAAC;QACnE,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;YAC3C,sEAAsE;YACtE,iEAAiE;YACjE,MAAM,KAAK,GAAG,CAAC,CAAC;YAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC;gBAC/C,MAAM,OAAO,CAAC,GAAG,CACf,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;oBAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;oBACxD,MAAM,IAAI,GAAG;wBACX,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;wBAChC,GAAG,MAAM;wBACT,GAAG,MAAM;wBACT,IAAI;wBACJ,GAAG;wBACH,IAAI;wBACJ,MAAM;qBACP,CAAC;oBACF,MAAM,aAAa,CACjB,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,EAClB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EACb,SAAS;wBACP,CAAC,CAAC;4BACE,4DAA4D;4BAC5D,sDAAsD;4BACtD,6DAA6D;4BAC7D,2DAA2D;4BAC3D,+CAA+C;4BAC/C,GAAG,EAAE;gCACH,GAAG,OAAO,CAAC,GAAG;gCACd,gBAAgB,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,WAAW,MAAM,EAAE,CAAC;qCACrE,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,CAAC;qCACtD,IAAI,CAAC,GAAG,CAAC;6BACb;yBACF;wBACH,CAAC,CAAC,SAAS,CACd,CAAC;oBACF,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;gBAC5B,CAAC,CAAC,CACH,CAAC;YACJ,CAAC;YACD,qEAAqE;YACrE,sEAAsE;YACtE,yEAAyE;YACzE,IAAI,CAAC,CAAC,MAAM,YAAY,EAAE,CAAC;gBAAE,MAAM,IAAI,uBAAuB,EAAE,CAAC;YACjE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACpC,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC/B,MAAM,iBAAiB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,YAAY,EAAE,CAAC;QAAE,MAAM,IAAI,uBAAuB,EAAE,CAAC;IACjE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,IAAI,CAAC,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACpF,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;6EAI6E;AAC7E,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAoC,EACpC,QAAgB;IAEhB,MAAM,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE;QAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QACrD,MAAM,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;QAChD,OAAO,CAAC,MAAM,EAAE,WAAW,CAAU,CAAC;IACxC,CAAC,CAAC,CACH,CAAC;IACF,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;AACzB,CAAC"}
@@ -0,0 +1,12 @@
1
+ /** Test lanes run against one immutable checkout and one immutable toolchain
2
+ * for the lifetime of each Vitest worker. Production deliberately rediscovers
3
+ * compiler/linker inputs on every invocation, but doing that thousands of
4
+ * times in the differential corpus costs far more than the compile itself.
5
+ * This test-only opt-in lets those workers reuse metadata probes for their
6
+ * session; the cache-correctness suite removes the flag and exercises the
7
+ * strict production path. */
8
+ export declare function stableTestToolchainSession(): boolean;
9
+ export declare function stableTestMemo<T>(cache: Map<string, Promise<T>>, key: string, probe: () => Promise<T>): Promise<T>;
10
+ export declare class CacheInputsChangedError extends Error {
11
+ constructor();
12
+ }
@@ -0,0 +1,31 @@
1
+ /** Test lanes run against one immutable checkout and one immutable toolchain
2
+ * for the lifetime of each Vitest worker. Production deliberately rediscovers
3
+ * compiler/linker inputs on every invocation, but doing that thousands of
4
+ * times in the differential corpus costs far more than the compile itself.
5
+ * This test-only opt-in lets those workers reuse metadata probes for their
6
+ * session; the cache-correctness suite removes the flag and exercises the
7
+ * strict production path. */
8
+ export function stableTestToolchainSession() {
9
+ return process.env["SCRIPTC_TEST_STABLE_TOOLCHAIN"] === "1";
10
+ }
11
+ export function stableTestMemo(cache, key, probe) {
12
+ if (!stableTestToolchainSession())
13
+ return probe();
14
+ const existing = cache.get(key);
15
+ if (existing !== undefined)
16
+ return existing;
17
+ const pending = probe();
18
+ cache.set(key, pending);
19
+ void pending.catch(() => {
20
+ if (cache.get(key) === pending)
21
+ cache.delete(key);
22
+ });
23
+ return pending;
24
+ }
25
+ export class CacheInputsChangedError extends Error {
26
+ constructor() {
27
+ super("runtime inputs changed while populating the native object cache");
28
+ this.name = "CacheInputsChangedError";
29
+ }
30
+ }
31
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/backend/native/session.ts"],"names":[],"mappings":"AAAA;;;;;;6BAM6B;AAC7B,MAAM,UAAU,0BAA0B;IACxC,OAAO,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,KAAK,GAAG,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,KAA8B,EAC9B,GAAW,EACX,KAAuB;IAEvB,IAAI,CAAC,0BAA0B,EAAE;QAAE,OAAO,KAAK,EAAE,CAAC;IAClD,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IAC5C,MAAM,OAAO,GAAG,KAAK,EAAE,CAAC;IACxB,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACxB,KAAK,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE;QACtB,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,OAAO;YAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAChD;QACE,KAAK,CAAC,iEAAiE,CAAC,CAAC;QACzE,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF"}
@@ -0,0 +1,37 @@
1
+ import { type CcDriver } from "./driver.js";
2
+ /** Inputs that can change which native tool/runtime implementation an
3
+ * executable build selects before compileC has a chance to rediscover it.
4
+ * The early whole-program cache keys this exact posture before restoring a
5
+ * final binary; compileC retains its deeper inode/content validation. */
6
+ export declare function executableNativeEnvironmentFingerprint(env?: NodeJS.ProcessEnv): Promise<string>;
7
+ interface ResolvedTool {
8
+ canonicalPath: string;
9
+ cacheIdentity: string;
10
+ fileIdentity: string;
11
+ }
12
+ /** Resolve the executable the OS will select for an argv[0] spelling. The
13
+ * path and inode metadata join the version output below: two PATH postures
14
+ * must not share cache entries merely because both drivers call themselves
15
+ * `clang` or print the same upstream version. ctime catches an in-place tool
16
+ * replacement even when a package manager preserves its size and mtime. */
17
+ export declare function resolvedTool(command: string, env?: NodeJS.ProcessEnv): Promise<ResolvedTool | null>;
18
+ export declare function resolvedToolIdentity(command: string, env?: NodeJS.ProcessEnv): Promise<string | null>;
19
+ export declare const directCompilerSelections: Map<string, ResolvedTool>;
20
+ export declare function compilerDriverProbeKey(driver: Pick<CcDriver, "argv" | "targetArgs" | "target">, environmentFingerprint: string): string;
21
+ /** Persistent caches require an inspectable compiler driver. A general
22
+ * wrapper can branch on the real source/object paths or argument topology and
23
+ * inject inputs only into the final invocation; no synthetic metadata probe
24
+ * can safely represent that behavior. Accept direct Clang/Zig drivers (plus
25
+ * Apple's system shim) and conservatively keep wrapper-driven builds on the
26
+ * uncached path. */
27
+ export declare function compilerDriverSupportsPersistentCache(driver: Pick<CcDriver, "argv" | "targetArgs" | "target">, environmentFingerprint: string): Promise<boolean>;
28
+ /** Complete library archives may skip `ar`, so the selected archiver must be
29
+ * as inspectable as the compiler. `zig ar` is the already-validated Zig
30
+ * executable. For the host spelling, accept only the immutable platform
31
+ * tool locations; a PATH wrapper can branch on the real member topology or
32
+ * inject mutable inputs that `ar --version` cannot expose. Other archivers
33
+ * retain runtime-object reuse but rebuild the program member and archive. */
34
+ export declare function archiverSupportsPersistentCache(arArgv: readonly string[], driver: Pick<CcDriver, "argv">): Promise<boolean>;
35
+ export declare function ccVersion(argv: string[], environmentFingerprint?: string, fresh?: boolean): Promise<string>;
36
+ export declare function toolVersionOnce(argv: string[], environmentFingerprint?: string, fresh?: boolean): Promise<string>;
37
+ export {};