@scriptc/compiler 0.2.9 → 0.3.0

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 (505) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +2 -36
  2. package/ambient/scriptc-overrides.d.ts +1 -25
  3. package/ambient/scriptc.d.ts +1 -9
  4. package/dist/backend/cycle-analysis.d.ts +56 -0
  5. package/dist/backend/cycle-analysis.js +175 -14
  6. package/dist/backend/cycle-analysis.js.map +1 -1
  7. package/dist/backend/cycle-analysis.test.js +95 -2
  8. package/dist/backend/cycle-analysis.test.js.map +1 -1
  9. package/dist/backend/cycle-mutability.d.ts +3 -7
  10. package/dist/backend/cycle-mutability.js +4 -30
  11. package/dist/backend/cycle-mutability.js.map +1 -1
  12. package/dist/backend/executable-features.d.ts +1 -1
  13. package/dist/backend/executable-features.js +3 -8
  14. package/dist/backend/executable-features.js.map +1 -1
  15. package/dist/backend/immutability.d.ts +57 -0
  16. package/dist/backend/immutability.js +178 -0
  17. package/dist/backend/immutability.js.map +1 -0
  18. package/dist/backend/immutability.test.js +131 -0
  19. package/dist/backend/immutability.test.js.map +1 -0
  20. package/dist/backend/library-pack.js +0 -2
  21. package/dist/backend/library-pack.js.map +1 -1
  22. package/dist/backend/linker.js +1 -1
  23. package/dist/backend/linker.js.map +1 -1
  24. package/dist/backend/llvm/borrowed-inputs.d.ts +9 -2
  25. package/dist/backend/llvm/borrowed-inputs.js +31 -3
  26. package/dist/backend/llvm/borrowed-inputs.js.map +1 -1
  27. package/dist/backend/llvm/checked-narrows.test.js +1 -1
  28. package/dist/backend/llvm/classes.d.ts +28 -0
  29. package/dist/backend/llvm/classes.js +48 -14
  30. package/dist/backend/llvm/classes.js.map +1 -1
  31. package/dist/backend/llvm/classes.test.js +134 -6
  32. package/dist/backend/llvm/classes.test.js.map +1 -1
  33. package/dist/backend/llvm/common.d.ts +13 -0
  34. package/dist/backend/llvm/common.js +13 -0
  35. package/dist/backend/llvm/common.js.map +1 -1
  36. package/dist/backend/llvm/constant-callbacks.d.ts +1 -1
  37. package/dist/backend/llvm/constant-callbacks.js +3 -3
  38. package/dist/backend/llvm/constant-callbacks.js.map +1 -1
  39. package/dist/backend/llvm/constant-callbacks.test.js +1 -1
  40. package/dist/backend/llvm/dense-array-access.js +5 -4
  41. package/dist/backend/llvm/dense-array-access.js.map +1 -1
  42. package/dist/backend/llvm/dense-array-access.test.js +10 -2
  43. package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
  44. package/dist/backend/llvm/dyn.d.ts +2 -1
  45. package/dist/backend/llvm/dyn.js +3 -76
  46. package/dist/backend/llvm/dyn.js.map +1 -1
  47. package/dist/backend/llvm/emitter.d.ts +67 -19
  48. package/dist/backend/llvm/emitter.js +443 -226
  49. package/dist/backend/llvm/emitter.js.map +1 -1
  50. package/dist/backend/llvm/emitter.test.js +21 -3
  51. package/dist/backend/llvm/emitter.test.js.map +1 -1
  52. package/dist/backend/llvm/expr-async.test.js +1 -1
  53. package/dist/backend/llvm/expr-calls.js +14 -6
  54. package/dist/backend/llvm/expr-calls.js.map +1 -1
  55. package/dist/backend/llvm/expr-containers.js +41 -14
  56. package/dist/backend/llvm/expr-containers.js.map +1 -1
  57. package/dist/backend/llvm/expr-control.js +4 -107
  58. package/dist/backend/llvm/expr-control.js.map +1 -1
  59. package/dist/backend/llvm/expr-dispatch.d.ts +1 -2
  60. package/dist/backend/llvm/expr-dispatch.js +0 -41
  61. package/dist/backend/llvm/expr-dispatch.js.map +1 -1
  62. package/dist/backend/llvm/expr-dynamic.d.ts +1 -1
  63. package/dist/backend/llvm/expr-dynamic.js +13 -27
  64. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  65. package/dist/backend/llvm/expr-primitives.js +30 -3
  66. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  67. package/dist/backend/llvm/expr-primitives.test.js +55 -2
  68. package/dist/backend/llvm/expr-primitives.test.js.map +1 -1
  69. package/dist/backend/llvm/expr-stream-bridges.js +4 -4
  70. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  71. package/dist/backend/llvm/expr-stream-bridges.test.js +1 -1
  72. package/dist/backend/llvm/lib-dispatch.js +0 -1
  73. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  74. package/dist/backend/llvm/lib-filesystem.js +0 -13
  75. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  76. package/dist/backend/llvm/lib-shared.js +0 -8
  77. package/dist/backend/llvm/lib-shared.js.map +1 -1
  78. package/dist/backend/llvm/local-array-reads.js +3 -3
  79. package/dist/backend/llvm/local-array-reads.js.map +1 -1
  80. package/dist/backend/llvm/local-array-reads.test.js +1 -1
  81. package/dist/backend/llvm/local-union-storage.test.js +1 -1
  82. package/dist/backend/llvm/loop-array-borrows.d.ts +5 -2
  83. package/dist/backend/llvm/loop-array-borrows.js +27 -8
  84. package/dist/backend/llvm/loop-array-borrows.js.map +1 -1
  85. package/dist/backend/llvm/map-number-lookup.d.ts +14 -0
  86. package/dist/backend/llvm/map-number-lookup.js +33 -2
  87. package/dist/backend/llvm/map-number-lookup.js.map +1 -1
  88. package/dist/backend/llvm/map-read-lifetimes.d.ts +5 -0
  89. package/dist/backend/llvm/map-read-lifetimes.js +20 -4
  90. package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
  91. package/dist/backend/llvm/map-read-lifetimes.test.js +25 -3
  92. package/dist/backend/llvm/map-read-lifetimes.test.js.map +1 -1
  93. package/dist/backend/llvm/reference-writes.d.ts +124 -0
  94. package/dist/backend/llvm/reference-writes.js +1090 -0
  95. package/dist/backend/llvm/reference-writes.js.map +1 -0
  96. package/dist/backend/llvm/shapes.d.ts +8 -5
  97. package/dist/backend/llvm/shapes.js +37 -13
  98. package/dist/backend/llvm/shapes.js.map +1 -1
  99. package/dist/backend/llvm/shapes.test.js +3 -3
  100. package/dist/backend/llvm/stack-unions.test.js +1 -1
  101. package/dist/backend/llvm/string-construction.test.js +1 -1
  102. package/dist/backend/llvm/string-lifetimes.test.js +40 -11
  103. package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
  104. package/dist/backend/llvm/string-reads.d.ts +3 -0
  105. package/dist/backend/llvm/string-reads.js +31 -0
  106. package/dist/backend/llvm/string-reads.js.map +1 -1
  107. package/dist/backend/llvm/switch-dispatch.d.ts +2 -2
  108. package/dist/backend/llvm/switch-dispatch.js +35 -22
  109. package/dist/backend/llvm/switch-dispatch.js.map +1 -1
  110. package/dist/backend/llvm/switch-dispatch.test.js +29 -11
  111. package/dist/backend/llvm/switch-dispatch.test.js.map +1 -1
  112. package/dist/backend/llvm/walk-borrows.d.ts +8 -1
  113. package/dist/backend/llvm/walk-borrows.js +15 -4
  114. package/dist/backend/llvm/walk-borrows.js.map +1 -1
  115. package/dist/backend/may-throw.d.ts +36 -2
  116. package/dist/backend/may-throw.js +308 -21
  117. package/dist/backend/may-throw.js.map +1 -1
  118. package/dist/backend/may-throw.test.js +147 -2
  119. package/dist/backend/may-throw.test.js.map +1 -1
  120. package/dist/backend/native/artifact-stamps.js +0 -2
  121. package/dist/backend/native/artifact-stamps.js.map +1 -1
  122. package/dist/backend/native/cache-warm.d.ts +1 -1
  123. package/dist/backend/native/cache-warm.js +2 -3
  124. package/dist/backend/native/cache-warm.js.map +1 -1
  125. package/dist/backend/native/compiler-fingerprint.d.ts +1 -1
  126. package/dist/backend/native/compiler-fingerprint.js +4 -7
  127. package/dist/backend/native/compiler-fingerprint.js.map +1 -1
  128. package/dist/backend/native/contracts.d.ts +3 -28
  129. package/dist/backend/native/driver.js +1 -3
  130. package/dist/backend/native/driver.js.map +1 -1
  131. package/dist/backend/native/executable.d.ts +0 -15
  132. package/dist/backend/native/executable.js +17 -172
  133. package/dist/backend/native/executable.js.map +1 -1
  134. package/dist/backend/native/tool-identity.js +0 -1
  135. package/dist/backend/native/tool-identity.js.map +1 -1
  136. package/dist/backend/native/vendor.d.ts +1 -1
  137. package/dist/backend/native/vendor.js +1 -1
  138. package/dist/backend/native/vendor.js.map +1 -1
  139. package/dist/backend/native-link-info-core.d.ts +0 -2
  140. package/dist/backend/native-link-info-core.js.map +1 -1
  141. package/dist/backend/native-toolchain.test.js +23 -33
  142. package/dist/backend/native-toolchain.test.js.map +1 -1
  143. package/dist/backend/publication.d.ts +5 -0
  144. package/dist/backend/publication.js +10 -0
  145. package/dist/backend/publication.js.map +1 -1
  146. package/dist/backend/publication.test.js +1 -1
  147. package/dist/backend/runtime-abi.d.ts +2 -2
  148. package/dist/backend/runtime-abi.js +2 -2
  149. package/dist/backend/runtime-pack-core.d.ts +1 -2
  150. package/dist/backend/runtime-pack-core.js +5 -14
  151. package/dist/backend/runtime-pack-core.js.map +1 -1
  152. package/dist/backend/runtime-pack-targets.test.js +3 -8
  153. package/dist/backend/runtime-pack-targets.test.js.map +1 -1
  154. package/dist/backend/runtime-pack.test.js +22 -19
  155. package/dist/backend/runtime-pack.test.js.map +1 -1
  156. package/dist/backend/target-diagnostics.d.ts +0 -5
  157. package/dist/backend/target-diagnostics.js +1 -11
  158. package/dist/backend/target-diagnostics.js.map +1 -1
  159. package/dist/backend/target-diagnostics.test.js +1 -1
  160. package/dist/backend/vendor-archives.d.ts +1 -7
  161. package/dist/backend/vendor-archives.js +9 -189
  162. package/dist/backend/vendor-archives.js.map +1 -1
  163. package/dist/backend/vendor-inputs.d.ts +0 -1
  164. package/dist/backend/vendor-inputs.js +0 -1
  165. package/dist/backend/vendor-inputs.js.map +1 -1
  166. package/dist/backend/warm-cache.js +3 -5
  167. package/dist/backend/warm-cache.js.map +1 -1
  168. package/dist/cli/command.js +4 -8
  169. package/dist/cli/command.js.map +1 -1
  170. package/dist/cli/host.d.ts +1 -1
  171. package/dist/cli/usage.d.ts +1 -5
  172. package/dist/cli/usage.js +4 -9
  173. package/dist/cli/usage.js.map +1 -1
  174. package/dist/compat/fetch-profile.d.ts +2 -2
  175. package/dist/compat/fetch-profile.js +16 -25
  176. package/dist/compat/fetch-profile.js.map +1 -1
  177. package/dist/compile-types.d.ts +2 -17
  178. package/dist/contracts/check.d.ts +8 -0
  179. package/dist/contracts/check.js +1573 -0
  180. package/dist/contracts/check.js.map +1 -0
  181. package/dist/coverage/report.d.ts +5 -22
  182. package/dist/coverage/report.js +12 -76
  183. package/dist/coverage/report.js.map +1 -1
  184. package/dist/coverage/surface-manifest.d.ts +3 -3
  185. package/dist/coverage/surface-manifest.js +22 -27
  186. package/dist/coverage/surface-manifest.js.map +1 -1
  187. package/dist/coverage/verdict-cache.d.ts +1 -3
  188. package/dist/coverage/verdict-cache.js +2 -7
  189. package/dist/coverage/verdict-cache.js.map +1 -1
  190. package/dist/diagnostics/diagnostic.d.ts +11 -60
  191. package/dist/diagnostics/diagnostic.js +39 -118
  192. package/dist/diagnostics/diagnostic.js.map +1 -1
  193. package/dist/diagnostics/envelope.d.ts +3 -4
  194. package/dist/diagnostics/envelope.js +0 -9
  195. package/dist/diagnostics/envelope.js.map +1 -1
  196. package/dist/diagnostics/envelope.test.js +1 -1
  197. package/dist/diagnostics/envelope.test.js.map +1 -1
  198. package/dist/executable/executable-cache.d.ts +0 -3
  199. package/dist/executable/executable-cache.js +2 -4
  200. package/dist/executable/executable-cache.js.map +1 -1
  201. package/dist/executable/executable-cache.test.js +0 -4
  202. package/dist/executable/executable-cache.test.js.map +1 -1
  203. package/dist/executable/prepare.js +14 -2
  204. package/dist/executable/prepare.js.map +1 -1
  205. package/dist/frontend/analysis.js +10 -10
  206. package/dist/frontend/analysis.js.map +1 -1
  207. package/dist/frontend/cjs-syntax.js +0 -88
  208. package/dist/frontend/cjs-syntax.js.map +1 -1
  209. package/dist/frontend/contract-types.d.ts +50 -0
  210. package/dist/frontend/contract-types.js +232 -0
  211. package/dist/frontend/contract-types.js.map +1 -0
  212. package/dist/frontend/dts-paths.d.ts +1 -1
  213. package/dist/frontend/dts-paths.js +1 -1
  214. package/dist/frontend/lowering/abstract-equality.js +1 -4
  215. package/dist/frontend/lowering/abstract-equality.js.map +1 -1
  216. package/dist/frontend/lowering/array-values.js +4 -11
  217. package/dist/frontend/lowering/array-values.js.map +1 -1
  218. package/dist/frontend/lowering/builtins/arguments.js +0 -13
  219. package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
  220. package/dist/frontend/lowering/builtins/crypto.d.ts +0 -4
  221. package/dist/frontend/lowering/builtins/crypto.js +0 -4
  222. package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
  223. package/dist/frontend/lowering/builtins/json.js +1 -39
  224. package/dist/frontend/lowering/builtins/json.js.map +1 -1
  225. package/dist/frontend/lowering/builtins/module-resolution.d.ts +0 -15
  226. package/dist/frontend/lowering/builtins/module-resolution.js +5 -44
  227. package/dist/frontend/lowering/builtins/module-resolution.js.map +1 -1
  228. package/dist/frontend/lowering/builtins/numbers.d.ts +0 -6
  229. package/dist/frontend/lowering/builtins/numbers.js +6 -57
  230. package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
  231. package/dist/frontend/lowering/builtins/promises.js +4 -67
  232. package/dist/frontend/lowering/builtins/promises.js.map +1 -1
  233. package/dist/frontend/lowering/builtins/workers.js +1 -1
  234. package/dist/frontend/lowering/builtins/workers.js.map +1 -1
  235. package/dist/frontend/lowering/call-arguments.d.ts +1 -37
  236. package/dist/frontend/lowering/call-arguments.js +11 -94
  237. package/dist/frontend/lowering/call-arguments.js.map +1 -1
  238. package/dist/frontend/lowering/call-signatures.d.ts +1 -6
  239. package/dist/frontend/lowering/call-signatures.js +16 -68
  240. package/dist/frontend/lowering/call-signatures.js.map +1 -1
  241. package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +19 -4
  242. package/dist/frontend/lowering/class-dynamic-dispatch.js +168 -98
  243. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  244. package/dist/frontend/lowering/class-dynamic-dispatch.test.js +44 -4
  245. package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
  246. package/dist/frontend/lowering/class-method-mutations.js +0 -2
  247. package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
  248. package/dist/frontend/lowering/class-protocols.js +1 -1
  249. package/dist/frontend/lowering/class-protocols.js.map +1 -1
  250. package/dist/frontend/lowering/coercions/function-adapters.js +5 -35
  251. package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
  252. package/dist/frontend/lowering/coercions/state.d.ts +0 -1
  253. package/dist/frontend/lowering/coercions/state.js +0 -1
  254. package/dist/frontend/lowering/coercions/state.js.map +1 -1
  255. package/dist/frontend/lowering/coercions/structural-plans.js +2 -4
  256. package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
  257. package/dist/frontend/lowering/coercions/structural.js +2 -12
  258. package/dist/frontend/lowering/coercions/structural.js.map +1 -1
  259. package/dist/frontend/lowering/coercions/unions.d.ts +12 -0
  260. package/dist/frontend/lowering/coercions/unions.js +63 -1
  261. package/dist/frontend/lowering/coercions/unions.js.map +1 -1
  262. package/dist/frontend/lowering/containers/array-callbacks.js +9 -28
  263. package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
  264. package/dist/frontend/lowering/containers/array-construction.js +2 -3
  265. package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
  266. package/dist/frontend/lowering/containers/array-methods.js +10 -54
  267. package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
  268. package/dist/frontend/lowering/containers/bytes.js +0 -1
  269. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  270. package/dist/frontend/lowering/containers/callback-arguments.js +2 -10
  271. package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
  272. package/dist/frontend/lowering/containers/collection-methods.js +1 -6
  273. package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
  274. package/dist/frontend/lowering/containers/indexed-objects.js +0 -2
  275. package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
  276. package/dist/frontend/lowering/containers/string-and-regexp.d.ts +0 -6
  277. package/dist/frontend/lowering/containers/string-and-regexp.js +2 -10
  278. package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
  279. package/dist/frontend/lowering/expressions/evaluation-safety.js +0 -3
  280. package/dist/frontend/lowering/expressions/evaluation-safety.js.map +1 -1
  281. package/dist/frontend/lowering/expressions/native-proxy.js +1 -1
  282. package/dist/frontend/lowering/expressions/native-proxy.js.map +1 -1
  283. package/dist/frontend/lowering/expressions/nullish-assignment.js +0 -1
  284. package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
  285. package/dist/frontend/lowering/expressions/object-literals.d.ts +0 -8
  286. package/dist/frontend/lowering/expressions/object-literals.js +8 -35
  287. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  288. package/dist/frontend/lowering/expressions/optional-chains.d.ts +0 -4
  289. package/dist/frontend/lowering/expressions/optional-chains.js +7 -67
  290. package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
  291. package/dist/frontend/lowering/function-context.js +0 -1
  292. package/dist/frontend/lowering/function-context.js.map +1 -1
  293. package/dist/frontend/lowering/generic-functions.js +0 -1
  294. package/dist/frontend/lowering/generic-functions.js.map +1 -1
  295. package/dist/frontend/lowering/lib-boundary.js +10 -77
  296. package/dist/frontend/lowering/lib-boundary.js.map +1 -1
  297. package/dist/frontend/lowering/lower-array-sort.js +1 -10
  298. package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
  299. package/dist/frontend/lowering/lower-array-sort.test.js +2 -2
  300. package/dist/frontend/lowering/lower-array-sort.test.js.map +1 -1
  301. package/dist/frontend/lowering/lower-assert.js +2 -3
  302. package/dist/frontend/lowering/lower-assert.js.map +1 -1
  303. package/dist/frontend/lowering/lower-async-iteration.js +1 -1
  304. package/dist/frontend/lowering/lower-calls.d.ts +2 -27
  305. package/dist/frontend/lowering/lower-calls.js +56 -465
  306. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  307. package/dist/frontend/lowering/lower-classes.js +11 -49
  308. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  309. package/dist/frontend/lowering/lower-comptime.js +2 -3
  310. package/dist/frontend/lowering/lower-comptime.js.map +1 -1
  311. package/dist/frontend/lowering/lower-enums.js +5 -8
  312. package/dist/frontend/lowering/lower-enums.js.map +1 -1
  313. package/dist/frontend/lowering/lower-event-emitter.js +3 -4
  314. package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
  315. package/dist/frontend/lowering/lower-expando.js +3 -5
  316. package/dist/frontend/lowering/lower-expando.js.map +1 -1
  317. package/dist/frontend/lowering/lower-exprs.d.ts +0 -8
  318. package/dist/frontend/lowering/lower-exprs.js +133 -908
  319. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  320. package/dist/frontend/lowering/lower-functions.js +2 -5
  321. package/dist/frontend/lowering/lower-functions.js.map +1 -1
  322. package/dist/frontend/lowering/lower-inspect.js +1 -50
  323. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  324. package/dist/frontend/lowering/lower-modules.d.ts +0 -43
  325. package/dist/frontend/lowering/lower-modules.js +25 -329
  326. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  327. package/dist/frontend/lowering/lower-modules.test.js +5 -5
  328. package/dist/frontend/lowering/lower-modules.test.js.map +1 -1
  329. package/dist/frontend/lowering/lower-server.js +0 -30
  330. package/dist/frontend/lowering/lower-server.js.map +1 -1
  331. package/dist/frontend/lowering/lower-stdlib.d.ts +98 -0
  332. package/dist/frontend/lowering/{lower-island.js → lower-stdlib.js} +97 -1160
  333. package/dist/frontend/lowering/lower-stdlib.js.map +1 -0
  334. package/dist/frontend/lowering/lower-stmts.d.ts +0 -16
  335. package/dist/frontend/lowering/lower-stmts.js +58 -1016
  336. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  337. package/dist/frontend/lowering/lower-stmts.test.js +1 -1
  338. package/dist/frontend/lowering/lower-stmts.test.js.map +1 -1
  339. package/dist/frontend/lowering/lower-stream.js +1 -3
  340. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  341. package/dist/frontend/lowering/lowerer.d.ts +26 -151
  342. package/dist/frontend/lowering/lowerer.js +120 -770
  343. package/dist/frontend/lowering/lowerer.js.map +1 -1
  344. package/dist/frontend/lowering/lowerer.test.js +4 -51
  345. package/dist/frontend/lowering/lowerer.test.js.map +1 -1
  346. package/dist/frontend/lowering/narrowing-stability.d.ts +100 -0
  347. package/dist/frontend/lowering/narrowing-stability.js +1174 -0
  348. package/dist/frontend/lowering/narrowing-stability.js.map +1 -0
  349. package/dist/frontend/lowering/narrowing-stability.test.js +150 -0
  350. package/dist/frontend/lowering/narrowing-stability.test.js.map +1 -0
  351. package/dist/frontend/lowering/optional-arguments.js +0 -2
  352. package/dist/frontend/lowering/optional-arguments.js.map +1 -1
  353. package/dist/frontend/lowering/sanitize-class-types.test.js +2 -2
  354. package/dist/frontend/lowering/strict-equality.js +1 -1
  355. package/dist/frontend/lowering/strict-equality.js.map +1 -1
  356. package/dist/frontend/lowering/surfaces.d.ts +6 -45
  357. package/dist/frontend/lowering/surfaces.js +5 -65
  358. package/dist/frontend/lowering/surfaces.js.map +1 -1
  359. package/dist/frontend/module-syntax.d.ts +0 -3
  360. package/dist/frontend/module-syntax.js.map +1 -1
  361. package/dist/frontend/npm-node.d.ts +0 -7
  362. package/dist/frontend/npm-node.js +0 -7
  363. package/dist/frontend/npm-node.js.map +1 -1
  364. package/dist/frontend/npm-static-rewrite-syntax.d.ts +1 -1
  365. package/dist/frontend/npm-static-rewrite-syntax.js +6 -82
  366. package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
  367. package/dist/frontend/npm-static.d.ts +1 -1
  368. package/dist/frontend/npm-static.js +6 -71
  369. package/dist/frontend/npm-static.js.map +1 -1
  370. package/dist/frontend/npm.d.ts +3 -319
  371. package/dist/frontend/npm.js +6 -1007
  372. package/dist/frontend/npm.js.map +1 -1
  373. package/dist/frontend/npm.test.js +2 -197
  374. package/dist/frontend/npm.test.js.map +1 -1
  375. package/dist/frontend/pipeline-native.js +1 -2
  376. package/dist/frontend/pipeline-native.js.map +1 -1
  377. package/dist/frontend/pipeline.d.ts +3 -11
  378. package/dist/frontend/pipeline.js +37 -56
  379. package/dist/frontend/pipeline.js.map +1 -1
  380. package/dist/frontend/pipeline.test.js +12 -6
  381. package/dist/frontend/pipeline.test.js.map +1 -1
  382. package/dist/frontend/program.d.ts +0 -34
  383. package/dist/frontend/program.js +13 -98
  384. package/dist/frontend/program.js.map +1 -1
  385. package/dist/frontend/provenance-core.d.ts +0 -4
  386. package/dist/frontend/provenance-core.js +4 -37
  387. package/dist/frontend/provenance-core.js.map +1 -1
  388. package/dist/frontend/provenance-registry.d.ts +0 -4
  389. package/dist/frontend/provenance-registry.js +0 -20
  390. package/dist/frontend/provenance-registry.js.map +1 -1
  391. package/dist/frontend/resolve.d.ts +0 -12
  392. package/dist/frontend/resolve.js +0 -34
  393. package/dist/frontend/resolve.js.map +1 -1
  394. package/dist/frontend/runtime-resolve.js +2 -2
  395. package/dist/frontend/runtime-resolve.js.map +1 -1
  396. package/dist/frontend/services-node.js +2 -3
  397. package/dist/frontend/services-node.js.map +1 -1
  398. package/dist/frontend/services.d.ts +1 -8
  399. package/dist/frontend/services.js +2 -22
  400. package/dist/frontend/services.js.map +1 -1
  401. package/dist/frontend/services.test.js +0 -38
  402. package/dist/frontend/services.test.js.map +1 -1
  403. package/dist/frontend/tsc-codes.js +0 -11
  404. package/dist/frontend/tsc-codes.js.map +1 -1
  405. package/dist/frontend/type-mapper.d.ts +2 -27
  406. package/dist/frontend/type-mapper.js +85 -153
  407. package/dist/frontend/type-mapper.js.map +1 -1
  408. package/dist/index.d.ts +1 -1
  409. package/dist/index.js +7 -10
  410. package/dist/index.js.map +1 -1
  411. package/dist/ir/api.d.ts +1 -1
  412. package/dist/ir/api.js +1 -1
  413. package/dist/ir/api.js.map +1 -1
  414. package/dist/ir/builtin-effects.js +0 -5
  415. package/dist/ir/builtin-effects.js.map +1 -1
  416. package/dist/ir/builtin-signatures.d.ts +1 -1
  417. package/dist/ir/builtin-signatures.js +1 -55
  418. package/dist/ir/builtin-signatures.js.map +1 -1
  419. package/dist/ir/constant-globals.test.js +1 -1
  420. package/dist/ir/constant-tables.test.js +1 -1
  421. package/dist/ir/final-fields.test.js +1 -1
  422. package/dist/ir/initializer-bindings.test.js +1 -1
  423. package/dist/ir/int32-slots.d.ts +29 -3
  424. package/dist/ir/int32-slots.js +152 -66
  425. package/dist/ir/int32-slots.js.map +1 -1
  426. package/dist/ir/int32-slots.test.js +1 -1
  427. package/dist/ir/integer-loops.js +3 -0
  428. package/dist/ir/integer-loops.js.map +1 -1
  429. package/dist/ir/integer-loops.test.js +26 -1
  430. package/dist/ir/integer-loops.test.js.map +1 -1
  431. package/dist/ir/integer-ranges.d.ts +20 -0
  432. package/dist/ir/integer-ranges.js +178 -21
  433. package/dist/ir/integer-ranges.js.map +1 -1
  434. package/dist/ir/integer-ranges.test.js +148 -3
  435. package/dist/ir/integer-ranges.test.js.map +1 -1
  436. package/dist/ir/ir.d.ts +44 -284
  437. package/dist/ir/ir.js +10 -259
  438. package/dist/ir/ir.js.map +1 -1
  439. package/dist/ir/ir.test.js +2 -7
  440. package/dist/ir/ir.test.js.map +1 -1
  441. package/dist/ir/runtime-features.d.ts +3 -30
  442. package/dist/ir/runtime-features.js +5 -41
  443. package/dist/ir/runtime-features.js.map +1 -1
  444. package/dist/ir/scalar-records.test.js +1 -1
  445. package/dist/ir/serialize.d.ts +6 -2
  446. package/dist/ir/serialize.js +11 -3
  447. package/dist/ir/serialize.js.map +1 -1
  448. package/dist/ir/traverse.js +0 -21
  449. package/dist/ir/traverse.js.map +1 -1
  450. package/dist/ir/unshare.d.ts +14 -0
  451. package/dist/ir/unshare.js +60 -0
  452. package/dist/ir/unshare.js.map +1 -0
  453. package/dist/ir/unshare.test.js +115 -0
  454. package/dist/ir/unshare.test.js.map +1 -0
  455. package/dist/ir/validate.js +9 -207
  456. package/dist/ir/validate.js.map +1 -1
  457. package/dist/ir/validate.test.js +6 -6
  458. package/dist/library/fence-eval.test.js +1 -1
  459. package/dist/library/int-infer.test.js +4 -4
  460. package/dist/library/library-cache.test.js +5 -5
  461. package/dist/library/prepare.js +14 -20
  462. package/dist/library/prepare.js.map +1 -1
  463. package/dist/native/cli.js +0 -2
  464. package/dist/native/cli.js.map +1 -1
  465. package/dist/native/compiler.test.js +2 -4
  466. package/dist/native/compiler.test.js.map +1 -1
  467. package/dist/native/prepare.js +2 -4
  468. package/dist/native/prepare.js.map +1 -1
  469. package/dist/native/sanitizer.js +2 -16
  470. package/dist/native/sanitizer.js.map +1 -1
  471. package/dist/native/sanitizer.test.js +0 -3
  472. package/dist/native/sanitizer.test.js.map +1 -1
  473. package/dist/startup-cache.js +0 -2
  474. package/dist/startup-cache.js.map +1 -1
  475. package/package.json +20 -20
  476. package/surface-manifest.json +80 -88
  477. package/dist/backend/llvm/expr-island.d.ts +0 -15
  478. package/dist/backend/llvm/expr-island.js +0 -709
  479. package/dist/backend/llvm/expr-island.js.map +0 -1
  480. package/dist/frontend/lowering/coercions/island.d.ts +0 -37
  481. package/dist/frontend/lowering/coercions/island.js +0 -350
  482. package/dist/frontend/lowering/coercions/island.js.map +0 -1
  483. package/dist/frontend/lowering/lower-island.d.ts +0 -229
  484. package/dist/frontend/lowering/lower-island.js.map +0 -1
  485. package/dist/frontend/lowering/lower-island.test.js +0 -56
  486. package/dist/frontend/lowering/lower-island.test.js.map +0 -1
  487. package/dist/frontend/npm-fetch-analysis.d.ts +0 -17
  488. package/dist/frontend/npm-fetch-analysis.js +0 -109
  489. package/dist/frontend/npm-fetch-analysis.js.map +0 -1
  490. package/dist/frontend/npm-fetch-analysis.test.js +0 -130
  491. package/dist/frontend/npm-fetch-analysis.test.js.map +0 -1
  492. package/dist/frontend/npm-fetch-node.d.ts +0 -2
  493. package/dist/frontend/npm-fetch-node.js +0 -12
  494. package/dist/frontend/npm-fetch-node.js.map +0 -1
  495. package/dist/frontend/npm-fetch-syntax.d.ts +0 -6
  496. package/dist/frontend/npm-fetch-syntax.js +0 -202
  497. package/dist/frontend/npm-fetch-syntax.js.map +0 -1
  498. package/dist/native/runtime-typescript.d.ts +0 -4
  499. package/dist/native/runtime-typescript.js +0 -74
  500. package/dist/native/runtime-typescript.js.map +0 -1
  501. package/dist/native/runtime-typescript.test.js +0 -41
  502. package/dist/native/runtime-typescript.test.js.map +0 -1
  503. /package/dist/{frontend/lowering/lower-island.test.d.ts → backend/immutability.test.d.ts} +0 -0
  504. /package/dist/frontend/{npm-fetch-analysis.test.d.ts → lowering/narrowing-stability.test.d.ts} +0 -0
  505. /package/dist/{native/runtime-typescript.test.d.ts → ir/unshare.test.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"narrowing-stability.js","sourceRoot":"","sources":["../../../src/frontend/lowering/narrowing-stability.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,150 @@
1
+ import { mkdtemp, readFile, rm, writeFile } from "node:fs/promises";
2
+ import { tmpdir } from "node:os";
3
+ import { join } from "node:path";
4
+ import { expect, test } from "vitest";
5
+ import { compile, deserializeModule, validateModule } from "../../index.js";
6
+ async function lower(source) {
7
+ const dir = await mkdtemp(join(tmpdir(), "scriptc-narrowing-stability-"));
8
+ try {
9
+ const entry = join(dir, "main.ts"), output = join(dir, "main.ir.json");
10
+ await writeFile(entry, source);
11
+ const result = await compile(entry, { outDir: dir, outPath: output, outputKind: "ir" });
12
+ if (!result.ok)
13
+ throw new Error(result.diagnostics.map((item) => `${item.code}: ${item.message}`).join("\n"));
14
+ const module = deserializeModule(await readFile(output, "utf8"));
15
+ expect(validateModule(module)).toEqual([]);
16
+ return module;
17
+ }
18
+ finally {
19
+ await rm(dir, { recursive: true, force: true });
20
+ }
21
+ }
22
+ /** The TypeError messages a function's checked reads can throw. */
23
+ function thrownMessages(module, name) {
24
+ const fn = module.functions.find((f) => f.name === name || f.name.endsWith(`.${name}`));
25
+ if (!fn)
26
+ throw new Error(`no function ${name}`);
27
+ const messages = [];
28
+ JSON.stringify(fn.body, (_key, value) => {
29
+ const node = value;
30
+ if (node?.kind === "libCall" && node.fn === "error.nodeThrow")
31
+ messages.push(String(node.args?.[2]?.value));
32
+ return value;
33
+ });
34
+ return messages;
35
+ }
36
+ const SOURCE = `
37
+ class Tree {
38
+ parent: Tree | undefined;
39
+ depth: number;
40
+ constructor(parent: Tree | undefined) {
41
+ this.parent = parent;
42
+ this.depth = parent ? parent.depth + 1 : 0;
43
+ }
44
+ }
45
+ class Box {
46
+ label: string | undefined = undefined;
47
+ clear(): void { this.label = undefined; }
48
+ }
49
+ function visit(t: Tree): number { return t.depth; }
50
+ function constructionOnly(t: Tree): number {
51
+ if (t.parent) {
52
+ visit(t);
53
+ return t.parent.depth;
54
+ }
55
+ return -1;
56
+ }
57
+ function noCall(b: Box): number {
58
+ if (b.label !== undefined) return b.label.length + b.label.length;
59
+ return 0;
60
+ }
61
+ function libraryCalls(b: Box, xs: number[]): number {
62
+ if (b.label !== undefined) {
63
+ xs.push(Math.max(1, 2));
64
+ console.log("x");
65
+ return b.label.length;
66
+ }
67
+ return 0;
68
+ }
69
+ function userCall(b: Box): number {
70
+ if (b.label !== undefined) {
71
+ visit(new Tree(undefined));
72
+ return b.label.length;
73
+ }
74
+ return 0;
75
+ }
76
+ function methodCall(b: Box): number {
77
+ if (b.label !== undefined) {
78
+ b.clear();
79
+ return b.label.length;
80
+ }
81
+ return 0;
82
+ }
83
+ function loopBackEdge(b: Box): number {
84
+ let n = 0;
85
+ if (b.label !== undefined) {
86
+ for (let i = 0; i < 2; i++) {
87
+ n += b.label.length;
88
+ b.clear();
89
+ }
90
+ }
91
+ return n;
92
+ }
93
+ const b = new Box();
94
+ b.label = "abc";
95
+ console.log(constructionOnly(new Tree(new Tree(undefined))), noCall(b), libraryCalls(b, []),
96
+ userCall(b), methodCall(b), loopBackEdge(b));
97
+ `;
98
+ test("narrowed reads keep the unchecked extraction where nothing can change the field", async () => {
99
+ const module = await lower(SOURCE);
100
+ expect(thrownMessages(module, "constructionOnly")).toEqual([]);
101
+ expect(thrownMessages(module, "noCall")).toEqual([]);
102
+ expect(thrownMessages(module, "libraryCalls")).toEqual([]);
103
+ });
104
+ test("narrowed reads after code that can clear the field check it with Node's TypeError", async () => {
105
+ const module = await lower(SOURCE);
106
+ const read = "Cannot read properties of undefined (reading 'length')";
107
+ expect(thrownMessages(module, "userCall")).toContain(read);
108
+ expect(thrownMessages(module, "methodCall")).toContain(read);
109
+ expect(thrownMessages(module, "loopBackEdge")).toContain(read);
110
+ });
111
+ test("standard-library arguments read as declared only where the lowering is generic", async () => {
112
+ // JSON.stringify and clearInterval lower only the narrowed argument types;
113
+ // console methods and type-parameter slots take the declared value.
114
+ const module = await lower(`
115
+ interface Opts {
116
+ p?: { [k: string]: number };
117
+ }
118
+ function touch(): number {
119
+ return 1;
120
+ }
121
+ let handle: ReturnType<typeof setInterval> | null = null;
122
+ const stop = (): void => {
123
+ handle = null;
124
+ };
125
+ function specialized(o: Opts): string {
126
+ o.p = { a: 1 };
127
+ touch();
128
+ return JSON.stringify(o.p);
129
+ }
130
+ function clearAfterCall(): void {
131
+ if (handle !== null) {
132
+ touch();
133
+ clearInterval(handle);
134
+ }
135
+ }
136
+ function formatted(o: Opts, out: (Opts["p"])[]): void {
137
+ o.p = { a: 2 };
138
+ touch();
139
+ console.log(o.p);
140
+ out.push(o.p);
141
+ }
142
+ handle = setInterval(() => {}, 1000);
143
+ console.log(specialized({}));
144
+ clearAfterCall();
145
+ stop();
146
+ formatted({}, []);
147
+ `);
148
+ expect(thrownMessages(module, "formatted")).toEqual([]);
149
+ });
150
+ //# sourceMappingURL=narrowing-stability.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"narrowing-stability.test.js","sourceRoot":"","sources":["../../../src/frontend/lowering/narrowing-stability.test.ts"],"names":[],"mappings":"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"}
@@ -111,8 +111,6 @@ export function positionNumber(lowerer, value, defaultValue, node, subject) {
111
111
  return numLit(0, loc);
112
112
  case "undefinedT":
113
113
  return defaultValue;
114
- case "jsval":
115
- return { kind: "jsExit", value, type: F64, loc };
116
114
  case "union": {
117
115
  const unionId = value.type.unionId;
118
116
  const arms = lowerer.unions.get(unionId).arms;
@@ -1 +1 @@
1
- {"version":3,"file":"optional-arguments.js","sourceRoot":"","sources":["../../../src/frontend/lowering/optional-arguments.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"optional-arguments.js","sourceRoot":"","sources":["../../../src/frontend/lowering/optional-arguments.ts"],"names":[],"mappings":"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"}
@@ -20,7 +20,7 @@ test("fenced instance slots are erased throughout signatures, storage and nested
20
20
  };
21
21
  const ref = (type) => ({ kind: "varRef", localId: "x", type, loc });
22
22
  const module = {
23
- irVersion: 15,
23
+ irVersion: 16,
24
24
  sourceFile: loc.file,
25
25
  entry: "main",
26
26
  globals: [{ id: "g", name: "g", type: composite, mutable: false }],
@@ -106,7 +106,7 @@ test("modules without optional tables and registered class types retain their st
106
106
  const loc = { file: "registered.ts", start: 0, end: 1 };
107
107
  const type = { kind: "object", className: "Registered" };
108
108
  const module = {
109
- irVersion: 15,
109
+ irVersion: 16,
110
110
  sourceFile: loc.file,
111
111
  entry: "main",
112
112
  functions: [
@@ -18,7 +18,7 @@ const IDENTITY_KINDS = new Set([
18
18
  ]);
19
19
  function atomicEquality(lowerer, left, right, sameValue, loc) {
20
20
  const a = left.type, b = right.type;
21
- if ([a.kind, b.kind].some((kind) => kind === "dyn" || kind === "jsval" || kind === "caught" || kind === "void"))
21
+ if ([a.kind, b.kind].some((kind) => kind === "dyn" || kind === "caught" || kind === "void"))
22
22
  return null;
23
23
  if (isUnitType(a) || isUnitType(b))
24
24
  return boolLit(a.kind === b.kind, loc);
@@ -1 +1 @@
1
- {"version":3,"file":"strict-equality.js","sourceRoot":"","sources":["../../../src/frontend/lowering/strict-equality.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"strict-equality.js","sourceRoot":"","sources":["../../../src/frontend/lowering/strict-equality.ts"],"names":[],"mappings":"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"}
@@ -108,71 +108,32 @@ export declare const STR_METHODS: Record<string, {
108
108
  export declare const STRING_INDEX_METHODS: Set<string>;
109
109
  /** String-pattern replacement composes native search, slice, and callback operations. */
110
110
  export declare const STRING_REPLACE_METHODS: Set<string>;
111
- /** One member of the island-backed ambient surface: declared argument
112
- * types (tsc enforces them at call sites; the arity double-checks the
113
- * table against the ambient file) and the validated island-exit target the
114
- * engine's result must satisfy. */
115
- export interface IslandFnEntry {
111
+ export interface StdlibFnEntry {
116
112
  args: IrType[];
117
113
  ret: IrType;
118
114
  }
119
115
  export declare const boundaryIntoIslandMsg: (typeName: string) => string;
120
116
  export declare const boundaryOutOfIslandMsg: (typeName: string) => string;
121
- /** The island-backed surface — standard-library APIs with no static
122
- * runtime implementation (Math methods outside STATIC_MATH_FNS,
123
- * number/string methods beyond the
124
- * intrinsic set, parseFloat, ...). ONE table drives both sides of the
125
- * gate: under --dynamic each entry lowers to marshal → engine execution →
126
- * validated exit to the declared return type; without the flag each use
127
- * site is a per-site SC2012. Membership here is only half the check — the
128
- * resolved symbol must be declared by the standard library (provenance,
129
- * never names), so a user's own `parseFloat` or `.toFixed` takes the
130
- * ordinary paths. The lib declares MORE than this table (extra members,
131
- * optional-parameter forms): everything untabled falls through to the
132
- * SC2020 lib fence — never an ICE, never a link error. Exported so the
133
- * table-vs-lib consistency test can check every entry against the lib's
134
- * own declarations — a drifted entry fails a test instead of surprising a
135
- * user. */
136
- export declare const ISLAND_SURFACE: {
137
- /** `Math.<fn>(...)` lowers to callMethod(globalGet("Math"), fn, args);
138
- * Math constants are compile-time numeric literals in STATIC_MATH_PROPS;
139
- * remaining Math properties retain island/fence behavior.
140
- * The entries here handle untabled scalar call shapes where --dynamic is
141
- * available; STATIC_MATH_FNS handles the ordinary typed calls first. */
117
+ export declare const STDLIB_SURFACE: {
142
118
  math: {
143
- fns: Record<string, IslandFnEntry | undefined>;
119
+ fns: Record<string, StdlibFnEntry | undefined>;
144
120
  props: Record<string, IrType | undefined>;
145
121
  };
146
122
  /** Methods on `number` receivers. The receiver marshals by value; the
147
123
  * engine auto-boxes primitives on method calls, so `this` binds the
148
124
  * number exactly as in JS. toString takes an EXPLICIT radix (radix-free
149
125
  * conversion is the static template-literal path). */
150
- number: Record<string, IslandFnEntry | undefined>;
126
+ number: Record<string, StdlibFnEntry | undefined>;
151
127
  /** Methods on `string` receivers beyond the static strIntrinsic set
152
128
  * (split/pad/trimStart/trimEnd moved to STR_METHODS — static now).
153
129
  * replace/replaceAll take STRING patterns (no regex is declared). `at`
154
130
  * returns `string`: out of range, the engine yields undefined and the
155
131
  * validated exit refuses it with a catchable TypeError (the documented
156
132
  * divergence from `string | undefined`). */
157
- string: Record<string, IslandFnEntry | undefined>;
158
- /** Global functions: parseInt and isNaN are STATIC (lower-calls.ts →
159
- * num.parseInt/num.isNaN), and parseFloat/isFinite lower statically
160
- * over EXACTLY-typed arguments (a string for parseFloat, a number for
161
- * isFinite — num.parseFloat/number.isFinite); these island entries
162
- * carry every OTHER argument shape, where the ToNumber/ToString
163
- * coercions stay engine territory. */
164
- globals: Record<string, IslandFnEntry | undefined>;
133
+ string: Record<string, StdlibFnEntry | undefined>;
134
+ globals: Record<string, StdlibFnEntry | undefined>;
165
135
  };
166
- /** Math properties with a STATIC lowering: each read becomes the exact
167
- * JavaScript numeric constant in the typed IR. No runtime Math object read or
168
- * dynamic-engine dependency is involved. Remaining Math properties retain
169
- * their island/fence behavior through ISLAND_SURFACE.math.props and the
170
- * generic standard-library member fence. */
171
136
  export declare const STATIC_MATH_PROPS: Record<string, number | undefined>;
172
- /** Math members with a STATIC lowering. Most use the tabled arity; min/max
173
- * accept any plain arity, and hypot accepts any arity including number[]
174
- * spreads. Checked before the island table by lowerIslandMethodCall and
175
- * included in the methods-as-values fence by lowerMathProperty. */
176
137
  export declare const STATIC_MATH_FNS: Record<string, {
177
138
  fn: IrLibFn;
178
139
  arity: number;
@@ -1,13 +1,7 @@
1
- /* Surface tables and provenance predicates of the lowerer: the island
2
- * surface (Math/number/string/global functions marshalable through the
3
- * dynamic island), the node builtin-module call tables and their fence
4
- * hints, the string/array/map/set method-name sets, the unsupported-syntax
5
- * diagnostic tables, and the "which world declared this symbol" predicates
6
- * (ambient scriptc.d.ts / standard lib / @types/node provenance). */
7
1
  import * as ts from "../ts7/adapter.js";
8
2
  import { UNSUPPORTED } from "../../diagnostics/diagnostic.js";
9
3
  import { BOOL, BYTES_U8, CHILD_T, CRYPTOHASH_T, CRYPTOHMAC_T, DYN, F64, FILEHANDLE_T, SPAWNRES_T, STATS_T, STRING, URL_T, VOID, arrayOf, } from "../../ir/ir.js";
10
- import { isJsSourceFile, isNodeTypesPath, requireSpecOf } from "../program.js";
4
+ import { isNodeTypesPath, requireSpecOf } from "../program.js";
11
5
  /** Statement-level constructs rejected wholesale, keyed by syntax kind. */
12
6
  export const UNSUPPORTED_STMT = {
13
7
  // DoStatement / SwitchStatement are supported; handled in lowerStmt.
@@ -499,14 +493,11 @@ export const STR_METHODS = {
499
493
  // lowering so the IR/runtime always see the spec's effective value.
500
494
  // Empty separator splits per UTF-16 code unit —
501
495
  // astral halves become U+FFFD (SEMANTICS.md divergence 2, the same
502
- // substitution the island's boundary marshal applied).
503
496
  split: { method: "split", result: arrayOf(STRING), minArgs: 0, maxArgs: 2 },
504
497
  // Padding completes omitted lengths and fill strings in its lowering.
505
498
  padStart: { method: "padStart", result: STRING, minArgs: 0, maxArgs: 2 },
506
499
  padEnd: { method: "padEnd", result: STRING, minArgs: 0, maxArgs: 2 },
507
- // The lre-backed pair (ECMA Default Case Conversion, final sigma
508
- // included — scr_regex.c): static now, no island needed; their presence
509
- // flips the regex LINK switch (moduleUsesRegex).
500
+ // Unicode case conversion shares the libregexp/libunicode link inputs.
510
501
  toLowerCase: { method: "toLowerCase", result: STRING, minArgs: 0, maxArgs: 0 },
511
502
  toUpperCase: { method: "toUpperCase", result: STRING, minArgs: 0, maxArgs: 0 },
512
503
  normalize: { method: "normalize", result: STRING, minArgs: 0, maxArgs: 1 },
@@ -529,27 +520,7 @@ export const boundaryIntoIslandMsg = (typeName) => `passing a value of type '${t
529
520
  export const boundaryOutOfIslandMsg = (typeName) => `using an 'any' value where '${typeName}' is expected ` +
530
521
  `(an 'any' value can only exit to numbers, strings, booleans, JSON-safe records/arrays/unions, ` +
531
522
  `and 'T | undefined' over those)`;
532
- /** The island-backed surface — standard-library APIs with no static
533
- * runtime implementation (Math methods outside STATIC_MATH_FNS,
534
- * number/string methods beyond the
535
- * intrinsic set, parseFloat, ...). ONE table drives both sides of the
536
- * gate: under --dynamic each entry lowers to marshal → engine execution →
537
- * validated exit to the declared return type; without the flag each use
538
- * site is a per-site SC2012. Membership here is only half the check — the
539
- * resolved symbol must be declared by the standard library (provenance,
540
- * never names), so a user's own `parseFloat` or `.toFixed` takes the
541
- * ordinary paths. The lib declares MORE than this table (extra members,
542
- * optional-parameter forms): everything untabled falls through to the
543
- * SC2020 lib fence — never an ICE, never a link error. Exported so the
544
- * table-vs-lib consistency test can check every entry against the lib's
545
- * own declarations — a drifted entry fails a test instead of surprising a
546
- * user. */
547
- export const ISLAND_SURFACE = {
548
- /** `Math.<fn>(...)` lowers to callMethod(globalGet("Math"), fn, args);
549
- * Math constants are compile-time numeric literals in STATIC_MATH_PROPS;
550
- * remaining Math properties retain island/fence behavior.
551
- * The entries here handle untabled scalar call shapes where --dynamic is
552
- * available; STATIC_MATH_FNS handles the ordinary typed calls first. */
523
+ export const STDLIB_SURFACE = {
553
524
  math: {
554
525
  // The static table below handles these methods at its admitted arities.
555
526
  fns: {
@@ -585,7 +556,6 @@ export const ISLAND_SURFACE = {
585
556
  tanh: ISL_N1,
586
557
  trunc: ISL_N1,
587
558
  },
588
- // Math constants are compile-time literals, not island properties.
589
559
  props: {},
590
560
  },
591
561
  /** Methods on `number` receivers. The receiver marshals by value; the
@@ -608,22 +578,11 @@ export const ISLAND_SURFACE = {
608
578
  replaceAll: { args: [STRING, STRING], ret: STRING },
609
579
  at: { args: [F64], ret: STRING },
610
580
  },
611
- /** Global functions: parseInt and isNaN are STATIC (lower-calls.ts →
612
- * num.parseInt/num.isNaN), and parseFloat/isFinite lower statically
613
- * over EXACTLY-typed arguments (a string for parseFloat, a number for
614
- * isFinite — num.parseFloat/number.isFinite); these island entries
615
- * carry every OTHER argument shape, where the ToNumber/ToString
616
- * coercions stay engine territory. */
617
581
  globals: {
618
582
  parseFloat: { args: [STRING], ret: F64 },
619
583
  isFinite: { args: [F64], ret: BOOL },
620
584
  },
621
585
  };
622
- /** Math properties with a STATIC lowering: each read becomes the exact
623
- * JavaScript numeric constant in the typed IR. No runtime Math object read or
624
- * dynamic-engine dependency is involved. Remaining Math properties retain
625
- * their island/fence behavior through ISLAND_SURFACE.math.props and the
626
- * generic standard-library member fence. */
627
586
  export const STATIC_MATH_PROPS = {
628
587
  E: 2.718281828459045,
629
588
  LN10: 2.302585092994046,
@@ -634,10 +593,6 @@ export const STATIC_MATH_PROPS = {
634
593
  SQRT1_2: 0.7071067811865476,
635
594
  SQRT2: 1.4142135623730951,
636
595
  };
637
- /** Math members with a STATIC lowering. Most use the tabled arity; min/max
638
- * accept any plain arity, and hypot accepts any arity including number[]
639
- * spreads. Checked before the island table by lowerIslandMethodCall and
640
- * included in the methods-as-values fence by lowerMathProperty. */
641
596
  export const STATIC_MATH_FNS = {
642
597
  floor: { fn: "math.floor", arity: 1 },
643
598
  abs: { fn: "math.abs", arity: 1 },
@@ -2235,7 +2190,7 @@ export const BUILTIN_MODULE_FENCE_HINTS = {
2235
2190
  module: {
2236
2191
  createRequire: "the lowered shape is a const binding (or a proven stable top-level let/var) over createRequire(import.meta.url) (or __filename) " +
2237
2192
  "whose require calls take STATIC string literals — builtins, project modules (including #imports), " +
2238
- "relative .json documents, --npm-static packages, and installed npm packages under --dynamic resolve at build time; " +
2193
+ "relative .json documents and natively compiled npm packages resolve at build time; " +
2239
2194
  "dynamic specifiers cannot exist in a compiled binary's fixed module graph",
2240
2195
  isBuiltin: "the lowered call checks a string against the baked Node v24 list, including bare/node: aliases and prefix-only builtins",
2241
2196
  syncBuiltinESMExports: "the direct zero-argument call is a no-op because compiled builtin exports are immutable and cannot become stale",
@@ -2349,7 +2304,7 @@ export function stdlibMemberFence(lowerer, access) {
2349
2304
  }
2350
2305
  else if (recvIr?.kind === "f64" && member === "toString") {
2351
2306
  hint =
2352
- "radix-free conversion is a template literal away: `${x}`; toString(radix) runs under --dynamic";
2307
+ "radix-free conversion is a template literal away: `${x}`; toString(radix) is unsupported";
2353
2308
  }
2354
2309
  else if (container === "Math" && (member === "min" || member === "max")) {
2355
2310
  hint =
@@ -2632,21 +2587,6 @@ export function stdlibGlobalAliasNameOf(lowerer, init) {
2632
2587
  : stdlibGlobalNameOf(lowerer, aliasExpr);
2633
2588
  if (name === null)
2634
2589
  return null;
2635
- // An explicitly any-typed globalThis binding in dynamic TypeScript
2636
- // holds the engine's global object. Keep the static alias for JS files
2637
- // (their bare-global value path uses identity tokens) and for the
2638
- // `globalThis || global` guard that the static alias path folds.
2639
- let directInit = init;
2640
- while (ts.isParenthesizedExpression(directInit))
2641
- directInit = directInit.expression;
2642
- if (name === "globalThis" &&
2643
- lowerer.dynamic &&
2644
- !isJsSourceFile(init.getSourceFile()) &&
2645
- ts.isIdentifier(directInit) &&
2646
- directInit.text === "globalThis" &&
2647
- ts.isVariableDeclaration(init.parent) &&
2648
- (lowerer.typeOf(init.parent.name).flags & ts.TypeFlags.Any) !== 0)
2649
- return null;
2650
2590
  // These globals have provenance-aware call or member lowering, so a
2651
2591
  // stable snapshot keeps the same dispatch as the original global.
2652
2592
  // Other callable globals still use their ordinary value paths.