@scriptc/compiler 0.1.3 → 0.1.4

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 (147) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +200 -51
  2. package/dist/backend/c/async.d.ts +25 -0
  3. package/dist/backend/c/async.js +167 -0
  4. package/dist/backend/c/async.js.map +1 -1
  5. package/dist/backend/c/c-emitter.d.ts +10 -0
  6. package/dist/backend/c/c-emitter.js +14 -2
  7. package/dist/backend/c/c-emitter.js.map +1 -1
  8. package/dist/backend/c/exprs.js +293 -51
  9. package/dist/backend/c/exprs.js.map +1 -1
  10. package/dist/backend/c/types.js +2 -0
  11. package/dist/backend/c/types.js.map +1 -1
  12. package/dist/backend/link-plan.d.ts +2 -1
  13. package/dist/backend/link-plan.js +2 -1
  14. package/dist/backend/link-plan.js.map +1 -1
  15. package/dist/backend/llvm/emitter.js +20 -6
  16. package/dist/backend/llvm/emitter.js.map +1 -1
  17. package/dist/backend/llvm/expr-bytes.d.ts +1 -1
  18. package/dist/backend/llvm/expr-bytes.js +8 -8
  19. package/dist/backend/llvm/expr-bytes.js.map +1 -1
  20. package/dist/backend/llvm/expr-callbacks.d.ts +9 -0
  21. package/dist/backend/llvm/expr-callbacks.js +125 -0
  22. package/dist/backend/llvm/expr-callbacks.js.map +1 -1
  23. package/dist/backend/llvm/expr-context.d.ts +14 -2
  24. package/dist/backend/llvm/expr-dispatch.js +1 -0
  25. package/dist/backend/llvm/expr-dispatch.js.map +1 -1
  26. package/dist/backend/llvm/expr-primitives.d.ts +1 -1
  27. package/dist/backend/llvm/expr-primitives.js +30 -9
  28. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  29. package/dist/backend/llvm/expr-primitives.test.d.ts +1 -0
  30. package/dist/backend/llvm/expr-primitives.test.js +38 -0
  31. package/dist/backend/llvm/expr-primitives.test.js.map +1 -0
  32. package/dist/backend/llvm/expr-stream-callbacks.d.ts +3 -0
  33. package/dist/backend/llvm/expr-stream-callbacks.js +69 -0
  34. package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
  35. package/dist/backend/llvm/lib-filesystem.js +68 -10
  36. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  37. package/dist/backend/llvm/lib-network.js +18 -2
  38. package/dist/backend/llvm/lib-network.js.map +1 -1
  39. package/dist/backend/llvm/lib-process.js +156 -6
  40. package/dist/backend/llvm/lib-process.js.map +1 -1
  41. package/dist/backend/llvm/lib-shared.js +36 -0
  42. package/dist/backend/llvm/lib-shared.js.map +1 -1
  43. package/dist/backend/llvm/lib-stream.js +23 -0
  44. package/dist/backend/llvm/lib-stream.js.map +1 -1
  45. package/dist/backend/native-toolchain.d.ts +3 -0
  46. package/dist/backend/native-toolchain.js +3 -1
  47. package/dist/backend/native-toolchain.js.map +1 -1
  48. package/dist/backend/runtime-pack.test.js +28 -10
  49. package/dist/backend/runtime-pack.test.js.map +1 -1
  50. package/dist/backend/targets.d.ts +4 -0
  51. package/dist/backend/targets.js +13 -0
  52. package/dist/backend/targets.js.map +1 -1
  53. package/dist/backend/targets.test.js +8 -1
  54. package/dist/backend/targets.test.js.map +1 -1
  55. package/dist/coverage/surface-manifest.js +8 -0
  56. package/dist/coverage/surface-manifest.js.map +1 -1
  57. package/dist/diagnostics/diagnostic.js +1 -1
  58. package/dist/diagnostics/diagnostic.js.map +1 -1
  59. package/dist/executable/executable-cache.d.ts +2 -0
  60. package/dist/executable/executable-cache.js +3 -0
  61. package/dist/executable/executable-cache.js.map +1 -1
  62. package/dist/frontend/fork-target.d.ts +17 -0
  63. package/dist/frontend/fork-target.js +256 -0
  64. package/dist/frontend/fork-target.js.map +1 -0
  65. package/dist/frontend/lowering/abstract-equality.d.ts +6 -0
  66. package/dist/frontend/lowering/abstract-equality.js +250 -0
  67. package/dist/frontend/lowering/abstract-equality.js.map +1 -0
  68. package/dist/frontend/lowering/lower-assert.js +71 -2
  69. package/dist/frontend/lowering/lower-assert.js.map +1 -1
  70. package/dist/frontend/lowering/lower-builtins.d.ts +50 -23
  71. package/dist/frontend/lowering/lower-builtins.js +939 -106
  72. package/dist/frontend/lowering/lower-builtins.js.map +1 -1
  73. package/dist/frontend/lowering/lower-calls.d.ts +29 -21
  74. package/dist/frontend/lowering/lower-calls.js +573 -121
  75. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  76. package/dist/frontend/lowering/lower-classes.js +39 -8
  77. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  78. package/dist/frontend/lowering/lower-containers.js +150 -0
  79. package/dist/frontend/lowering/lower-containers.js.map +1 -1
  80. package/dist/frontend/lowering/lower-event-emitter.js +212 -21
  81. package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
  82. package/dist/frontend/lowering/lower-exprs.js +135 -83
  83. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  84. package/dist/frontend/lowering/lower-inspect.d.ts +4 -0
  85. package/dist/frontend/lowering/lower-inspect.js +1 -1
  86. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  87. package/dist/frontend/lowering/lower-island.d.ts +6 -3
  88. package/dist/frontend/lowering/lower-island.js +165 -6
  89. package/dist/frontend/lowering/lower-island.js.map +1 -1
  90. package/dist/frontend/lowering/lower-modules.d.ts +6 -0
  91. package/dist/frontend/lowering/lower-modules.js +184 -38
  92. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  93. package/dist/frontend/lowering/lower-namespaces.js +7 -0
  94. package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
  95. package/dist/frontend/lowering/lower-server.d.ts +1 -1
  96. package/dist/frontend/lowering/lower-server.js +130 -27
  97. package/dist/frontend/lowering/lower-server.js.map +1 -1
  98. package/dist/frontend/lowering/lower-stmts.js +118 -15
  99. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  100. package/dist/frontend/lowering/lower-stream.d.ts +3 -0
  101. package/dist/frontend/lowering/lower-stream.js +7 -0
  102. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  103. package/dist/frontend/lowering/lowerer.d.ts +86 -9
  104. package/dist/frontend/lowering/lowerer.js +412 -72
  105. package/dist/frontend/lowering/lowerer.js.map +1 -1
  106. package/dist/frontend/lowering/surfaces.d.ts +26 -0
  107. package/dist/frontend/lowering/surfaces.js +140 -77
  108. package/dist/frontend/lowering/surfaces.js.map +1 -1
  109. package/dist/frontend/npm-static-declarations.d.ts +4 -0
  110. package/dist/frontend/npm-static-declarations.js +56 -0
  111. package/dist/frontend/npm-static-declarations.js.map +1 -1
  112. package/dist/frontend/npm-static-declarations.test.js +23 -2
  113. package/dist/frontend/npm-static-declarations.test.js.map +1 -1
  114. package/dist/frontend/npm-static.js +6 -5
  115. package/dist/frontend/npm-static.js.map +1 -1
  116. package/dist/frontend/npm.d.ts +15 -3
  117. package/dist/frontend/npm.js +80 -8
  118. package/dist/frontend/npm.js.map +1 -1
  119. package/dist/frontend/npm.test.js +76 -9
  120. package/dist/frontend/npm.test.js.map +1 -1
  121. package/dist/frontend/program.js +92 -10
  122. package/dist/frontend/program.js.map +1 -1
  123. package/dist/frontend/resolve.d.ts +6 -0
  124. package/dist/frontend/resolve.js +7 -4
  125. package/dist/frontend/resolve.js.map +1 -1
  126. package/dist/frontend/type-mapper.d.ts +5 -0
  127. package/dist/frontend/type-mapper.js +64 -24
  128. package/dist/frontend/type-mapper.js.map +1 -1
  129. package/dist/index.d.ts +5 -0
  130. package/dist/index.js +24 -3
  131. package/dist/index.js.map +1 -1
  132. package/dist/ir/ir.d.ts +93 -47
  133. package/dist/ir/ir.js +63 -4
  134. package/dist/ir/ir.js.map +1 -1
  135. package/dist/ir/ir.test.js +14 -1
  136. package/dist/ir/ir.test.js.map +1 -1
  137. package/dist/ir/serialize.d.ts +1 -1
  138. package/dist/ir/serialize.js +1 -1
  139. package/dist/ir/serialize.js.map +1 -1
  140. package/dist/ir/validate.js +165 -13
  141. package/dist/ir/validate.js.map +1 -1
  142. package/dist/library/int-infer.test.js +4 -4
  143. package/dist/library/int-infer.test.js.map +1 -1
  144. package/dist/library/library-cache.test.js +5 -5
  145. package/dist/library/library-cache.test.js.map +1 -1
  146. package/package.json +17 -17
  147. package/surface-manifest.json +132 -38
