@scriptc/compiler 0.1.2 → 0.1.3
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 -14
- package/dist/backend/c/async.d.ts +5 -0
- package/dist/backend/c/async.js +57 -0
- package/dist/backend/c/async.js.map +1 -1
- package/dist/backend/c/c-emitter.d.ts +3 -0
- package/dist/backend/c/c-emitter.js +15 -8
- package/dist/backend/c/c-emitter.js.map +1 -1
- package/dist/backend/c/exprs.d.ts +8 -1
- package/dist/backend/c/exprs.js +152 -9
- package/dist/backend/c/exprs.js.map +1 -1
- package/dist/backend/c/shapes.js +15 -13
- package/dist/backend/c/shapes.js.map +1 -1
- package/dist/backend/c/types.d.ts +4 -0
- package/dist/backend/c/types.js +18 -1
- package/dist/backend/c/types.js.map +1 -1
- package/dist/backend/c/types.test.js +8 -1
- package/dist/backend/c/types.test.js.map +1 -1
- package/dist/backend/c/walkers.js +32 -11
- package/dist/backend/c/walkers.js.map +1 -1
- package/dist/backend/json-literal.d.ts +7 -0
- package/dist/backend/json-literal.js +17 -0
- package/dist/backend/json-literal.js.map +1 -0
- package/dist/backend/json-literal.test.d.ts +1 -0
- package/dist/backend/json-literal.test.js +17 -0
- package/dist/backend/json-literal.test.js.map +1 -0
- package/dist/backend/link-plan.d.ts +1 -1
- package/dist/backend/link-plan.js +5 -1
- package/dist/backend/link-plan.js.map +1 -1
- package/dist/backend/llvm/classes.js +8 -7
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/common.d.ts +4 -0
- package/dist/backend/llvm/common.js +6 -0
- package/dist/backend/llvm/common.js.map +1 -1
- package/dist/backend/llvm/common.test.d.ts +1 -0
- package/dist/backend/llvm/common.test.js +9 -0
- package/dist/backend/llvm/common.test.js.map +1 -0
- package/dist/backend/llvm/dyn.d.ts +4 -0
- package/dist/backend/llvm/dyn.js +24 -13
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emitter.js +35 -7
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/expr-context.d.ts +4 -0
- package/dist/backend/llvm/expr-dynamic.js +9 -0
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +8 -0
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-records.js +3 -3
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +2 -1
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/expr-stream-callbacks.d.ts +3 -0
- package/dist/backend/llvm/expr-stream-callbacks.js +53 -0
- package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +22 -0
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +50 -5
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +46 -0
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/shapes.js +10 -8
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/walkers.js +7 -5
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/native-link-info.d.ts +2 -1
- package/dist/backend/native-link-info.js +4 -0
- package/dist/backend/native-link-info.js.map +1 -1
- package/dist/backend/native-link-info.test.js +24 -1
- package/dist/backend/native-link-info.test.js.map +1 -1
- package/dist/backend/native-toolchain.d.ts +8 -6
- package/dist/backend/native-toolchain.js +28 -13
- package/dist/backend/native-toolchain.js.map +1 -1
- package/dist/backend/native-toolchain.test.js +36 -1
- package/dist/backend/native-toolchain.test.js.map +1 -1
- package/dist/backend/runtime-pack-targets.test.js +1 -1
- package/dist/backend/runtime-pack-targets.test.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +1 -0
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/targets.d.ts +5 -0
- package/dist/backend/targets.js +9 -0
- package/dist/backend/targets.js.map +1 -1
- package/dist/backend/targets.test.js +6 -1
- package/dist/backend/targets.test.js.map +1 -1
- package/dist/coverage/surface-manifest.js +1 -0
- package/dist/coverage/surface-manifest.js.map +1 -1
- package/dist/diagnostics/diagnostic.js +3 -3
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +1 -0
- package/dist/executable/executable-cache.js +1 -0
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +1 -0
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.d.ts +0 -4
- package/dist/frontend/lowering/containers/bytes.js +112 -28
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.js +16 -10
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-builtins.d.ts +22 -21
- package/dist/frontend/lowering/lower-builtins.js +392 -67
- package/dist/frontend/lowering/lower-builtins.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.d.ts +8 -6
- package/dist/frontend/lowering/lower-calls.js +110 -12
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-containers.js +12 -8
- package/dist/frontend/lowering/lower-containers.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.js +104 -5
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.js +7 -0
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.js +8 -0
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +5 -4
- package/dist/frontend/lowering/lower-stmts.js +23 -6
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +4 -4
- package/dist/frontend/lowering/lowerer.js +5 -5
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/surfaces.d.ts +5 -3
- package/dist/frontend/lowering/surfaces.js +33 -13
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/npm-static-declarations.js +27 -14
- package/dist/frontend/npm-static-declarations.js.map +1 -1
- package/dist/frontend/npm-static-declarations.test.js +10 -0
- package/dist/frontend/npm-static-declarations.test.js.map +1 -1
- package/dist/frontend/program.js +18 -2
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/resolve.d.ts +22 -7
- package/dist/frontend/resolve.js +83 -22
- package/dist/frontend/resolve.js.map +1 -1
- package/dist/frontend/resolve.test.js +21 -1
- package/dist/frontend/resolve.test.js.map +1 -1
- package/dist/frontend/type-mapper.js +52 -10
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/ir/analysis.js +1 -0
- package/dist/ir/analysis.js.map +1 -1
- package/dist/ir/ir.d.ts +67 -24
- package/dist/ir/ir.js +81 -3
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/serialize.d.ts +1 -1
- package/dist/ir/serialize.js +1 -1
- package/dist/ir/validate.js +77 -5
- package/dist/ir/validate.js.map +1 -1
- package/dist/library/int-infer.test.js +4 -4
- package/dist/library/library-cache.d.ts +1 -0
- package/dist/library/library-cache.js +1 -0
- package/dist/library/library-cache.js.map +1 -1
- package/dist/library/library-cache.test.js +18 -5
- package/dist/library/library-cache.test.js.map +1 -1
- package/package.json +17 -17
- package/surface-manifest.json +32 -17
|
@@ -62,16 +62,16 @@ import { InternalCompilerError } from "../../errors.js";
|
|
|
62
62
|
* lazy-inflate representation as the C debugging backend.
|
|
63
63
|
*/
|
|
64
64
|
import { deflateRawSync } from "node:zlib";
|
|
65
|
-
import { endsWithJump, matchStringSelfConcat } from "../../ir/analysis.js";
|
|
65
|
+
import { endsWithJump, matchStringSelfConcat, streamTypedRefEligible } from "../../ir/analysis.js";
|
|
66
66
|
import { emitLibraryIdentityLines } from "../library-identity-markers.js";
|
|
67
|
-
import { CAUGHT, ffiCallbackType, isFfiContextParam, isRefCounted, isUnitType, moduleEmbedsBuiltin, moduleEmbedsCompressedNpm, moduleUsesChildProcess, moduleUsesDynInvoke, moduleUsesFetch, moduleUsesFsWatch, moduleUsesHttpServer, moduleUsesNet, moduleUsesNodeTest, moduleUsesProcessEvents, moduleUsesStream, moduleUsesTls, moduleUsesTlsCa, NPM_COMPRESS_MIN, POINTER_KINDS, RUNTIME_EMITTER_CLASS, RUNTIME_ERROR_CLASSES, RUNTIME_STREAM_CLASSES, typeKey, VOID } from "../../ir/ir.js";
|
|
67
|
+
import { CAUGHT, ffiCallbackType, isDynTypedRefType, isFfiContextParam, isRefCounted, isUnitType, moduleEmbedsBuiltin, moduleEmbedsCompressedNpm, moduleUsesChildProcess, moduleUsesDynInvoke, moduleUsesFetch, moduleUsesFsWatch, moduleUsesHttpServer, moduleUsesNet, moduleUsesNodeTest, moduleUsesProcessEvents, moduleUsesStream, moduleUsesTls, moduleUsesTlsCa, NPM_COMPRESS_MIN, POINTER_KINDS, RUNTIME_EMITTER_CLASS, RUNTIME_ERROR_CLASSES, RUNTIME_STREAM_CLASSES, typeKey, VOID } from "../../ir/ir.js";
|
|
68
68
|
import { matchIntegerBytesForLoop } from "../../ir/integer-loops.js";
|
|
69
69
|
import { allocateFfiCallbackAdapters, hasForeignFfiCallback, hasRetainedFfiCallback } from "../ffi-callbacks.js";
|
|
70
70
|
import { RUNTIME_ABI_MARKER } from "../runtime-abi.js";
|
|
71
71
|
import { computeMayThrow } from "../c/may-throw.js";
|
|
72
72
|
import { mangleArgPack, mangleAsyncSpawn, mangleClassObj, mangleFnClosure, mangleFunction, mangleGenDrop, mangleGenSpawn, mangleGlobal, mangleLocal, mangleRecordStruct, mangleTrampoline, mangleWrapper } from "../mangle.js";
|
|
73
73
|
import { BlockBuilder } from "./blocks.js";
|
|
74
|
-
import { f64Lit, ffiNativeTypeLl } from "./common.js";
|
|
74
|
+
import { f64Lit, ffiNativeTypeLl, llvmCommentText } from "./common.js";
|
|
75
75
|
import { emitLiteralExpr, emitOperatorExpr, emitStringExpr, emitContainerExpr, emitRecordExpr } from "./expr-primitives.js";
|
|
76
76
|
import { emitControlExpr } from "./expr-control.js";
|
|
77
77
|
import { emitCallExpr } from "./expr-calls.js";
|
|
@@ -80,7 +80,7 @@ import { emitIntrinsicExpr, emitSerializationExpr, emitAsyncExpr } from "./expr-
|
|
|
80
80
|
import { emitJsInteropExpr, emitExpr } from "./expr-dispatch.js";
|
|
81
81
|
import { emitJsMarshal, emitJsOp, emitJsExit, islandAdapter, islandTypedAdapter } from "./expr-island.js";
|
|
82
82
|
import { dynKind, raceAdapterFor, genResultThunkFor, childExitThunkFor, childExitSignalThunkFor, childDataThunkFor, emitterFixedAdapter, wrapEmitterListener, unwrapNullableClosure, closeBindThunkFor, closeOverrideWrapFor } from "./expr-callbacks.js";
|
|
83
|
-
import { streamDataAdapter, streamDoneFnFor, fsRenameThunkFor, streamCbThunkFor } from "./expr-stream-callbacks.js";
|
|
83
|
+
import { streamDataAdapter, streamDoneFnFor, cryptoBytesThunkFor, fsRenameThunkFor, streamCbThunkFor } from "./expr-stream-callbacks.js";
|
|
84
84
|
import { resolveThunkFor, tagInSet, arrPush, emitArrayCopyLoop, emitStrIntrinsic, emitArrIntrinsic, wrapNullable, emitMapNew, mapSet, emitMapLikeIntrinsic, emitSetNew } from "./expr-containers.js";
|
|
85
85
|
import { emitBytesReceiver, emitIntegerLoopIndex, emitBytesIndex, emitBytesData, emitBytesLength, emitBytesGet, emitBytesU32, emitBytesSet, emitBytesIntrinsic } from "./expr-bytes.js";
|
|
86
86
|
import { emitRegexIntrinsic, emitRecordKeyGet, keyedRecordReadInto } from "./expr-records.js";
|
|
@@ -2034,6 +2034,9 @@ class LlEmitter {
|
|
|
2034
2034
|
else if (arm.kind === "string") {
|
|
2035
2035
|
valueName = this.unionPeek(v.name);
|
|
2036
2036
|
}
|
|
2037
|
+
else if (arm.kind === "bigint") {
|
|
2038
|
+
valueName = this.unionPeek(v.name);
|
|
2039
|
+
}
|
|
2037
2040
|
const truthy = this.truthyOf(arm.kind, valueName, true);
|
|
2038
2041
|
B.line(`store i1 ${truthy}, ptr ${slot}`);
|
|
2039
2042
|
B.br(join);
|
|
@@ -2074,6 +2077,12 @@ class LlEmitter {
|
|
|
2074
2077
|
B.line(`${truthy} = icmp ne ${this.sizeType} ${len}, 0`);
|
|
2075
2078
|
return truthy;
|
|
2076
2079
|
}
|
|
2080
|
+
case "bigint": {
|
|
2081
|
+
this.declare(`declare zeroext i1 @scr_bigint_truthy(ptr)`);
|
|
2082
|
+
const truthy = B.tmp();
|
|
2083
|
+
B.line(`${truthy} = call zeroext i1 @scr_bigint_truthy(ptr ${valueName})`);
|
|
2084
|
+
return truthy;
|
|
2085
|
+
}
|
|
2077
2086
|
case "date":
|
|
2078
2087
|
return "true";
|
|
2079
2088
|
case "array":
|
|
@@ -2094,8 +2103,11 @@ class LlEmitter {
|
|
|
2094
2103
|
case "spawnRes":
|
|
2095
2104
|
case "child":
|
|
2096
2105
|
case "childStream":
|
|
2106
|
+
case "childWriter":
|
|
2097
2107
|
case "generator":
|
|
2098
|
-
case "fsWatcher":
|
|
2108
|
+
case "fsWatcher":
|
|
2109
|
+
case "cryptoHash":
|
|
2110
|
+
case "cryptoHmac": {
|
|
2099
2111
|
if (unionArm)
|
|
2100
2112
|
return "true";
|
|
2101
2113
|
const truthy = B.tmp();
|
|
@@ -2911,7 +2923,7 @@ class LlEmitter {
|
|
|
2911
2923
|
for (const f of shape.fields) {
|
|
2912
2924
|
const lit = this.internLiteral(f.name);
|
|
2913
2925
|
const hit = B.tmp();
|
|
2914
|
-
B.line(`${hit} = call zeroext i1 @scr_str_eq(ptr ${key.name}, ptr ${lit}) ; ${f.name}`);
|
|
2926
|
+
B.line(`${hit} = call zeroext i1 @scr_str_eq(ptr ${key.name}, ptr ${lit}) ; ${llvmCommentText(f.name)}`);
|
|
2915
2927
|
const lh = B.newLabel("rks.h");
|
|
2916
2928
|
const ln = B.newLabel("rks.n");
|
|
2917
2929
|
B.condBr(hit, lh, ln);
|
|
@@ -2967,7 +2979,7 @@ class LlEmitter {
|
|
|
2967
2979
|
// typeEquals(f.type, iv) — the frontend fences everything else.
|
|
2968
2980
|
const lit = this.internLiteral(f.name);
|
|
2969
2981
|
const hit = B.tmp();
|
|
2970
|
-
B.line(`${hit} = call zeroext i1 @scr_str_eq(ptr ${key.name}, ptr ${lit}) ; ${f.name}`);
|
|
2982
|
+
B.line(`${hit} = call zeroext i1 @scr_str_eq(ptr ${key.name}, ptr ${lit}) ; ${llvmCommentText(f.name)}`);
|
|
2971
2983
|
const lh = B.newLabel("rks.h");
|
|
2972
2984
|
const ln = B.newLabel("rks.n");
|
|
2973
2985
|
B.condBr(hit, lh, ln);
|
|
@@ -3810,6 +3822,9 @@ class LlEmitter {
|
|
|
3810
3822
|
fsRenameThunkFor(cbT) {
|
|
3811
3823
|
return fsRenameThunkFor(this.expressionContext(), cbT);
|
|
3812
3824
|
}
|
|
3825
|
+
cryptoBytesThunkFor(cbT) {
|
|
3826
|
+
return cryptoBytesThunkFor(this.expressionContext(), cbT);
|
|
3827
|
+
}
|
|
3813
3828
|
streamCbThunkFor(kind, cbT) {
|
|
3814
3829
|
return streamCbThunkFor(this.expressionContext(), kind, cbT);
|
|
3815
3830
|
}
|
|
@@ -3888,6 +3903,19 @@ class LlEmitter {
|
|
|
3888
3903
|
streamTypedRefCommitAdapter(t, snapshot) {
|
|
3889
3904
|
return streamTypedRefCommitAdapter(this.expressionContext(), t, snapshot);
|
|
3890
3905
|
}
|
|
3906
|
+
liveDynRefAdapter(t) {
|
|
3907
|
+
const key = typeKey(t);
|
|
3908
|
+
const existing = this.liveDynRefAdapters.get(key);
|
|
3909
|
+
if (existing)
|
|
3910
|
+
return existing;
|
|
3911
|
+
if (!streamTypedRefEligible(t) && !isDynTypedRefType(t)) {
|
|
3912
|
+
throw new InternalCompilerError(`llvm emitter bug: live dyn ref of ${key}`);
|
|
3913
|
+
}
|
|
3914
|
+
const prefix = `sc_ldr_${this.liveDynRefAdapters.size}`;
|
|
3915
|
+
const adapter = streamTypedRefMaterializeAdapter(this.expressionContext(), t, { prefix, adapters: new Map() }, `${prefix}_materialize`);
|
|
3916
|
+
this.liveDynRefAdapters.set(key, adapter);
|
|
3917
|
+
return adapter;
|
|
3918
|
+
}
|
|
3891
3919
|
liveDynUnionRefAdapter(t) {
|
|
3892
3920
|
return liveDynUnionRefAdapter(this.expressionContext(), t);
|
|
3893
3921
|
}
|