@scriptc/compiler 0.2.1 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ambient/scriptc-node-fallback.d.ts +59 -4
- package/dist/backend/llvm/dyn.d.ts +3 -0
- package/dist/backend/llvm/dyn.js +84 -12
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +4 -1
- package/dist/backend/llvm/emitter.js +20 -5
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +9 -1
- package/dist/backend/llvm/emitter.test.js.map +1 -1
- package/dist/backend/llvm/expr-containers.js +5 -0
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.js +30 -5
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +70 -9
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/expr-stream-callbacks.d.ts +2 -2
- package/dist/backend/llvm/expr-stream-callbacks.js +7 -57
- package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +41 -3
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +12 -9
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +35 -1
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/may-throw.js +4 -0
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/native-codegen.d.ts +1 -1
- package/dist/backend/native-codegen.js +4 -3
- package/dist/backend/native-codegen.js.map +1 -1
- package/dist/backend/native-codegen.test.js +11 -0
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/target-diagnostics.d.ts +5 -0
- package/dist/backend/target-diagnostics.js +72 -1
- package/dist/backend/target-diagnostics.js.map +1 -1
- package/dist/backend/target-diagnostics.test.d.ts +1 -0
- package/dist/backend/target-diagnostics.test.js +68 -0
- package/dist/backend/target-diagnostics.test.js.map +1 -0
- package/dist/coverage/surface-manifest.js +5 -3
- package/dist/coverage/surface-manifest.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +7 -3
- package/dist/executable/executable-cache.js +47 -11
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +109 -2
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/executable/prepare.js +2 -1
- package/dist/executable/prepare.js.map +1 -1
- package/dist/frontend/builtin-modules.d.ts +1 -1
- package/dist/frontend/builtin-modules.js +1 -1
- package/dist/frontend/builtin-modules.js.map +1 -1
- package/dist/frontend/function-completion.d.ts +6 -0
- package/dist/frontend/function-completion.js +50 -0
- package/dist/frontend/function-completion.js.map +1 -0
- package/dist/frontend/lowering/abstract-equality.js +5 -1
- package/dist/frontend/lowering/abstract-equality.js.map +1 -1
- package/dist/frontend/lowering/checked-iterable-spread.d.ts +4 -0
- package/dist/frontend/lowering/checked-iterable-spread.js +30 -0
- package/dist/frontend/lowering/checked-iterable-spread.js.map +1 -0
- package/dist/frontend/lowering/checked-promise-all.d.ts +5 -0
- package/dist/frontend/lowering/checked-promise-all.js +31 -0
- package/dist/frontend/lowering/checked-promise-all.js.map +1 -0
- package/dist/frontend/lowering/class-callbacks.d.ts +1 -1
- package/dist/frontend/lowering/class-callbacks.js +7 -6
- package/dist/frontend/lowering/class-callbacks.js.map +1 -1
- package/dist/frontend/lowering/class-construction.d.ts +2 -0
- package/dist/frontend/lowering/class-construction.js +34 -5
- package/dist/frontend/lowering/class-construction.js.map +1 -1
- package/dist/frontend/lowering/class-descriptors.d.ts +1 -1
- package/dist/frontend/lowering/class-descriptors.js +12 -5
- package/dist/frontend/lowering/class-descriptors.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +25 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js +597 -78
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js +64 -2
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
- package/dist/frontend/lowering/class-instance-constructor.d.ts +1 -1
- package/dist/frontend/lowering/class-instance-constructor.js +11 -41
- package/dist/frontend/lowering/class-instance-constructor.js.map +1 -1
- package/dist/frontend/lowering/class-method-values.d.ts +16 -0
- package/dist/frontend/lowering/class-method-values.js +60 -29
- package/dist/frontend/lowering/class-method-values.js.map +1 -1
- package/dist/frontend/lowering/class-prototypes.d.ts +5 -1
- package/dist/frontend/lowering/class-prototypes.js +69 -10
- package/dist/frontend/lowering/class-prototypes.js.map +1 -1
- package/dist/frontend/lowering/class-runtime-statics.d.ts +4 -4
- package/dist/frontend/lowering/class-runtime-statics.js +26 -8
- package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
- package/dist/frontend/lowering/class-static-data.d.ts +1 -0
- package/dist/frontend/lowering/class-static-data.js +4 -2
- package/dist/frontend/lowering/class-static-data.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.js +17 -4
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/string-and-regexp.js +6 -1
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/deferred-module-initializers.d.ts +13 -0
- package/dist/frontend/lowering/deferred-module-initializers.js +410 -0
- package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -0
- package/dist/frontend/lowering/deferred-module-initializers.test.d.ts +1 -0
- package/dist/frontend/lowering/deferred-module-initializers.test.js +92 -0
- package/dist/frontend/lowering/deferred-module-initializers.test.js.map +1 -0
- package/dist/frontend/lowering/expressions/object-literals.js +31 -1
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/optional-chains.js +3 -3
- package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
- package/dist/frontend/lowering/lower-builtins.d.ts +4 -9
- package/dist/frontend/lowering/lower-builtins.js +291 -51
- package/dist/frontend/lowering/lower-builtins.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.js +283 -73
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +5 -0
- package/dist/frontend/lowering/lower-classes.js +439 -25
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-containers.d.ts +1 -1
- package/dist/frontend/lowering/lower-containers.js +39 -17
- package/dist/frontend/lowering/lower-containers.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +10 -6
- package/dist/frontend/lowering/lower-exprs.js +294 -129
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.js +5 -1
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.js +15 -1
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-island.js +4 -0
- package/dist/frontend/lowering/lower-island.js.map +1 -1
- package/dist/frontend/lowering/lower-island.test.d.ts +1 -0
- package/dist/frontend/lowering/lower-island.test.js +51 -0
- package/dist/frontend/lowering/lower-island.test.js.map +1 -0
- package/dist/frontend/lowering/lower-modules.d.ts +1 -3
- package/dist/frontend/lowering/lower-modules.js +186 -82
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.test.js +69 -1
- package/dist/frontend/lowering/lower-modules.test.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.js +100 -35
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.test.d.ts +1 -0
- package/dist/frontend/lowering/lower-stmts.test.js +77 -0
- package/dist/frontend/lowering/lower-stmts.test.js.map +1 -0
- package/dist/frontend/lowering/lower-stream.js +2 -0
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lower-url.d.ts +2 -1
- package/dist/frontend/lowering/lower-url.js +32 -9
- package/dist/frontend/lowering/lower-url.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +26 -9
- package/dist/frontend/lowering/lowerer.js +218 -27
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/lowerer.test.js +38 -0
- package/dist/frontend/lowering/lowerer.test.js.map +1 -1
- package/dist/frontend/lowering/module-namespace-elements.d.ts +7 -0
- package/dist/frontend/lowering/module-namespace-elements.js +54 -0
- package/dist/frontend/lowering/module-namespace-elements.js.map +1 -0
- package/dist/frontend/lowering/object-factory-new.d.ts +4 -3
- package/dist/frontend/lowering/object-factory-new.js +27 -14
- package/dist/frontend/lowering/object-factory-new.js.map +1 -1
- package/dist/frontend/lowering/surfaces.d.ts +1 -0
- package/dist/frontend/lowering/surfaces.js +24 -12
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/text-decoder-encoding.js +3 -0
- package/dist/frontend/lowering/text-decoder-encoding.js.map +1 -1
- package/dist/frontend/lowering/text-decoder-encoding.test.js +2 -1
- package/dist/frontend/lowering/text-decoder-encoding.test.js.map +1 -1
- package/dist/frontend/program.js +4 -2
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/type-mapper.js +83 -14
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/frontend/union-discriminants.js +22 -7
- package/dist/frontend/union-discriminants.js.map +1 -1
- package/dist/index.js +16 -10
- package/dist/index.js.map +1 -1
- package/dist/ir/ir.d.ts +27 -13
- package/dist/ir/ir.js +26 -2
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/serialize.js +21 -1
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/serialize.test.js +21 -0
- package/dist/ir/serialize.test.js.map +1 -1
- package/dist/ir/traverse.d.ts +0 -3
- package/dist/ir/traverse.js +33 -20
- package/dist/ir/traverse.js.map +1 -1
- package/dist/ir/validate.js +56 -5
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +17 -1
- package/dist/ir/validate.test.js.map +1 -1
- package/dist/library/compiler-self-identity.js +1 -1
- package/dist/library/compiler-self-identity.test.js +2 -2
- package/dist/library/compiler-self-identity.test.js.map +1 -1
- package/dist/library/int-infer.d.ts +2 -2
- package/dist/library/int-infer.js +10 -7
- package/dist/library/int-infer.js.map +1 -1
- package/dist/library/int-infer.test.js +44 -0
- package/dist/library/int-infer.test.js.map +1 -1
- package/dist/library/prepare.js +2 -1
- package/dist/library/prepare.js.map +1 -1
- package/package.json +20 -20
- package/surface-manifest.json +115 -13
|
@@ -25,6 +25,8 @@ export interface LlvmTargetOptions {
|
|
|
25
25
|
runtimeAbiMarker?: boolean;
|
|
26
26
|
}
|
|
27
27
|
export declare function emitLlvmModule(mod: IrModule, options?: LlvmTargetOptions): string;
|
|
28
|
+
/** Keep large translation units below the host's single-string limit. */
|
|
29
|
+
export declare function emitLlvmModuleSource(mod: IrModule, options?: LlvmTargetOptions): string | readonly string[];
|
|
28
30
|
export declare class LlEmitter {
|
|
29
31
|
readonly mod: IrModule;
|
|
30
32
|
private readonly debug;
|
|
@@ -216,6 +218,7 @@ export declare class LlEmitter {
|
|
|
216
218
|
* outer native call. */
|
|
217
219
|
private emitFfiCallbackDefs;
|
|
218
220
|
emit(): string;
|
|
221
|
+
emitParts(): string[];
|
|
219
222
|
/** LIBRARY mode: the profile-declared external definitions — the
|
|
220
223
|
* export-map wrappers plus init / sink-registration / reset / collect.
|
|
221
224
|
* Plain `define` (not `define internal`) — the exact linkage distinction
|
|
@@ -538,7 +541,7 @@ export declare class LlEmitter {
|
|
|
538
541
|
}): string;
|
|
539
542
|
cryptoBytesThunkFor(cbT: IrType & {
|
|
540
543
|
kind: "func";
|
|
541
|
-
}): string;
|
|
544
|
+
}, arrayBuffer?: boolean): string;
|
|
542
545
|
zlibBytesThunkFor(cbT: IrType & {
|
|
543
546
|
kind: "func";
|
|
544
547
|
}): string;
|
|
@@ -88,6 +88,14 @@ export function emitLlvmModule(mod, options = {}) {
|
|
|
88
88
|
// Keep source storage intact for debugger inspection in dev builds.
|
|
89
89
|
return new LlEmitter(options.debugSources === undefined ? scalarizeNumericRecords(mod) : mod, options).emit();
|
|
90
90
|
}
|
|
91
|
+
/** Keep large translation units below the host's single-string limit. */
|
|
92
|
+
export function emitLlvmModuleSource(mod, options = {}) {
|
|
93
|
+
const parts = new LlEmitter(options.debugSources === undefined ? scalarizeNumericRecords(mod) : mod, options).emitParts();
|
|
94
|
+
const length = parts.reduce((total, part) => total + part.length, Math.max(0, parts.length - 1));
|
|
95
|
+
if (length <= 256 * 1024 * 1024)
|
|
96
|
+
return parts.join("\n");
|
|
97
|
+
return parts.flatMap((part, index) => index === 0 ? [part] : ["\n", part]);
|
|
98
|
+
}
|
|
91
99
|
function llStrBytes(text) {
|
|
92
100
|
return llBytes(Buffer.from(text, "utf8"));
|
|
93
101
|
}
|
|
@@ -310,6 +318,7 @@ export class LlEmitter {
|
|
|
310
318
|
cstr: (text) => this.cstr(text),
|
|
311
319
|
unitInstanceRef: (unionId, tag) => this.unitInstanceRef(unionId, tag),
|
|
312
320
|
liveDynRefAdapter: (type) => this.liveDynRefAdapter(type),
|
|
321
|
+
liveDynUnionRefAdapter: (type) => this.liveDynUnionRefAdapter(type),
|
|
313
322
|
dynPromiseAdapter: (type) => this.dynPromiseAdapter(type),
|
|
314
323
|
isErrorClass: (name) => this.classMeta.get(name)?.root.def.name === "%Error",
|
|
315
324
|
classSubtypes: (name) => {
|
|
@@ -671,6 +680,9 @@ export class LlEmitter {
|
|
|
671
680
|
return { globals, defs };
|
|
672
681
|
}
|
|
673
682
|
emit() {
|
|
683
|
+
return this.emitParts().join("\n");
|
|
684
|
+
}
|
|
685
|
+
emitParts() {
|
|
674
686
|
// Function bodies first (the literal/unit/fn-value tables fill as they
|
|
675
687
|
// emit), then the file assembles around them — the runtime ABI’s order.
|
|
676
688
|
const fnDefs = [];
|
|
@@ -1177,7 +1189,10 @@ export class LlEmitter {
|
|
|
1177
1189
|
out.push(line);
|
|
1178
1190
|
for (const line of this.resolveThunkDefs)
|
|
1179
1191
|
out.push(line);
|
|
1180
|
-
out.push(fnDefs
|
|
1192
|
+
out.push(fnDefs[0] ?? "");
|
|
1193
|
+
for (let i = 1; i < fnDefs.length; i++)
|
|
1194
|
+
out.push("", fnDefs[i]);
|
|
1195
|
+
out.push("");
|
|
1181
1196
|
// main(): scr_init, the program-dependent error-vt interval stamps,
|
|
1182
1197
|
// scr_lib_init(argc, argv), then the entry function. An uncaught
|
|
1183
1198
|
// exception escaping top-level code prints and exits 1 (Node).
|
|
@@ -1234,7 +1249,7 @@ export class LlEmitter {
|
|
|
1234
1249
|
out.push(``);
|
|
1235
1250
|
if (this.debug !== null)
|
|
1236
1251
|
out.push(this.debug.render());
|
|
1237
|
-
return out
|
|
1252
|
+
return out;
|
|
1238
1253
|
}
|
|
1239
1254
|
out.push(`define i32 @${this.wasi ? "__main_argc_argv" : "main"}(i32 %argc, ptr %argv) ${FN_ATTRS} {`, `entry:`, ...(this.runtimeAbiMarker ? [` call void @${RUNTIME_ABI_MARKER}()`] : []), ` call void @scr_init()`, ...stamps,
|
|
1240
1255
|
// Event-surface programs (signal/exit listeners) fill the loop's
|
|
@@ -1346,7 +1361,7 @@ export class LlEmitter {
|
|
|
1346
1361
|
`attributes #0 = { sanitize_address }`, ...(this.wasi ? [`attributes #1 = { sanitize_address presplitcoroutine }`] : []), ...(hasNoInlineRecordClone ? [`attributes #2 = { noinline sanitize_address }`] : []), ``);
|
|
1347
1362
|
if (this.debug !== null)
|
|
1348
1363
|
out.push(this.debug.render());
|
|
1349
|
-
return out
|
|
1364
|
+
return out;
|
|
1350
1365
|
}
|
|
1351
1366
|
/** LIBRARY mode: the profile-declared external definitions — the
|
|
1352
1367
|
* export-map wrappers plus init / sink-registration / reset / collect.
|
|
@@ -4248,8 +4263,8 @@ export class LlEmitter {
|
|
|
4248
4263
|
fsRenameThunkFor(cbT) {
|
|
4249
4264
|
return fsRenameThunkFor(this, cbT);
|
|
4250
4265
|
}
|
|
4251
|
-
cryptoBytesThunkFor(cbT) {
|
|
4252
|
-
return cryptoBytesThunkFor(this, cbT);
|
|
4266
|
+
cryptoBytesThunkFor(cbT, arrayBuffer = false) {
|
|
4267
|
+
return cryptoBytesThunkFor(this, cbT, arrayBuffer);
|
|
4253
4268
|
}
|
|
4254
4269
|
zlibBytesThunkFor(cbT) {
|
|
4255
4270
|
return zlibBytesThunkFor(this, cbT);
|