@scriptc/compiler 0.2.1 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (315) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +158 -31
  2. package/dist/backend/cycle-analysis.js +63 -50
  3. package/dist/backend/cycle-analysis.js.map +1 -1
  4. package/dist/backend/cycle-analysis.test.js +51 -0
  5. package/dist/backend/cycle-analysis.test.js.map +1 -1
  6. package/dist/backend/llvm/borrowed-receivers.d.ts +9 -0
  7. package/dist/backend/llvm/borrowed-receivers.js +58 -0
  8. package/dist/backend/llvm/borrowed-receivers.js.map +1 -0
  9. package/dist/backend/llvm/call-lifetimes.d.ts +20 -0
  10. package/dist/backend/llvm/call-lifetimes.js +179 -0
  11. package/dist/backend/llvm/call-lifetimes.js.map +1 -0
  12. package/dist/backend/llvm/call-lifetimes.test.d.ts +1 -0
  13. package/dist/backend/llvm/call-lifetimes.test.js +205 -0
  14. package/dist/backend/llvm/call-lifetimes.test.js.map +1 -0
  15. package/dist/backend/llvm/dyn.d.ts +5 -2
  16. package/dist/backend/llvm/dyn.js +163 -47
  17. package/dist/backend/llvm/dyn.js.map +1 -1
  18. package/dist/backend/llvm/emitter.d.ts +37 -1
  19. package/dist/backend/llvm/emitter.js +209 -21
  20. package/dist/backend/llvm/emitter.js.map +1 -1
  21. package/dist/backend/llvm/emitter.test.js +29 -2
  22. package/dist/backend/llvm/emitter.test.js.map +1 -1
  23. package/dist/backend/llvm/expr-async.js +1 -1
  24. package/dist/backend/llvm/expr-async.js.map +1 -1
  25. package/dist/backend/llvm/expr-calls.js +42 -5
  26. package/dist/backend/llvm/expr-calls.js.map +1 -1
  27. package/dist/backend/llvm/expr-containers.js +75 -13
  28. package/dist/backend/llvm/expr-containers.js.map +1 -1
  29. package/dist/backend/llvm/expr-dynamic.js +31 -6
  30. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  31. package/dist/backend/llvm/expr-primitives.js +6 -5
  32. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  33. package/dist/backend/llvm/expr-records.js +1 -1
  34. package/dist/backend/llvm/expr-records.js.map +1 -1
  35. package/dist/backend/llvm/expr-stream-bridges.js +75 -19
  36. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  37. package/dist/backend/llvm/expr-stream-callbacks.d.ts +2 -2
  38. package/dist/backend/llvm/expr-stream-callbacks.js +7 -57
  39. package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
  40. package/dist/backend/llvm/lib-dispatch.js +41 -3
  41. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  42. package/dist/backend/llvm/lib-filesystem.js +12 -9
  43. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  44. package/dist/backend/llvm/lib-shared.js +70 -2
  45. package/dist/backend/llvm/lib-shared.js.map +1 -1
  46. package/dist/backend/llvm/local-array-reads.d.ts +44 -0
  47. package/dist/backend/llvm/local-array-reads.js +313 -0
  48. package/dist/backend/llvm/local-array-reads.js.map +1 -0
  49. package/dist/backend/llvm/local-array-reads.test.d.ts +1 -0
  50. package/dist/backend/llvm/local-array-reads.test.js +446 -0
  51. package/dist/backend/llvm/local-array-reads.test.js.map +1 -0
  52. package/dist/backend/llvm/map-read-lifetimes.d.ts +36 -0
  53. package/dist/backend/llvm/map-read-lifetimes.js +128 -0
  54. package/dist/backend/llvm/map-read-lifetimes.js.map +1 -0
  55. package/dist/backend/llvm/map-read-lifetimes.test.d.ts +1 -0
  56. package/dist/backend/llvm/map-read-lifetimes.test.js +123 -0
  57. package/dist/backend/llvm/map-read-lifetimes.test.js.map +1 -0
  58. package/dist/backend/llvm/shapes.js +1 -0
  59. package/dist/backend/llvm/shapes.js.map +1 -1
  60. package/dist/backend/llvm/split.js +15 -5
  61. package/dist/backend/llvm/split.js.map +1 -1
  62. package/dist/backend/llvm/split.test.js +17 -0
  63. package/dist/backend/llvm/split.test.js.map +1 -1
  64. package/dist/backend/llvm/stack-unions.d.ts +20 -0
  65. package/dist/backend/llvm/stack-unions.js +61 -0
  66. package/dist/backend/llvm/stack-unions.js.map +1 -0
  67. package/dist/backend/llvm/stack-unions.test.d.ts +1 -0
  68. package/dist/backend/llvm/stack-unions.test.js +241 -0
  69. package/dist/backend/llvm/stack-unions.test.js.map +1 -0
  70. package/dist/backend/llvm/string-lifetimes.d.ts +12 -0
  71. package/dist/backend/llvm/string-lifetimes.js +70 -0
  72. package/dist/backend/llvm/string-lifetimes.js.map +1 -0
  73. package/dist/backend/llvm/string-lifetimes.test.d.ts +1 -0
  74. package/dist/backend/llvm/string-lifetimes.test.js +230 -0
  75. package/dist/backend/llvm/string-lifetimes.test.js.map +1 -0
  76. package/dist/backend/mangle.d.ts +2 -0
  77. package/dist/backend/mangle.js +4 -0
  78. package/dist/backend/mangle.js.map +1 -1
  79. package/dist/backend/may-throw.js +71 -29
  80. package/dist/backend/may-throw.js.map +1 -1
  81. package/dist/backend/may-throw.test.js +104 -1
  82. package/dist/backend/may-throw.test.js.map +1 -1
  83. package/dist/backend/native-codegen.d.ts +1 -1
  84. package/dist/backend/native-codegen.js +4 -3
  85. package/dist/backend/native-codegen.js.map +1 -1
  86. package/dist/backend/native-codegen.test.js +11 -0
  87. package/dist/backend/native-codegen.test.js.map +1 -1
  88. package/dist/backend/native-toolchain.d.ts +2 -2
  89. package/dist/backend/native-toolchain.js +2 -0
  90. package/dist/backend/native-toolchain.js.map +1 -1
  91. package/dist/backend/target-diagnostics.d.ts +5 -0
  92. package/dist/backend/target-diagnostics.js +72 -1
  93. package/dist/backend/target-diagnostics.js.map +1 -1
  94. package/dist/backend/target-diagnostics.test.d.ts +1 -0
  95. package/dist/backend/target-diagnostics.test.js +68 -0
  96. package/dist/backend/target-diagnostics.test.js.map +1 -0
  97. package/dist/coverage/surface-manifest.js +5 -3
  98. package/dist/coverage/surface-manifest.js.map +1 -1
  99. package/dist/executable/executable-cache.d.ts +7 -3
  100. package/dist/executable/executable-cache.js +47 -11
  101. package/dist/executable/executable-cache.js.map +1 -1
  102. package/dist/executable/executable-cache.test.js +109 -2
  103. package/dist/executable/executable-cache.test.js.map +1 -1
  104. package/dist/executable/prepare.js +2 -1
  105. package/dist/executable/prepare.js.map +1 -1
  106. package/dist/frontend/builtin-modules.d.ts +1 -1
  107. package/dist/frontend/builtin-modules.js +1 -1
  108. package/dist/frontend/builtin-modules.js.map +1 -1
  109. package/dist/frontend/function-completion.d.ts +6 -0
  110. package/dist/frontend/function-completion.js +50 -0
  111. package/dist/frontend/function-completion.js.map +1 -0
  112. package/dist/frontend/input-tracker.js +3 -3
  113. package/dist/frontend/input-tracker.js.map +1 -1
  114. package/dist/frontend/input-tracker.test.js +38 -2
  115. package/dist/frontend/input-tracker.test.js.map +1 -1
  116. package/dist/frontend/lowering/abstract-equality.js +5 -1
  117. package/dist/frontend/lowering/abstract-equality.js.map +1 -1
  118. package/dist/frontend/lowering/checked-iterable-spread.d.ts +4 -0
  119. package/dist/frontend/lowering/checked-iterable-spread.js +30 -0
  120. package/dist/frontend/lowering/checked-iterable-spread.js.map +1 -0
  121. package/dist/frontend/lowering/checked-promise-all.d.ts +5 -0
  122. package/dist/frontend/lowering/checked-promise-all.js +31 -0
  123. package/dist/frontend/lowering/checked-promise-all.js.map +1 -0
  124. package/dist/frontend/lowering/class-callbacks.d.ts +1 -1
  125. package/dist/frontend/lowering/class-callbacks.js +7 -6
  126. package/dist/frontend/lowering/class-callbacks.js.map +1 -1
  127. package/dist/frontend/lowering/class-construction.d.ts +2 -0
  128. package/dist/frontend/lowering/class-construction.js +34 -5
  129. package/dist/frontend/lowering/class-construction.js.map +1 -1
  130. package/dist/frontend/lowering/class-descriptors.d.ts +1 -1
  131. package/dist/frontend/lowering/class-descriptors.js +12 -5
  132. package/dist/frontend/lowering/class-descriptors.js.map +1 -1
  133. package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +25 -0
  134. package/dist/frontend/lowering/class-dynamic-dispatch.js +597 -78
  135. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  136. package/dist/frontend/lowering/class-dynamic-dispatch.test.js +64 -2
  137. package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
  138. package/dist/frontend/lowering/class-instance-constructor.d.ts +1 -1
  139. package/dist/frontend/lowering/class-instance-constructor.js +11 -41
  140. package/dist/frontend/lowering/class-instance-constructor.js.map +1 -1
  141. package/dist/frontend/lowering/class-method-values.d.ts +16 -0
  142. package/dist/frontend/lowering/class-method-values.js +60 -29
  143. package/dist/frontend/lowering/class-method-values.js.map +1 -1
  144. package/dist/frontend/lowering/class-prototypes.d.ts +5 -1
  145. package/dist/frontend/lowering/class-prototypes.js +69 -10
  146. package/dist/frontend/lowering/class-prototypes.js.map +1 -1
  147. package/dist/frontend/lowering/class-runtime-statics.d.ts +4 -4
  148. package/dist/frontend/lowering/class-runtime-statics.js +26 -8
  149. package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
  150. package/dist/frontend/lowering/class-static-data.d.ts +1 -0
  151. package/dist/frontend/lowering/class-static-data.js +4 -2
  152. package/dist/frontend/lowering/class-static-data.js.map +1 -1
  153. package/dist/frontend/lowering/collection-ingestion.d.ts +31 -0
  154. package/dist/frontend/lowering/collection-ingestion.js +215 -0
  155. package/dist/frontend/lowering/collection-ingestion.js.map +1 -0
  156. package/dist/frontend/lowering/containers/bytes.js +19 -4
  157. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  158. package/dist/frontend/lowering/containers/string-and-regexp.js +6 -1
  159. package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
  160. package/dist/frontend/lowering/deferred-module-initializers.d.ts +13 -0
  161. package/dist/frontend/lowering/deferred-module-initializers.js +410 -0
  162. package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -0
  163. package/dist/frontend/lowering/deferred-module-initializers.test.d.ts +1 -0
  164. package/dist/frontend/lowering/deferred-module-initializers.test.js +92 -0
  165. package/dist/frontend/lowering/deferred-module-initializers.test.js.map +1 -0
  166. package/dist/frontend/lowering/expressions/object-literals.js +31 -1
  167. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  168. package/dist/frontend/lowering/expressions/optional-chains.js +3 -3
  169. package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
  170. package/dist/frontend/lowering/import-meta.d.ts +10 -0
  171. package/dist/frontend/lowering/import-meta.js +52 -0
  172. package/dist/frontend/lowering/import-meta.js.map +1 -0
  173. package/dist/frontend/lowering/lower-assert.js +105 -41
  174. package/dist/frontend/lowering/lower-assert.js.map +1 -1
  175. package/dist/frontend/lowering/lower-builtin-values.d.ts +2 -0
  176. package/dist/frontend/lowering/lower-builtin-values.js +22 -1
  177. package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
  178. package/dist/frontend/lowering/lower-builtins.d.ts +7 -22
  179. package/dist/frontend/lowering/lower-builtins.js +439 -95
  180. package/dist/frontend/lowering/lower-builtins.js.map +1 -1
  181. package/dist/frontend/lowering/lower-calls.js +289 -76
  182. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  183. package/dist/frontend/lowering/lower-classes.d.ts +5 -0
  184. package/dist/frontend/lowering/lower-classes.js +443 -29
  185. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  186. package/dist/frontend/lowering/lower-containers.d.ts +6 -2
  187. package/dist/frontend/lowering/lower-containers.js +79 -20
  188. package/dist/frontend/lowering/lower-containers.js.map +1 -1
  189. package/dist/frontend/lowering/lower-exprs.d.ts +10 -6
  190. package/dist/frontend/lowering/lower-exprs.js +329 -170
  191. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  192. package/dist/frontend/lowering/lower-generators.js +5 -1
  193. package/dist/frontend/lowering/lower-generators.js.map +1 -1
  194. package/dist/frontend/lowering/lower-inspect.js +58 -1
  195. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  196. package/dist/frontend/lowering/lower-island.js +4 -0
  197. package/dist/frontend/lowering/lower-island.js.map +1 -1
  198. package/dist/frontend/lowering/lower-island.test.d.ts +1 -0
  199. package/dist/frontend/lowering/lower-island.test.js +51 -0
  200. package/dist/frontend/lowering/lower-island.test.js.map +1 -0
  201. package/dist/frontend/lowering/lower-modules.d.ts +1 -3
  202. package/dist/frontend/lowering/lower-modules.js +186 -82
  203. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  204. package/dist/frontend/lowering/lower-modules.test.js +69 -1
  205. package/dist/frontend/lowering/lower-modules.test.js.map +1 -1
  206. package/dist/frontend/lowering/lower-stmts.js +172 -103
  207. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  208. package/dist/frontend/lowering/lower-stmts.test.d.ts +1 -0
  209. package/dist/frontend/lowering/lower-stmts.test.js +77 -0
  210. package/dist/frontend/lowering/lower-stmts.test.js.map +1 -0
  211. package/dist/frontend/lowering/lower-stream.js +2 -0
  212. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  213. package/dist/frontend/lowering/lower-system-errors.d.ts +6 -0
  214. package/dist/frontend/lowering/lower-system-errors.js +29 -0
  215. package/dist/frontend/lowering/lower-system-errors.js.map +1 -0
  216. package/dist/frontend/lowering/lower-url.d.ts +2 -1
  217. package/dist/frontend/lowering/lower-url.js +32 -9
  218. package/dist/frontend/lowering/lower-url.js.map +1 -1
  219. package/dist/frontend/lowering/lowerer.d.ts +30 -12
  220. package/dist/frontend/lowering/lowerer.js +268 -49
  221. package/dist/frontend/lowering/lowerer.js.map +1 -1
  222. package/dist/frontend/lowering/lowerer.test.js +38 -0
  223. package/dist/frontend/lowering/lowerer.test.js.map +1 -1
  224. package/dist/frontend/lowering/module-namespace-elements.d.ts +7 -0
  225. package/dist/frontend/lowering/module-namespace-elements.js +54 -0
  226. package/dist/frontend/lowering/module-namespace-elements.js.map +1 -0
  227. package/dist/frontend/lowering/object-factory-new.d.ts +4 -3
  228. package/dist/frontend/lowering/object-factory-new.js +27 -14
  229. package/dist/frontend/lowering/object-factory-new.js.map +1 -1
  230. package/dist/frontend/lowering/surfaces.d.ts +3 -2
  231. package/dist/frontend/lowering/surfaces.js +93 -33
  232. package/dist/frontend/lowering/surfaces.js.map +1 -1
  233. package/dist/frontend/lowering/text-decoder-encoding.js +3 -0
  234. package/dist/frontend/lowering/text-decoder-encoding.js.map +1 -1
  235. package/dist/frontend/lowering/text-decoder-encoding.test.js +2 -1
  236. package/dist/frontend/lowering/text-decoder-encoding.test.js.map +1 -1
  237. package/dist/frontend/module-syntax.d.ts +1 -1
  238. package/dist/frontend/module-syntax.js +8 -1
  239. package/dist/frontend/module-syntax.js.map +1 -1
  240. package/dist/frontend/module-syntax.test.js +10 -0
  241. package/dist/frontend/module-syntax.test.js.map +1 -1
  242. package/dist/frontend/npm.d.ts +4 -0
  243. package/dist/frontend/npm.js +86 -33
  244. package/dist/frontend/npm.js.map +1 -1
  245. package/dist/frontend/npm.test.js +103 -0
  246. package/dist/frontend/npm.test.js.map +1 -1
  247. package/dist/frontend/pipeline-native.js +2 -1
  248. package/dist/frontend/pipeline-native.js.map +1 -1
  249. package/dist/frontend/program.js +4 -2
  250. package/dist/frontend/program.js.map +1 -1
  251. package/dist/frontend/services-node.js +3 -2
  252. package/dist/frontend/services-node.js.map +1 -1
  253. package/dist/frontend/services.d.ts +5 -1
  254. package/dist/frontend/services.js +9 -1
  255. package/dist/frontend/services.js.map +1 -1
  256. package/dist/frontend/services.test.js +21 -0
  257. package/dist/frontend/services.test.js.map +1 -1
  258. package/dist/frontend/ts7/ast-node.d.ts +2 -0
  259. package/dist/frontend/ts7/ast-node.js +30 -4
  260. package/dist/frontend/ts7/ast-node.js.map +1 -1
  261. package/dist/frontend/ts7/ast-node.test.js +60 -1
  262. package/dist/frontend/ts7/ast-node.test.js.map +1 -1
  263. package/dist/frontend/type-mapper.js +89 -14
  264. package/dist/frontend/type-mapper.js.map +1 -1
  265. package/dist/frontend/union-discriminants.js +22 -7
  266. package/dist/frontend/union-discriminants.js.map +1 -1
  267. package/dist/index.js +19 -12
  268. package/dist/index.js.map +1 -1
  269. package/dist/ir/analysis.js +1 -0
  270. package/dist/ir/analysis.js.map +1 -1
  271. package/dist/ir/integer-loops.d.ts +7 -0
  272. package/dist/ir/integer-loops.js +23 -0
  273. package/dist/ir/integer-loops.js.map +1 -1
  274. package/dist/ir/integer-loops.test.d.ts +1 -0
  275. package/dist/ir/integer-loops.test.js +41 -0
  276. package/dist/ir/integer-loops.test.js.map +1 -0
  277. package/dist/ir/ir.d.ts +44 -26
  278. package/dist/ir/ir.js +69 -11
  279. package/dist/ir/ir.js.map +1 -1
  280. package/dist/ir/ir.test.js +18 -0
  281. package/dist/ir/ir.test.js.map +1 -1
  282. package/dist/ir/serialize.js +21 -1
  283. package/dist/ir/serialize.js.map +1 -1
  284. package/dist/ir/serialize.test.js +21 -0
  285. package/dist/ir/serialize.test.js.map +1 -1
  286. package/dist/ir/traverse.d.ts +0 -3
  287. package/dist/ir/traverse.js +33 -20
  288. package/dist/ir/traverse.js.map +1 -1
  289. package/dist/ir/validate.js +216 -80
  290. package/dist/ir/validate.js.map +1 -1
  291. package/dist/ir/validate.test.js +244 -1
  292. package/dist/ir/validate.test.js.map +1 -1
  293. package/dist/library/compiler-self-identity.js +1 -1
  294. package/dist/library/compiler-self-identity.test.js +2 -2
  295. package/dist/library/compiler-self-identity.test.js.map +1 -1
  296. package/dist/library/fence-eval.js +9 -2
  297. package/dist/library/fence-eval.js.map +1 -1
  298. package/dist/library/fence-eval.test.d.ts +1 -0
  299. package/dist/library/fence-eval.test.js +21 -0
  300. package/dist/library/fence-eval.test.js.map +1 -0
  301. package/dist/library/int-infer.d.ts +2 -2
  302. package/dist/library/int-infer.js +10 -7
  303. package/dist/library/int-infer.js.map +1 -1
  304. package/dist/library/int-infer.test.js +44 -0
  305. package/dist/library/int-infer.test.js.map +1 -1
  306. package/dist/library/prepare.js +2 -1
  307. package/dist/library/prepare.js.map +1 -1
  308. package/dist/native/runtime-typescript.d.ts +4 -0
  309. package/dist/native/runtime-typescript.js +61 -0
  310. package/dist/native/runtime-typescript.js.map +1 -0
  311. package/dist/native/runtime-typescript.test.d.ts +1 -0
  312. package/dist/native/runtime-typescript.test.js +41 -0
  313. package/dist/native/runtime-typescript.test.js.map +1 -0
  314. package/package.json +20 -20
  315. package/surface-manifest.json +385 -29
