@scriptc/compiler 0.1.4 → 0.1.6

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 (158) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +75 -11
  2. package/dist/backend/c/c-emitter.d.ts +5 -1
  3. package/dist/backend/c/c-emitter.js +22 -9
  4. package/dist/backend/c/c-emitter.js.map +1 -1
  5. package/dist/backend/c/exprs.d.ts +2 -2
  6. package/dist/backend/c/exprs.js +298 -27
  7. package/dist/backend/c/exprs.js.map +1 -1
  8. package/dist/backend/c/stmts.js +5 -3
  9. package/dist/backend/c/stmts.js.map +1 -1
  10. package/dist/backend/c/types.d.ts +2 -3
  11. package/dist/backend/c/types.js +8 -1
  12. package/dist/backend/c/types.js.map +1 -1
  13. package/dist/backend/c/walkers.js +1 -1
  14. package/dist/backend/c/walkers.js.map +1 -1
  15. package/dist/backend/link-plan.d.ts +1 -0
  16. package/dist/backend/link-plan.js +2 -1
  17. package/dist/backend/link-plan.js.map +1 -1
  18. package/dist/backend/llvm/dyn.js +1 -1
  19. package/dist/backend/llvm/dyn.js.map +1 -1
  20. package/dist/backend/llvm/emitter.js +25 -9
  21. package/dist/backend/llvm/emitter.js.map +1 -1
  22. package/dist/backend/llvm/expr-bytes.d.ts +1 -2
  23. package/dist/backend/llvm/expr-bytes.js +22 -17
  24. package/dist/backend/llvm/expr-bytes.js.map +1 -1
  25. package/dist/backend/llvm/expr-containers.d.ts +1 -0
  26. package/dist/backend/llvm/expr-containers.js +58 -4
  27. package/dist/backend/llvm/expr-containers.js.map +1 -1
  28. package/dist/backend/llvm/expr-context.d.ts +6 -2
  29. package/dist/backend/llvm/expr-primitives.js +22 -7
  30. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  31. package/dist/backend/llvm/lib-filesystem.js +20 -0
  32. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  33. package/dist/backend/llvm/lib-network.js +53 -10
  34. package/dist/backend/llvm/lib-network.js.map +1 -1
  35. package/dist/backend/llvm/lib-process.js +4 -3
  36. package/dist/backend/llvm/lib-process.js.map +1 -1
  37. package/dist/backend/llvm/lib-shared.js +65 -0
  38. package/dist/backend/llvm/lib-shared.js.map +1 -1
  39. package/dist/backend/native-toolchain.d.ts +2 -0
  40. package/dist/backend/native-toolchain.js +2 -1
  41. package/dist/backend/native-toolchain.js.map +1 -1
  42. package/dist/backend/targets.d.ts +3 -0
  43. package/dist/backend/targets.js +13 -0
  44. package/dist/backend/targets.js.map +1 -1
  45. package/dist/coverage/surface-manifest.js +12 -5
  46. package/dist/coverage/surface-manifest.js.map +1 -1
  47. package/dist/executable/executable-cache.d.ts +2 -0
  48. package/dist/executable/executable-cache.js +3 -1
  49. package/dist/executable/executable-cache.js.map +1 -1
  50. package/dist/executable/executable-cache.test.js +3 -3
  51. package/dist/executable/executable-cache.test.js.map +1 -1
  52. package/dist/frontend/lowering/array-indexed-mutation.d.ts +8 -0
  53. package/dist/frontend/lowering/array-indexed-mutation.js +176 -0
  54. package/dist/frontend/lowering/array-indexed-mutation.js.map +1 -0
  55. package/dist/frontend/lowering/containers/bytes.d.ts +1 -1
  56. package/dist/frontend/lowering/containers/bytes.js +6 -5
  57. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  58. package/dist/frontend/lowering/containers/string-and-regexp.d.ts +14 -6
  59. package/dist/frontend/lowering/containers/string-and-regexp.js +420 -34
  60. package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
  61. package/dist/frontend/lowering/expressions/object-literals.js +8 -0
  62. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  63. package/dist/frontend/lowering/indexed-comparison.d.ts +6 -0
  64. package/dist/frontend/lowering/indexed-comparison.js +30 -0
  65. package/dist/frontend/lowering/indexed-comparison.js.map +1 -0
  66. package/dist/frontend/lowering/lower-builtins.d.ts +5 -6
  67. package/dist/frontend/lowering/lower-builtins.js +24 -16
  68. package/dist/frontend/lowering/lower-builtins.js.map +1 -1
  69. package/dist/frontend/lowering/lower-calls.d.ts +3 -2
  70. package/dist/frontend/lowering/lower-calls.js +522 -89
  71. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  72. package/dist/frontend/lowering/lower-classes.js +5 -29
  73. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  74. package/dist/frontend/lowering/lower-containers.d.ts +15 -11
  75. package/dist/frontend/lowering/lower-containers.js +588 -146
  76. package/dist/frontend/lowering/lower-containers.js.map +1 -1
  77. package/dist/frontend/lowering/lower-exprs.d.ts +12 -0
  78. package/dist/frontend/lowering/lower-exprs.js +145 -11
  79. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  80. package/dist/frontend/lowering/lower-island.js +17 -6
  81. package/dist/frontend/lowering/lower-island.js.map +1 -1
  82. package/dist/frontend/lowering/lower-server.d.ts +2 -4
  83. package/dist/frontend/lowering/lower-server.js +288 -32
  84. package/dist/frontend/lowering/lower-server.js.map +1 -1
  85. package/dist/frontend/lowering/lower-stmts.js +4 -4
  86. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  87. package/dist/frontend/lowering/lowerer.js +37 -2
  88. package/dist/frontend/lowering/lowerer.js.map +1 -1
  89. package/dist/frontend/lowering/optional-arguments.d.ts +9 -1
  90. package/dist/frontend/lowering/optional-arguments.js +67 -1
  91. package/dist/frontend/lowering/optional-arguments.js.map +1 -1
  92. package/dist/frontend/lowering/pairs-snapshot.d.ts +3 -1
  93. package/dist/frontend/lowering/pairs-snapshot.js +12 -4
  94. package/dist/frontend/lowering/pairs-snapshot.js.map +1 -1
  95. package/dist/frontend/lowering/surfaces.d.ts +10 -14
  96. package/dist/frontend/lowering/surfaces.js +50 -28
  97. package/dist/frontend/lowering/surfaces.js.map +1 -1
  98. package/dist/frontend/npm-static-prune.d.ts +6 -0
  99. package/dist/frontend/npm-static-prune.js +203 -0
  100. package/dist/frontend/npm-static-prune.js.map +1 -0
  101. package/dist/frontend/npm-static-prune.test.d.ts +1 -0
  102. package/dist/frontend/npm-static-prune.test.js +48 -0
  103. package/dist/frontend/npm-static-prune.test.js.map +1 -0
  104. package/dist/frontend/npm.js +7 -6
  105. package/dist/frontend/npm.js.map +1 -1
  106. package/dist/frontend/program.js +15 -4
  107. package/dist/frontend/program.js.map +1 -1
  108. package/dist/frontend/provenance.js +8 -3
  109. package/dist/frontend/provenance.js.map +1 -1
  110. package/dist/frontend/type-mapper.js +16 -5
  111. package/dist/frontend/type-mapper.js.map +1 -1
  112. package/dist/index.d.ts +3 -3
  113. package/dist/index.js +13 -41
  114. package/dist/index.js.map +1 -1
  115. package/dist/ir/analysis.d.ts +5 -3
  116. package/dist/ir/analysis.js +25 -11
  117. package/dist/ir/analysis.js.map +1 -1
  118. package/dist/ir/analysis.test.js +50 -2
  119. package/dist/ir/analysis.test.js.map +1 -1
  120. package/dist/ir/constant-tables.d.ts +17 -0
  121. package/dist/ir/constant-tables.js +99 -0
  122. package/dist/ir/constant-tables.js.map +1 -0
  123. package/dist/ir/constant-tables.test.d.ts +1 -0
  124. package/dist/ir/constant-tables.test.js +78 -0
  125. package/dist/ir/constant-tables.test.js.map +1 -0
  126. package/dist/ir/integer-ranges.d.ts +13 -0
  127. package/dist/ir/integer-ranges.js +122 -0
  128. package/dist/ir/integer-ranges.js.map +1 -0
  129. package/dist/ir/integer-ranges.test.d.ts +1 -0
  130. package/dist/ir/integer-ranges.test.js +63 -0
  131. package/dist/ir/integer-ranges.test.js.map +1 -0
  132. package/dist/ir/ir.d.ts +56 -35
  133. package/dist/ir/ir.js +9 -1
  134. package/dist/ir/ir.js.map +1 -1
  135. package/dist/ir/ir.test.js +6 -0
  136. package/dist/ir/ir.test.js.map +1 -1
  137. package/dist/ir/scalar-records.d.ts +8 -0
  138. package/dist/ir/scalar-records.js +216 -0
  139. package/dist/ir/scalar-records.js.map +1 -0
  140. package/dist/ir/scalar-records.test.d.ts +1 -0
  141. package/dist/ir/scalar-records.test.js +142 -0
  142. package/dist/ir/scalar-records.test.js.map +1 -0
  143. package/dist/ir/validate.js +135 -34
  144. package/dist/ir/validate.js.map +1 -1
  145. package/dist/ir/validate.test.d.ts +1 -0
  146. package/dist/ir/validate.test.js +48 -0
  147. package/dist/ir/validate.test.js.map +1 -0
  148. package/dist/library/cache-primitives.d.ts +1 -1
  149. package/dist/library/cache-primitives.js +3 -3
  150. package/dist/library/cache-primitives.js.map +1 -1
  151. package/dist/library/fence-eval.js +11 -4
  152. package/dist/library/fence-eval.js.map +1 -1
  153. package/dist/library/library-cache.js +0 -1
  154. package/dist/library/library-cache.js.map +1 -1
  155. package/dist/library/library-cache.test.js +3 -3
  156. package/dist/library/library-cache.test.js.map +1 -1
  157. package/package.json +17 -17
  158. package/surface-manifest.json +90 -45