@@ -15,12 +15,15 @@ export type ParamMode = "required" | "omittable" | "rest" | "dynRest" | "islandR
15
15
  * `type` is the ABI type — what the emitted C parameter carries: the
16
16
  * checker's `T | undefined` union for `x?: T`, a synthesized `T | undefined`
17
17
  * union for `x: T = e`, `T[]` for `...xs: T[]`, the plain declared type
18
- * otherwise. `bodyType` is present exactly for DEFAULTED params: the plain T
19
- * the body sees after the prologue applies the default (see declareParams). */
18
+ * otherwise. `bodyType` is present exactly for DEFAULTED program params:
19
+ * the plain T the body sees after the prologue applies the default (see
20
+ * declareParams). `callDefault` is the compile-time default value for a
21
+ * table-backed builtin's omittable slot. */
20
22
  export interface ParamShape {
21
23
  type: IrType;
22
24
  mode: ParamMode;
23
25
  bodyType?: IrType;
26
+ callDefault?: IrExpr;
24
27
  }
25
28
  export interface FnSig {
26
29
  name: string;
@@ -41,6 +44,21 @@ export interface FnSig {
41
44
  };
42
45
  };
43
46
  }
47
+ /** The one func-type projection of completed parameter shapes. Typed rest
48
+ * parameters keep their packed array as the trailing native ABI slot and
49
+ * mark the value variadic so indirect call sites run completeArgs before
50
+ * callValue. Dynamic rest remains the historical hidden ScrDyn slot, while
51
+ * island rest spells its engine-array slot directly. */
52
+ export declare function funcTypeFromParamShapes(shapes: readonly ParamShape[], ret: IrType): IrType & {
53
+ kind: "func";
54
+ };
55
+ /** Registers `const alias = overloadedDeclaration` as a compile-time
56
+ * callable projection. The source function's one implementation ABI is
57
+ * already collected in fnSigsBySymbol; each direct call still uses the
58
+ * TS7-resolved overload result bridge. The alias owns no storage, and a
59
+ * value read materializes the source function's interned closure, so JS
60
+ * identity (`alias === source`) is preserved. */
61
+ export declare function registerOverloadedCallableAlias(lowerer: Lowerer, decl: ts.VariableDeclaration): boolean;
44
62
  export declare function generatorMeta(lowerer: Lowerer, type: IrType & {
45
63
  kind: "generator";
46
64
  }): NonNullable<IrFunction["generator"]>;
