@scriptc/compiler 0.0.34 → 0.0.36
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 +7 -6
- package/dist/backend/build-cache.d.ts +44 -0
- package/dist/backend/build-cache.js +241 -0
- package/dist/backend/build-cache.js.map +1 -0
- package/dist/backend/{emission/emit-async.d.ts → c/async.d.ts} +21 -30
- package/dist/backend/{emission/emit-async.js → c/async.js} +270 -286
- package/dist/backend/c/async.js.map +1 -0
- package/dist/backend/{emission/emitter.d.ts → c/c-emitter.d.ts} +6 -23
- package/dist/backend/{emission/emitter.js → c/c-emitter.js} +53 -107
- package/dist/backend/c/c-emitter.js.map +1 -0
- package/dist/backend/c/exprs.d.ts +8 -0
- package/dist/backend/c/exprs.js +7913 -0
- package/dist/backend/c/exprs.js.map +1 -0
- package/dist/backend/{emission/emit-island.d.ts → c/island.d.ts} +5 -5
- package/dist/backend/{emission/emit-island.js → c/island.js} +24 -22
- package/dist/backend/c/island.js.map +1 -0
- package/dist/backend/{emission → c}/may-throw.d.ts +1 -1
- package/dist/backend/{emission → c}/may-throw.js +1 -1
- package/dist/backend/c/may-throw.js.map +1 -0
- package/dist/backend/{emission/emit-shapes.d.ts → c/shapes.d.ts} +19 -19
- package/dist/backend/{emission/emit-shapes.js → c/shapes.js} +78 -87
- package/dist/backend/c/shapes.js.map +1 -0
- package/dist/backend/{emission/emit-stmts.d.ts → c/stmts.d.ts} +12 -12
- package/dist/backend/{emission/emit-stmts.js → c/stmts.js} +377 -343
- package/dist/backend/c/stmts.js.map +1 -0
- package/dist/backend/{emission/emit-types.d.ts → c/types.d.ts} +1 -1
- package/dist/backend/{emission/emit-types.js → c/types.js} +42 -286
- package/dist/backend/c/types.js.map +1 -0
- package/dist/backend/c/types.test.js +25 -0
- package/dist/backend/c/types.test.js.map +1 -0
- package/dist/backend/{emission/emit-walkers.d.ts → c/walkers.d.ts} +19 -41
- package/dist/backend/{emission/emit-walkers.js → c/walkers.js} +238 -298
- package/dist/backend/c/walkers.js.map +1 -0
- package/dist/backend/ffi-callbacks.d.ts +1 -1
- package/dist/backend/ffi-callbacks.js +4 -3
- package/dist/backend/ffi-callbacks.js.map +1 -1
- package/dist/backend/{library-identity.d.ts → library-identity-markers.d.ts} +0 -4
- package/dist/backend/{library-identity.js → library-identity-markers.js} +10 -9
- package/dist/backend/library-identity-markers.js.map +1 -0
- package/dist/backend/llvm/blocks.d.ts +4 -0
- package/dist/backend/llvm/blocks.js +29 -0
- package/dist/backend/llvm/blocks.js.map +1 -1
- package/dist/backend/llvm/classes.d.ts +2 -19
- package/dist/backend/llvm/classes.js +20 -52
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/common.d.ts +4 -0
- package/dist/backend/llvm/common.js +27 -0
- package/dist/backend/llvm/common.js.map +1 -0
- package/dist/backend/llvm/dyn.d.ts +3 -8
- package/dist/backend/llvm/dyn.js +152 -224
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +4 -1
- package/dist/backend/llvm/emitter.js +514 -9981
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/expr-async.d.ts +4 -0
- package/dist/backend/llvm/expr-async.js +726 -0
- package/dist/backend/llvm/expr-async.js.map +1 -0
- package/dist/backend/llvm/expr-bytes.d.ts +13 -0
- package/dist/backend/llvm/expr-bytes.js +456 -0
- package/dist/backend/llvm/expr-bytes.js.map +1 -0
- package/dist/backend/llvm/expr-callbacks.d.ts +22 -0
- package/dist/backend/llvm/expr-callbacks.js +520 -0
- package/dist/backend/llvm/expr-callbacks.js.map +1 -0
- package/dist/backend/llvm/expr-calls.d.ts +2 -0
- package/dist/backend/llvm/expr-calls.js +618 -0
- package/dist/backend/llvm/expr-calls.js.map +1 -0
- package/dist/backend/llvm/expr-containers.d.ts +25 -0
- package/dist/backend/llvm/expr-containers.js +623 -0
- package/dist/backend/llvm/expr-containers.js.map +1 -0
- package/dist/backend/llvm/expr-context.d.ts +255 -0
- package/dist/backend/llvm/expr-context.js +2 -0
- package/dist/backend/llvm/expr-context.js.map +1 -0
- package/dist/backend/llvm/expr-control.d.ts +2 -0
- package/dist/backend/llvm/expr-control.js +473 -0
- package/dist/backend/llvm/expr-control.js.map +1 -0
- package/dist/backend/llvm/expr-dispatch.d.ts +4 -0
- package/dist/backend/llvm/expr-dispatch.js +151 -0
- package/dist/backend/llvm/expr-dispatch.js.map +1 -0
- package/dist/backend/llvm/expr-dynamic.d.ts +2 -0
- package/dist/backend/llvm/expr-dynamic.js +810 -0
- package/dist/backend/llvm/expr-dynamic.js.map +1 -0
- package/dist/backend/llvm/expr-island.d.ts +15 -0
- package/dist/backend/llvm/expr-island.js +690 -0
- package/dist/backend/llvm/expr-island.js.map +1 -0
- package/dist/backend/llvm/expr-primitives.d.ts +6 -0
- package/dist/backend/llvm/expr-primitives.js +622 -0
- package/dist/backend/llvm/expr-primitives.js.map +1 -0
- package/dist/backend/llvm/expr-records.d.ts +9 -0
- package/dist/backend/llvm/expr-records.js +299 -0
- package/dist/backend/llvm/expr-records.js.map +1 -0
- package/dist/backend/llvm/expr-stream-bridges.d.ts +13 -0
- package/dist/backend/llvm/expr-stream-bridges.js +396 -0
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -0
- package/dist/backend/llvm/expr-stream-callbacks.d.ts +12 -0
- package/dist/backend/llvm/expr-stream-callbacks.js +360 -0
- package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -0
- package/dist/backend/llvm/lib-dispatch.d.ts +5 -0
- package/dist/backend/llvm/lib-dispatch.js +267 -0
- package/dist/backend/llvm/lib-dispatch.js.map +1 -0
- package/dist/backend/llvm/lib-filesystem.d.ts +6 -0
- package/dist/backend/llvm/lib-filesystem.js +594 -0
- package/dist/backend/llvm/lib-filesystem.js.map +1 -0
- package/dist/backend/llvm/lib-network.d.ts +2 -0
- package/dist/backend/llvm/lib-network.js +429 -0
- package/dist/backend/llvm/lib-network.js.map +1 -0
- package/dist/backend/llvm/lib-process.d.ts +5 -0
- package/dist/backend/llvm/lib-process.js +585 -0
- package/dist/backend/llvm/lib-process.js.map +1 -0
- package/dist/backend/llvm/lib-shared.d.ts +6 -0
- package/dist/backend/llvm/lib-shared.js +687 -0
- package/dist/backend/llvm/lib-shared.js.map +1 -0
- package/dist/backend/llvm/lib-stream.d.ts +2 -0
- package/dist/backend/llvm/lib-stream.js +470 -0
- package/dist/backend/llvm/lib-stream.js.map +1 -0
- package/dist/backend/llvm/shapes.d.ts +12 -2
- package/dist/backend/llvm/shapes.js +66 -307
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/shapes.test.js +52 -0
- package/dist/backend/llvm/shapes.test.js.map +1 -0
- package/dist/backend/llvm/split.d.ts +43 -0
- package/dist/backend/llvm/split.js +227 -0
- package/dist/backend/llvm/split.js.map +1 -0
- package/dist/backend/llvm/split.test.d.ts +1 -0
- package/dist/backend/llvm/split.test.js +102 -0
- package/dist/backend/llvm/split.test.js.map +1 -0
- package/dist/backend/llvm/unsupported.d.ts +1 -1
- package/dist/backend/llvm/walkers.d.ts +2 -3
- package/dist/backend/llvm/walkers.js +164 -218
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/native-codegen.d.ts +38 -0
- package/dist/backend/native-codegen.js +261 -0
- package/dist/backend/native-codegen.js.map +1 -0
- package/dist/backend/native-codegen.test.d.ts +1 -0
- package/dist/backend/native-codegen.test.js +188 -0
- package/dist/backend/native-codegen.test.js.map +1 -0
- package/dist/backend/native-link-info.d.ts +96 -0
- package/dist/backend/native-link-info.js +219 -0
- package/dist/backend/native-link-info.js.map +1 -0
- package/dist/backend/native-link-info.test.d.ts +1 -0
- package/dist/backend/native-link-info.test.js +134 -0
- package/dist/backend/native-link-info.test.js.map +1 -0
- package/dist/backend/{cc.d.ts → native-toolchain.d.ts} +139 -47
- package/dist/backend/{cc.js → native-toolchain.js} +1008 -910
- package/dist/backend/native-toolchain.js.map +1 -0
- package/dist/backend/native-toolchain.test.d.ts +1 -0
- package/dist/backend/{cc-cache.test.js → native-toolchain.test.js} +1297 -127
- package/dist/backend/native-toolchain.test.js.map +1 -0
- package/dist/backend/object-localize.js +1 -1
- package/dist/backend/object-localize.test.js +20 -0
- package/dist/backend/object-localize.test.js.map +1 -1
- package/dist/backend/runtime-abi.d.ts +10 -0
- package/dist/backend/runtime-abi.js +11 -0
- package/dist/backend/runtime-abi.js.map +1 -0
- package/dist/backend/runtime-pack.d.ts +137 -0
- package/dist/backend/runtime-pack.js +400 -0
- package/dist/backend/runtime-pack.js.map +1 -0
- package/dist/backend/runtime-pack.test.d.ts +1 -0
- package/dist/backend/runtime-pack.test.js +438 -0
- package/dist/backend/runtime-pack.test.js.map +1 -0
- package/dist/backend/targets.d.ts +30 -0
- package/dist/backend/targets.js +46 -0
- package/dist/backend/targets.js.map +1 -0
- package/dist/backend/targets.test.d.ts +1 -0
- package/dist/backend/targets.test.js +19 -0
- package/dist/backend/targets.test.js.map +1 -0
- package/dist/backend/vendor-archives.d.ts +41 -0
- package/dist/backend/vendor-archives.js +462 -0
- package/dist/backend/vendor-archives.js.map +1 -0
- package/dist/compat/fetch-profile.d.ts +0 -1
- package/dist/compat/fetch-profile.js +0 -1
- package/dist/compat/fetch-profile.js.map +1 -1
- package/dist/coverage/report.js +3 -3
- package/dist/coverage/report.js.map +1 -1
- package/dist/coverage/surface-manifest.js +25 -32
- package/dist/coverage/surface-manifest.js.map +1 -1
- package/dist/diagnostics/diagnostic.d.ts +11 -12
- package/dist/diagnostics/diagnostic.js +19 -17
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/diagnostics/render.d.ts +1 -1
- package/dist/diagnostics/render.js +1 -1
- package/dist/diagnostics/render.js.map +1 -1
- package/dist/errors.d.ts +5 -0
- package/dist/errors.js +9 -0
- package/dist/errors.js.map +1 -0
- package/dist/executable/executable-cache.d.ts +86 -0
- package/dist/executable/executable-cache.js +398 -0
- package/dist/executable/executable-cache.js.map +1 -0
- package/dist/executable/executable-cache.test.d.ts +1 -0
- package/dist/executable/executable-cache.test.js +300 -0
- package/dist/executable/executable-cache.test.js.map +1 -0
- package/dist/ffi/{profile.d.ts → ffi-manifest.d.ts} +7 -2
- package/dist/ffi/{profile.js → ffi-manifest.js} +2 -1
- package/dist/ffi/ffi-manifest.js.map +1 -0
- package/dist/frontend/builtin-modules.d.ts +21 -0
- package/dist/frontend/builtin-modules.js +82 -0
- package/dist/frontend/builtin-modules.js.map +1 -0
- package/dist/frontend/cjs-lexer.d.ts +7 -0
- package/dist/frontend/cjs-lexer.js +15 -17
- package/dist/frontend/cjs-lexer.js.map +1 -1
- package/dist/frontend/dts-paths.d.ts +26 -0
- package/dist/frontend/dts-paths.js +41 -0
- package/dist/frontend/dts-paths.js.map +1 -0
- package/dist/frontend/input-tracker.d.ts +0 -2
- package/dist/frontend/input-tracker.js +1 -4
- package/dist/frontend/input-tracker.js.map +1 -1
- package/dist/frontend/lib-contract.d.ts +1 -5
- package/dist/frontend/lib-contract.js +1 -1
- package/dist/frontend/lib-contract.js.map +1 -1
- package/dist/frontend/lib-exports.d.ts +1 -1
- package/dist/frontend/lowering/call-position.d.ts +4 -0
- package/dist/frontend/lowering/call-position.js +7 -0
- package/dist/frontend/lowering/call-position.js.map +1 -0
- package/dist/frontend/lowering/callback-arg.d.ts +20 -0
- package/dist/frontend/lowering/callback-arg.js +44 -0
- package/dist/frontend/lowering/callback-arg.js.map +1 -0
- package/dist/frontend/lowering/lib-boundary.d.ts +1 -1
- package/dist/frontend/lowering/lib-boundary.js +34 -34
- package/dist/frontend/lowering/lib-boundary.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.d.ts +3 -3
- package/dist/frontend/lowering/lower-assert.js +214 -241
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-builtins.d.ts +74 -146
- package/dist/frontend/lowering/lower-builtins.js +1126 -1234
- package/dist/frontend/lowering/lower-builtins.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.d.ts +56 -188
- package/dist/frontend/lowering/lower-calls.js +1409 -1494
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +62 -125
- package/dist/frontend/lowering/lower-classes.js +832 -866
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-comptime.d.ts +5 -12
- package/dist/frontend/lowering/lower-comptime.js +32 -31
- package/dist/frontend/lowering/lower-comptime.js.map +1 -1
- package/dist/frontend/lowering/lower-containers.d.ts +35 -135
- package/dist/frontend/lowering/lower-containers.js +1394 -1715
- package/dist/frontend/lowering/lower-containers.js.map +1 -1
- package/dist/frontend/lowering/lower-dgram.d.ts +3 -7
- package/dist/frontend/lowering/lower-dgram.js +97 -111
- package/dist/frontend/lowering/lower-dgram.js.map +1 -1
- package/dist/frontend/lowering/lower-enums.d.ts +4 -4
- package/dist/frontend/lowering/lower-enums.js +30 -30
- package/dist/frontend/lowering/lower-enums.js.map +1 -1
- package/dist/frontend/lowering/{lower-emitter.d.ts → lower-event-emitter.d.ts} +7 -18
- package/dist/frontend/lowering/{lower-emitter.js → lower-event-emitter.js} +172 -174
- package/dist/frontend/lowering/lower-event-emitter.js.map +1 -0
- package/dist/frontend/lowering/lower-expando.d.ts +5 -5
- package/dist/frontend/lowering/lower-expando.js +40 -40
- package/dist/frontend/lowering/lower-expando.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +56 -264
- package/dist/frontend/lowering/lower-exprs.js +1644 -1704
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.d.ts +6 -6
- package/dist/frontend/lowering/lower-generators.js +73 -72
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.d.ts +5 -17
- package/dist/frontend/lowering/lower-inspect.js +236 -238
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-island.d.ts +34 -45
- package/dist/frontend/lowering/lower-island.js +440 -511
- package/dist/frontend/lowering/lower-island.js.map +1 -1
- package/dist/frontend/lowering/lower-mixins.d.ts +7 -10
- package/dist/frontend/lowering/lower-mixins.js +86 -86
- package/dist/frontend/lowering/lower-mixins.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.d.ts +12 -18
- package/dist/frontend/lowering/lower-modules.js +284 -283
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.d.ts +23 -49
- package/dist/frontend/lowering/lower-namespaces.js +123 -115
- package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
- package/dist/frontend/lowering/lower-server.d.ts +18 -25
- package/dist/frontend/lowering/lower-server.js +899 -899
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +30 -149
- package/dist/frontend/lowering/lower-stmts.js +1176 -1229
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.d.ts +12 -12
- package/dist/frontend/lowering/lower-stream.js +300 -301
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lower-test.d.ts +5 -5
- package/dist/frontend/lowering/lower-test.js +82 -82
- package/dist/frontend/lowering/lower-test.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +66 -20
- package/dist/frontend/lowering/lowerer.js +421 -198
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/pairs-snapshot.d.ts +11 -0
- package/dist/frontend/lowering/pairs-snapshot.js +85 -0
- package/dist/frontend/lowering/pairs-snapshot.js.map +1 -0
- package/dist/frontend/lowering/static-this.d.ts +6 -0
- package/dist/frontend/lowering/static-this.js +24 -0
- package/dist/frontend/lowering/static-this.js.map +1 -0
- package/dist/frontend/lowering/surfaces.d.ts +14 -33
- package/dist/frontend/lowering/surfaces.js +64 -64
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/npm-static-rewrite.js +6 -28
- package/dist/frontend/npm-static-rewrite.js.map +1 -1
- package/dist/frontend/npm-static.d.ts +0 -10
- package/dist/frontend/npm-static.js +4 -7
- package/dist/frontend/npm-static.js.map +1 -1
- package/dist/frontend/npm.d.ts +0 -24
- package/dist/frontend/npm.js +11 -85
- package/dist/frontend/npm.js.map +1 -1
- package/dist/frontend/program.d.ts +3 -1
- package/dist/frontend/program.js +51 -17
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/provenance-registry.d.ts +0 -2
- package/dist/frontend/provenance-registry.js +0 -10
- package/dist/frontend/provenance-registry.js.map +1 -1
- package/dist/frontend/provenance.js +4 -7
- package/dist/frontend/provenance.js.map +1 -1
- package/dist/frontend/resolve.d.ts +7 -2
- package/dist/frontend/resolve.js +12 -17
- package/dist/frontend/resolve.js.map +1 -1
- package/dist/frontend/resolve.test.d.ts +1 -0
- package/dist/frontend/resolve.test.js +29 -0
- package/dist/frontend/resolve.test.js.map +1 -0
- package/dist/frontend/ts7/adapter.d.ts +2 -2
- package/dist/frontend/ts7/adapter.js +1 -1
- package/dist/frontend/ts7/adapter.js.map +1 -1
- package/dist/frontend/ts7/checker.d.ts +40 -2
- package/dist/frontend/ts7/checker.js +182 -54
- package/dist/frontend/ts7/checker.js.map +1 -1
- package/dist/frontend/ts7/enums.js +2 -1
- package/dist/frontend/ts7/enums.js.map +1 -1
- package/dist/frontend/ts7/{program.js → program-adapter.js} +7 -6
- package/dist/frontend/ts7/program-adapter.js.map +1 -0
- package/dist/frontend/ts7/world-check.d.ts +1 -3
- package/dist/frontend/ts7/world-check.js +3 -1
- package/dist/frontend/ts7/world-check.js.map +1 -1
- package/dist/frontend/tsc-codes.d.ts +8 -0
- package/dist/frontend/tsc-codes.js +109 -0
- package/dist/frontend/tsc-codes.js.map +1 -0
- package/dist/frontend/{types.d.ts → type-mapper.d.ts} +2 -25
- package/dist/frontend/{types.js → type-mapper.js} +31 -52
- package/dist/frontend/type-mapper.js.map +1 -0
- package/dist/frontend/workspace-registry.d.ts +26 -0
- package/dist/frontend/workspace-registry.js +71 -0
- package/dist/frontend/workspace-registry.js.map +1 -0
- package/dist/index.d.ts +115 -30
- package/dist/index.js +650 -146
- package/dist/index.js.map +1 -1
- package/dist/ir/analysis.d.ts +37 -0
- package/dist/ir/analysis.js +118 -0
- package/dist/ir/analysis.js.map +1 -0
- package/dist/ir/analysis.test.d.ts +1 -0
- package/dist/ir/analysis.test.js +21 -0
- package/dist/ir/analysis.test.js.map +1 -0
- package/dist/ir/build.d.ts +9 -0
- package/dist/ir/build.js +33 -0
- package/dist/ir/build.js.map +1 -0
- package/dist/ir/integer-loops.d.ts +1 -1
- package/dist/ir/{nodes.d.ts → ir.d.ts} +60 -26
- package/dist/ir/{nodes.js → ir.js} +173 -141
- package/dist/ir/ir.js.map +1 -0
- package/dist/ir/ir.test.d.ts +1 -0
- package/dist/ir/ir.test.js +17 -0
- package/dist/ir/ir.test.js.map +1 -0
- package/dist/ir/serialize.d.ts +1 -1
- package/dist/ir/serialize.js +2 -1
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/validate.d.ts +1 -1
- package/dist/ir/validate.js +16 -5
- package/dist/ir/validate.js.map +1 -1
- package/dist/library/cache-primitives.d.ts +24 -0
- package/dist/library/cache-primitives.js +83 -0
- package/dist/library/cache-primitives.js.map +1 -0
- package/dist/library/cache-reset.test.d.ts +1 -0
- package/dist/library/cache-reset.test.js +47 -0
- package/dist/library/cache-reset.test.js.map +1 -0
- package/dist/library/compiler-self-identity.d.ts +23 -0
- package/dist/library/compiler-self-identity.js +84 -0
- package/dist/library/compiler-self-identity.js.map +1 -0
- package/dist/library/fence-eval.d.ts +3 -1
- package/dist/library/fence-eval.js +5 -1
- package/dist/library/fence-eval.js.map +1 -1
- package/dist/library/int-infer.d.ts +1 -36
- package/dist/library/int-infer.js +17 -17
- package/dist/library/int-infer.js.map +1 -1
- package/dist/library/{early-cache.d.ts → library-cache.d.ts} +1 -1
- package/dist/library/{early-cache.js → library-cache.js} +37 -111
- package/dist/library/library-cache.js.map +1 -0
- package/dist/library/library-cache.test.d.ts +1 -0
- package/dist/library/{early-cache.test.js → library-cache.test.js} +2 -2
- package/dist/library/library-cache.test.js.map +1 -0
- package/dist/library/{profile.d.ts → library-profile.d.ts} +4 -7
- package/dist/library/{profile.js → library-profile.js} +18 -11
- package/dist/library/library-profile.js.map +1 -0
- package/dist/library/semantic-source.js +2 -1
- package/dist/library/semantic-source.js.map +1 -1
- package/dist/library/sidecar.d.ts +5 -2
- package/dist/library/sidecar.js +11 -5
- package/dist/library/sidecar.js.map +1 -1
- package/dist/startup-cache.d.ts +6 -0
- package/dist/startup-cache.js +6 -0
- package/dist/startup-cache.js.map +1 -0
- package/package.json +7 -2
- package/surface-manifest.json +1 -1
- package/dist/backend/cc-cache.test.js.map +0 -1
- package/dist/backend/cc.js.map +0 -1
- package/dist/backend/emission/emit-async.js.map +0 -1
- package/dist/backend/emission/emit-exprs.d.ts +0 -13
- package/dist/backend/emission/emit-exprs.js +0 -7407
- package/dist/backend/emission/emit-exprs.js.map +0 -1
- package/dist/backend/emission/emit-island.js.map +0 -1
- package/dist/backend/emission/emit-shapes.js.map +0 -1
- package/dist/backend/emission/emit-stmts.js.map +0 -1
- package/dist/backend/emission/emit-types.js.map +0 -1
- package/dist/backend/emission/emit-walkers.js.map +0 -1
- package/dist/backend/emission/emitter.js.map +0 -1
- package/dist/backend/emission/may-throw.js.map +0 -1
- package/dist/backend/library-identity.js.map +0 -1
- package/dist/ffi/profile.js.map +0 -1
- package/dist/frontend/lowering/lower-emitter.js.map +0 -1
- package/dist/frontend/shared.d.ts +0 -82
- package/dist/frontend/shared.js +0 -308
- package/dist/frontend/shared.js.map +0 -1
- package/dist/frontend/ts7/program.js.map +0 -1
- package/dist/frontend/types.js.map +0 -1
- package/dist/ir/nodes.js.map +0 -1
- package/dist/library/early-cache.js.map +0 -1
- package/dist/library/early-cache.test.js.map +0 -1
- package/dist/library/profile.js.map +0 -1
- /package/dist/backend/{cc-cache.test.d.ts → c/types.test.d.ts} +0 -0
- /package/dist/{library/early-cache.test.d.ts → backend/llvm/shapes.test.d.ts} +0 -0
- /package/dist/frontend/ts7/{program.d.ts → program-adapter.d.ts} +0 -0
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { mkdtemp, writeFile } from "node:fs/promises";
|
|
2
|
+
import { tmpdir } from "node:os";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { describe, expect, test } from "vitest";
|
|
5
|
+
import { loadFfiProfile } from "../ffi/ffi-manifest.js";
|
|
6
|
+
import { createNativeLinkInfo } from "./native-link-info.js";
|
|
7
|
+
import { MACOS_ARM64_TARGET } from "./targets.js";
|
|
8
|
+
const BASE = {
|
|
9
|
+
dynamic: false,
|
|
10
|
+
regex: false,
|
|
11
|
+
copying: false,
|
|
12
|
+
textDecoderLegacy: false,
|
|
13
|
+
fileHandle: false,
|
|
14
|
+
fetch: false,
|
|
15
|
+
netIsland: false,
|
|
16
|
+
zlib: false,
|
|
17
|
+
assert: false,
|
|
18
|
+
inspect: false,
|
|
19
|
+
dynInvoke: false,
|
|
20
|
+
dc: false,
|
|
21
|
+
dynAsync: false,
|
|
22
|
+
events: false,
|
|
23
|
+
emitter: false,
|
|
24
|
+
symbol: false,
|
|
25
|
+
searchParams: false,
|
|
26
|
+
qs: false,
|
|
27
|
+
parseArgs: false,
|
|
28
|
+
stream: false,
|
|
29
|
+
net: false,
|
|
30
|
+
http: false,
|
|
31
|
+
http2: false,
|
|
32
|
+
dgram: false,
|
|
33
|
+
watch: false,
|
|
34
|
+
foreignFfi: false,
|
|
35
|
+
nodeTest: false,
|
|
36
|
+
tls: false,
|
|
37
|
+
tlsCa: false,
|
|
38
|
+
};
|
|
39
|
+
describe("native link info recipes", () => {
|
|
40
|
+
test("feature source sets reproduce runtime and vendor gates", async () => {
|
|
41
|
+
const info = await createNativeLinkInfo({
|
|
42
|
+
programObject: "/out/app.o",
|
|
43
|
+
target: MACOS_ARM64_TARGET,
|
|
44
|
+
features: {
|
|
45
|
+
...BASE,
|
|
46
|
+
dynamic: true,
|
|
47
|
+
regex: true,
|
|
48
|
+
inspect: true,
|
|
49
|
+
zlib: true,
|
|
50
|
+
tls: true,
|
|
51
|
+
},
|
|
52
|
+
ffi: null,
|
|
53
|
+
});
|
|
54
|
+
const runtime = info.runtime_pack.source_sets.find((set) => set.name === "runtime");
|
|
55
|
+
expect(runtime.sources).toEqual(expect.arrayContaining([
|
|
56
|
+
"src/scr_regex.c",
|
|
57
|
+
"src/scr_assert.c",
|
|
58
|
+
"src/scr_inspect.c",
|
|
59
|
+
"src/scr_zlib.c",
|
|
60
|
+
"src/scr_zlib_island.c",
|
|
61
|
+
"src/scr_tls.c",
|
|
62
|
+
"src/scr_tls_ca.c",
|
|
63
|
+
"src/scr_island.c",
|
|
64
|
+
"src/scr_web.c",
|
|
65
|
+
"src/scr_inspect_island.c",
|
|
66
|
+
]));
|
|
67
|
+
expect(info.runtime_pack.source_sets.map((set) => set.name)).toEqual([
|
|
68
|
+
"runtime", "quickjs", "mbedtls",
|
|
69
|
+
]);
|
|
70
|
+
expect(info.runtime_pack.source_sets.find((set) => set.name === "mbedtls").sources.length)
|
|
71
|
+
.toBeGreaterThan(100);
|
|
72
|
+
expect(info.link.system_libraries).toEqual(["System", "z", "m"]);
|
|
73
|
+
});
|
|
74
|
+
test("dev object recipes keep runtime optimization in lockstep", async () => {
|
|
75
|
+
const info = await createNativeLinkInfo({
|
|
76
|
+
programObject: "/out/app.o",
|
|
77
|
+
target: MACOS_ARM64_TARGET,
|
|
78
|
+
features: BASE,
|
|
79
|
+
ffi: null,
|
|
80
|
+
optimization: "dev",
|
|
81
|
+
});
|
|
82
|
+
expect(info.runtime_pack.source_sets[0]?.c_flags).toContain("-O0");
|
|
83
|
+
expect(info.runtime_pack.source_sets[0]?.c_flags).not.toContain("-O2");
|
|
84
|
+
// External objects are compiled separately and the driver recipe is an
|
|
85
|
+
// executable link. The two halves must not leak into each other's recipe.
|
|
86
|
+
expect(info.runtime_pack.source_sets[0]?.c_flags).not.toContain("-Wl,-dead_strip");
|
|
87
|
+
expect(info.link.driver_flags).toContain("-Wl,-dead_strip");
|
|
88
|
+
});
|
|
89
|
+
test("static external-object links dead-strip just like dynamic links", async () => {
|
|
90
|
+
const info = await createNativeLinkInfo({
|
|
91
|
+
programObject: "/out/app.o",
|
|
92
|
+
target: MACOS_ARM64_TARGET,
|
|
93
|
+
features: BASE,
|
|
94
|
+
ffi: null,
|
|
95
|
+
});
|
|
96
|
+
expect(info.link.driver_flags).toContain("-Wl,-dead_strip");
|
|
97
|
+
});
|
|
98
|
+
test("FFI symbols and resolved inputs remain ordered before the runtime", async () => {
|
|
99
|
+
const dir = await mkdtemp(join(tmpdir(), "scriptc-native-link-info-unit-"));
|
|
100
|
+
const library = join(dir, "native.o");
|
|
101
|
+
const manifest = join(dir, "ffi.json");
|
|
102
|
+
await writeFile(library, "fixture");
|
|
103
|
+
await writeFile(manifest, JSON.stringify({
|
|
104
|
+
ffi_format: 1,
|
|
105
|
+
functions: [{
|
|
106
|
+
name: "nativeScale",
|
|
107
|
+
symbol: "native_scale",
|
|
108
|
+
params: ["f64"],
|
|
109
|
+
returns: "f64",
|
|
110
|
+
}],
|
|
111
|
+
libraries: ["./native.o"],
|
|
112
|
+
system_libraries: ["sqlite3"],
|
|
113
|
+
}));
|
|
114
|
+
const loaded = loadFfiProfile(manifest);
|
|
115
|
+
if (!loaded.ok)
|
|
116
|
+
throw new Error(loaded.diagnostics[0]?.message);
|
|
117
|
+
const info = await createNativeLinkInfo({
|
|
118
|
+
programObject: "/out/app.o",
|
|
119
|
+
target: MACOS_ARM64_TARGET,
|
|
120
|
+
features: BASE,
|
|
121
|
+
ffi: loaded.profile,
|
|
122
|
+
});
|
|
123
|
+
expect(info.ffi).toEqual({
|
|
124
|
+
format: 1,
|
|
125
|
+
symbols: ["native_scale"],
|
|
126
|
+
libraries: [library],
|
|
127
|
+
});
|
|
128
|
+
expect(info.link.input_order.slice(0, 3)).toEqual([
|
|
129
|
+
"/out/app.o", library, "runtime/*.o",
|
|
130
|
+
]);
|
|
131
|
+
expect(info.link.system_libraries).toEqual(["sqlite3", "System"]);
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
//# sourceMappingURL=native-link-info.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-link-info.test.js","sourceRoot":"","sources":["../../src/backend/native-link-info.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,30 @@
|
|
|
1
|
+
export { buildCacheRoot, prepareBuildCacheRoot, pruneBuildCache, resolveBuildCacheRoot, } from "./build-cache.js";
|
|
2
|
+
export declare const EXECUTABLE_RUNTIME_SOURCES: readonly ["scr_number.c", "scr_string.c", "scr_array.c", "scr_bytes.c", "scr_bytes_io.c", "scr_map.c", "scr_closure.c", "scr_ffi.c", "scr_object.c", "scr_union.c", "scr_exception.c", "scr_error.c", "scr_console.c", "scr_lib.c", "scr_path.c", "scr_url.c", "scr_json.c", "scr_async.c", "scr_child.c", "scr_cycle.c"];
|
|
3
|
+
/**
|
|
4
|
+
* Per-executable section-elimination recipe. This belongs beside the native
|
|
5
|
+
* driver rather than a particular build path: one-shot compilation, cached
|
|
6
|
+
* runtime objects, external object recipes, and runtime packs must all agree
|
|
7
|
+
* on what their final executable linker is allowed to discard.
|
|
8
|
+
*
|
|
9
|
+
* Archives and compile-only object/library recipes deliberately do not use
|
|
10
|
+
* the link half. In particular, `--lib` preserves its established object and
|
|
11
|
+
* archive contract; section GC is an executable-link optimization only.
|
|
12
|
+
*/
|
|
13
|
+
export declare function executableSectionEliminationFlags(platform: string): {
|
|
14
|
+
compile: string[];
|
|
15
|
+
link: string[];
|
|
16
|
+
};
|
|
1
17
|
export interface ToolchainEnvironmentCachePolicy {
|
|
2
18
|
completeArtifacts: boolean;
|
|
3
19
|
runtimeObjects: boolean;
|
|
4
20
|
}
|
|
5
21
|
export declare function toolchainEnvironmentCachePolicy(env?: NodeJS.ProcessEnv): ToolchainEnvironmentCachePolicy;
|
|
6
22
|
export declare function toolchainEnvironmentFingerprint(env?: NodeJS.ProcessEnv): string;
|
|
23
|
+
/** Inputs that can change which native tool/runtime implementation an
|
|
24
|
+
* executable build selects before compileC has a chance to rediscover it.
|
|
25
|
+
* The early whole-program cache keys this exact posture before restoring a
|
|
26
|
+
* final binary; compileC retains its deeper inode/content validation. */
|
|
27
|
+
export declare function executableNativeEnvironmentFingerprint(env?: NodeJS.ProcessEnv): Promise<string>;
|
|
7
28
|
export interface CcOptions {
|
|
8
29
|
/** Path of the generated (or hand-written) program TU: a .c file, or the
|
|
9
30
|
* LLVM backend's .ll — clang compiles IR text natively on the same
|
|
@@ -18,6 +39,19 @@ export interface CcOptions {
|
|
|
18
39
|
* top-level bytes alone can safely represent. scriptc's frontend supplies
|
|
19
40
|
* this for its generated C/LLVM IR; `--from-c` deliberately does not. */
|
|
20
41
|
cacheIdentity?: string;
|
|
42
|
+
/** Native optimization posture. Release preserves the historical -O2
|
|
43
|
+
* executable lane; dev selects -O0 and may compile a caller-provided LLVM
|
|
44
|
+
* shard set into independently cached objects before the final link. */
|
|
45
|
+
optimization?: "release" | "dev";
|
|
46
|
+
/** Optional equivalent LLVM modules for dev compilation. Unsupported
|
|
47
|
+
* targets or merge failures fall back to the canonical cPath TU. */
|
|
48
|
+
programShards?: readonly {
|
|
49
|
+
name: string;
|
|
50
|
+
source: string;
|
|
51
|
+
}[];
|
|
52
|
+
/** Canonical externally visible definitions retained while shard merging
|
|
53
|
+
* demotes generated cross-shard linkage back to local symbols. */
|
|
54
|
+
programPublicSymbols?: readonly string[];
|
|
21
55
|
/** Build with ASan + the runtime RC audit (test/debug lane). */
|
|
22
56
|
sanitize?: boolean;
|
|
23
57
|
/** Additional native archives/objects, appended after the generated
|
|
@@ -32,15 +66,17 @@ export interface CcOptions {
|
|
|
32
66
|
* cached runtime objects. */
|
|
33
67
|
systemLibraries?: readonly string[];
|
|
34
68
|
/** Embed the dynamic-island engine (--dynamic): compiles scr_island.c,
|
|
35
|
-
* defines SCR_DYNAMIC, and links the cached libqjs.a. Off
|
|
36
|
-
*
|
|
69
|
+
* defines SCR_DYNAMIC, and links the cached libqjs.a. Off retains the
|
|
70
|
+
* static runtime selection; executable section GC may still remove
|
|
71
|
+
* unreachable static-runtime code. */
|
|
37
72
|
dynamic?: boolean;
|
|
38
73
|
/** The program contains a regex construct (index.ts detects it on the
|
|
39
74
|
* IR): compiles scr_regex.c and links the vendored libregexp — as cached
|
|
40
75
|
* standalone objects in static builds, from the engine archive under
|
|
41
76
|
* --dynamic (one libregexp per binary; its host hooks want the island's
|
|
42
77
|
* JSContext there). Off = regex-free: the command line is exactly the
|
|
43
|
-
* historical
|
|
78
|
+
* historical runtime selection; executable section GC may remove unrelated
|
|
79
|
+
* unreachable code. */
|
|
44
80
|
regex?: boolean;
|
|
45
81
|
/** The program uses one of the copying/typed-array bridge intrinsics
|
|
46
82
|
* implemented in scr_copying.c (index.ts detects them on the IR).
|
|
@@ -77,10 +113,11 @@ export interface CcOptions {
|
|
|
77
113
|
netIsland?: boolean;
|
|
78
114
|
/** The program uses zlib (index.ts detects zlib.* libCalls on the IR):
|
|
79
115
|
* compiles scr_zlib.c — the regex/curl gating precedent, so zlib-free
|
|
80
|
-
* binaries keep their exact link line.
|
|
81
|
-
* (macOS ships it), byte-identical to the historical line;
|
|
82
|
-
*
|
|
83
|
-
* has no libz in its sysroots). Compressed bytes may
|
|
116
|
+
* binaries keep their exact link line. The default host-clang build links
|
|
117
|
+
* the SYSTEM libz (macOS ships it), byte-identical to the historical line;
|
|
118
|
+
* every Zig build compiles the vendored zlib with the selected driver instead
|
|
119
|
+
* (ensureZlibObjects — zig has no libz in its sysroots). Compressed bytes may
|
|
120
|
+
* differ between the
|
|
84
121
|
* system and vendored libraries, which is why the corpus only ever
|
|
85
122
|
* compares round-trips and fixed-blob inflation, never raw deflate
|
|
86
123
|
* output. */
|
|
@@ -196,6 +233,17 @@ export interface CcOptions {
|
|
|
196
233
|
* The unit also compiles whenever `tls` does — scr_tls.c consults its
|
|
197
234
|
* default-set override and shared Windows-certificate enumerator. */
|
|
198
235
|
tlsCa?: boolean;
|
|
236
|
+
/** Internal compiler hook: called only after a strict native artifact hit
|
|
237
|
+
* or a successful stable build has installed `outPath`. The executable
|
|
238
|
+
* frontend cache uses it to publish its stamp after native dependencies
|
|
239
|
+
* have validated; arbitrary compileC callers leave it unset. */
|
|
240
|
+
onArtifactReady?: (artifact: ValidatedNativeArtifact) => Promise<void>;
|
|
241
|
+
}
|
|
242
|
+
/** Native dependency proof attached to an executable frontend-cache entry.
|
|
243
|
+
* compileC produces this only after its strict local/CAS validation succeeds;
|
|
244
|
+
* the early reader replays it before restoring the final executable. */
|
|
245
|
+
export interface ValidatedNativeArtifact {
|
|
246
|
+
dependencies: NativeArtifactDependency[];
|
|
199
247
|
}
|
|
200
248
|
/** Structured compiler-driver failure. Most callers still let this surface
|
|
201
249
|
* as an internal build error; the TypeScript compiler pipeline recognizes it
|
|
@@ -229,6 +277,10 @@ export interface CcDriver {
|
|
|
229
277
|
/** Platform libraries appended after every object/archive input. */
|
|
230
278
|
linkArgs: string[];
|
|
231
279
|
}
|
|
280
|
+
/** Whether the selected compiler driver is Zig. This is deliberately based on
|
|
281
|
+
* the executable prefix rather than target presence: targetless Zig is still
|
|
282
|
+
* a Zig build, while target presence is only the platform/target contract. */
|
|
283
|
+
export declare function isZigDriver(driver: Pick<CcDriver, "argv">): boolean;
|
|
232
284
|
export declare const IPHONEOS_MIN_VERSION = "15.0";
|
|
233
285
|
export declare const ANDROID_MIN_API = 26;
|
|
234
286
|
export declare function isIosTarget(target: string | null): boolean;
|
|
@@ -244,30 +296,19 @@ export declare function mobileLibraryTarget(env?: NodeJS.ProcessEnv): string | n
|
|
|
244
296
|
* inspection — no discovery, no subprocess. */
|
|
245
297
|
export declare function mobileTargetRefusal(target: string, hostPlatform?: NodeJS.Platform): string | null;
|
|
246
298
|
export declare function resolveCc(env?: NodeJS.ProcessEnv, hostPlatform?: NodeJS.Platform): CcDriver;
|
|
247
|
-
/** Musl intentionally has no predefined libc macro. The explicit Zig target
|
|
248
|
-
* is therefore the source of truth for selecting its small runtime shim. */
|
|
249
|
-
export declare function isMuslTarget(driver: Pick<CcDriver, "target">): boolean;
|
|
250
299
|
/** The OS the produced binary runs on: the triple's OS under SCRIPTC_TARGET,
|
|
251
300
|
* the host's otherwise — so platform-conditional link flags follow the
|
|
252
301
|
* TARGET, not the machine running the compiler. Exported for compile()/
|
|
253
302
|
* analyze(): the FRONTEND consults it too (path.sep / os.EOL literals and
|
|
254
303
|
* the path-module binding follow the target — a win32 triple compiles
|
|
255
304
|
* Node-on-Windows semantics, path.win32 backing the bare module). */
|
|
305
|
+
export declare function configuredTargetPlatform(env?: NodeJS.ProcessEnv, hostPlatform?: NodeJS.Platform): string;
|
|
256
306
|
export declare function targetPlatform(driver: CcDriver): string;
|
|
257
307
|
/** Architecture identity for host-native cache entries. Explicit cross targets
|
|
258
308
|
* already name their complete target triple; native builds need the process
|
|
259
309
|
* architecture too because one per-user cache can serve both native and
|
|
260
310
|
* emulated processes (arm64 and Rosetta on macOS, for example). */
|
|
261
311
|
export declare function cacheTargetIdentity(driver: Pick<CcDriver, "target">, hostPlatform?: NodeJS.Platform, hostArch?: string): string;
|
|
262
|
-
/** Cross targets already carry their architecture in the explicit triple.
|
|
263
|
-
* Host-native prerequisites need the same separation: a checkout/package can
|
|
264
|
-
* be used by both arm64 Node and Rosetta/x64 Node on macOS. */
|
|
265
|
-
export declare function vendorCacheTargetFlavor(driver: Pick<CcDriver, "target">, hostPlatform?: NodeJS.Platform, hostArch?: string): string;
|
|
266
|
-
/** Vendor prerequisites live outside the content-addressed build root, so
|
|
267
|
-
* their directory name must carry the same environment and resolved compiler
|
|
268
|
-
* identity as the artifacts that consume them. The short digest keeps the
|
|
269
|
-
* package-local path readable while preventing build-order contamination. */
|
|
270
|
-
export declare function vendorCacheBuildIdentity(environmentFingerprint: string, compilerIdentity: string): string;
|
|
271
312
|
export interface LibArchiveOptions {
|
|
272
313
|
/** The program TU (.c or .ll — clang compiles either with -c). */
|
|
273
314
|
cPath: string;
|
|
@@ -275,6 +316,17 @@ export interface LibArchiveOptions {
|
|
|
275
316
|
* spelling. Library assembly uses this for the identity-free projection of
|
|
276
317
|
* a complete caller-visible TU; its bytes drive every native cache key. */
|
|
277
318
|
programSource?: string;
|
|
319
|
+
/** Optional equivalent LLVM modules for native compilation. The public
|
|
320
|
+
* `programSource` remains the canonical TU/cache identity; these stable
|
|
321
|
+
* shards compile independently and are relocatably merged into one program
|
|
322
|
+
* object before archive assembly. */
|
|
323
|
+
programShards?: readonly {
|
|
324
|
+
name: string;
|
|
325
|
+
source: string;
|
|
326
|
+
}[];
|
|
327
|
+
/** Canonical externally visible definitions retained while the shard merge
|
|
328
|
+
* demotes generated cross-shard linkage back to local symbols. */
|
|
329
|
+
programPublicSymbols?: readonly string[];
|
|
278
330
|
/** Tiny generated C source carrying volatile library identity getters.
|
|
279
331
|
* Its bytes join the complete archive key, but the source itself exists
|
|
280
332
|
* only in the invocation-private build directory and the large program-
|
|
@@ -324,20 +376,14 @@ export interface LibArchiveOptions {
|
|
|
324
376
|
textDecoderLegacy?: boolean;
|
|
325
377
|
}
|
|
326
378
|
export declare function compileLibArchive(opts: LibArchiveOptions): Promise<void>;
|
|
327
|
-
/**
|
|
328
|
-
*
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
*
|
|
332
|
-
*
|
|
333
|
-
export declare function
|
|
334
|
-
|
|
335
|
-
* the artifact caches. Failure disables only the optional caller's tier. */
|
|
336
|
-
export declare function prepareBuildCacheRoot(root: string | null): Promise<string | null>;
|
|
337
|
-
/** Register a successful compiler-level cache write with the shared bounded
|
|
338
|
-
* LRU policy. */
|
|
339
|
-
export declare function pruneBuildCache(root: string | null): Promise<void>;
|
|
340
|
-
export declare function ccVersionOnce(argv: string[], environmentFingerprint?: string, fresh?: boolean): Promise<string>;
|
|
379
|
+
/** Persistent caches require an inspectable compiler driver. A general
|
|
380
|
+
* wrapper can branch on the real source/object paths or argument topology and
|
|
381
|
+
* inject inputs only into the final invocation; no synthetic metadata probe
|
|
382
|
+
* can safely represent that behavior. Accept direct Clang/Zig drivers (plus
|
|
383
|
+
* Apple's system shim) and conservatively keep wrapper-driven builds on the
|
|
384
|
+
* uncached path. */
|
|
385
|
+
export declare function compilerDriverSupportsPersistentCache(driver: Pick<CcDriver, "argv" | "targetArgs" | "target">, environmentFingerprint: string): Promise<boolean>;
|
|
386
|
+
export declare function ccVersion(argv: string[], environmentFingerprint?: string, fresh?: boolean): Promise<string>;
|
|
341
387
|
/** Every system-header spelling consumed by a source tree scriptc owns. The
|
|
342
388
|
* dependency probe preprocesses these spellings with the selected driver and
|
|
343
389
|
* hashes the resolved files. Runtime-local and vendored source/header bytes
|
|
@@ -346,25 +392,71 @@ export declare function ccVersionOnce(argv: string[], environmentFingerprint?: s
|
|
|
346
392
|
* libregexp, mbedTLS, zlib, curl, and Ryū translation units. */
|
|
347
393
|
export declare function implicitDependencyProbeIncludes(rtDir: string): Promise<string[]>;
|
|
348
394
|
export declare function parseLinkTraceFiles(output: string, cwd: string, excludedRoot: string, driverDryRun?: boolean): Promise<string[]>;
|
|
395
|
+
/** Resolve the exact files consumed by one compiler-driver link invocation.
|
|
396
|
+
* Runtime packs reuse the native toolchain's strict dry-run plus real linker
|
|
397
|
+
* trace so a PATH-selected Clang carries its own linker, SDK, compiler
|
|
398
|
+
* runtime, and injected inputs into the executable cache proof. */
|
|
399
|
+
export declare function nativeLinkerDependencyPaths(linker: string, linkArgs: readonly string[]): Promise<string[]>;
|
|
400
|
+
/** Reset process observations whose validity is bounded to one public native
|
|
401
|
+
* build. A long-lived caller may change PATH or install/remove ccache between
|
|
402
|
+
* invocations; the next build must probe that environment again. */
|
|
403
|
+
export declare function clearCcCaches(): void;
|
|
349
404
|
export declare function runtimeFingerprint(rtDir: string): Promise<string>;
|
|
405
|
+
declare const vendorCacheTargetFlavor: (driver: Pick<CcDriver, "target">, hostPlatform?: NodeJS.Platform, hostArch?: string) => string, vendorCacheBuildIdentity: (environmentFingerprint: string, compilerIdentity: string, nativeSourceIdentity: string) => string;
|
|
406
|
+
export { vendorCacheBuildIdentity, vendorCacheTargetFlavor };
|
|
407
|
+
export interface NativeArtifactDependency {
|
|
408
|
+
path: string;
|
|
409
|
+
kind: "file" | "directory" | "symlink";
|
|
410
|
+
dev: number;
|
|
411
|
+
ino: number;
|
|
412
|
+
size: number;
|
|
413
|
+
mtimeMs: number;
|
|
414
|
+
ctimeMs: number;
|
|
415
|
+
/** Symlinks are identity-bearing paths whose target bytes also matter. */
|
|
416
|
+
targetPath?: string;
|
|
417
|
+
targetKind?: "file" | "directory";
|
|
418
|
+
targetDev?: number;
|
|
419
|
+
targetIno?: number;
|
|
420
|
+
targetSize?: number;
|
|
421
|
+
targetMtimeMs?: number;
|
|
422
|
+
targetCtimeMs?: number;
|
|
423
|
+
/** A directory's recursive namespace. This detects a new nested candidate
|
|
424
|
+
* that can begin shadowing an existing system/header dependency. */
|
|
425
|
+
treeDigest?: string;
|
|
426
|
+
treeExclusions?: string[];
|
|
427
|
+
}
|
|
428
|
+
/** Capture exact filesystem identities for inputs produced outside the C
|
|
429
|
+
* toolchain but consumed by its cache proofs. Callers carry this snapshot
|
|
430
|
+
* forward so later stages can prove the same inputs remained installed. */
|
|
431
|
+
export declare function snapshotNativeArtifactDependencies(dependencyPaths: readonly string[]): Promise<NativeArtifactDependency[]>;
|
|
432
|
+
export declare function nativeArtifactDependenciesStillMatch(dependencies: readonly NativeArtifactDependency[]): Promise<boolean>;
|
|
350
433
|
/** Give one active link/archive operation private names for its cached
|
|
351
434
|
* runtime objects. A hard link keeps the inode alive if another process's LRU
|
|
352
435
|
* sweep unlinks the cache entry; filesystems that cannot hard-link across the
|
|
353
436
|
* cache/tmp boundary fall back to a copy. If eviction wins before staging,
|
|
354
437
|
* the caller catches the read failure and performs a fully fresh compile. */
|
|
355
438
|
export declare function stageRuntimeObjects(objects: ReadonlyMap<string, string>, stageDir: string): Promise<Map<string, string>>;
|
|
356
|
-
/** Compiles one C program together with the runtime sources.
|
|
357
|
-
* With caching disabled, the runtime (a dozen small files) is recompiled on
|
|
358
|
-
* every build in one historical clang invocation — no cached-archive
|
|
359
|
-
* staleness bugs. --dynamic additionally compiles
|
|
360
|
-
* scr_island.c under SCR_DYNAMIC and links the cached engine archive (built
|
|
361
|
-
* lazily, see above); regex-using programs additionally compile scr_regex.c
|
|
362
|
-
* and link libregexp (the cached objects, or the archive's own copy under
|
|
363
|
-
* --dynamic). Without either, the command line is exactly the historical
|
|
364
|
-
* one — regex-free static builds must stay byte-identical.
|
|
365
|
-
*
|
|
366
|
-
* With a caller-supplied dependency identity and an enabled cache root,
|
|
367
|
-
* unchanged programs skip payload code generation/linking via the binary
|
|
368
|
-
* cache after lightweight metadata probes, and misses link the program's own
|
|
369
|
-
* TU against cached per-flavor runtime objects. */
|
|
370
439
|
export declare function compileC(opts: CcOptions): Promise<void>;
|
|
440
|
+
export type NativeCacheWarmProfile = "runtime" | "tls" | "dynamic";
|
|
441
|
+
export interface WarmNativeCachesOptions {
|
|
442
|
+
/** Native object posture to seed. Defaults to the shipped release/-O2 lane. */
|
|
443
|
+
optimization?: "release" | "dev";
|
|
444
|
+
/** Seed ASan + RC-audit objects instead of the ordinary lane. */
|
|
445
|
+
sanitize?: boolean;
|
|
446
|
+
/** Feature families to seed. Defaults to every expensive native family. */
|
|
447
|
+
profiles?: readonly NativeCacheWarmProfile[];
|
|
448
|
+
}
|
|
449
|
+
export interface WarmNativeCachesResult {
|
|
450
|
+
cacheRoot: string;
|
|
451
|
+
profiles: {
|
|
452
|
+
profile: NativeCacheWarmProfile;
|
|
453
|
+
elapsedMs: number;
|
|
454
|
+
}[];
|
|
455
|
+
}
|
|
456
|
+
export declare function supportedNativeCacheWarmProfiles(driver: CcDriver): readonly NativeCacheWarmProfile[];
|
|
457
|
+
/** Populate expensive native prerequisites against the current compiler,
|
|
458
|
+
* target, SDK, and environment. The resulting entries use the exact same
|
|
459
|
+
* identities and validators as ordinary builds; this merely pays their cost
|
|
460
|
+
* before a developer's first program asks for them. Synthetic link products
|
|
461
|
+
* are discarded and never enter the complete-executable cache. */
|
|
462
|
+
export declare function warmNativeCaches(options?: WarmNativeCachesOptions): Promise<WarmNativeCachesResult>;
|