@@ -1,9 +1,17 @@
1
1
  import * as ts from "../ts7/adapter.js";
2
- import type { IrExpr, IrType } from "../../ir/ir.js";
2
+ import type { IrExpr, IrType, SrcLoc } from "../../ir/ir.js";
3
3
  import type { Lowerer } from "./lowerer.js";
4
4
  /** Lower an expression whose checker type is statically `undefined`/`void`. */
5
5
  export declare function lowerStaticallyUndefinedArgument(lowerer: Lowerer, node: ts.Expression): IrExpr | null;
6
6
  /** Preserve an explicitly undefined argument's effects, then use its default. */
7
7
  export declare function defaultAfterUndefined(value: IrExpr, defaultValue: IrExpr): IrExpr;
8
+ /** Convert an omitted or supplied string-search value after preserving its effects. */
9
+ export declare function lowerStringSearchArgument(lowerer: Lowerer, node: ts.Expression | undefined, loc: SrcLoc): IrExpr;
10
+ /** Convert a lowered string-search value while preserving unit-value effects. */
11
+ export declare function coerceStringSearchValue(lowerer: Lowerer, value: IrExpr, node: ts.Expression, loc: SrcLoc): IrExpr;
8
12
  /** Lower an optional argument, applying its default only to the undefined arm. */