@@ -201,6 +201,7 @@ declare var process: {
201
201
  umask(mask?: number): number;
202
202
  /* chdir(2) — failures throw Node's fs-shaped catchable error. */
203
203
  chdir(directory: string): void;
204
+ loadEnvFile(path?: string | URL | Uint8Array): void;
204
205
  /* The extra CLI arguments Node itself consumed (--expose-internals,
205
206
  * ...): a compiled binary consumed none, so this is always []. */
206
207
  readonly execArgv: string[];
@@ -1098,7 +1099,18 @@ declare module "node:fs" {
1098
1099
  export function chmodSync(path: string, mode: number): void;
1099
1100
  export function fchmodSync(fd: number, mode: number): void;
1100
1101
  export function fsyncSync(fd: number): void;
1101
- export function linkSync(existingPath: string, newPath: string): void;
1102
+ export function linkSync(existingPath: string | Uint8Array | URL, newPath: string | Uint8Array | URL): void;
1103
+ export function symlinkSync(target: string | Uint8Array | URL, path: string | Uint8Array | URL, type?: string | null): void;
1104
+ export function symlink(target: string | Uint8Array | URL, path: string | Uint8Array | URL, callback: (err: NodeJS.ErrnoException | null) => void): void;
1105
+ export function symlink(target: string | Uint8Array | URL, path: string | Uint8Array | URL, type: string | null | undefined, callback: (err: NodeJS.ErrnoException | null) => void): void;
1106
+ export function link(existingPath: string | Uint8Array | URL, newPath: string | Uint8Array | URL, callback: (err: NodeJS.ErrnoException | null) => void): void;
1107
+ export function readlink(path: string | Uint8Array | URL, callback: (err: NodeJS.ErrnoException | null, target: string) => void): void;
1108
+ export function readlink(path: string | Uint8Array | URL, options: "buffer" | { encoding: "buffer" }, callback: (err: NodeJS.ErrnoException | null, target: Buffer) => void): void;
1109
+ export function readlink(path: string | Uint8Array | URL, options: BufferEncoding | { encoding?: BufferEncoding | null } | null, callback: (err: NodeJS.ErrnoException | null, target: string) => void): void;
1110
+ export function readlink(path: string | Uint8Array | URL, options: string | { encoding?: string | null } | null, callback: (err: NodeJS.ErrnoException | null, target: string | Buffer) => void): void;
1111
+ export function readlinkSync(path: string | Uint8Array | URL, options: "buffer" | { encoding: "buffer" }): Buffer;
1112
+ export function readlinkSync(path: string | Uint8Array | URL, options?: BufferEncoding | { encoding?: BufferEncoding | null } | null): string;
1113
+ export function readlinkSync(path: string | Uint8Array | URL, options: string | { encoding?: string | null } | null): string | Buffer;
1102
1114
  export function chownSync(path: string, uid: number, gid: number): void;
1103
1115
  /* The 2-argument form only (Node's mode flags have no lowering). The
1104
1116
  * destination is created or truncated carrying the SOURCE's mode. */
@@ -1172,6 +1184,16 @@ declare module "node:fs" {
1172
1184
  export function openSync(path: string, flags: string): number;
1173
1185
  export function openSync(path: string, flags: number, mode?: number): number;
1174
1186
  export function closeSync(fd: number): void;
1187
+ export function fdatasyncSync(fd: number): void;
1188
+ export function ftruncateSync(fd: number, len?: number): void;
1189
+ export function utimesSync(path: string | Uint8Array | URL, atime: number | string | Date, mtime: number | string | Date): void;
1190
+ export function futimesSync(fd: number, atime: number | string | Date, mtime: number | string | Date): void;
1191
+ export function lutimesSync(path: string | Uint8Array | URL, atime: number | string | Date, mtime: number | string | Date): void;
1192
+ export function utimes(path: string | Uint8Array | URL, atime: number | string | Date, mtime: number | string | Date, callback: (err: NodeJS.ErrnoException | null) => void): void;
1193
+ export function futimes(fd: number, atime: number | string | Date, mtime: number | string | Date, callback: (err: NodeJS.ErrnoException | null) => void): void;
1194
+ export function lutimes(path: string | Uint8Array | URL, atime: number | string | Date, mtime: number | string | Date, callback: (err: NodeJS.ErrnoException | null) => void): void;
1195
+ export function readvSync(fd: number, buffers: Uint8Array[], position?: number | null): number;
1196
+ export function writevSync(fd: number, buffers: Uint8Array[], position?: number | null): number;
1175
1197
  /* Read into a caller buffer from the fd's current position when position
1176
1198
  * is omitted/null, or from a numeric byte position without advancing the
1177
1199
  * fd. Answers the byte count, 0 at EOF. */
@@ -1203,16 +1225,25 @@ declare module "node:fs" {
1203
1225
  }
1204
1226
  /* statfs(2)/statvfs(3) — the filesystem-capacity snapshot (the fields
1205
1227
  * Node's statfsSync reports; bavail × bsize is the free-space probe). */
1206
- export interface StatsFs {
1207
- readonly type: number;
1208
- readonly bsize: number;
1209
- readonly blocks: number;
1210
- readonly bfree: number;
1211
- readonly bavail: number;
1212
- readonly files: number;
1213
- readonly ffree: number;
1214
- }
1215
- export function statfsSync(path: string): StatsFs;
1228
+ export interface StatsFsBase<T> {
1229
+ type: T;
1230
+ bsize: T;
1231
+ blocks: T;
1232
+ bfree: T;
1233
+ bavail: T;
1234
+ files: T;
1235
+ ffree: T;
1236
+ }
1237
+ export interface StatsFs extends StatsFsBase<number> {}
1238
+ export interface BigIntStatsFs extends StatsFsBase<bigint> {}
1239
+ export interface StatFsOptions { bigint?: boolean; }
1240
+ export function statfsSync(path: string | Uint8Array | URL, options?: StatFsOptions & { bigint?: false }): StatsFs;
1241
+ export function statfsSync(path: string | Uint8Array | URL, options: StatFsOptions & { bigint: true }): BigIntStatsFs;
1242
+ export function statfsSync(path: string | Uint8Array | URL, options?: StatFsOptions): StatsFs | BigIntStatsFs;
1243
+ export function statfs(path: string | Uint8Array | URL, callback: (err: NodeJS.ErrnoException | null, stats: StatsFs) => void): void;
1244
+ export function statfs(path: string | Uint8Array | URL, options: (StatFsOptions & { bigint?: false }) | undefined, callback: (err: NodeJS.ErrnoException | null, stats: StatsFs) => void): void;
1245
+ export function statfs(path: string | Uint8Array | URL, options: StatFsOptions & { bigint: true }, callback: (err: NodeJS.ErrnoException | null, stats: BigIntStatsFs) => void): void;
1246
+ export function statfs(path: string | Uint8Array | URL, options: StatFsOptions | undefined, callback: (err: NodeJS.ErrnoException | null, stats: StatsFs | BigIntStatsFs) => void): void;
1216
1247
  /* fs.watch — the file-watching slice (scr_watch.c, kqueue EVFILT_VNODE):
1217
1248
  * "rename"/"change" events on ONE path, watcher.close() to stop. The
1218
1249
  * listener takes zero parameters or the eventType string (the filename
@@ -1265,9 +1296,32 @@ declare module "fs/promises" {
1265
1296
  bytesWritten: number;
1266
1297
  buffer: T;
1267
1298
  }
1299
+ export interface FileReadvResult<T extends Uint8Array[]> {
1300
+ bytesRead: number;
1301
+ buffers: T;
1302
+ }
1303
+ export interface FileWritevResult<T extends Uint8Array[]> {
1304
+ bytesWritten: number;
1305
+ buffers: T;
1306
+ }
1307
+ export interface FileReadOptions<T extends Uint8Array = Buffer> {
1308
+ buffer?: T;
1309
+ offset?: number | null;
1310
+ length?: number | null;
1311
+ position?: number | null;
1312
+ }
1268
1313
  export interface FileHandle extends AsyncDisposable {
1269
1314
  readonly fd: number;
1270
1315
  close(): Promise<void>;
1316
+ sync(): Promise<void>;
1317
+ datasync(): Promise<void>;
1318
+ truncate(len?: number): Promise<void>;
1319
+ chmod(mode: number): Promise<void>;
1320
+ utimes(atime: number | string | Date, mtime: number | string | Date): Promise<void>;
1321
+ readv<T extends Uint8Array[]>(buffers: T, position?: number | null): Promise<FileReadvResult<T>>;
1322
+ writev<T extends Uint8Array[]>(buffers: T, position?: number | null): Promise<FileWritevResult<T>>;
1323
+ read<T extends Uint8Array = Buffer>(options?: FileReadOptions<T> | null): Promise<FileReadResult<T>>;
1324
+ read<T extends Uint8Array>(buffer: T, options: Omit<FileReadOptions<T>, "buffer">): Promise<FileReadResult<T>>;
1271
1325
  read<T extends Uint8Array>(
1272
1326
  buffer: T,
1273
1327
  offset?: number | null,
@@ -1280,6 +1334,7 @@ declare module "fs/promises" {
1280
1334
  length?: number | null,
1281
1335
  position?: number | null,
1282
1336
  ): Promise<FileWriteResult<T>>;
1337
+ write<T extends Uint8Array>(buffer: T, options: Omit<FileReadOptions<T>, "buffer">): Promise<FileWriteResult<T>>;
1283
1338
  write(data: string, position?: number | null, encoding?: "utf8" | "utf-8" | null): Promise<FileWriteResult<string>>;
1284
1339
  readFile(options?: null): Promise<Buffer>;
1285
1340
  readFile(encoding: "utf8" | "utf-8"): Promise<string>;
@@ -1289,6 +1344,13 @@ declare module "fs/promises" {
1289
1344
  [Symbol.asyncDispose](): Promise<void>;
1290
1345
  }
1291
1346
  export function open(path: string, flags?: string, mode?: number): Promise<FileHandle>;
1347
+ export function link(existingPath: string | Uint8Array | URL, newPath: string | Uint8Array | URL): Promise<void>;
1348
+ export function symlink(target: string | Uint8Array | URL, path: string | Uint8Array | URL, type?: string | null): Promise<void>;
1349
+ export function readlink(path: string | Uint8Array | URL, options: "buffer" | { encoding: "buffer" }): Promise<Buffer>;
1350
+ export function readlink(path: string | Uint8Array | URL, options?: BufferEncoding | { encoding?: BufferEncoding | null } | null): Promise<string>;
1351
+ export function readlink(path: string | Uint8Array | URL, options: string | { encoding?: string | null } | null): Promise<string | Buffer>;
1352
+ export function utimes(path: string | Uint8Array | URL, atime: number | string | Date, mtime: number | string | Date): Promise<void>;
1353
+ export function lutimes(path: string | Uint8Array | URL, atime: number | string | Date, mtime: number | string | Date): Promise<void>;
1292
1354
  export function readFile(path: string, encoding: "utf8" | "utf-8"): Promise<string>;
1293
1355
  export function readFile(path: string): Promise<Buffer>;
1294
1356
  export function writeFile(
@@ -1310,6 +1372,9 @@ declare module "fs/promises" {
1310
1372
  ): Promise<import("node:fs").Dirent[]>;
1311
1373
  export function rm(path: string): Promise<void>;
1312
1374
  export function stat(path: string): Promise<import("node:fs").Stats>;
1375
+ export function statfs(path: string | Uint8Array | URL, options?: import("node:fs").StatFsOptions & { bigint?: false }): Promise<import("node:fs").StatsFs>;
1376
+ export function statfs(path: string | Uint8Array | URL, options: import("node:fs").StatFsOptions & { bigint: true }): Promise<import("node:fs").BigIntStatsFs>;
1377
+ export function statfs(path: string | Uint8Array | URL, options?: import("node:fs").StatFsOptions): Promise<import("node:fs").StatsFs | import("node:fs").BigIntStatsFs>;
1313
1378
  export function realpath(path: string): Promise<string>;
1314
1379
  export function lstat(path: string): Promise<import("node:fs").Stats>;
1315
1380
  export function unlink(path: string): Promise<void>;
@@ -1438,35 +1503,39 @@ declare module "node:os" {
1438
1503
  }
1439
1504
 
1440
1505
  /* The WHATWG URL class (a Node global; the es2023 lib doesn't declare it),
1441
- * typed as exactly the supported surface: construction from ONE absolute-
1442
- * URL string (invalid input throws a catchable TypeError, like Node), the
1506
+ * typed as exactly the supported surface: construction from an input and
1507
+ * optional base (invalid input throws a catchable TypeError, like Node), the
1443
1508
  * protocol/origin/username/pathname/href/host/hostname/port/search/hash getters, searchParams (the
1444
1509
  * LIVE query view — mutations through it re-serialize into the URL, so
1445
1510
  * href reflects immediately; every read answers the same object, Node's
1446
- * caching), and toString() (the href serialization).
1447
- * URL values have no SETTERS — the component fields are read-only (the
1448
- * one supported mutation path is searchParams) — and participate in
1511
+ * caching), toString()/toJSON() (href serialization), and the non-throwing
1512
+ * canParse()/parse() factories (conversion errors still propagate).
1513
+ * URL components except origin and searchParams support assignment;
1514
+ * the live searchParams view also mutates the query. URL values participate in
1449
1515
  * unions (URL | undefined). The parser covers the common CLI schemes
1450
1516
  * exactly (http/https/ws/wss/ftp/file authority URLs, opaque paths like
1451
1517
  * data: and mailto:) — divergences from the full WHATWG algorithm are
1452
1518
  * documented in SEMANTICS.md. */
1453
1519
  interface URL {
1454
- readonly protocol: string;
1520
+ protocol: string;
1455
1521
  readonly origin: string;
1456
- readonly username: string;
1457
- readonly password: string;
1458
- readonly pathname: string;
1459
- readonly href: string;
1460
- readonly host: string;
1461
- readonly hostname: string;
1462
- readonly port: string;
1463
- readonly search: string;
1464
- readonly hash: string;
1522
+ username: string;
1523
+ password: string;
1524
+ pathname: string;
1525
+ href: string;
1526
+ host: string;
1527
+ hostname: string;
1528
+ port: string;
1529
+ search: string;
1530
+ hash: string;
1465
1531
  readonly searchParams: URLSearchParams;
1466
1532
  toString(): string;
1533
+ toJSON(): string;
1467
1534
  }
1468
1535
  declare var URL: {
1469
1536
  new (input: string | { toString: () => string }, base?: string | URL): URL;
1537
+ canParse(input: string | URL, base?: string | URL): boolean;
1538
+ parse(input: string | URL, base?: string | URL): URL | null;
1470
1539
  };
1471
1540
 
1472
1541
  /* URLSearchParams — the WHATWG application/x-www-form-urlencoded list.
@@ -1499,14 +1568,19 @@ declare var URLSearchParams: {
1499
1568
  * slashes, non-empty host); pathToFileURL resolves the path and percent-
1500
1569
  * encodes it into a file: URL. */
1501
1570
  declare module "url" {
1502
- export function fileURLToPath(url: string | URL): string;
1571
+ export type URL = globalThis.URL;
1572
+ export type URLSearchParams = globalThis.URLSearchParams;
1573
+ export const URL: typeof globalThis.URL;
1574
+ export const URLSearchParams: typeof globalThis.URLSearchParams;
1575
+ export function fileURLToPath(url: string | URL, options?: { windows?: boolean }): string;
1576
+ export function fileURLToPathBuffer(url: string | URL, options?: { windows?: boolean }): Buffer;
1503
1577
  export function pathToFileURL(path: string, options?: { windows?: boolean }): URL;
1504
1578
  }
1505
1579
  declare module "node:url" {
1506
1580
  export * from "url";
1507
1581
  }
1508
1582
 
1509
- /* node:crypto: the static hashing/MAC/random/PBKDF2 utility slice. */
1583
+ /* node:crypto: the static hashing/MAC/random/key-derivation utility slice. */
1510
1584
  declare module "crypto" {
1511
1585
  export function randomUUID(): string;
1512
1586
  export function randomBytes(size: number): Buffer;
@@ -1531,6 +1605,21 @@ declare module "crypto" {
1531
1605
  export function pbkdf2Sync(password: string | Uint8Array, salt: string | Uint8Array, iterations: number, keylen: number, digest: string): Buffer;
1532
1606
  export function pbkdf2(password: string | Uint8Array, salt: string | Uint8Array, iterations: number, keylen: number, digest: string, callback: (error: Error | null, derivedKey: Buffer) => void): void;
1533
1607
  export function randomBytes(size: number, callback: (error: Error | null, buffer: Buffer) => void): void;
1608
+ export type BinaryLike = string | ArrayBuffer | ArrayBufferView;
1609
+ export interface ScryptOptions {
1610
+ N?: number;
1611
+ r?: number;
1612
+ p?: number;
1613
+ cost?: number;
1614
+ blockSize?: number;
1615
+ parallelization?: number;
1616
+ maxmem?: number;
1617
+ }
1618
+ export function scryptSync(password: BinaryLike, salt: BinaryLike, keylen: number, options?: ScryptOptions): Buffer;
1619
+ export function scrypt(password: BinaryLike, salt: BinaryLike, keylen: number, callback: (error: Error | null, derivedKey: Buffer) => void): void;
1620
+ export function scrypt(password: BinaryLike, salt: BinaryLike, keylen: number, options: ScryptOptions, callback: (error: Error | null, derivedKey: Buffer) => void): void;
1621
+ export function hkdfSync(digest: string, ikm: BinaryLike, salt: BinaryLike, info: BinaryLike, keylen: number): ArrayBuffer;
1622
+ export function hkdf(digest: string, ikm: BinaryLike, salt: BinaryLike, info: BinaryLike, keylen: number, callback: (error: Error | null, derivedKey: ArrayBuffer) => void): void;
1534
1623
  /* The lowered X509Certificate surface is the data-record slice:
1535
1624
  * fingerprint (the SHA-1 of the DER, uppercase colon-separated) and
1536
1625
  * the validFrom/validTo validity window (Node's ASN1_TIME_print
@@ -1832,6 +1921,15 @@ declare module "node:child_process" {
1832
1921
  * the latter resolves the callback's data argument. Other targets and bare
1833
1922
  * promisify values fence per site. */
1834
1923
  declare module "util" {
1924
+ export * as types from "util/types";
1925
+ export function getSystemErrorName(err: number): string;
1926
+ export function getSystemErrorMessage(err: number): string;
1927
+ export function getSystemErrorMap(): Map<number, [string, string]>;
1928
+ export function stripVTControlCharacters(str: string): string;
1929
+ export function toUSVString(string: string): string;
1930
+ export function isDeepStrictEqual(val1: unknown, val2: unknown, skipPrototype?: boolean): boolean;
1931
+ export function styleText(format: string | readonly string[], text: string, options?: { validateStream?: boolean; stream?: unknown }): string;
1932
+ export function parseEnv(content: string): { [key: string]: string | undefined };
1835
1933
  export type TextEncoder = globalThis.TextEncoder;
1836
1934
  export type TextDecoder = globalThis.TextDecoder;
1837
1935
  export var TextEncoder: typeof globalThis.TextEncoder;
@@ -1915,10 +2013,34 @@ declare module "node:util" {
1915
2013
  export * from "util";
1916
2014
  }
1917
2015
 
1918
- /* node:util/types — the type probes. isModuleNamespaceObject answers a
1919
- * REAL question about compiled modules and fences until it lowers; the
1920
- * rest of Node's surface is undeclared (honest type errors). */
2016
+ /* node:util/types — native runtime brands. Other forms retain their
2017
+ * per-member lowering boundaries. */
1921
2018
  declare module "util/types" {
2019
+ export function isAnyArrayBuffer(value: unknown): boolean;
2020
+ export function isArrayBuffer(value: unknown): value is ArrayBuffer;
2021
+ export function isArrayBufferView(value: unknown): value is ArrayBufferView;
2022
+ export function isDataView(value: unknown): value is DataView;
2023
+ export function isTypedArray(value: unknown): boolean;
2024
+ export function isUint8Array(value: unknown): value is Uint8Array;
2025
+ export function isUint8ClampedArray(value: unknown): value is Uint8ClampedArray;
2026
+ export function isUint16Array(value: unknown): value is Uint16Array;
2027
+ export function isUint32Array(value: unknown): value is Uint32Array;
2028
+ export function isInt8Array(value: unknown): value is Int8Array;
2029
+ export function isInt16Array(value: unknown): value is Int16Array;
2030
+ export function isInt32Array(value: unknown): value is Int32Array;
2031
+ export function isFloat32Array(value: unknown): value is Float32Array;
2032
+ export function isFloat64Array(value: unknown): value is Float64Array;
2033
+ export function isMap(value: unknown): value is Map<unknown, unknown>;
2034
+ export function isSet(value: unknown): value is Set<unknown>;
2035
+ export function isWeakMap(value: unknown): value is WeakMap<object, unknown>;
2036
+ export function isWeakSet(value: unknown): value is WeakSet<object>;
2037
+ export function isRegExp(value: unknown): value is RegExp;
2038
+ export function isNativeError(value: unknown): value is Error;
2039
+ export function isPromise(value: unknown): value is Promise<unknown>;
2040
+ export function isProxy(value: unknown): boolean;
2041
+ export function isAsyncFunction(value: unknown): boolean;
2042
+ export function isGeneratorFunction(value: unknown): boolean;
2043
+ export function isGeneratorObject(value: unknown): boolean;
1922
2044
  export function isModuleNamespaceObject(value: unknown): boolean;
1923
2045
  }
1924
2046
  declare module "node:util/types" {
@@ -2039,6 +2161,7 @@ declare module "assert" {
2039
2161
  function notDeepEqual(actual: unknown, expected: unknown, message?: string): void;
2040
2162
  function fail(message?: string): never;
2041
2163
  function throws(fn: () => unknown, expected?: unknown, message?: string): void;
2164
+ function doesNotThrow(fn: () => unknown, expected?: unknown, message?: string): void;
2042
2165
  function rejects(fn: (() => Promise<unknown>) | Promise<unknown>, expected?: unknown, message?: string): Promise<void>;
2043
2166
  function doesNotReject(fn: (() => Promise<unknown>) | Promise<unknown>, expected?: unknown, message?: string): Promise<void>;
2044
2167
  function match(value: string, regExp: RegExp, message?: string): void;
@@ -2069,6 +2192,7 @@ declare module "assert/strict" {
2069
2192
  function notDeepStrictEqual(actual: unknown, expected: unknown, message?: string): void;
2070
2193
  function fail(message?: string): never;
2071
2194
  function throws(fn: () => unknown, expected?: unknown, message?: string): void;
2195
+ function doesNotThrow(fn: () => unknown, expected?: unknown, message?: string): void;
2072
2196
  function rejects(fn: (() => Promise<unknown>) | Promise<unknown>, expected?: unknown, message?: string): Promise<void>;
2073
2197
  function doesNotReject(fn: (() => Promise<unknown>) | Promise<unknown>, expected?: unknown, message?: string): Promise<void>;
2074
2198
  function match(value: string, regExp: RegExp, message?: string): void;
@@ -3397,6 +3521,9 @@ declare module "node:worker_threads" {
3397
3521
  * third-party .d.ts files that `import { Buffer } from "node:buffer"` —
3398
3522
  * file-entry-cache in a typed-JS source graph — typecheck). */
3399
3523
  declare module "buffer" {
3524
+ export function isAscii(input: ArrayBuffer | ArrayBufferView): boolean;
3525
+ export function isUtf8(input: ArrayBuffer | ArrayBufferView): boolean;
3526
+ export function transcode(source: Uint8Array, fromEncoding: string, toEncoding: string): Buffer;
3400
3527
  export function atob(data: string): string;
3401
3528
  export function btoa(data: string): string;
3402
3529
  export const kMaxLength: number;
@@ -10,8 +10,6 @@ import { funcOf, mapOf, RUNTIME_EMITTER_CLASS, STRING, VOID } from "../ir/ir.js"
10
10
  * header, so header presence must be uniform across an extends tree): a
11
11
  * unit is cycle-capable iff ANY member is — every backend uses the same grouping. */
12
12
  export function computeTraced(mod) {
13
- const tracedShapes = new Set();
14
- const tracedUnions = new Set();
15
13
  const classes = mod.classes ?? [];
16
14
  const shapeDefs = [
17
15
  ...classes.map((c) => ({
@@ -29,80 +27,95 @@ export function computeTraced(mod) {
29
27
  : r.fields,
30
28
  })),
31
29
  ];
32
- for (const s of shapeDefs)
33
- tracedShapes.add(s.key);
34
- for (const u of mod.unions ?? [])
35
- tracedUnions.add(u.id);
36
30
  // Hierarchy units: root lookup over the base links (classes with a base
37
31
  // or a subclass — and the runtime emitter class — form units under their
38
32
  // root; standalone classes and records stay singleton units).
39
33
  const baseOf = new Map(classes.map((c) => [c.name, c.base ?? null]));
40
- const hasChildren = new Set();
41
- for (const cls of classes)
42
- if (cls.base !== undefined)
43
- hasChildren.add(cls.base);
34
+ const roots = new Map();
44
35
  const rootOf = (name) => {
45
36
  let cur = name;
46
- for (let b = baseOf.get(cur); b !== null && b !== undefined; b = baseOf.get(cur))
47
- cur = b;
37
+ const path = [];
38
+ while (!roots.has(cur)) {
39
+ path.push(cur);
40
+ const base = baseOf.get(cur);
41
+ if (base === null || base === undefined)
42
+ break;
43
+ cur = base;
44
+ }
45
+ cur = roots.get(cur) ?? cur;
46
+ for (const member of path)
47
+ roots.set(member, cur);
48
48
  return cur;
49
49
  };
50
- const unitKeyOf = (key) => {
51
- if (!key.startsWith("object:"))
52
- return key;
53
- const name = key.slice("object:".length);
54
- const inHierarchy = typeof baseOf.get(name) === "string" || hasChildren.has(name) || name === RUNTIME_EMITTER_CLASS;
55
- return inHierarchy ? `object:${rootOf(name)}` : key;
56
- };
50
+ const capability = () => ({ intrinsic: false, dependencies: new Set(), dependents: [], remaining: 0 });
57
51
  const units = new Map();
52
+ const shapes = new Map();
53
+ const unions = new Map((mod.unions ?? []).map((u) => [u.id, capability()]));
58
54
  for (const s of shapeDefs) {
59
- const unit = unitKeyOf(s.key);
60
- let members = units.get(unit);
61
- if (!members)
62
- units.set(unit, (members = []));
63
- members.push(s);
55
+ const key = s.key.startsWith("object:") ? `object:${rootOf(s.key.slice("object:".length))}` : s.key;
56
+ let unit = units.get(key);
57
+ if (!unit)
58
+ units.set(key, (unit = capability()));
59
+ shapes.set(s.key, unit);
64
60
  }
65
- const cycleCapable = (t) => {
61
+ // Each field/arm is an OR of intrinsic capability and referenced units.
62
+ // Flatten collections into these edges; repeated references count once.
63
+ const addType = (unit, t) => {
64
+ if (unit.intrinsic)
65
+ return;
66
66
  switch (t.kind) {
67
67
  case "func":
68
68
  case "dyn":
69
69
  case "classval":
70
70
  case "promise":
71
71
  case "caught":
72
- return true;
72
+ unit.intrinsic = true;
73
+ unit.dependencies.clear();
74
+ break;
73
75
  case "object":
74
- return tracedShapes.has(`object:${t.className}`);
75
76
  case "record":
76
- return tracedShapes.has(`record:${t.shapeId}`);
77
- case "union":
78
- return tracedUnions.has(t.unionId);
77
+ case "union": {
78
+ const dependency = t.kind === "union" ? unions.get(t.unionId)
79
+ : shapes.get(t.kind === "object" ? `object:${t.className}` : `record:${t.shapeId}`);
80
+ if (dependency)
81
+ unit.dependencies.add(dependency);
82
+ break;
83
+ }
79
84
  case "map":
80
- return cycleCapable(t.key) || cycleCapable(t.value);
85
+ addType(unit, t.key);
86
+ addType(unit, t.value);
87
+ break;
81
88
  case "set":
82
89
  case "array":
83
- return cycleCapable(t.elem);
84
- default:
85
- return false;
90
+ addType(unit, t.elem);
91
+ break;
86
92
  }
87
93
  };
88
- let shrunk = true;
89
- while (shrunk) {
90
- shrunk = false;
91
- for (const members of units.values()) {
92
- if (tracedShapes.has(members[0].key) &&
93
- !members.some((s) => s.fields.some((f) => cycleCapable(f.type)))) {
94
- for (const s of members)
95
- tracedShapes.delete(s.key);
96
- shrunk = true;
97
- }
98
- }
99
- for (const u of mod.unions ?? []) {
100
- if (tracedUnions.has(u.id) && !u.arms.some(cycleCapable)) {
101
- tracedUnions.delete(u.id);
102
- shrunk = true;
103
- }
94
+ for (const s of shapeDefs)
95
+ for (const field of s.fields)
96
+ addType(shapes.get(s.key), field.type);
97
+ for (const u of mod.unions ?? [])
98
+ for (const arm of u.arms)
99
+ addType(unions.get(u.id), arm);
100
+ const pending = [];
101
+ for (const unit of [...units.values(), ...unions.values()]) {
102
+ unit.remaining = unit.dependencies.size;
103
+ for (const dependency of unit.dependencies)
104
+ dependency.dependents.push(unit);
105
+ if (!unit.intrinsic && unit.remaining === 0)
106
+ pending.push(unit);
107
+ }
108
+ // Peel incapable leaves. Units in cycles retain a dependency, and units
109
+ // containing intrinsic references never enter the removal queue.
110
+ for (let i = 0; i < pending.length; i++) {
111
+ for (const dependent of pending[i].dependents) {
112
+ if (--dependent.remaining === 0 && !dependent.intrinsic)
113
+ pending.push(dependent);
104
114
  }
105
115
  }
116
+ const retained = (unit) => unit.intrinsic || unit.remaining > 0;
117
+ const tracedShapes = new Set([...shapes].filter(([, unit]) => retained(unit)).map(([key]) => key));
118
+ const tracedUnions = new Set([...unions].filter(([, unit]) => retained(unit)).map(([id]) => id));
106
119
  return { shapes: tracedShapes, unions: tracedUnions };
107
120
  }
108
121
  //# sourceMappingURL=cycle-analysis.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cycle-analysis.js","sourceRoot":"","sources":["../../src/backend/cycle-analysis.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cycle-analysis.js","sourceRoot":"","sources":["../../src/backend/cycle-analysis.ts"],"names":[],"mappings":"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"}
@@ -121,4 +121,55 @@ test("checked values seed tracing through records and collections", () => {
121
121
  mod.records = [shape("value", [DYN]), shape("list", [arrayOf(DYN)]), shape("set", [setOf(DYN)]), shape("map", [mapOf(DYN, F64)])];
122
122
  check(mod, ["record:value", "record:list", "record:set", "record:map"]);
123
123
  });
124
+ test("removes a long alternating shape/union chain regardless of definition order", () => {
125
+ const mod = module();
126
+ const size = 6000;
127
+ mod.records = Array.from({ length: size }, (_, i) => shape(`r${i}`, [
128
+ arrayOf({ kind: "union", unionId: `u${i}` }),
129
+ mapOf({ kind: "union", unionId: `u${i}` }, { kind: "union", unionId: `u${i}` }),
130
+ ]));
131
+ mod.unions = Array.from({ length: size }, (_, i) => ({ id: `u${i}`, arms: [i === size - 1 ? F64 : ref(`r${i + 1}`), STRING] }));
132
+ check(mod, []);
133
+ mod.records.reverse();
134
+ mod.unions.reverse();
135
+ check(mod, []);
136
+ });
137
+ test("removing one dependency keeps other branches, cycles, and intrinsic references", () => {
138
+ const mod = module();
139
+ mod.records = [
140
+ shape("outer", [mapOf(ref("leaf"), ref("cycle"))]),
141
+ shape("cycle", [ref("cycle"), ref("leaf")]),
142
+ shape("leaf", [F64]),
143
+ shape("intrinsic", [ref("leaf"), { kind: "caught" }]),
144
+ shape("pruned", [mapOf(ref("leaf"), arrayOf(ref("leaf")))]),
145
+ ];
146
+ check(mod, ["record:outer", "record:cycle", "record:intrinsic"]);
147
+ });
148
+ test("hierarchies and unions participate in the same dependency graph", () => {
149
+ const mod = module();
150
+ mod.classes = [
151
+ { name: "Child", base: "Base", fields: [{ name: "next", type: { kind: "union", unionId: "link" } }], loc },
152
+ { name: "Sibling", base: "Base", fields: [], loc },
153
+ { name: "Base", fields: [], loc },
154
+ ];
155
+ mod.unions = [{ id: "link", arms: [{ kind: "object", className: "Sibling" }, F64] }];
156
+ check(mod, ["object:Child", "object:Sibling", "object:Base"], ["link"]);
157
+ mod.unions[0].arms = [F64, STRING];
158
+ check(mod, []);
159
+ });
160
+ test("local class captures retain tracing even when the class has no fields", () => {
161
+ const mod = module();
162
+ mod.classes = [{ name: "Local", localCaptures: [], fields: [], loc }];
163
+ check(mod, ["object:Local"]);
164
+ });
165
+ test("resolves a deep class hierarchy without recursive root traversal", () => {
166
+ const mod = module();
167
+ const size = 6000;
168
+ mod.classes = Array.from({ length: size }, (_, i) => ({
169
+ name: `C${i}`, ...(i === size - 1 ? {} : { base: `C${i + 1}` }), fields: [], loc,
170
+ }));
171
+ check(mod, []);
172
+ mod.classes[0].fields = [{ name: "callback", type: funcOf([], VOID) }];
173
+ check(mod, mod.classes.map((c) => `object:${c.name}`));
174
+ });
124
175
  //# sourceMappingURL=cycle-analysis.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cycle-analysis.test.js","sourceRoot":"","sources":["../../src/backend/cycle-analysis.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cycle-analysis.test.js","sourceRoot":"","sources":["../../src/backend/cycle-analysis.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { type IrExpr } from "../../ir/ir.js";
2
+ import type { LlvmEmitterContext, LlValue } from "./expr-context.js";
3
+ /** The lowering of a scalar compound field assignment snapshots a receiver,
4
+ * the old field, the RHS and the result. Borrow that receiver only when the
5
+ * entire sequence cannot invalidate its owner. Preserve all snapshots and
6
+ * evaluation order; in particular an effectful RHS still owns the receiver. */
7
+ export declare function emitBorrowedFieldSequence(host: LlvmEmitterContext, e: IrExpr & {
8
+ kind: "seqExpr";
9
+ }): LlValue | null;