@scriptc/compiler 0.3.1 → 0.3.2

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 (280) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +342 -16
  2. package/dist/backend/executable-features.js +1 -0
  3. package/dist/backend/executable-features.js.map +1 -1
  4. package/dist/backend/literals.d.ts +7 -0
  5. package/dist/backend/literals.js +32 -0
  6. package/dist/backend/literals.js.map +1 -1
  7. package/dist/backend/literals.test.js +17 -1
  8. package/dist/backend/literals.test.js.map +1 -1
  9. package/dist/backend/llvm/alloc.d.ts +15 -4
  10. package/dist/backend/llvm/alloc.js +39 -15
  11. package/dist/backend/llvm/alloc.js.map +1 -1
  12. package/dist/backend/llvm/alloc.test.js +15 -1
  13. package/dist/backend/llvm/alloc.test.js.map +1 -1
  14. package/dist/backend/llvm/appended-array-literals.d.ts +2 -0
  15. package/dist/backend/llvm/appended-array-literals.js +109 -0
  16. package/dist/backend/llvm/appended-array-literals.js.map +1 -0
  17. package/dist/backend/llvm/appended-array-literals.test.d.ts +1 -0
  18. package/dist/backend/llvm/appended-array-literals.test.js +90 -0
  19. package/dist/backend/llvm/appended-array-literals.test.js.map +1 -0
  20. package/dist/backend/llvm/call-lifetimes.d.ts +4 -1
  21. package/dist/backend/llvm/call-lifetimes.js +51 -3
  22. package/dist/backend/llvm/call-lifetimes.js.map +1 -1
  23. package/dist/backend/llvm/classes.js +10 -2
  24. package/dist/backend/llvm/classes.js.map +1 -1
  25. package/dist/backend/llvm/classes.test.js +2 -2
  26. package/dist/backend/llvm/dense-array-access.js +17 -12
  27. package/dist/backend/llvm/dense-array-access.js.map +1 -1
  28. package/dist/backend/llvm/dense-array-access.test.js +15 -2
  29. package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
  30. package/dist/backend/llvm/dyn.d.ts +2 -0
  31. package/dist/backend/llvm/dyn.js +11 -2
  32. package/dist/backend/llvm/dyn.js.map +1 -1
  33. package/dist/backend/llvm/emitter.d.ts +43 -2
  34. package/dist/backend/llvm/emitter.js +306 -32
  35. package/dist/backend/llvm/emitter.js.map +1 -1
  36. package/dist/backend/llvm/expr-async.js +122 -6
  37. package/dist/backend/llvm/expr-async.js.map +1 -1
  38. package/dist/backend/llvm/expr-callbacks.d.ts +8 -0
  39. package/dist/backend/llvm/expr-callbacks.js +81 -1
  40. package/dist/backend/llvm/expr-callbacks.js.map +1 -1
  41. package/dist/backend/llvm/expr-calls.d.ts +12 -1
  42. package/dist/backend/llvm/expr-calls.js +126 -54
  43. package/dist/backend/llvm/expr-calls.js.map +1 -1
  44. package/dist/backend/llvm/expr-containers.d.ts +7 -0
  45. package/dist/backend/llvm/expr-containers.js +38 -7
  46. package/dist/backend/llvm/expr-containers.js.map +1 -1
  47. package/dist/backend/llvm/expr-context.d.ts +2 -0
  48. package/dist/backend/llvm/expr-control.d.ts +8 -0
  49. package/dist/backend/llvm/expr-control.js +103 -69
  50. package/dist/backend/llvm/expr-control.js.map +1 -1
  51. package/dist/backend/llvm/expr-dynamic.js +2 -2
  52. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  53. package/dist/backend/llvm/expr-primitives.d.ts +7 -0
  54. package/dist/backend/llvm/expr-primitives.js +30 -26
  55. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  56. package/dist/backend/llvm/expr-records.js +11 -1
  57. package/dist/backend/llvm/expr-records.js.map +1 -1
  58. package/dist/backend/llvm/expr-stream-bridges.d.ts +8 -0
  59. package/dist/backend/llvm/expr-stream-bridges.js +77 -8
  60. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  61. package/dist/backend/llvm/expr-stream-bridges.test.js +49 -1
  62. package/dist/backend/llvm/expr-stream-bridges.test.js.map +1 -1
  63. package/dist/backend/llvm/int32-abi.d.ts +18 -2
  64. package/dist/backend/llvm/int32-abi.js +23 -2
  65. package/dist/backend/llvm/int32-abi.js.map +1 -1
  66. package/dist/backend/llvm/int32-abi.test.js +75 -1
  67. package/dist/backend/llvm/int32-abi.test.js.map +1 -1
  68. package/dist/backend/llvm/lib-dispatch.js +7 -0
  69. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  70. package/dist/backend/llvm/lib-filesystem.js +58 -0
  71. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  72. package/dist/backend/llvm/lib-shared.js +76 -9
  73. package/dist/backend/llvm/lib-shared.js.map +1 -1
  74. package/dist/backend/llvm/local-array-reads.js +5 -3
  75. package/dist/backend/llvm/local-array-reads.js.map +1 -1
  76. package/dist/backend/llvm/local-union-storage.d.ts +24 -2
  77. package/dist/backend/llvm/local-union-storage.js +127 -12
  78. package/dist/backend/llvm/local-union-storage.js.map +1 -1
  79. package/dist/backend/llvm/local-union-storage.test.js +106 -1
  80. package/dist/backend/llvm/local-union-storage.test.js.map +1 -1
  81. package/dist/backend/llvm/record-results.d.ts +26 -0
  82. package/dist/backend/llvm/record-results.js +252 -0
  83. package/dist/backend/llvm/record-results.js.map +1 -0
  84. package/dist/backend/llvm/reference-effects.js +2 -0
  85. package/dist/backend/llvm/reference-effects.js.map +1 -1
  86. package/dist/backend/llvm/reference-writes.js +15 -9
  87. package/dist/backend/llvm/reference-writes.js.map +1 -1
  88. package/dist/backend/llvm/regions.d.ts +67 -0
  89. package/dist/backend/llvm/regions.js +309 -0
  90. package/dist/backend/llvm/regions.js.map +1 -0
  91. package/dist/backend/llvm/regions.test.d.ts +1 -0
  92. package/dist/backend/llvm/regions.test.js +173 -0
  93. package/dist/backend/llvm/regions.test.js.map +1 -0
  94. package/dist/backend/llvm/shapes.d.ts +34 -7
  95. package/dist/backend/llvm/shapes.js +31 -16
  96. package/dist/backend/llvm/shapes.js.map +1 -1
  97. package/dist/backend/llvm/shapes.test.js +7 -6
  98. package/dist/backend/llvm/shapes.test.js.map +1 -1
  99. package/dist/backend/llvm/split-loops.js +1 -1
  100. package/dist/backend/llvm/split-loops.js.map +1 -1
  101. package/dist/backend/llvm/stack-objects.d.ts +29 -0
  102. package/dist/backend/llvm/stack-objects.js +130 -0
  103. package/dist/backend/llvm/stack-objects.js.map +1 -0
  104. package/dist/backend/llvm/stack-objects.test.d.ts +1 -0
  105. package/dist/backend/llvm/stack-objects.test.js +252 -0
  106. package/dist/backend/llvm/stack-objects.test.js.map +1 -0
  107. package/dist/backend/llvm/string-reads.d.ts +4 -1
  108. package/dist/backend/llvm/string-reads.js +89 -9
  109. package/dist/backend/llvm/string-reads.js.map +1 -1
  110. package/dist/backend/llvm/switch-dispatch.js +5 -4
  111. package/dist/backend/llvm/switch-dispatch.js.map +1 -1
  112. package/dist/backend/llvm/walkers.d.ts +2 -0
  113. package/dist/backend/llvm/walkers.js +4 -2
  114. package/dist/backend/llvm/walkers.js.map +1 -1
  115. package/dist/backend/may-throw.js +1 -0
  116. package/dist/backend/may-throw.js.map +1 -1
  117. package/dist/backend/native/contracts.d.ts +5 -0
  118. package/dist/backend/native/executable.js +16 -1
  119. package/dist/backend/native/executable.js.map +1 -1
  120. package/dist/backend/native/library.js +1 -1
  121. package/dist/backend/native/library.js.map +1 -1
  122. package/dist/backend/native/runtime-inputs.d.ts +1 -1
  123. package/dist/backend/native/runtime-inputs.js +2 -0
  124. package/dist/backend/native/runtime-inputs.js.map +1 -1
  125. package/dist/backend/native-link-info-core.d.ts +1 -0
  126. package/dist/backend/native-link-info-core.js.map +1 -1
  127. package/dist/backend/runtime-abi.d.ts +2 -2
  128. package/dist/backend/runtime-abi.js +2 -2
  129. package/dist/backend/runtime-pack-core.d.ts +1 -0
  130. package/dist/backend/runtime-pack-core.js +1 -0
  131. package/dist/backend/runtime-pack-core.js.map +1 -1
  132. package/dist/backend/runtime-pack-targets.test.js +1 -1
  133. package/dist/backend/runtime-pack.test.js +1 -1
  134. package/dist/backend/target-diagnostics.js +14 -0
  135. package/dist/backend/target-diagnostics.js.map +1 -1
  136. package/dist/backend/target-diagnostics.test.js +13 -0
  137. package/dist/backend/target-diagnostics.test.js.map +1 -1
  138. package/dist/executable/executable-cache.d.ts +1 -0
  139. package/dist/executable/executable-cache.js.map +1 -1
  140. package/dist/frontend/experimental-import.d.ts +12 -0
  141. package/dist/frontend/experimental-import.js +63 -0
  142. package/dist/frontend/experimental-import.js.map +1 -0
  143. package/dist/frontend/lowering/builtin-calls.d.ts +6 -1
  144. package/dist/frontend/lowering/builtin-calls.js +36 -0
  145. package/dist/frontend/lowering/builtin-calls.js.map +1 -1
  146. package/dist/frontend/lowering/builtins/console.d.ts +16 -6
  147. package/dist/frontend/lowering/builtins/console.js +33 -9
  148. package/dist/frontend/lowering/builtins/console.js.map +1 -1
  149. package/dist/frontend/lowering/builtins/errors.js +20 -0
  150. package/dist/frontend/lowering/builtins/errors.js.map +1 -1
  151. package/dist/frontend/lowering/builtins/json.d.ts +2 -2
  152. package/dist/frontend/lowering/builtins/json.js +13 -4
  153. package/dist/frontend/lowering/builtins/json.js.map +1 -1
  154. package/dist/frontend/lowering/builtins/module-calls.js +16 -1
  155. package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
  156. package/dist/frontend/lowering/builtins/numbers.d.ts +1 -0
  157. package/dist/frontend/lowering/builtins/numbers.js +17 -0
  158. package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
  159. package/dist/frontend/lowering/builtins/operating-system.d.ts +18 -0
  160. package/dist/frontend/lowering/builtins/operating-system.js +361 -1
  161. package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
  162. package/dist/frontend/lowering/builtins/process.js +15 -3
  163. package/dist/frontend/lowering/builtins/process.js.map +1 -1
  164. package/dist/frontend/lowering/builtins/promises.js +109 -2
  165. package/dist/frontend/lowering/builtins/promises.js.map +1 -1
  166. package/dist/frontend/lowering/builtins/text-codecs.d.ts +3 -4
  167. package/dist/frontend/lowering/builtins/text-codecs.js +3 -4
  168. package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
  169. package/dist/frontend/lowering/checked-promise-all.d.ts +10 -3
  170. package/dist/frontend/lowering/checked-promise-all.js +52 -6
  171. package/dist/frontend/lowering/checked-promise-all.js.map +1 -1
  172. package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +6 -3
  173. package/dist/frontend/lowering/class-dynamic-dispatch.js +54 -31
  174. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  175. package/dist/frontend/lowering/containers/array-callbacks.js +34 -4
  176. package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
  177. package/dist/frontend/lowering/containers/array-construction.js +8 -4
  178. package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
  179. package/dist/frontend/lowering/containers/array-pipelines.js +1 -1
  180. package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
  181. package/dist/frontend/lowering/containers/string-and-regexp.js +91 -0
  182. package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
  183. package/dist/frontend/lowering/cycle-initialization.d.ts +18 -2
  184. package/dist/frontend/lowering/cycle-initialization.js +166 -12
  185. package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
  186. package/dist/frontend/lowering/deferred-module-initializers.js +7 -2
  187. package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
  188. package/dist/frontend/lowering/deferred-module-initializers.test.js +28 -0
  189. package/dist/frontend/lowering/deferred-module-initializers.test.js.map +1 -1
  190. package/dist/frontend/lowering/expressions/object-literals.js +5 -56
  191. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  192. package/dist/frontend/lowering/generator-delegation.d.ts +8 -0
  193. package/dist/frontend/lowering/generator-delegation.js +231 -10
  194. package/dist/frontend/lowering/generator-delegation.js.map +1 -1
  195. package/dist/frontend/lowering/lifetime-regions.d.ts +11 -0
  196. package/dist/frontend/lowering/lifetime-regions.js +216 -0
  197. package/dist/frontend/lowering/lifetime-regions.js.map +1 -0
  198. package/dist/frontend/lowering/lower-array-sort.d.ts +28 -2
  199. package/dist/frontend/lowering/lower-array-sort.js +100 -3
  200. package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
  201. package/dist/frontend/lowering/lower-array-sort.test.js +99 -2
  202. package/dist/frontend/lowering/lower-array-sort.test.js.map +1 -1
  203. package/dist/frontend/lowering/lower-calls.js +72 -102
  204. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  205. package/dist/frontend/lowering/lower-classes.d.ts +4 -3
  206. package/dist/frontend/lowering/lower-classes.js +116 -2
  207. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  208. package/dist/frontend/lowering/lower-console.d.ts +13 -0
  209. package/dist/frontend/lowering/lower-console.js +460 -4
  210. package/dist/frontend/lowering/lower-console.js.map +1 -1
  211. package/dist/frontend/lowering/lower-event-emitter.d.ts +6 -0
  212. package/dist/frontend/lowering/lower-event-emitter.js +124 -38
  213. package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
  214. package/dist/frontend/lowering/lower-exprs.js +137 -22
  215. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  216. package/dist/frontend/lowering/lower-generators.d.ts +15 -7
  217. package/dist/frontend/lowering/lower-generators.js +183 -99
  218. package/dist/frontend/lowering/lower-generators.js.map +1 -1
  219. package/dist/frontend/lowering/lower-inspect.d.ts +8 -1
  220. package/dist/frontend/lowering/lower-inspect.js +119 -18
  221. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  222. package/dist/frontend/lowering/lower-modules.js +20 -14
  223. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  224. package/dist/frontend/lowering/lower-stdlib.d.ts +4 -0
  225. package/dist/frontend/lowering/lower-stdlib.js +35 -1
  226. package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
  227. package/dist/frontend/lowering/lower-stmts.js +66 -11
  228. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  229. package/dist/frontend/lowering/lowerer.d.ts +22 -1
  230. package/dist/frontend/lowering/lowerer.js +116 -8
  231. package/dist/frontend/lowering/lowerer.js.map +1 -1
  232. package/dist/frontend/lowering/regex-span-reads.d.ts +12 -0
  233. package/dist/frontend/lowering/regex-span-reads.js +164 -0
  234. package/dist/frontend/lowering/regex-span-reads.js.map +1 -0
  235. package/dist/frontend/lowering/surfaces.js +112 -10
  236. package/dist/frontend/lowering/surfaces.js.map +1 -1
  237. package/dist/frontend/lowering/var-hoisting.d.ts +3 -0
  238. package/dist/frontend/lowering/var-hoisting.js +261 -0
  239. package/dist/frontend/lowering/var-hoisting.js.map +1 -0
  240. package/dist/frontend/pipeline.js +5 -3
  241. package/dist/frontend/pipeline.js.map +1 -1
  242. package/dist/frontend/program.d.ts +3 -2
  243. package/dist/frontend/program.js +23 -5
  244. package/dist/frontend/program.js.map +1 -1
  245. package/dist/frontend/program.test.js +13 -0
  246. package/dist/frontend/program.test.js.map +1 -1
  247. package/dist/frontend/type-mapper.d.ts +13 -1
  248. package/dist/frontend/type-mapper.js +146 -13
  249. package/dist/frontend/type-mapper.js.map +1 -1
  250. package/dist/index.js +1 -0
  251. package/dist/index.js.map +1 -1
  252. package/dist/ir/builtin-effects.js +29 -2
  253. package/dist/ir/builtin-effects.js.map +1 -1
  254. package/dist/ir/builtin-signatures.d.ts +1 -1
  255. package/dist/ir/builtin-signatures.js +145 -15
  256. package/dist/ir/builtin-signatures.js.map +1 -1
  257. package/dist/ir/function-references.test.js +1 -0
  258. package/dist/ir/function-references.test.js.map +1 -1
  259. package/dist/ir/int32-slots.js +1 -0
  260. package/dist/ir/int32-slots.js.map +1 -1
  261. package/dist/ir/intrinsic-signatures.js +2 -0
  262. package/dist/ir/intrinsic-signatures.js.map +1 -1
  263. package/dist/ir/ir.d.ts +65 -20
  264. package/dist/ir/ir.js +5 -0
  265. package/dist/ir/ir.js.map +1 -1
  266. package/dist/ir/runtime-features.d.ts +1 -0
  267. package/dist/ir/runtime-features.js +35 -1
  268. package/dist/ir/runtime-features.js.map +1 -1
  269. package/dist/ir/scalar-records.js +1 -2
  270. package/dist/ir/scalar-records.js.map +1 -1
  271. package/dist/ir/validate.js +150 -25
  272. package/dist/ir/validate.js.map +1 -1
  273. package/dist/ir/validate.test.js +65 -0
  274. package/dist/ir/validate.test.js.map +1 -1
  275. package/dist/library/ir-policy.js +1 -0
  276. package/dist/library/ir-policy.js.map +1 -1
  277. package/dist/native/sanitizer.test.js +1 -0
  278. package/dist/native/sanitizer.test.js.map +1 -1
  279. package/package.json +20 -20
  280. package/surface-manifest.json +159 -1