9
13
  export declare function lowerOptionalArgument(lowerer: Lowerer, node: ts.Expression, expected: IrType, defaultValue: IrExpr): IrExpr;
14
+ /** Complete an omitted or statically undefined position without dropping argument effects. */
15
+ export declare function lowerPositionArgument(lowerer: Lowerer, node: ts.Expression | undefined, defaultValue: IrExpr): IrExpr;
16
+ /** Convert a stabilized position after the method has evaluated its arguments. */
17
+ export declare function positionNumber(lowerer: Lowerer, value: IrExpr, defaultValue: IrExpr, node: ts.Expression, subject: string): IrExpr;
@@ -1,5 +1,6 @@
1
1
  import * as ts from "../ts7/adapter.js";
2
- import { typeEquals } from "../../ir/ir.js";
2
+ import { BOOL, F64, isUnitType, typeEquals } from "../../ir/ir.js";
3
+ import { numLit, strLit } from "../../ir/build.js";
3
4
  import { isSafeToDiscard } from "./expressions/evaluation-safety.js";
4
5
  /** Lower an expression whose checker type is statically `undefined`/`void`. */
5
6
  export function lowerStaticallyUndefinedArgument(lowerer, node) {
@@ -38,6 +39,23 @@ export function defaultAfterUndefined(value, defaultValue) {
38
39
  loc: value.loc,
39
40
  };
40
41
  }