@@ -171,14 +189,6 @@ export declare function paramShapes(lowerer: Lowerer, params: readonly ts.Parame
171
189
  * defaultRunner` and `skip: Set<string> = new Set()` arm like any ref
172
190
  * kind — the nullable-callback union shape, built by the compiler. */
173
191
  export declare function checkDefaultParamBodyType(lowerer: Lowerer, param: ts.ParameterDeclaration, bodyType: IrType): void;
174
- /** CALL-SITE COMPLETION — the frontend half of the one-signature contract
175
- * (docs/ir.md): every call lowers to exactly the callee's full ABI
176
- * parameter list, so backends and the validator stay count-exact and no
177
- * runtime arity machinery exists. Omitted trailing args for omittable
178
- * params become the interned undefined arm (which is also what an
179
- * explicitly-passed `undefined` wraps to — both trigger a default, JS-
180
- * exact); a rest param packs the surplus args (possibly zero) into one
181
- * array literal, evaluated in source order at the call site. */
182
192
  export declare function completeArgs(lowerer: Lowerer, argNodes: readonly ts.Expression[], shapes: readonly ParamShape[], loc: SrcLoc, blame: ts.Node,
183
193
  /** Pre-lowered values virtually PREPENDED to the argument list — the
184
194
  * tagged-template strings object, which has no ts.Expression to lower
@@ -201,13 +211,12 @@ export declare function wrappedUndefined(lowerer: Lowerer, type: IrType, loc: Sr
201
211
  * (direct calls and calls through func-typed values). */
202
212
  export declare function omittedArgFor(lowerer: Lowerer, type: IrType, loc: SrcLoc): IrExpr | null;
203
213
  export declare function undefinedArgFor(lowerer: Lowerer, type: IrType, loc: SrcLoc, blame: ts.Node): IrExpr;
204
- /** DECISION (docs/ir.md): function VALUES keep exact-arity semantics — a
205
- * func-typed IrType spells one completed signature, so a function whose
206
- * declaration has optional/default/rest parameters can become a value only
207
- * where the target type spells that exact signature with required
208
- * parameters (`x?: T` / `x: T = e` params appear as literal `T | undefined`
209
- * unions; a rest signature is never spellable without `...`, which func
210
- * types reject). Direct calls get the full feature. */
214
+ /** DECISION (docs/ir.md): function VALUES carry one completed native ABI.
215
+ * Optional/default parameters appear as literal `T | undefined` slots;
216
+ * typed rest parameters appear as one trailing typed-array slot plus the
217
+ * typed-rest marker that makes indirect call sites pack source arguments.
218
+ * A value is admitted only where its target type projects to that same
219
+ * completed signature. */
211
220
  export declare function requireExactArityValue(lowerer: Lowerer, blame: ts.Node, contextual: ts.Expression | null, shapes: readonly ParamShape[], funcType: IrType): void;
212
221
  /** The BODY-facing return type of a (possibly async) function: an async
213
222
  * body's `return v` fulfills its promise with v, so the body returns the
@@ -404,10 +413,9 @@ export declare function isTopLevelFnSymbol(lowerer: Lowerer, ident: ts.Identifie
404
413
  * holding its own closure would be an RC cycle. */
405
414
  export declare function lowerNestedFunctionDecl(lowerer: Lowerer, stmt: ts.FunctionDeclaration): IrStmt;
406
415
  /** Signature checks + param shapes + IR func type for any lambda-like
407
- * node. The func type's params are the ABI types, so a lambda with
408
- * optional/default params has the same IR type as one spelling the
409
- * `T | undefined` unions with required params — exactly the exact-arity
410
- * value rule (requireExactArityValue decides who may become a value). */
416
+ * node. The func type's params are the ABI types: optional/default params
417
+ * become `T | undefined`, and typed rest becomes one packed-array slot.
418
+ * requireExactArityValue decides whether that completed ABI may escape. */
411
419
  export declare function lambdaSignature(lowerer: Lowerer, node: ts.ArrowFunction | ts.FunctionExpression | ts.FunctionDeclaration | ts.MethodDeclaration | ts.GetAccessorDeclaration | ts.SetAccessorDeclaration): {
412
420
  shapes: ParamShape[];
413
421
  funcType: IrType & {