@@ -17,6 +17,16 @@ export const LIB_FN_SIGS = defineLibFnSignatures({
17
17
  "fetch.responseNew": { argTypes: [DYN, DYN], result: DYN },
18
18
  "fetch.input": { argTypes: [DYN, DYN], result: { kind: "promise", inner: DYN } },
19
19
  "abort.controllerNew": { argTypes: [], result: DYN },
20
+ /** EventTarget / Event / CustomEvent construction (scr_event_target.c):
21
+ * the Event constructors take the argument vector as one dyn array and
22
+ * throw Node's validation errors; `event.is` is `v instanceof Event`
23
+ * (kind 0), `CustomEvent` (1), `EventTarget` (2). addAbortListener
24
+ * answers the disposer (the Disposable's [Symbol.dispose]). */
25
+ "event.targetNew": { argTypes: [], result: DYN },
26
+ "event.new": { argTypes: [DYN], result: DYN },
27
+ "event.customNew": { argTypes: [DYN], result: DYN },
28
+ "event.is": { argTypes: [DYN, F64], result: BOOL },
29
+ "events.addAbortListener": { argTypes: [DYN, DYN], result: DYN },
20
30
  "abort.timeout": { argTypes: [DYN], result: DYN },
21
31
  "abort.now": { argTypes: [DYN], result: DYN },
22
32
  "abort.any": { argTypes: [DYN], result: DYN },
@@ -102,6 +112,9 @@ export const LIB_FN_SIGS = defineLibFnSignatures({
102
112
  * own-member presence, ARR answers 'length'/a valid index — exactly
103
113
  * the literal-key dynHasKey path. Proxy has traps may throw. */
104
114
  "dyn.hasKey": { argTypes: [DYN, STRING], result: BOOL },
115
+ /** The `in` operator with a runtime string key: dyn.hasKey plus the
116
+ * members inherited from builtin and compiled class prototypes. */
117
+ "dyn.in": { argTypes: [DYN, STRING], result: BOOL },
105
118
  "dyn.freeze": { argTypes: [DYN], result: DYN },
106
119
  "dyn.isFrozen": { argTypes: [DYN], result: BOOL },
107
120
  "dyn.nativeSetNew": { argTypes: [DYN], result: DYN },
@@ -128,7 +141,14 @@ export const LIB_FN_SIGS = defineLibFnSignatures({
128
141
  "dyn.defineProperty": { argTypes: [DYN, DYN, DYN], result: DYN },
129
142
  "dyn.getOwnPropertyDescriptor": { argTypes: [DYN, DYN], result: DYN },
130
143
  "dyn.arrayProtoCall": { argTypes: [DYN, STRING, DYN], result: DYN },
131
- "dyn.promiseAll": { argTypes: [DYN], result: { kind: "promise", inner: DYN } },
144
+ /** Promise.all / Promise.allSettled / Promise.any over a spread
145
+ * checked-dynamic array: the values, the settled-record array, or the
146
+ * first fulfillment (AggregateError once every entry rejects).
147
+ * Thenable elements adopt; the second argument reads a program class
148
+ * instance's `then` (the compiled property dispatch). */
149
+ "dyn.promiseAll": { argTypes: [DYN, DYN], result: { kind: "promise", inner: DYN } },
150
+ "dyn.promiseAllSettled": { argTypes: [DYN, DYN], result: { kind: "promise", inner: DYN } },
151
+ "dyn.promiseAny": { argTypes: [DYN, DYN], result: { kind: "promise", inner: DYN } },
132
152
  /** Bare `typeof v` on a dyn value AS A STRING (arg: the dyn value,
133
153
  * borrowed; result: an owned string) — the dyn kind's JS answer:
134
154
  * undefined→"undefined", null/object/array/bytes→"object" (JS's oldest
@@ -342,6 +362,21 @@ export const LIB_FN_SIGS = defineLibFnSignatures({
342
362
  "path.win32IsAbsolute": { argTypes: [STRING], result: BOOL },
343
363
  "path.win32Relative": { argTypes: [STRING, STRING], result: STRING },
344
364
  "path.win32ToNamespacedPath": { argTypes: [STRING], result: STRING },
365
+ /** path.parse: [root, dir, base, ext, name] as a fresh string[] (the
366
+ * frontend builds the ParsedPath record); path.format: the pathObject's
367
+ * root, dir, base, name and ext with undefined spelled "". */
368
+ "path.parse": { argTypes: [STRING], result: arrayOf(STRING) },
369
+ "path.win32Parse": { argTypes: [STRING], result: arrayOf(STRING) },
370
+ "path.format": { argTypes: [STRING, STRING, STRING, STRING, STRING], result: STRING },
371
+ "path.win32Format": { argTypes: [STRING, STRING, STRING, STRING, STRING], result: STRING },
372
+ /** path.matchesGlob(path, pattern): Node's matchGlobPattern over its
373
+ * bundled minimatch (scr_glob.c). Both families match case-insensitively
374
+ * on macOS and Windows hosts like Node's; win32 also accepts either
375
+ * separator. Throws TypeError for a pattern over 64 Ki code units,
376
+ * RangeError for a brace sequence too long to expand, and SyntaxError
377
+ * when a segment's regex is invalid under the u flag. */
378
+ "path.matchesGlob": { argTypes: [STRING, STRING], result: BOOL },
379
+ "path.win32MatchesGlob": { argTypes: [STRING, STRING], result: BOOL },
345
380
  /** node:os: homedir is $HOME else getpwuid(3); tmpdir is Node's env
346
381
  * cascade ($TMPDIR/$TMP/$TEMP else /tmp, one trailing slash trimmed).
347
382
  * os.platform() lowers to process.platform — one implementation. */
@@ -357,6 +392,29 @@ export const LIB_FN_SIGS = defineLibFnSignatures({
357
392
  "os.totalmem": { argTypes: [], result: F64 },
358
393
  /** os.availableParallelism(): CPUs the process may use (libuv's answer), >= 1. Never throws. */
359
394
  "os.availableParallelism": { argTypes: [], result: F64 },
395
+ /** os.hostname/machine/version/endianness, freemem, uptime and loadavg:
396
+ * libuv's answers (uname's machine and version fields, gethostname,
397
+ * "LE"/"BE", free memory in bytes, uptime in seconds, the three load
398
+ * averages). Fresh results; never throw. */
399
+ "os.hostname": { argTypes: [], result: STRING },
400
+ "os.machine": { argTypes: [], result: STRING },
401
+ "os.version": { argTypes: [], result: STRING },
402
+ "os.endianness": { argTypes: [], result: STRING },
403
+ "os.freemem": { argTypes: [], result: F64 },
404
+ "os.uptime": { argTypes: [], result: F64 },
405
+ "os.loadavg": { argTypes: [], result: arrayOf(F64) },
406
+ /** os.getPriority(pid): validateInt32 (RangeError ERR_OUT_OF_RANGE),
407
+ * then the priority; a failure throws Node's SystemError. */
408
+ "os.getPriority": { argTypes: [F64], result: F64 },
409
+ /** os.cpus(): cpusTake snapshots every CPU and answers the count;
410
+ * cpusModel(i) and cpusField(i, k) (k: 0 speed, 1 user, 2 nice, 3 sys,
411
+ * 4 idle, 5 irq) read the snapshot. Never throw. */
412
+ "os.cpusTake": { argTypes: [], result: F64 },
413
+ "os.cpusModel": { argTypes: [F64], result: STRING },
414
+ "os.cpusField": { argTypes: [F64, F64], result: F64 },
415
+ /** os.constants: the per-thread null-prototype constants object (dlopen,
416
+ * errno, signals, priority, UV_UDP_REUSEADDR). Never throws. */
417
+ "os.constants": { argTypes: [], result: DYN },
360
418
  /** umask(2): arg < 0 reads without setting (umask has no read-only form
361
419
  * — set 0, restore); otherwise sets and answers the PREVIOUS mask.
362
420
  * Never throws. */
@@ -479,6 +537,9 @@ export const LIB_FN_SIGS = defineLibFnSignatures({
479
537
  * Latin-script text (scr_str_locale_compare). Never throws. */
480
538
  "str.localeCompare": { argTypes: [STRING, STRING], result: F64 },
481
539
  "str.replaceLiteral": { argTypes: [STRING, STRING, STRING, BOOL], result: STRING },
540
+ // (subject, characters, NUL-separated replacement texts): the fused
541
+ // chain of global one-character replacements.
542
+ "str.replaceChars": { argTypes: [STRING, STRING, STRING], result: STRING },
482
543
  /* ToNumber(string) — ECMA-262 7.1.4.1 StringToNumber (scr_string.c):
483
544
  * trim the JS StrWhiteSpace set, empty/whitespace-only → +0, then the
484
545
  * whole span must be one StrNumericLiteral — signed decimal (Infinity
@@ -494,8 +555,8 @@ export const LIB_FN_SIGS = defineLibFnSignatures({
494
555
  * str.encodeUriComponent percent-encodes every byte outside the
495
556
  * unreserved component set (ALPHA/DIGIT/- _ . ! ~ * ' ( )) as uppercase
496
557
  * %XX — the spec's per-code-point UTF-8 encoding IS a byte scan here —
497
- * and never throws (the spec's URIError case is an unpaired surrogate,
498
- * which cannot exist in well-formed UTF-8). str.decodeUriComponent
558
+ * and THROWS the spec's URIError ("URI malformed") on a lone surrogate.
559
+ * str.decodeUriComponent
499
560
  * decodes %XX escapes bytewise (raw non-escape bytes copy through) and
500
561
  * requires the escaped bytes to form strictly valid UTF-8 (overlong
501
562
  * forms, surrogate code points, and >U+10FFFF refused, per UTF8-decode
@@ -523,7 +584,7 @@ export const LIB_FN_SIGS = defineLibFnSignatures({
523
584
  "str.decodeUriComponent": { argTypes: [STRING], result: STRING },
524
585
  "str.decodeUri": { argTypes: [STRING], result: STRING },
525
586
  /** encodeURI: the same Encode() keeping the reserved set and '#'
526
- * unescaped — total like the component encoder. Borrow; result +1. */
587
+ * unescaped — throwing like the component encoder. Borrow; result +1. */
527
588
  "str.encodeUri": { argTypes: [STRING], result: STRING },
528
589
  /** RegExp.escape (ES2025): per-code-point EncodeForRegExpEscape —
529
590
  * leading ASCII alphanumeric hex-escapes, syntax characters and '/'
@@ -700,9 +761,8 @@ export const LIB_FN_SIGS = defineLibFnSignatures({
700
761
  /** node:querystring (scr_qs.c — link-gated by moduleUsesQs; NOT
701
762
  * URLSearchParams: the legacy codec's escaping and '+' rules differ).
702
763
  * qs.escape is Node's qsEscape, which encodes exactly the component
703
- * unreserved set — it emits the always-linked
704
- * scr_str_encode_uri_component, so escape-only programs never pull the
705
- * unit. qs.unescape is Node's qsUnescape: strict decodeURIComponent
764
+ * unreserved set — it emits the always-linked scr_qs_escape, so
765
+ * escape-only programs never pull the unit. qs.unescape is Node's qsUnescape: strict decodeURIComponent
706
766
  * first, the lenient legacy unescapeBuffer fallback on failure (never
707
767
  * throws). qs.parse takes (str, sep, eq, maxKeys) — the frontend
708
768
  * completes omitted/null sep/eq to "&"/"=" and the omitted maxKeys
@@ -717,7 +777,8 @@ export const LIB_FN_SIGS = defineLibFnSignatures({
717
777
  * through) — Node's encodeStringified rules run in the runtime, so
718
778
  * arrays expand to repeated keys and null/undefined/nested objects are
719
779
  * empty values. Custom encoder/decoder options fence at compile time.
720
- * All borrow; string results +1; none throw. */
780
+ * All borrow; string results +1; escape and stringify throw URIError
781
+ * [ERR_INVALID_URI] on a lone surrogate. */
721
782
  "qs.parse": { argTypes: [STRING, STRING, STRING, F64], result: VOID },
722
783
  "qs.stringify": { argTypes: [DYN, STRING, STRING], result: STRING },
723
784
  "qs.escape": { argTypes: [STRING], result: STRING },
@@ -735,6 +796,13 @@ export const LIB_FN_SIGS = defineLibFnSignatures({
735
796
  "util.toUSVString": { argTypes: [DYN], result: STRING },
736
797
  "util.isDeepStrictEqual": { argTypes: [DYN, DYN, DYN], result: BOOL },
737
798
  "util.styleText": { argTypes: [DYN, DYN, DYN], result: STRING },
799
+ /** util.inherits/deprecate/callbackify/debuglog over checked-dynamic
800
+ * arguments (scr_util_callable.c). The function results are native dyn
801
+ * wrappers; call sites with a static function type check them back. */
802
+ "util.inherits": { argTypes: [DYN, DYN], result: VOID },
803
+ "util.deprecate": { argTypes: [DYN, DYN, DYN, DYN], result: DYN },
804
+ "util.callbackify": { argTypes: [DYN], result: DYN },
805
+ "util.debuglog": { argTypes: [DYN, DYN], result: DYN },
738
806
  "util.typeIs": { argTypes: [DYN, STRING], result: BOOL },
739
807
  "util.typeValue": { argTypes: [DYN, STRING], result: DYN },
740
808
  /** fs.statSync → a Stats value (may throw, like the other sync fs
@@ -2455,6 +2523,32 @@ export const LIB_FN_SIGS = defineLibFnSignatures({
2455
2523
  "console.new": { argTypes: [F64, F64, BOOL], result: DYN },
2456
2524
  "console.bind": { argTypes: [DYN, F64, null], result: VOID },
2457
2525
  "console.write": { argTypes: [DYN, STRING, BOOL], result: VOID },
2526
+ /** The global console's remaining members (scr_console_native.c; the
2527
+ * group indentation itself lives with the writers in scr_console.c).
2528
+ * Arguments are borrowed; string results are owned. noop is the
2529
+ * emitter-dropped tail of a lowering whose effects sit in statements.
2530
+ * label is `${label}` over a defaulted label (undefined -> "default";
2531
+ * a Symbol throws Node's TypeError). count prints "label: n".
2532
+ * countReset answers the warning text for an unknown (or non-string)
2533
+ * label, "" otherwise. time answers the duplicate-label warning text
2534
+ * or ""; timeEnd/timeLog answer Node's formatted elapsed time, or ""
2535
+ * for an unknown label (timeEnd drops the timer). group adds (+1) or
2536
+ * removes (-1) one two-space indentation step. clear writes the
2537
+ * cursor-home and erase-down sequences when stdout is a terminal.
2538
+ * table renders and prints Node's table for a dyn value (undefined
2539
+ * properties = all). dirDyn is console.dir's inspect of a dyn value
2540
+ * (custom inspection off: a Buffer anywhere inside throws the fence). */
2541
+ "console.noop": { argTypes: [], result: VOID },
2542
+ "console.label": { argTypes: [DYN], result: STRING },
2543
+ "console.count": { argTypes: [STRING], result: VOID },
2544
+ "console.countReset": { argTypes: [DYN], result: STRING },
2545
+ "console.time": { argTypes: [STRING], result: STRING },
2546
+ "console.timeEnd": { argTypes: [STRING], result: STRING },
2547
+ "console.timeLog": { argTypes: [STRING], result: STRING },
2548
+ "console.group": { argTypes: [F64], result: VOID },
2549
+ "console.clear": { argTypes: [], result: VOID },
2550
+ "console.table": { argTypes: [DYN, DYN], result: VOID },
2551
+ "console.dirDyn": { argTypes: [DYN, F64], result: STRING },
2458
2552
  /** A native reference to the global object; known names retain value fences. */
2459
2553
  "global.native": { argTypes: [arrayOf(STRING)], result: DYN },
2460
2554
  // `X.name` through a class value: the arg is a program-dependent
@@ -2512,6 +2606,18 @@ export const LIB_FN_SIGS = defineLibFnSignatures({
2512
2606
  * list throws DataCloneError, nothing static is transferable). Result
2513
2607
  * +1 %DOMException. */
2514
2608
  "error.domClone": { argTypes: [null, DYN], result: VOID },
2609
+ /** `new AggregateError(errors, message?, options?)` (scr_json.c), in
2610
+ * spec order: newAggregate installs the message and cause (both dyn,
2611
+ * borrowed — the message conversion can throw) and returns an owned
2612
+ * %AggregateError; aggregateSetErrors then stores the iterated list
2613
+ * (borrowed receiver, the dyn array borrowed and retained).
2614
+ * aggregateErrors reads the list (+1, the same array every read). */
2615
+ "error.newAggregate": {
2616
+ argTypes: [DYN, DYN],
2617
+ result: { kind: "object", className: "%AggregateError" },
2618
+ },
2619
+ "error.aggregateSetErrors": { argTypes: [null, DYN], result: VOID },
2620
+ "error.aggregateErrors": { argTypes: [null], result: DYN },
2515
2621
  /** `d instanceof TypeError` (and the other BUILTIN error classes) on a
2516
2622
  * checked-dynamic value (scr_json.c): the from_error cache holds the
2517
2623
  * dyn↔error identity edge, so the test resolves the runtime error and
@@ -2569,6 +2675,12 @@ export const LIB_FN_SIGS = defineLibFnSignatures({
2569
2675
  * ("Cannot convert undefined or null to object"). */
2570
2676
  "dyn.objKeys": { argTypes: [DYN], result: DYN },
2571
2677
  "dyn.forInKeys": { argTypes: [DYN], result: DYN },
2678
+ "dyn.forInKeyStrings": { argTypes: [DYN], result: arrayOf(STRING) },
2679
+ "dyn.forInStable": { argTypes: [DYN], result: BOOL },
2680
+ "dyn.objKeyStrings": { argTypes: [DYN], result: arrayOf(STRING) },
2681
+ /** Object.entries as a native [string, any][] (VOID: the tuple row's
2682
+ * shape is program-dependent; the validator checks it). */
2683
+ "dyn.objEntryPairs": { argTypes: [DYN], result: VOID },
2572
2684
  "dyn.hasOwn": { argTypes: [DYN, STRING], result: BOOL },
2573
2685
  "dyn.propertyIsEnumerable": { argTypes: [DYN, STRING], result: BOOL },
2574
2686
  "dyn.assign": { argTypes: [DYN, DYN], result: DYN },
@@ -2658,6 +2770,12 @@ export const LIB_FN_SIGS = defineLibFnSignatures({
2658
2770
  "regex.resetLastIndex": { argTypes: [REGEX, F64], result: VOID },
2659
2771
  "regex.newChecked": { argTypes: [DYN, DYN], result: REGEX },
2660
2772
  "regex.replaceCallback": { argTypes: [STRING, REGEX, DYN, BOOL], result: STRING },
2773
+ // Reads of capture args[1] of an execSpans/matchGroups result:
2774
+ // `capture === args[2]`, Number(capture) and parseInt(capture,
2775
+ // args[2]). Borrowed; never throw.
2776
+ "regex.groupEquals": { argTypes: [arrayOf(STRING), F64, STRING], result: BOOL },
2777
+ "regex.groupNumber": { argTypes: [arrayOf(STRING), F64], result: F64 },
2778
+ "regex.groupParseInt": { argTypes: [arrayOf(STRING), F64, F64], result: F64 },
2661
2779
  // node:events EventEmitter: receivers are emitter-hierarchy objects and
2662
2780
  // the chaining forms (on/off/removeAll/setMax) return the receiver's
2663
2781
  // own class — program-dependent object types, checked in the libCall
@@ -2718,6 +2836,9 @@ export const LIB_FN_SIGS = defineLibFnSignatures({
2718
2836
  "emitter.getMax": { argTypes: [null], result: F64 },
2719
2837
  "emitter.setDefaultMax": { argTypes: [F64], result: VOID },
2720
2838
  "emitter.getDefaultMax": { argTypes: [], result: F64 },
2839
+ /** The events.errorMonitor event key: an immortal string the runtime
2840
+ * registry matches by identity, so no string event name reaches it. */
2841
+ "emitter.errorMonitor": { argTypes: [], result: STRING },
2721
2842
  // node:stream: receivers are stream-hierarchy objects and several
2722
2843
  // results are program-dependent (the receiver's class, unions) — the
2723
2844
  // libCall case owns those checks. The constructors and a few methods
@@ -3159,14 +3280,23 @@ export const LIB_FN_SIGS = defineLibFnSignatures({
3159
3280
  * Node's payload. */
3160
3281
  "process.onRejectionHandled": { argTypes: [DYN, BOOL], result: VOID },
3161
3282
  "process.offRejectionHandled": { argTypes: [DYN], result: VOID },
3162
- /** process warnings (scr_lib.c): onWarning/offWarning register dyn
3163
- * listeners; emitWarning applies Node's full argument grammar over the
3164
- * call's dyn argument vector (ERR_INVALID_ARG_TYPE TypeErrors — MAY
3165
- * THROW; a listener throw propagates too) and always prints Node's
3166
- * stderr report. Emission is synchronous (SEMANTICS.md). */
3283
+ /** process warnings (scr_async_dyn.c): onWarning/offWarning register
3284
+ * dyn listeners; emitWarning applies Node's full argument grammar over
3285
+ * the call's dyn argument vector (ERR_INVALID_ARG_TYPE TypeErrors — MAY
3286
+ * THROW) and emits on the next tick, like Node: Node's stderr report,
3287
+ * then the listeners. */
3167
3288
  "process.onWarning": { argTypes: [DYN], result: VOID },
3168
3289
  "process.offWarning": { argTypes: [DYN], result: VOID },
3169
3290
  "process.emitWarning": { argTypes: [DYN], result: VOID },
3291
+ /** A Warning-typed process warning with this message (the console
3292
+ * members' warnings), emitted on the next tick as Node's emitWarning
3293
+ * does (so the loop runs); an empty message emits nothing. */
3294
+ "process.emitWarningText": { argTypes: [STRING], result: VOID },
3295
+ /** process.noDeprecation (0) / process.throwDeprecation (1): the stored
3296
+ * value (undefined until assigned) and its assignment. util.deprecate's
3297
+ * warnings and DeprecationWarning emissions read their truthiness. */
3298
+ "process.deprecationFlag": { argTypes: [F64], result: DYN },
3299
+ "process.setDeprecationFlag": { argTypes: [F64, DYN], result: VOID },
3170
3300
  /** AsyncLocalStorage (node:async_hooks — scr_async.c): stores are f64
3171
3301
  * handles; contexts are immutable fiber-carried snapshots (spawned
3172
3302
  * fibers inherit the spawner's — Node's init-time capture). run/exit
@@ -3262,8 +3392,8 @@ export const LIB_FN_SIGS = defineLibFnSignatures({
3262
3392
  * behavioral difference; ignoreBOM defaults to false). Inline calls
3263
3393
  * lower directly; stored decoder records dispatch by encoding id.
3264
3394
  * TextEncoder.encode needs no libFn: its matching forms
3265
- * lower to buffer.fromStr(s, "utf8") (identical bytes — ScrStr storage
3266
- * is well-formed UTF-8). Borrowed arg; owned (+1) string; never throws. */
3395
+ * lower to buffer.fromStr(s, "utf8") (identical bytes — both write each
3396
+ * lone surrogate as U+FFFD). Borrowed arg; owned (+1) string; never throws. */
3267
3397
  "text.decode": { argTypes: [BYTES_U8], result: STRING },
3268
3398
  "bytes.bufferSource": { argTypes: [DYN], result: BYTES_U8 },
3269
3399
  "text.decodeBufferSource": { argTypes: [DYN], result: STRING },