42
+ /** Convert an omitted or supplied string-search value after preserving its effects. */
43
+ export function lowerStringSearchArgument(lowerer, node, loc) {
44
+ const absent = strLit("undefined", loc);
45
+ if (!node)
46
+ return absent;
47
+ const undefinedArg = lowerStaticallyUndefinedArgument(lowerer, node);
48
+ if (undefinedArg)
49
+ return defaultAfterUndefined(undefinedArg, absent);
50
+ return coerceStringSearchValue(lowerer, lowerer.lowerExpr(node), node, loc);
51
+ }
52
+ /** Convert a lowered string-search value while preserving unit-value effects. */
53
+ export function coerceStringSearchValue(lowerer, value, node, loc) {
54
+ if (isUnitType(value.type)) {
55
+ return defaultAfterUndefined(value, strLit(value.type.kind === "nullT" ? "null" : "undefined", loc));
56
+ }
57
+ return lowerer.ensureString(value, node);
58
+ }
41
59
  /** Lower an optional argument, applying its default only to the undefined arm. */
42
60
  export function lowerOptionalArgument(lowerer, node, expected, defaultValue) {
43
61
  const undefinedArg = lowerStaticallyUndefinedArgument(lowerer, node);
@@ -54,4 +72,52 @@ export function lowerOptionalArgument(lowerer, node, expected, defaultValue) {
54
72
  }
55
73
  return lowerer.coerceInto(node, value, expected);
56
74
  }
75
+ /** Complete an omitted or statically undefined position without dropping argument effects. */
76
+ export function lowerPositionArgument(lowerer, node, defaultValue) {
77
+ if (!node)
78
+ return defaultValue;
79
+ const undefinedArg = lowerStaticallyUndefinedArgument(lowerer, node);
80
+ if (undefinedArg)
81
+ return defaultAfterUndefined(undefinedArg, defaultValue);
82
+ const value = lowerer.lowerExpr(node);
83
+ if (isUnitType(value.type) || value.type.kind === "void") {
84
+ return defaultAfterUndefined(value, value.type.kind === "nullT" ? numLit(0, value.loc) : defaultValue);
85
+ }
86
+ return value;
87
+ }
88
+ /** Convert a stabilized position after the method has evaluated its arguments. */
89
+ export function positionNumber(lowerer, value, defaultValue, node, subject) {
90
+ const loc = value.loc;
91
+ switch (value.type.kind) {
92
+ case "f64": return value;
93
+ case "string": return { kind: "libCall", fn: "num.fromString", args: [value], type: F64, loc };
94
+ case "bool": return { kind: "ternary", cond: value, then: numLit(1, loc), else_: numLit(0, loc), type: F64, loc };
95
+ case "nullT": return numLit(0, loc);
96
+ case "undefinedT": return defaultValue;
97
+ case "jsval": return { kind: "jsExit", value, type: F64, loc };
98
+ case "union": {
99
+ const unionId = value.type.unionId;
100
+ const arms = lowerer.unions.get(unionId).arms;
101
+ let result = defaultValue;
102
+ for (let tag = arms.length - 1; tag >= 0; tag--) {
103
+ const narrowed = { kind: "unionNarrow", unionId, tag, value, type: arms[tag], loc };
104
+ const converted = positionNumber(lowerer, narrowed, defaultValue, node, subject);
105
+ result = tag === arms.length - 1 ? converted : {
106
+ kind: "ternary",
107
+ cond: { kind: "unionIsTag", unionId, tag, value, negated: false, type: BOOL, loc },
108
+ then: converted, else_: result, type: F64, loc,
109
+ };
110
+ }
111
+ return result;
112
+ }
113
+ case "dyn": return {
114
+ kind: "ternary",
115
+ cond: { kind: "dynTest", test: "undefined", value, type: BOOL, loc },
116
+ then: defaultValue,
117
+ else_: { kind: "libCall", fn: "dyn.toNumberCoerce", args: [value], type: F64, loc },
118
+ type: F64, loc,
119
+ };
120
+ default: return lowerer.noLowering(`${subject} of '${lowerer.fmt(value.type)}' values`, node);
121
+ }
122
+ }
57
123
  //# sourceMappingURL=optional-arguments.js.map
@@ -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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"}
@@ -1,11 +1,13 @@
1
1
  import { type IrExpr, type IrLibFn, type IrParam, type IrType, type SrcLoc } from "../../ir/ir.js";
2
2
  import type { Lowerer } from "./lowerer.js";
3
3
  /** Intern a helper that materializes a pure string-index record from a flat
4
- * `[key, value, ...]` array returned by a runtime call. */
4
+ * `[key, value, ...]` array. Distinct HTTP records use the pair keys and
5
+ * look up each key's full string[] value. */
5
6
  export declare function pairsSnapshotHelper(lowerer: Lowerer, shapeId: string, loc: SrcLoc, options: {
6
7
  keyPrefix: string;
7
8
  libCall: IrLibFn;
8
9
  params?: IrParam[];
9
10
  callArgs?: IrExpr[];
10
11
  indexValueOk?: (indexValue: IrType) => boolean;
12
+ lookupValue?: "http.reqHeaderValues" | "http.reqTrailerValues";
11
13
  }): string | null;
@@ -1,7 +1,8 @@
1
1
  import { arrayOf, BOOL, F64, STRING } from "../../ir/ir.js";
2
2
  import { numLit, varRef } from "../../ir/build.js";
3
3
  /** Intern a helper that materializes a pure string-index record from a flat
4
- * `[key, value, ...]` array returned by a runtime call. */
4
+ * `[key, value, ...]` array. Distinct HTTP records use the pair keys and
5
+ * look up each key's full string[] value. */
5
6
  export function pairsSnapshotHelper(lowerer, shapeId, loc, options) {
6
7
  const shape = lowerer.shapes.get(shapeId);
7
8
  if (!shape || shape.tuple || shape.fields.length > 0 || !shape.indexValue)
@@ -11,8 +12,13 @@ export function pairsSnapshotHelper(lowerer, shapeId, loc, options) {
11
12
  return null;
12
13
  if (indexValue.kind !== "union")
13
14
  return null;
14
- const stringTag = lowerer.armTag(indexValue.unionId, STRING);
15
- if (stringTag < 0)
15
+ const stringTag = options.lookupValue ? -1 : lowerer.armTag(indexValue.unionId, STRING);
16
+ if (options.lookupValue) {
17
+ const arrayValue = lowerer.withUndefinedArm(arrayOf(STRING));
18
+ if (arrayValue.kind !== "union" || indexValue.unionId !== arrayValue.unionId)
19
+ return null;
20
+ }
21
+ else if (stringTag < 0)
16
22
  return null;
17
23
  const key = `${options.keyPrefix}.snapshot:${shapeId}`;
18
24
  const existing = lowerer.widthHelpers.get(key);
@@ -71,7 +77,9 @@ export function pairsSnapshotHelper(lowerer, shapeId, loc, options) {
71
77
  obj: varRef("out.0", recordType, loc),
72
78
  shapeId,
73
79
  key: pairAt(0),
74
- value: { kind: "unionWrap", unionId: indexValue.unionId, tag: stringTag, value: pairAt(1), type: indexValue, loc },
80
+ value: options.lookupValue
81
+ ? { kind: "libCall", fn: options.lookupValue, args: [...(options.callArgs ?? []), pairAt(0)], type: indexValue, loc }
82
+ : { kind: "unionWrap", unionId: indexValue.unionId, tag: stringTag, value: pairAt(1), type: indexValue, loc },
75
83
  loc,
76
84
  }],
77
85
  loc,
@@ -1 +1 @@
1
- {"version":3,"file":"pairs-snapshot.js","sourceRoot":"","sources":["../../../src/frontend/lowering/pairs-snapshot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pairs-snapshot.js","sourceRoot":"","sources":["../../../src/frontend/lowering/pairs-snapshot.ts"],"names":[],"mappings":"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"}
@@ -103,6 +103,8 @@ export declare const STR_METHODS: Record<string, {
103
103
  minArgs: number;
104
104
  maxArgs: number;
105
105
  }>;
106
+ /** String index reads return an undefined arm and compose the existing UTF-16 intrinsics. */
107
+ export declare const STRING_INDEX_METHODS: Set<string>;
106
108
  /** One member of the island-backed ambient surface: declared argument
107
109
  * types (tsc enforces them at call sites; the arity double-checks the
108
110
  * table against the ambient file) and the validated island-exit target the
@@ -114,8 +116,8 @@ export interface IslandFnEntry {
114
116
  export declare const boundaryIntoIslandMsg: (typeName: string) => string;
115
117
  export declare const boundaryOutOfIslandMsg: (typeName: string) => string;
116
118
  /** The island-backed surface — standard-library APIs with no static
117
- * runtime implementation (Math methods/properties beyond the compile-time
118
- * constants, number/string methods beyond the
119
+ * runtime implementation (Math methods outside STATIC_MATH_FNS,
120
+ * number/string methods beyond the
119
121
  * intrinsic set, parseFloat, ...). ONE table drives both sides of the
120
122
  * gate: under --dynamic each entry lowers to marshal → engine execution →
121
123
  * validated exit to the declared return type; without the flag each use
@@ -132,8 +134,8 @@ export declare const ISLAND_SURFACE: {
132
134
  /** `Math.<fn>(...)` lowers to callMethod(globalGet("Math"), fn, args);
133
135
  * Math.PI and Math.E are compile-time numeric literals in STATIC_MATH_PROPS;
134
136
  * remaining Math properties retain island/fence behavior.
135
- * min/max/atan2/hypot/pow are declared with exactly two parameters
136
- * (rest/optional parameters aren't representable). */
137
+ * The entries here handle untabled scalar call shapes where --dynamic is
138
+ * available; STATIC_MATH_FNS handles the ordinary typed calls first. */
137
139
  math: {
138
140
  fns: Record<string, IslandFnEntry | undefined>;
139
141
  props: Record<string, IrType | undefined>;
@@ -164,16 +166,10 @@ export declare const ISLAND_SURFACE: {
164
166
  * their island/fence behavior through ISLAND_SURFACE.math.props and the
165
167
  * generic standard-library member fence. */
166
168
  export declare const STATIC_MATH_PROPS: Record<string, number | undefined>;
167
- /** Math members with a STATIC lowering — each is one C call that IS the
168
- * JS operation, at the tabled arity (floor: libm's floor; min/max: the
169
- * NaN-poisoning ±0-ordered scalar folds; random: arc4random-backed
170
- * uniform [0,1) — SEMANTICS.md 62). Checked BEFORE the island table
171
- * (lowerIslandMethodCall), so the tabled arities compile statically and
172
- * other arities keep the island/fence story — except min/max, whose
173
- * variadic spelling lowers at ANY plain arity (the n-ary left fold of
174
- * the scalar compare; zero arguments answer the fold's ∓Infinity seed);
175
- * unioned with the island table for the methods-as-values fence
176
- * (lowerMathProperty). */
169
+ /** Math members with a STATIC lowering. Most use the tabled arity; min/max
170
+ * accept any plain arity, and hypot accepts any arity including number[]
171
+ * spreads. Checked before the island table by lowerIslandMethodCall and
172
+ * included in the methods-as-values fence by lowerMathProperty. */
177
173
  export declare const STATIC_MATH_FNS: Record<string, {
178
174
  fn: IrLibFn;
179
175
  arity: number;
@@ -261,6 +261,8 @@ export const ARRAY_METHODS = new Set([
261
261
  "unshift",
262
262
  "pop",
263
263
  "reverse",
264
+ "fill",
265
+ "copyWithin",
264
266
  "concat",
265
267
  "map",
266
268
  "filter",
@@ -273,9 +275,11 @@ export const ARRAY_METHODS = new Set([
273
275
  "every",
274
276
  "at",
275
277
  "flatMap",
278
+ "flat",
276
279
  "reduce",
277
280
  "reduceRight",
278
281
  "indexOf",
282
+ "lastIndexOf",
279
283
  "includes",
280
284
  "join",
281
285
  "slice",
@@ -330,19 +334,19 @@ export const COMPOUND_ASSIGN_OPS = {
330
334
  * parameters) that typecheck but have no lowering — those forms are fenced
331
335
  * per site instead of silently dropping arguments. */
332
336
  export const STR_METHODS = {
333
- charCodeAt: { method: "charCodeAt", result: F64, minArgs: 1, maxArgs: 1 },
334
- charAt: { method: "charAt", result: STRING, minArgs: 1, maxArgs: 1 },
335
- indexOf: { method: "indexOf", result: F64, minArgs: 1, maxArgs: 2 },
337
+ charCodeAt: { method: "charCodeAt", result: F64, minArgs: 0, maxArgs: 1 },
338
+ charAt: { method: "charAt", result: STRING, minArgs: 0, maxArgs: 1 },
339
+ indexOf: { method: "indexOf", result: F64, minArgs: 0, maxArgs: 2 },
336
340
  // includes with a position argument is indexOf's clamp exactly (the
337
341
  // spec routes both through StringIndexOf) — the emitter composes
338
342
  // scr_str_index_of(...) != -1 for the two-argument form.
339
- includes: { method: "includes", result: BOOL, minArgs: 1, maxArgs: 2 },
340
- startsWith: { method: "startsWith", result: BOOL, minArgs: 1, maxArgs: 1 },
341
- endsWith: { method: "endsWith", result: BOOL, minArgs: 1, maxArgs: 1 },
343
+ includes: { method: "includes", result: BOOL, minArgs: 0, maxArgs: 2 },
344
+ startsWith: { method: "startsWith", result: BOOL, minArgs: 0, maxArgs: 2 },
345
+ endsWith: { method: "endsWith", result: BOOL, minArgs: 0, maxArgs: 2 },
342
346
  slice: { method: "slice", result: STRING, minArgs: 0, maxArgs: 2 },
343
347
  // substring: slice's clamp-and-swap sibling (negatives clamp to 0
344
348
  // instead of counting from the end; start > end swaps).
345
- substring: { method: "substring", result: STRING, minArgs: 1, maxArgs: 2 },
349
+ substring: { method: "substring", result: STRING, minArgs: 0, maxArgs: 2 },
346
350
  repeat: { method: "repeat", result: STRING, minArgs: 1, maxArgs: 1 },
347
351
  trim: { method: "trim", result: STRING, minArgs: 0, maxArgs: 0 },
348
352
  trimStart: { method: "trimStart", result: STRING, minArgs: 0, maxArgs: 0 },
@@ -357,11 +361,10 @@ export const STR_METHODS = {
357
361
  // Empty separator splits per UTF-16 code unit —
358
362
  // astral halves become U+FFFD (SEMANTICS.md divergence 2, the same
359
363
  // substitution the island's boundary marshal applied).
360
- split: { method: "split", result: arrayOf(STRING), minArgs: 1, maxArgs: 2 },
361
- // padStart/padEnd with the fill omitted: Node pads with " " — the
362
- // lowering completes the default (lowerStringMethodCall).
363
- padStart: { method: "padStart", result: STRING, minArgs: 1, maxArgs: 2 },
364
- padEnd: { method: "padEnd", result: STRING, minArgs: 1, maxArgs: 2 },
364
+ split: { method: "split", result: arrayOf(STRING), minArgs: 0, maxArgs: 2 },
365
+ // Padding completes omitted lengths and fill strings in its lowering.
366
+ padStart: { method: "padStart", result: STRING, minArgs: 0, maxArgs: 2 },
367
+ padEnd: { method: "padEnd", result: STRING, minArgs: 0, maxArgs: 2 },
365
368
  // The lre-backed pair (ECMA Default Case Conversion, final sigma
366
369
  // included — scr_regex.c): static now, no island needed; their presence
367
370
  // flips the regex LINK switch (moduleUsesRegex).
@@ -374,6 +377,8 @@ export const STR_METHODS = {
374
377
  isWellFormed: { method: "isWellFormed", result: BOOL, minArgs: 0, maxArgs: 0 },
375
378
  toWellFormed: { method: "toWellFormed", result: STRING, minArgs: 0, maxArgs: 0 },
376
379
  };
380
+ /** String index reads return an undefined arm and compose the existing UTF-16 intrinsics. */
381
+ export const STRING_INDEX_METHODS = new Set(["at", "codePointAt"]);
377
382
  const ISL_N1 = { args: [F64], ret: F64 };
378
383
  const ISL_N2 = { args: [F64, F64], ret: F64 };
379
384
  export const boundaryIntoIslandMsg = (typeName) => `passing a value of type '${typeName}' into dynamically-executed ('any'-typed) code ` +
@@ -383,8 +388,8 @@ export const boundaryOutOfIslandMsg = (typeName) => `using an 'any' value where
383
388
  `(an 'any' value can only exit to numbers, strings, booleans, JSON-safe records/arrays/unions, ` +
384
389
  `and 'T | undefined' over those)`;
385
390
  /** The island-backed surface — standard-library APIs with no static
386
- * runtime implementation (Math methods/properties beyond the compile-time
387
- * constants, number/string methods beyond the
391
+ * runtime implementation (Math methods outside STATIC_MATH_FNS,
392
+ * number/string methods beyond the
388
393
  * intrinsic set, parseFloat, ...). ONE table drives both sides of the
389
394
  * gate: under --dynamic each entry lowers to marshal → engine execution →
390
395
  * validated exit to the declared return type; without the flag each use
@@ -401,11 +406,10 @@ export const ISLAND_SURFACE = {
401
406
  /** `Math.<fn>(...)` lowers to callMethod(globalGet("Math"), fn, args);
402
407
  * Math.PI and Math.E are compile-time numeric literals in STATIC_MATH_PROPS;
403
408
  * remaining Math properties retain island/fence behavior.
404
- * min/max/atan2/hypot/pow are declared with exactly two parameters
405
- * (rest/optional parameters aren't representable). */
409
+ * The entries here handle untabled scalar call shapes where --dynamic is
410
+ * available; STATIC_MATH_FNS handles the ordinary typed calls first. */
406
411
  math: {
407
- // floor, min/max (two-arg), and random are STATIC now
408
- // (STATIC_MATH_FNS below).
412
+ // The static table below handles these methods at its admitted arities.
409
413
  fns: {
410
414
  abs: ISL_N1, acos: ISL_N1, asin: ISL_N1, atan: ISL_N1, atan2: ISL_N2,
411
415
  cbrt: ISL_N1, ceil: ISL_N1, cos: ISL_N1, exp: ISL_N1,
@@ -456,16 +460,10 @@ export const STATIC_MATH_PROPS = {
456
460
  PI: 3.141592653589793,
457
461
  E: 2.718281828459045,
458
462
  };
459
- /** Math members with a STATIC lowering — each is one C call that IS the
460
- * JS operation, at the tabled arity (floor: libm's floor; min/max: the
461
- * NaN-poisoning ±0-ordered scalar folds; random: arc4random-backed
462
- * uniform [0,1) — SEMANTICS.md 62). Checked BEFORE the island table
463
- * (lowerIslandMethodCall), so the tabled arities compile statically and
464
- * other arities keep the island/fence story — except min/max, whose
465
- * variadic spelling lowers at ANY plain arity (the n-ary left fold of
466
- * the scalar compare; zero arguments answer the fold's ∓Infinity seed);
467
- * unioned with the island table for the methods-as-values fence
468
- * (lowerMathProperty). */
463
+ /** Math members with a STATIC lowering. Most use the tabled arity; min/max
464
+ * accept any plain arity, and hypot accepts any arity including number[]
465
+ * spreads. Checked before the island table by lowerIslandMethodCall and
466
+ * included in the methods-as-values fence by lowerMathProperty. */
469
467
  export const STATIC_MATH_FNS = {
470
468
  floor: { fn: "math.floor", arity: 1 },
471
469
  abs: { fn: "math.abs", arity: 1 },
@@ -478,6 +476,22 @@ export const STATIC_MATH_FNS = {
478
476
  min: { fn: "math.min", arity: 2 },
479
477
  max: { fn: "math.max", arity: 2 },
480
478
  random: { fn: "math.random", arity: 0 },
479
+ sin: { fn: "math.sin", arity: 1 },
480
+ cos: { fn: "math.cos", arity: 1 },
481
+ tan: { fn: "math.tan", arity: 1 },
482
+ asin: { fn: "math.asin", arity: 1 },
483
+ acos: { fn: "math.acos", arity: 1 },
484
+ atan: { fn: "math.atan", arity: 1 },
485
+ cbrt: { fn: "math.cbrt", arity: 1 },
486
+ sign: { fn: "math.sign", arity: 1 },
487
+ exp: { fn: "math.exp", arity: 1 },
488
+ sqrt: { fn: "math.sqrt", arity: 1 },
489
+ log: { fn: "math.log", arity: 1 },
490
+ log2: { fn: "math.log2", arity: 1 },
491
+ log10: { fn: "math.log10", arity: 1 },
492
+ atan2: { fn: "math.atan2", arity: 2 },
493
+ pow: { fn: "math.pow", arity: 2 },
494
+ hypot: { fn: "math.hypotArr", arity: 2 },
481
495
  };
482
496
  /** Number prototype methods with dedicated STATIC lowering paths. The
483
497
  * libCall spellings are also the compiled-graph witnesses used by library
@@ -828,6 +842,7 @@ export const BUILTIN_MODULE_FNS = {
828
842
  * thread machinery) and never runs as a cluster worker (cluster forks the
829
843
  * node binary itself) — Node's own answers for a directly-run script. */
830
844
  export const BUILTIN_MODULE_CONSTS = {
845
+ http: { maxHeaderSize: 16384 },
831
846
  path: { sep: "/", delimiter: ":" },
832
847
  "path/posix": { sep: "/", delimiter: ":" },
833
848
  "path/win32": { sep: "\\", delimiter: ";" },
@@ -1035,6 +1050,13 @@ export const AMBIENT_SURFACE_FNS = [
1035
1050
  fns: ["process.columns"],
1036
1051
  note: "the columns read on the process stdio streams (terminal geometry)",
1037
1052
  },
1053
+ {
1054
+ id: "node-builtin.process.rows",
1055
+ kind: "node-builtin",
1056
+ name: "process.rows",
1057
+ fns: ["process.rows"],
1058
+ note: "the rows read on process.stdout/stderr (terminal geometry)",
1059
+ },
1038
1060
  {
1039
1061
  id: "node-builtin.process.kill",
1040
1062
  kind: "node-builtin",