@scriptc/compiler 0.4.1 → 0.4.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 +977 -113
- package/dist/backend/cycle-analysis.d.ts +5 -1
- package/dist/backend/cycle-analysis.js +6 -4
- package/dist/backend/cycle-analysis.js.map +1 -1
- package/dist/backend/cycle-analysis.test.js +55 -0
- package/dist/backend/cycle-analysis.test.js.map +1 -1
- package/dist/backend/cycle-mutability.d.ts +9 -1
- package/dist/backend/cycle-mutability.js +21 -3
- package/dist/backend/cycle-mutability.js.map +1 -1
- package/dist/backend/executable-features.js +6 -1
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/immutability.d.ts +7 -3
- package/dist/backend/immutability.js +33 -29
- package/dist/backend/immutability.js.map +1 -1
- package/dist/backend/library-pack.js +5 -0
- package/dist/backend/library-pack.js.map +1 -1
- package/dist/backend/llvm/alloc.d.ts +23 -4
- package/dist/backend/llvm/alloc.js +61 -8
- package/dist/backend/llvm/alloc.js.map +1 -1
- package/dist/backend/llvm/appended-array-literals.d.ts +2 -1
- package/dist/backend/llvm/appended-array-literals.js +44 -36
- package/dist/backend/llvm/appended-array-literals.js.map +1 -1
- package/dist/backend/llvm/appended-array-literals.test.js +4 -3
- package/dist/backend/llvm/appended-array-literals.test.js.map +1 -1
- package/dist/backend/llvm/array-search.d.ts +4 -3
- package/dist/backend/llvm/array-search.js +23 -10
- package/dist/backend/llvm/array-search.js.map +1 -1
- package/dist/backend/llvm/blocks.d.ts +1 -1
- package/dist/backend/llvm/blocks.js +2 -2
- package/dist/backend/llvm/blocks.js.map +1 -1
- package/dist/backend/llvm/byte-windows.js +2 -0
- package/dist/backend/llvm/byte-windows.js.map +1 -1
- package/dist/backend/llvm/bytes-alias.d.ts +6 -1
- package/dist/backend/llvm/bytes-alias.js +8 -2
- package/dist/backend/llvm/bytes-alias.js.map +1 -1
- package/dist/backend/llvm/bytes-loop-versions.d.ts +70 -7
- package/dist/backend/llvm/bytes-loop-versions.js +567 -30
- package/dist/backend/llvm/bytes-loop-versions.js.map +1 -1
- package/dist/backend/llvm/bytes-loop-versions.test.js +389 -2
- package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -1
- package/dist/backend/llvm/checked-value-lifetimes.js +2 -0
- package/dist/backend/llvm/checked-value-lifetimes.js.map +1 -1
- package/dist/backend/llvm/classes.d.ts +74 -1
- package/dist/backend/llvm/classes.js +364 -54
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/classes.test.js +384 -17
- package/dist/backend/llvm/classes.test.js.map +1 -1
- package/dist/backend/llvm/common.d.ts +10 -6
- package/dist/backend/llvm/common.js +10 -6
- package/dist/backend/llvm/common.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.d.ts +2 -1
- package/dist/backend/llvm/constant-callbacks.js +91 -56
- package/dist/backend/llvm/constant-callbacks.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.test.js +4 -4
- package/dist/backend/llvm/constant-callbacks.test.js.map +1 -1
- package/dist/backend/llvm/counted-loops.d.ts +11 -1
- package/dist/backend/llvm/counted-loops.js +80 -23
- package/dist/backend/llvm/counted-loops.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.d.ts +39 -8
- package/dist/backend/llvm/dense-array-access.js +222 -52
- package/dist/backend/llvm/dense-array-access.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.test.js +36 -0
- package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
- package/dist/backend/llvm/dense-array-loops.d.ts +35 -16
- package/dist/backend/llvm/dense-array-loops.js +237 -12
- package/dist/backend/llvm/dense-array-loops.js.map +1 -1
- package/dist/backend/llvm/dense-array-loops.test.js +140 -15
- package/dist/backend/llvm/dense-array-loops.test.js.map +1 -1
- package/dist/backend/llvm/dyn-handle-tags.test.js +6 -1
- package/dist/backend/llvm/dyn-handle-tags.test.js.map +1 -1
- package/dist/backend/llvm/dyn.d.ts +51 -1
- package/dist/backend/llvm/dyn.js +683 -69
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emit-function.js +33 -26
- package/dist/backend/llvm/emit-function.js.map +1 -1
- package/dist/backend/llvm/emit-journal.d.ts +93 -0
- package/dist/backend/llvm/emit-journal.js +170 -0
- package/dist/backend/llvm/emit-journal.js.map +1 -0
- package/dist/backend/llvm/emit-module.js +208 -34
- package/dist/backend/llvm/emit-module.js.map +1 -1
- package/dist/backend/llvm/emit-statements.d.ts +0 -27
- package/dist/backend/llvm/emit-statements.js +577 -93
- package/dist/backend/llvm/emit-statements.js.map +1 -1
- package/dist/backend/llvm/emitter-state.d.ts +7 -0
- package/dist/backend/llvm/emitter-state.js +14 -0
- package/dist/backend/llvm/emitter-state.js.map +1 -0
- package/dist/backend/llvm/emitter.d.ts +314 -49
- package/dist/backend/llvm/emitter.js +1241 -129
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +54 -5
- package/dist/backend/llvm/emitter.test.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +19 -0
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.d.ts +5 -2
- package/dist/backend/llvm/expr-bytes.js +144 -52
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-callbacks.js +47 -0
- package/dist/backend/llvm/expr-callbacks.js.map +1 -1
- package/dist/backend/llvm/expr-calls.d.ts +1 -1
- package/dist/backend/llvm/expr-calls.js +62 -36
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-containers.d.ts +14 -2
- package/dist/backend/llvm/expr-containers.js +148 -40
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-context.d.ts +14 -0
- package/dist/backend/llvm/expr-control.js +2 -3
- package/dist/backend/llvm/expr-control.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.js +71 -16
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +126 -36
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.test.js +11 -6
- package/dist/backend/llvm/expr-primitives.test.js.map +1 -1
- package/dist/backend/llvm/expr-records.d.ts +12 -0
- package/dist/backend/llvm/expr-records.js +106 -0
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.d.ts +2 -2
- package/dist/backend/llvm/expr-stream-bridges.js +225 -64
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.test.js +1 -1
- package/dist/backend/llvm/expr-stream-bridges.test.js.map +1 -1
- package/dist/backend/llvm/expr-stream-callbacks.d.ts +2 -2
- package/dist/backend/llvm/expr-stream-callbacks.js +200 -50
- package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
- package/dist/backend/llvm/int32-kind-loops.d.ts +39 -0
- package/dist/backend/llvm/int32-kind-loops.js +106 -0
- package/dist/backend/llvm/int32-kind-loops.js.map +1 -0
- package/dist/backend/llvm/integer-or-nan-indexes.test.d.ts +1 -0
- package/dist/backend/llvm/integer-or-nan-indexes.test.js +118 -0
- package/dist/backend/llvm/integer-or-nan-indexes.test.js.map +1 -0
- package/dist/backend/llvm/integer-values.d.ts +20 -1
- package/dist/backend/llvm/integer-values.js +71 -0
- package/dist/backend/llvm/integer-values.js.map +1 -1
- package/dist/backend/llvm/js-ic.d.ts +1 -1
- package/dist/backend/llvm/js-ic.js +1 -1
- package/dist/backend/llvm/js-ic.js.map +1 -1
- package/dist/backend/llvm/key-orders.d.ts +7 -0
- package/dist/backend/llvm/key-orders.js +33 -0
- package/dist/backend/llvm/key-orders.js.map +1 -0
- package/dist/backend/llvm/lib-connect.js +4 -0
- package/dist/backend/llvm/lib-connect.js.map +1 -1
- package/dist/backend/llvm/lib-datagram.js +11 -0
- package/dist/backend/llvm/lib-datagram.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +90 -2
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +65 -4
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-http2.d.ts +4 -0
- package/dist/backend/llvm/lib-http2.js +24 -17
- package/dist/backend/llvm/lib-http2.js.map +1 -1
- package/dist/backend/llvm/lib-lookup.js +16 -6
- package/dist/backend/llvm/lib-lookup.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +65 -14
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +126 -3
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-stream.js +97 -30
- package/dist/backend/llvm/lib-stream.js.map +1 -1
- package/dist/backend/llvm/lib-tls.js +23 -0
- package/dist/backend/llvm/lib-tls.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.js +181 -64
- package/dist/backend/llvm/local-array-reads.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.test.js +28 -0
- package/dist/backend/llvm/local-array-reads.test.js.map +1 -1
- package/dist/backend/llvm/loop-state.d.ts +33 -0
- package/dist/backend/llvm/loop-state.js +42 -0
- package/dist/backend/llvm/loop-state.js.map +1 -0
- package/dist/backend/llvm/map-number-lookup.d.ts +26 -8
- package/dist/backend/llvm/map-number-lookup.js +91 -31
- package/dist/backend/llvm/map-number-lookup.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.test.js +55 -0
- package/dist/backend/llvm/map-number-lookup.test.js.map +1 -1
- package/dist/backend/llvm/map-read-lifetimes.js +4 -2
- package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
- package/dist/backend/llvm/nullable-unions.d.ts +2 -1
- package/dist/backend/llvm/nullable-unions.js +15 -3
- package/dist/backend/llvm/nullable-unions.js.map +1 -1
- package/dist/backend/llvm/publish.d.ts +18 -1
- package/dist/backend/llvm/publish.js +76 -25
- package/dist/backend/llvm/publish.js.map +1 -1
- package/dist/backend/llvm/publish.test.js +3 -0
- package/dist/backend/llvm/publish.test.js.map +1 -1
- package/dist/backend/llvm/receivers.js +7 -2
- package/dist/backend/llvm/receivers.js.map +1 -1
- package/dist/backend/llvm/record-results.d.ts +1 -9
- package/dist/backend/llvm/record-results.js +2 -11
- package/dist/backend/llvm/record-results.js.map +1 -1
- package/dist/backend/llvm/reference-writes.d.ts +7 -2
- package/dist/backend/llvm/reference-writes.js +91 -72
- package/dist/backend/llvm/reference-writes.js.map +1 -1
- package/dist/backend/llvm/regex-matchers.js +161 -14
- package/dist/backend/llvm/regex-matchers.js.map +1 -1
- package/dist/backend/llvm/regex-matchers.test.js +18 -0
- package/dist/backend/llvm/regex-matchers.test.js.map +1 -1
- package/dist/backend/llvm/running-extrema.d.ts +11 -0
- package/dist/backend/llvm/running-extrema.js +115 -0
- package/dist/backend/llvm/running-extrema.js.map +1 -0
- package/dist/backend/llvm/running-extrema.test.d.ts +1 -0
- package/dist/backend/llvm/running-extrema.test.js +89 -0
- package/dist/backend/llvm/running-extrema.test.js.map +1 -0
- package/dist/backend/llvm/shapes.d.ts +79 -21
- package/dist/backend/llvm/shapes.js +233 -42
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/shapes.test.js +53 -7
- package/dist/backend/llvm/shapes.test.js.map +1 -1
- package/dist/backend/llvm/speculative-integers.d.ts +6 -0
- package/dist/backend/llvm/speculative-integers.js +2 -2
- package/dist/backend/llvm/speculative-integers.js.map +1 -1
- package/dist/backend/llvm/stack-objects.d.ts +3 -2
- package/dist/backend/llvm/stack-objects.js +5 -2
- package/dist/backend/llvm/stack-objects.js.map +1 -1
- package/dist/backend/llvm/string-lifetimes.test.js +2 -1
- package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/string-reads.d.ts +15 -0
- package/dist/backend/llvm/string-reads.js +128 -0
- package/dist/backend/llvm/string-reads.js.map +1 -1
- package/dist/backend/llvm/walk-borrows.d.ts +3 -0
- package/dist/backend/llvm/walk-borrows.js +46 -41
- package/dist/backend/llvm/walk-borrows.js.map +1 -1
- package/dist/backend/llvm/walkers.d.ts +3 -0
- package/dist/backend/llvm/walkers.js +88 -65
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/llvm/wasm-modules.d.ts +6 -5
- package/dist/backend/llvm/wasm-modules.js +32 -9
- package/dist/backend/llvm/wasm-modules.js.map +1 -1
- package/dist/backend/llvm/wrapping-sums.d.ts +16 -1
- package/dist/backend/llvm/wrapping-sums.js +126 -0
- package/dist/backend/llvm/wrapping-sums.js.map +1 -1
- package/dist/backend/mangle.d.ts +3 -0
- package/dist/backend/mangle.js +5 -0
- package/dist/backend/mangle.js.map +1 -1
- package/dist/backend/may-throw.d.ts +8 -10
- package/dist/backend/may-throw.js +14 -10
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/native/contracts.d.ts +27 -4
- package/dist/backend/native/executable.js +31 -8
- package/dist/backend/native/executable.js.map +1 -1
- package/dist/backend/native/library.js +1 -0
- package/dist/backend/native/library.js.map +1 -1
- package/dist/backend/native/runtime-inputs.d.ts +1 -1
- package/dist/backend/native/runtime-inputs.js +1 -0
- package/dist/backend/native/runtime-inputs.js.map +1 -1
- package/dist/backend/native-codegen.d.ts +11 -6
- package/dist/backend/native-codegen.js +36 -9
- package/dist/backend/native-codegen.js.map +1 -1
- package/dist/backend/native-codegen.test.js +0 -23
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +18 -4
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/optimization.d.ts +2 -2
- package/dist/backend/publication.d.ts +12 -1
- package/dist/backend/publication.js +37 -14
- package/dist/backend/publication.js.map +1 -1
- package/dist/backend/publication.test.js +30 -0
- package/dist/backend/publication.test.js.map +1 -1
- package/dist/backend/result-slots.d.ts +16 -0
- package/dist/backend/result-slots.js +23 -0
- package/dist/backend/result-slots.js.map +1 -0
- package/dist/backend/runtime-abi.d.ts +2 -2
- package/dist/backend/runtime-abi.js +2 -2
- package/dist/backend/runtime-pack-core.d.ts +2 -1
- package/dist/backend/runtime-pack-core.js +2 -1
- package/dist/backend/runtime-pack-core.js.map +1 -1
- package/dist/backend/runtime-pack-targets.test.js +5 -1
- package/dist/backend/runtime-pack-targets.test.js.map +1 -1
- package/dist/backend/runtime-pack.d.ts +0 -21
- package/dist/backend/runtime-pack.js +0 -29
- package/dist/backend/runtime-pack.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +10 -69
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/stack-observations.d.ts +2 -1
- package/dist/backend/stack-observations.js +67 -42
- package/dist/backend/stack-observations.js.map +1 -1
- package/dist/backend/target-diagnostics.js +33 -1
- package/dist/backend/target-diagnostics.js.map +1 -1
- package/dist/backend/warm-cache.js +4 -0
- package/dist/backend/warm-cache.js.map +1 -1
- package/dist/cli/command.js +26 -6
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/usage.d.ts +5 -1
- package/dist/cli/usage.js +10 -5
- package/dist/cli/usage.js.map +1 -1
- package/dist/compat/fetch-profile.js +1 -1
- package/dist/compat/fetch-profile.js.map +1 -1
- package/dist/contracts/check.js +5 -4
- package/dist/contracts/check.js.map +1 -1
- package/dist/contracts/int32-elements.js +10 -2
- package/dist/contracts/int32-elements.js.map +1 -1
- package/dist/coverage/report.d.ts +7 -2
- package/dist/coverage/report.js +30 -3
- package/dist/coverage/report.js.map +1 -1
- package/dist/coverage/verdict-cache.d.ts +1 -0
- package/dist/coverage/verdict-cache.js +4 -0
- package/dist/coverage/verdict-cache.js.map +1 -1
- package/dist/coverage/verdict-semantic.js +4 -0
- package/dist/coverage/verdict-semantic.js.map +1 -1
- package/dist/diagnostics/diagnostic.d.ts +4 -0
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/diagnostics/dynamic-tier.d.ts +40 -0
- package/dist/diagnostics/dynamic-tier.js +57 -0
- package/dist/diagnostics/dynamic-tier.js.map +1 -0
- package/dist/diagnostics/envelope.d.ts +5 -1
- package/dist/diagnostics/envelope.js +6 -2
- package/dist/diagnostics/envelope.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +25 -1
- package/dist/executable/executable-cache.js +60 -7
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +46 -3
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/executable/prepare.js +3 -1
- package/dist/executable/prepare.js.map +1 -1
- package/dist/frontend/analysis.js +1 -0
- package/dist/frontend/analysis.js.map +1 -1
- package/dist/frontend/decl-projection.d.ts +41 -0
- package/dist/frontend/decl-projection.js +854 -0
- package/dist/frontend/decl-projection.js.map +1 -0
- package/dist/frontend/decl-projection.test.d.ts +1 -0
- package/dist/frontend/decl-projection.test.js +30 -0
- package/dist/frontend/decl-projection.test.js.map +1 -0
- package/dist/frontend/dispose-hook.d.ts +2 -0
- package/dist/frontend/dispose-hook.js +14 -0
- package/dist/frontend/dispose-hook.js.map +1 -0
- package/dist/frontend/dts-paths.d.ts +15 -0
- package/dist/frontend/dts-paths.js +25 -0
- package/dist/frontend/dts-paths.js.map +1 -1
- package/dist/frontend/input-tracker.d.ts +6 -0
- package/dist/frontend/input-tracker.js +51 -28
- package/dist/frontend/input-tracker.js.map +1 -1
- package/dist/frontend/input-tracker.test.js +19 -0
- package/dist/frontend/input-tracker.test.js.map +1 -1
- package/dist/frontend/jsx-entities.d.ts +4 -0
- package/dist/frontend/jsx-entities.js +259 -0
- package/dist/frontend/jsx-entities.js.map +1 -0
- package/dist/frontend/jsx-source.d.ts +71 -0
- package/dist/frontend/jsx-source.js +781 -0
- package/dist/frontend/jsx-source.js.map +1 -0
- package/dist/frontend/jsx-source.test.d.ts +1 -0
- package/dist/frontend/jsx-source.test.js +200 -0
- package/dist/frontend/jsx-source.test.js.map +1 -0
- package/dist/frontend/literal-values.test.js +8 -9
- package/dist/frontend/literal-values.test.js.map +1 -1
- package/dist/frontend/lowering/array-indexed-mutation.js +2 -1
- package/dist/frontend/lowering/array-indexed-mutation.js.map +1 -1
- package/dist/frontend/lowering/array-values.js +103 -4
- package/dist/frontend/lowering/array-values.js.map +1 -1
- package/dist/frontend/lowering/binding-analysis.d.ts +1 -1
- package/dist/frontend/lowering/binding-analysis.js +2 -2
- package/dist/frontend/lowering/binding-analysis.js.map +1 -1
- package/dist/frontend/lowering/builtins/arguments.d.ts +3 -0
- package/dist/frontend/lowering/builtins/arguments.js +30 -15
- package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
- package/dist/frontend/lowering/builtins/atomics.js +10 -6
- package/dist/frontend/lowering/builtins/atomics.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-async.js +2 -1
- package/dist/frontend/lowering/builtins/child-process-async.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-methods.js +46 -15
- package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-sync.js +2 -1
- package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process.js +13 -2
- package/dist/frontend/lowering/builtins/child-process.js.map +1 -1
- package/dist/frontend/lowering/builtins/crypto.d.ts +4 -2
- package/dist/frontend/lowering/builtins/crypto.js +136 -5
- package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
- package/dist/frontend/lowering/builtins/date-classes.d.ts +46 -0
- package/dist/frontend/lowering/builtins/date-classes.js +477 -0
- package/dist/frontend/lowering/builtins/date-classes.js.map +1 -0
- package/dist/frontend/lowering/builtins/dates.d.ts +11 -1
- package/dist/frontend/lowering/builtins/dates.js +55 -26
- package/dist/frontend/lowering/builtins/dates.js.map +1 -1
- package/dist/frontend/lowering/builtins/dh.d.ts +15 -0
- package/dist/frontend/lowering/builtins/dh.js +151 -0
- package/dist/frontend/lowering/builtins/dh.js.map +1 -0
- package/dist/frontend/lowering/builtins/disposable-stack.js +2 -1
- package/dist/frontend/lowering/builtins/disposable-stack.js.map +1 -1
- package/dist/frontend/lowering/builtins/ecdh.d.ts +12 -1
- package/dist/frontend/lowering/builtins/ecdh.js +7 -7
- package/dist/frontend/lowering/builtins/ecdh.js.map +1 -1
- package/dist/frontend/lowering/builtins/errors.d.ts +15 -0
- package/dist/frontend/lowering/builtins/errors.js +110 -0
- package/dist/frontend/lowering/builtins/errors.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.js +23 -17
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem.js +6 -4
- package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-paths.d.ts +15 -0
- package/dist/frontend/lowering/builtins/fs-paths.js +209 -0
- package/dist/frontend/lowering/builtins/fs-paths.js.map +1 -0
- package/dist/frontend/lowering/builtins/global-namespace-keys.d.ts +3 -0
- package/dist/frontend/lowering/builtins/global-namespace-keys.js +122 -0
- package/dist/frontend/lowering/builtins/global-namespace-keys.js.map +1 -0
- package/dist/frontend/lowering/builtins/hash-stream.d.ts +16 -4
- package/dist/frontend/lowering/builtins/hash-stream.js +86 -23
- package/dist/frontend/lowering/builtins/hash-stream.js.map +1 -1
- package/dist/frontend/lowering/builtins/json.js +2 -1
- package/dist/frontend/lowering/builtins/json.js.map +1 -1
- package/dist/frontend/lowering/builtins/key-object.d.ts +2 -1
- package/dist/frontend/lowering/builtins/key-object.js +20 -7
- package/dist/frontend/lowering/builtins/key-object.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-calls.js +11 -4
- package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/numbers.js +18 -6
- package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
- package/dist/frontend/lowering/builtins/operating-system.js +4 -3
- package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
- package/dist/frontend/lowering/builtins/performance.js +3 -2
- package/dist/frontend/lowering/builtins/performance.js.map +1 -1
- package/dist/frontend/lowering/builtins/process.js +3 -2
- package/dist/frontend/lowering/builtins/process.js.map +1 -1
- package/dist/frontend/lowering/builtins/promises.d.ts +6 -0
- package/dist/frontend/lowering/builtins/promises.js +91 -4
- package/dist/frontend/lowering/builtins/promises.js.map +1 -1
- package/dist/frontend/lowering/builtins/promisify-callback.js +2 -1
- package/dist/frontend/lowering/builtins/promisify-callback.js.map +1 -1
- package/dist/frontend/lowering/builtins/readline.d.ts +7 -2
- package/dist/frontend/lowering/builtins/readline.js +58 -9
- package/dist/frontend/lowering/builtins/readline.js.map +1 -1
- package/dist/frontend/lowering/builtins/strings.js +13 -5
- package/dist/frontend/lowering/builtins/strings.js.map +1 -1
- package/dist/frontend/lowering/builtins/text-codecs.js +2 -1
- package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
- package/dist/frontend/lowering/builtins/timers.js +1 -1
- package/dist/frontend/lowering/builtins/timers.js.map +1 -1
- package/dist/frontend/lowering/builtins/url.js +28 -4
- package/dist/frontend/lowering/builtins/url.js.map +1 -1
- package/dist/frontend/lowering/builtins/v8.js +2 -1
- package/dist/frontend/lowering/builtins/v8.js.map +1 -1
- package/dist/frontend/lowering/builtins/webassembly.js +6 -3
- package/dist/frontend/lowering/builtins/webassembly.js.map +1 -1
- package/dist/frontend/lowering/builtins/webcrypto.js +39 -20
- package/dist/frontend/lowering/builtins/webcrypto.js.map +1 -1
- package/dist/frontend/lowering/call-arguments.js +2 -1
- package/dist/frontend/lowering/call-arguments.js.map +1 -1
- package/dist/frontend/lowering/call-signatures.js +13 -6
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/caught-value-dispatch.d.ts +18 -1
- package/dist/frontend/lowering/caught-value-dispatch.js +201 -32
- package/dist/frontend/lowering/caught-value-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-assertions.js +3 -2
- package/dist/frontend/lowering/class-assertions.js.map +1 -1
- package/dist/frontend/lowering/class-callbacks.d.ts +5 -2
- package/dist/frontend/lowering/class-callbacks.js +82 -12
- package/dist/frontend/lowering/class-callbacks.js.map +1 -1
- package/dist/frontend/lowering/class-construction.d.ts +6 -2
- package/dist/frontend/lowering/class-construction.js +25 -16
- package/dist/frontend/lowering/class-construction.js.map +1 -1
- package/dist/frontend/lowering/class-descriptors.js +1 -1
- package/dist/frontend/lowering/class-descriptors.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +73 -2
- package/dist/frontend/lowering/class-dynamic-dispatch.js +1334 -259
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js +124 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
- package/dist/frontend/lowering/class-iterables.d.ts +2 -1
- package/dist/frontend/lowering/class-iterables.js +9 -1
- package/dist/frontend/lowering/class-iterables.js.map +1 -1
- package/dist/frontend/lowering/class-method-mutations.js +35 -9
- package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
- package/dist/frontend/lowering/class-method-values.js +1 -1
- package/dist/frontend/lowering/class-method-values.js.map +1 -1
- package/dist/frontend/lowering/class-protocols.d.ts +7 -0
- package/dist/frontend/lowering/class-protocols.js +64 -4
- package/dist/frontend/lowering/class-protocols.js.map +1 -1
- package/dist/frontend/lowering/class-prototypes.d.ts +5 -0
- package/dist/frontend/lowering/class-prototypes.js +67 -5
- package/dist/frontend/lowering/class-prototypes.js.map +1 -1
- package/dist/frontend/lowering/class-runtime-statics.d.ts +9 -3
- package/dist/frontend/lowering/class-runtime-statics.js +29 -4
- package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
- package/dist/frontend/lowering/class-to-primitive.js +25 -5
- package/dist/frontend/lowering/class-to-primitive.js.map +1 -1
- package/dist/frontend/lowering/class-unions.js +2 -1
- package/dist/frontend/lowering/class-unions.js.map +1 -1
- package/dist/frontend/lowering/coercions/function-adapters.js +6 -5
- package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural-plans.js +48 -1
- package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural.js +99 -8
- package/dist/frontend/lowering/coercions/structural.js.map +1 -1
- package/dist/frontend/lowering/coercions/unions.js +8 -7
- package/dist/frontend/lowering/coercions/unions.js.map +1 -1
- package/dist/frontend/lowering/collection-ingestion.js +2 -1
- package/dist/frontend/lowering/collection-ingestion.js.map +1 -1
- package/dist/frontend/lowering/containers/array-callback-call.js +2 -2
- package/dist/frontend/lowering/containers/array-callback-call.js.map +1 -1
- package/dist/frontend/lowering/containers/array-callbacks.d.ts +7 -0
- package/dist/frontend/lowering/containers/array-callbacks.js +352 -31
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-concat.js +12 -1
- package/dist/frontend/lowering/containers/array-concat.js.map +1 -1
- package/dist/frontend/lowering/containers/array-construction.js +25 -4
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.js +21 -5
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/array-pipelines.js +21 -9
- package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.d.ts +1 -1
- package/dist/frontend/lowering/containers/bytes.js +131 -29
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/callback-arguments.js +55 -2
- package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-grouping.js +3 -2
- package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-methods.js +15 -9
- package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/filter-predicates.d.ts +6 -0
- package/dist/frontend/lowering/containers/filter-predicates.js +205 -0
- package/dist/frontend/lowering/containers/filter-predicates.js.map +1 -0
- package/dist/frontend/lowering/containers/indexed-objects.d.ts +0 -12
- package/dist/frontend/lowering/containers/indexed-objects.js +54 -14
- package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
- package/dist/frontend/lowering/containers/iterator-helpers.d.ts +32 -1
- package/dist/frontend/lowering/containers/iterator-helpers.js +6 -5
- package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -1
- package/dist/frontend/lowering/containers/string-and-regexp.js +87 -14
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/containers/string-replacement.js +45 -20
- package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
- package/dist/frontend/lowering/cycle-initialization.js +25 -4
- package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
- package/dist/frontend/lowering/deferred-module-initializers.d.ts +18 -1
- package/dist/frontend/lowering/deferred-module-initializers.js +226 -115
- package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
- package/dist/frontend/lowering/deferred-module-initializers.test.js +28 -0
- package/dist/frontend/lowering/deferred-module-initializers.test.js.map +1 -1
- package/dist/frontend/lowering/dispatch-sites.d.ts +59 -0
- package/dist/frontend/lowering/dispatch-sites.js +218 -0
- package/dist/frontend/lowering/dispatch-sites.js.map +1 -0
- package/dist/frontend/lowering/dispatch-sites.test.d.ts +1 -0
- package/dist/frontend/lowering/dispatch-sites.test.js +59 -0
- package/dist/frontend/lowering/dispatch-sites.test.js.map +1 -0
- package/dist/frontend/lowering/divergences.js +9 -1
- package/dist/frontend/lowering/divergences.js.map +1 -1
- package/dist/frontend/lowering/dyn-streams.d.ts +3 -0
- package/dist/frontend/lowering/dyn-streams.js +1 -1
- package/dist/frontend/lowering/dyn-streams.js.map +1 -1
- package/dist/frontend/lowering/dynamic-tier.d.ts +25 -0
- package/dist/frontend/lowering/dynamic-tier.js +327 -0
- package/dist/frontend/lowering/dynamic-tier.js.map +1 -0
- package/dist/frontend/lowering/error-methods.js +51 -2
- package/dist/frontend/lowering/error-methods.js.map +1 -1
- package/dist/frontend/lowering/expressions/array-literals.js +62 -0
- package/dist/frontend/lowering/expressions/array-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/binary.js +81 -5
- package/dist/frontend/lowering/expressions/binary.js.map +1 -1
- package/dist/frontend/lowering/expressions/element-access.js +107 -14
- package/dist/frontend/lowering/expressions/element-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/identifiers.js +79 -11
- package/dist/frontend/lowering/expressions/identifiers.js.map +1 -1
- package/dist/frontend/lowering/expressions/narrowing.js +130 -6
- package/dist/frontend/lowering/expressions/narrowing.js.map +1 -1
- package/dist/frontend/lowering/expressions/nullish-assignment.js +3 -1
- package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
- package/dist/frontend/lowering/expressions/object-literals.d.ts +10 -3
- package/dist/frontend/lowering/expressions/object-literals.js +164 -56
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/optional-chains.js +17 -5
- package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
- package/dist/frontend/lowering/expressions/property-access.d.ts +0 -4
- package/dist/frontend/lowering/expressions/property-access.js +211 -17
- package/dist/frontend/lowering/expressions/property-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/relational.js +267 -30
- package/dist/frontend/lowering/expressions/relational.js.map +1 -1
- package/dist/frontend/lowering/expressions/union-fields.js +4 -0
- package/dist/frontend/lowering/expressions/union-fields.js.map +1 -1
- package/dist/frontend/lowering/expressions/updates.js +85 -12
- package/dist/frontend/lowering/expressions/updates.js.map +1 -1
- package/dist/frontend/lowering/frozen-records.d.ts +28 -0
- package/dist/frontend/lowering/frozen-records.js +322 -0
- package/dist/frontend/lowering/frozen-records.js.map +1 -0
- package/dist/frontend/lowering/function-returns.js +49 -0
- package/dist/frontend/lowering/function-returns.js.map +1 -1
- package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +6 -1
- package/dist/frontend/lowering/generator-dynamic-dispatch.js +20 -30
- package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/generic-functions.d.ts +42 -1
- package/dist/frontend/lowering/generic-functions.js +455 -20
- package/dist/frontend/lowering/generic-functions.js.map +1 -1
- package/dist/frontend/lowering/intern-tables.js +2 -1
- package/dist/frontend/lowering/intern-tables.js.map +1 -1
- package/dist/frontend/lowering/iterable-values.d.ts +49 -0
- package/dist/frontend/lowering/iterable-values.js +297 -0
- package/dist/frontend/lowering/iterable-values.js.map +1 -0
- package/dist/frontend/lowering/iterator-adapters.js +195 -9
- package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
- package/dist/frontend/lowering/js-class-fields.d.ts +8 -0
- package/dist/frontend/lowering/js-class-fields.js +45 -10
- package/dist/frontend/lowering/js-class-fields.js.map +1 -1
- package/dist/frontend/lowering/js-dynamic-objects.js +3 -2
- package/dist/frontend/lowering/js-dynamic-objects.js.map +1 -1
- package/dist/frontend/lowering/json-require.js +2 -1
- package/dist/frontend/lowering/json-require.js.map +1 -1
- package/dist/frontend/lowering/key-order-witness.d.ts +24 -4
- package/dist/frontend/lowering/key-order-witness.js +790 -25
- package/dist/frontend/lowering/key-order-witness.js.map +1 -1
- package/dist/frontend/lowering/key-order-witness.test.js +466 -10
- package/dist/frontend/lowering/key-order-witness.test.js.map +1 -1
- package/dist/frontend/lowering/lifetime-regions.js +2 -1
- package/dist/frontend/lowering/lifetime-regions.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.js +6 -5
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-async-iteration.js +7 -2
- package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.d.ts +11 -0
- package/dist/frontend/lowering/lower-calls.js +776 -126
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +29 -2
- package/dist/frontend/lowering/lower-classes.js +581 -46
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-dgram.js +6 -3
- package/dist/frontend/lowering/lower-dgram.js.map +1 -1
- package/dist/frontend/lowering/lower-event-emitter.d.ts +14 -0
- package/dist/frontend/lowering/lower-event-emitter.js +267 -20
- package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +19 -2
- package/dist/frontend/lowering/lower-exprs.js +126 -13
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-functions.d.ts +11 -0
- package/dist/frontend/lowering/lower-functions.js +387 -72
- package/dist/frontend/lowering/lower-functions.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.js +41 -31
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-global-value.js +6 -3
- package/dist/frontend/lowering/lower-global-value.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.js +28 -12
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-mixins.js +2 -1
- package/dist/frontend/lowering/lower-mixins.js.map +1 -1
- package/dist/frontend/lowering/lower-mock.js +2 -1
- package/dist/frontend/lowering/lower-mock.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.js +47 -5
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.test.js +2 -2
- package/dist/frontend/lowering/lower-modules.test.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.d.ts +2 -1
- package/dist/frontend/lowering/lower-namespaces.js +9 -4
- package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
- package/dist/frontend/lowering/lower-server.d.ts +10 -0
- package/dist/frontend/lowering/lower-server.js +239 -61
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stdlib.d.ts +5 -0
- package/dist/frontend/lowering/lower-stdlib.js +42 -10
- package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +23 -0
- package/dist/frontend/lowering/lower-stmts.js +622 -68
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.test.js +1 -1
- package/dist/frontend/lowering/lower-stmts.test.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.d.ts +20 -2
- package/dist/frontend/lowering/lower-stream.js +2055 -318
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lower-timers.js +4 -3
- package/dist/frontend/lowering/lower-timers.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +197 -29
- package/dist/frontend/lowering/lowerer.js +862 -84
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/lowerer.test.js +21 -9
- package/dist/frontend/lowering/lowerer.test.js.map +1 -1
- package/dist/frontend/lowering/module-namespace-elements.d.ts +11 -1
- package/dist/frontend/lowering/module-namespace-elements.js +82 -5
- package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
- package/dist/frontend/lowering/narrowing-stability.js +5 -0
- package/dist/frontend/lowering/narrowing-stability.js.map +1 -1
- package/dist/frontend/lowering/native-ffi.js +1 -1
- package/dist/frontend/lowering/native-ffi.js.map +1 -1
- package/dist/frontend/lowering/new-target.d.ts +12 -0
- package/dist/frontend/lowering/new-target.js +280 -0
- package/dist/frontend/lowering/new-target.js.map +1 -0
- package/dist/frontend/lowering/object-enumeration-receiver.js +2 -1
- package/dist/frontend/lowering/object-enumeration-receiver.js.map +1 -1
- package/dist/frontend/lowering/pairs-snapshot.js +2 -1
- package/dist/frontend/lowering/pairs-snapshot.js.map +1 -1
- package/dist/frontend/lowering/private-brands.d.ts +9 -0
- package/dist/frontend/lowering/private-brands.js +66 -15
- package/dist/frontend/lowering/private-brands.js.map +1 -1
- package/dist/frontend/lowering/promise-executor-adapter.js +2 -1
- package/dist/frontend/lowering/promise-executor-adapter.js.map +1 -1
- package/dist/frontend/lowering/require-initialization.js +2 -1
- package/dist/frontend/lowering/require-initialization.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-elements.d.ts +5 -0
- package/dist/frontend/lowering/runtime-optional-elements.js +17 -1
- package/dist/frontend/lowering/runtime-optional-elements.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-records.d.ts +2 -0
- package/dist/frontend/lowering/runtime-optional-records.js +18 -5
- package/dist/frontend/lowering/runtime-optional-records.js.map +1 -1
- package/dist/frontend/lowering/site-dependencies.d.ts +35 -0
- package/dist/frontend/lowering/site-dependencies.js +84 -0
- package/dist/frontend/lowering/site-dependencies.js.map +1 -0
- package/dist/frontend/lowering/site-dependencies.test.d.ts +1 -0
- package/dist/frontend/lowering/site-dependencies.test.js +53 -0
- package/dist/frontend/lowering/site-dependencies.test.js.map +1 -0
- package/dist/frontend/lowering/stable-names.d.ts +11 -0
- package/dist/frontend/lowering/stable-names.js +35 -0
- package/dist/frontend/lowering/stable-names.js.map +1 -0
- package/dist/frontend/lowering/static-typeof.d.ts +2 -2
- package/dist/frontend/lowering/static-typeof.js +42 -3
- package/dist/frontend/lowering/static-typeof.js.map +1 -1
- package/dist/frontend/lowering/strict-equality.js +2 -1
- package/dist/frontend/lowering/strict-equality.js.map +1 -1
- package/dist/frontend/lowering/structural-positions.d.ts +32 -0
- package/dist/frontend/lowering/structural-positions.js +108 -0
- package/dist/frontend/lowering/structural-positions.js.map +1 -0
- package/dist/frontend/lowering/surfaces.d.ts +3 -0
- package/dist/frontend/lowering/surfaces.js +60 -32
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/undefined-index.d.ts +27 -0
- package/dist/frontend/lowering/undefined-index.js +82 -0
- package/dist/frontend/lowering/undefined-index.js.map +1 -0
- package/dist/frontend/lowering/var-hoisting.js +66 -16
- package/dist/frontend/lowering/var-hoisting.js.map +1 -1
- package/dist/frontend/lowering/width-lift.d.ts +18 -0
- package/dist/frontend/npm-static-bundled-chunks.js +9 -11
- package/dist/frontend/npm-static-bundled-chunks.js.map +1 -1
- package/dist/frontend/npm-static-bundled-chunks.test.js +6 -5
- package/dist/frontend/npm-static-bundled-chunks.test.js.map +1 -1
- package/dist/frontend/npm-static-rewrite-syntax.js +9 -1
- package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
- package/dist/frontend/npm-static-tsc-helpers.d.ts +5 -0
- package/dist/frontend/npm-static-tsc-helpers.js +106 -0
- package/dist/frontend/npm-static-tsc-helpers.js.map +1 -0
- package/dist/frontend/npm-static-tsc-helpers.test.d.ts +1 -0
- package/dist/frontend/npm-static-tsc-helpers.test.js +58 -0
- package/dist/frontend/npm-static-tsc-helpers.test.js.map +1 -0
- package/dist/frontend/npm-static-type-exports-host.d.ts +8 -0
- package/dist/frontend/npm-static-type-exports-host.js +214 -0
- package/dist/frontend/npm-static-type-exports-host.js.map +1 -0
- package/dist/frontend/npm-static-type-exports-host.test.d.ts +1 -0
- package/dist/frontend/npm-static-type-exports-host.test.js +53 -0
- package/dist/frontend/npm-static-type-exports-host.test.js.map +1 -0
- package/dist/frontend/npm-static-type-exports.d.ts +52 -0
- package/dist/frontend/npm-static-type-exports.js +261 -0
- package/dist/frontend/npm-static-type-exports.js.map +1 -0
- package/dist/frontend/npm-static-type-exports.test.d.ts +1 -0
- package/dist/frontend/npm-static-type-exports.test.js +103 -0
- package/dist/frontend/npm-static-type-exports.test.js.map +1 -0
- package/dist/frontend/npm-static-umd.d.ts +6 -0
- package/dist/frontend/npm-static-umd.js +203 -0
- package/dist/frontend/npm-static-umd.js.map +1 -0
- package/dist/frontend/npm-static-umd.test.d.ts +1 -0
- package/dist/frontend/npm-static-umd.test.js +105 -0
- package/dist/frontend/npm-static-umd.test.js.map +1 -0
- package/dist/frontend/npm-static.d.ts +8 -0
- package/dist/frontend/npm-static.js +51 -22
- package/dist/frontend/npm-static.js.map +1 -1
- package/dist/frontend/package-shims.d.ts +3 -0
- package/dist/frontend/package-shims.js +71 -8
- package/dist/frontend/package-shims.js.map +1 -1
- package/dist/frontend/pipeline.js +18 -10
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/process-fork.d.ts +25 -0
- package/dist/frontend/process-fork.js +2 -0
- package/dist/frontend/process-fork.js.map +1 -0
- package/dist/frontend/program.d.ts +21 -1
- package/dist/frontend/program.js +586 -74
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/program.test.js +44 -4
- package/dist/frontend/program.test.js.map +1 -1
- package/dist/frontend/services.d.ts +6 -0
- package/dist/frontend/services.js +18 -0
- package/dist/frontend/services.js.map +1 -1
- package/dist/frontend/token-equivalence.d.ts +3 -0
- package/dist/frontend/token-equivalence.js +409 -0
- package/dist/frontend/token-equivalence.js.map +1 -0
- package/dist/frontend/token-equivalence.test.d.ts +1 -0
- package/dist/frontend/token-equivalence.test.js +67 -0
- package/dist/frontend/token-equivalence.test.js.map +1 -0
- package/dist/frontend/ts7/ast-node.d.ts +43 -7
- package/dist/frontend/ts7/ast-node.js +1176 -129
- package/dist/frontend/ts7/ast-node.js.map +1 -1
- package/dist/frontend/ts7/ast-node.test.js +84 -0
- package/dist/frontend/ts7/ast-node.test.js.map +1 -1
- package/dist/frontend/ts7/ast-wire.d.ts +29 -3
- package/dist/frontend/ts7/ast-wire.js +144 -31
- package/dist/frontend/ts7/ast-wire.js.map +1 -1
- package/dist/frontend/ts7/ast-wire.test.js +23 -0
- package/dist/frontend/ts7/ast-wire.test.js.map +1 -1
- package/dist/frontend/ts7/ast.d.ts +23 -2
- package/dist/frontend/ts7/ast.js +143 -2
- package/dist/frontend/ts7/ast.js.map +1 -1
- package/dist/frontend/ts7/checker-backend.d.ts +3 -4
- package/dist/frontend/ts7/checker-backend.js +2 -2
- package/dist/frontend/ts7/checker-backend.js.map +1 -1
- package/dist/frontend/ts7/checker-backend.test.js +5 -9
- package/dist/frontend/ts7/checker-backend.test.js.map +1 -1
- package/dist/frontend/ts7/checker.d.ts +17 -1
- package/dist/frontend/ts7/checker.js +82 -1
- package/dist/frontend/ts7/checker.js.map +1 -1
- package/dist/frontend/ts7/checker.test.js +9 -6
- package/dist/frontend/ts7/checker.test.js.map +1 -1
- package/dist/frontend/ts7/enums.d.ts +3 -3
- package/dist/frontend/ts7/enums.generated.d.ts +10 -0
- package/dist/frontend/ts7/enums.generated.js +21 -0
- package/dist/frontend/ts7/enums.generated.js.map +1 -1
- package/dist/frontend/ts7/enums.js +19 -0
- package/dist/frontend/ts7/enums.js.map +1 -1
- package/dist/frontend/ts7/lib-diagnostics.d.ts +24 -0
- package/dist/frontend/ts7/lib-diagnostics.js +307 -0
- package/dist/frontend/ts7/lib-diagnostics.js.map +1 -0
- package/dist/frontend/ts7/lib-diagnostics.test.d.ts +1 -0
- package/dist/frontend/ts7/lib-diagnostics.test.js +199 -0
- package/dist/frontend/ts7/lib-diagnostics.test.js.map +1 -0
- package/dist/frontend/ts7/program-host.d.ts +7 -0
- package/dist/frontend/ts7/program-host.js +30 -4
- package/dist/frontend/ts7/program-host.js.map +1 -1
- package/dist/frontend/ts7/semantic-checker.d.ts +10 -0
- package/dist/frontend/ts7/semantic-checker.js +25 -20
- package/dist/frontend/ts7/semantic-checker.js.map +1 -1
- package/dist/frontend/ts7/semantic-json.d.ts +13 -0
- package/dist/frontend/ts7/semantic-json.js +146 -0
- package/dist/frontend/ts7/semantic-json.js.map +1 -1
- package/dist/frontend/ts7/semantic-json.test.js +57 -1
- package/dist/frontend/ts7/semantic-json.test.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.d.ts +15 -0
- package/dist/frontend/ts7/semantic-model.js +67 -19
- package/dist/frontend/ts7/semantic-model.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.test.js +3 -2
- package/dist/frontend/ts7/semantic-model.test.js.map +1 -1
- package/dist/frontend/ts7/session.d.ts +14 -1
- package/dist/frontend/ts7/session.js +23 -1
- package/dist/frontend/ts7/session.js.map +1 -1
- package/dist/frontend/tsc-codes.d.ts +1 -1
- package/dist/frontend/tsc-codes.js +7 -0
- package/dist/frontend/tsc-codes.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +51 -7
- package/dist/frontend/type-mapper.js +456 -43
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/frontend/type-mapper.test.js +1 -1
- package/dist/frontend/type-mapper.test.js.map +1 -1
- package/dist/frontend-process-args.d.ts +4 -0
- package/dist/frontend-process-args.js +52 -0
- package/dist/frontend-process-args.js.map +1 -0
- package/dist/frontend-process-args.test.d.ts +1 -0
- package/dist/frontend-process-args.test.js +47 -0
- package/dist/frontend-process-args.test.js.map +1 -0
- package/dist/frontend-process.d.ts +1 -0
- package/dist/frontend-process.js +23 -0
- package/dist/frontend-process.js.map +1 -0
- package/dist/heap-collection.d.ts +16 -0
- package/dist/heap-collection.js +42 -0
- package/dist/heap-collection.js.map +1 -0
- package/dist/heap-collection.test.d.ts +1 -0
- package/dist/heap-collection.test.js +59 -0
- package/dist/heap-collection.test.js.map +1 -0
- package/dist/heap-pressure.d.ts +2 -0
- package/dist/heap-pressure.js +12 -0
- package/dist/heap-pressure.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +435 -89
- package/dist/index.js.map +1 -1
- package/dist/ir/analysis.js +5 -3
- package/dist/ir/analysis.js.map +1 -1
- package/dist/ir/array-length-stability.d.ts +4 -0
- package/dist/ir/array-length-stability.js +26 -6
- package/dist/ir/array-length-stability.js.map +1 -1
- package/dist/ir/array-length-stability.test.js +49 -0
- package/dist/ir/array-length-stability.test.js.map +1 -1
- package/dist/ir/builtin-effects.d.ts +7 -0
- package/dist/ir/builtin-effects.js +80 -0
- package/dist/ir/builtin-effects.js.map +1 -1
- package/dist/ir/builtin-signatures.d.ts +7 -1
- package/dist/ir/builtin-signatures.js +303 -21
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/callback-specialization.d.ts +2 -1
- package/dist/ir/callback-specialization.js +23 -18
- package/dist/ir/callback-specialization.js.map +1 -1
- package/dist/ir/char-unit-locals.d.ts +19 -0
- package/dist/ir/char-unit-locals.js +185 -0
- package/dist/ir/char-unit-locals.js.map +1 -0
- package/dist/ir/char-unit-locals.test.d.ts +1 -0
- package/dist/ir/char-unit-locals.test.js +94 -0
- package/dist/ir/char-unit-locals.test.js.map +1 -0
- package/dist/ir/final-fields.d.ts +3 -1
- package/dist/ir/final-fields.js +15 -17
- package/dist/ir/final-fields.js.map +1 -1
- package/dist/ir/function-references.d.ts +2 -0
- package/dist/ir/function-references.js +2 -0
- package/dist/ir/function-references.js.map +1 -1
- package/dist/ir/function-references.test.js +5 -0
- package/dist/ir/function-references.test.js.map +1 -1
- package/dist/ir/initializer-bindings.d.ts +2 -1
- package/dist/ir/initializer-bindings.js +27 -20
- package/dist/ir/initializer-bindings.js.map +1 -1
- package/dist/ir/int32-arrays.d.ts +108 -0
- package/dist/ir/int32-arrays.js +831 -0
- package/dist/ir/int32-arrays.js.map +1 -0
- package/dist/ir/int32-slots.d.ts +36 -6
- package/dist/ir/int32-slots.js +370 -171
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/int32-slots.test.js +3 -1
- package/dist/ir/int32-slots.test.js.map +1 -1
- package/dist/ir/integer-loop-facts.d.ts +9 -4
- package/dist/ir/integer-loop-facts.js +93 -18
- package/dist/ir/integer-loop-facts.js.map +1 -1
- package/dist/ir/integer-loops.d.ts +49 -0
- package/dist/ir/integer-loops.js +202 -40
- package/dist/ir/integer-loops.js.map +1 -1
- package/dist/ir/integer-loops.test.js +211 -1
- package/dist/ir/integer-loops.test.js.map +1 -1
- package/dist/ir/integer-ranges.d.ts +5 -0
- package/dist/ir/integer-ranges.js +125 -12
- package/dist/ir/integer-ranges.js.map +1 -1
- package/dist/ir/integer-ranges.test.js +94 -0
- package/dist/ir/integer-ranges.test.js.map +1 -1
- package/dist/ir/ir.d.ts +87 -9
- package/dist/ir/ir.js +61 -2
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/ir.test.js +21 -1
- package/dist/ir/ir.test.js.map +1 -1
- package/dist/ir/js-ic.d.ts +19 -2
- package/dist/ir/js-ic.js +95 -11
- package/dist/ir/js-ic.js.map +1 -1
- package/dist/ir/js-ic.test.js +188 -0
- package/dist/ir/js-ic.test.js.map +1 -1
- package/dist/ir/node-index.d.ts +57 -0
- package/dist/ir/node-index.js +215 -0
- package/dist/ir/node-index.js.map +1 -0
- package/dist/ir/paired-while-loops.d.ts +25 -0
- package/dist/ir/paired-while-loops.js +335 -0
- package/dist/ir/paired-while-loops.js.map +1 -0
- package/dist/ir/paired-while-loops.test.d.ts +1 -0
- package/dist/ir/paired-while-loops.test.js +163 -0
- package/dist/ir/paired-while-loops.test.js.map +1 -0
- package/dist/ir/parameter-versions.d.ts +25 -0
- package/dist/ir/parameter-versions.js +300 -0
- package/dist/ir/parameter-versions.js.map +1 -0
- package/dist/ir/runtime-features.d.ts +60 -15
- package/dist/ir/runtime-features.js +276 -35
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/serialize.d.ts +12 -2
- package/dist/ir/serialize.js +16 -3
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/serialize.test.js +17 -0
- package/dist/ir/serialize.test.js.map +1 -1
- package/dist/ir/tiers.js +1 -0
- package/dist/ir/tiers.js.map +1 -1
- package/dist/ir/traverse.d.ts +2 -0
- package/dist/ir/traverse.js +29 -5
- package/dist/ir/traverse.js.map +1 -1
- package/dist/ir/validate.js +171 -45
- package/dist/ir/validate.js.map +1 -1
- package/dist/library/ir-policy.js +12 -0
- package/dist/library/ir-policy.js.map +1 -1
- package/dist/library/library-cache.d.ts +2 -0
- package/dist/library/library-cache.js.map +1 -1
- package/dist/library/prepare.js +2 -0
- package/dist/library/prepare.js.map +1 -1
- package/dist/native/cache.d.ts +6 -1
- package/dist/native/cache.js +28 -5
- package/dist/native/cache.js.map +1 -1
- package/dist/native/cache.test.js +16 -2
- package/dist/native/cache.test.js.map +1 -1
- package/dist/native/cli.js +26 -1
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.js +8 -6
- package/dist/native/compiler.js.map +1 -1
- package/dist/native/executable-cache.d.ts +1 -1
- package/dist/native/executable-cache.js +2 -2
- package/dist/native/executable-cache.js.map +1 -1
- package/dist/native/prepare.d.ts +3 -1
- package/dist/native/prepare.js +123 -31
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/prepare.test.js +78 -18
- package/dist/native/prepare.test.js.map +1 -1
- package/dist/native/sanitizer.test.js +6 -1
- package/dist/native/sanitizer.test.js.map +1 -1
- package/dist/native/text-file.d.ts +13 -3
- package/dist/native/text-file.js +63 -9
- package/dist/native/text-file.js.map +1 -1
- package/dist/native/text-file.test.d.ts +1 -0
- package/dist/native/text-file.test.js +49 -0
- package/dist/native/text-file.test.js.map +1 -0
- package/dist/native/toolchain.js +4 -4
- package/dist/native/toolchain.js.map +1 -1
- package/dist/native/toolchain.test.js +3 -3
- package/dist/native/toolchain.test.js.map +1 -1
- package/dist/startup-cache.d.ts +1 -0
- package/dist/startup-cache.js +1 -0
- package/dist/startup-cache.js.map +1 -1
- package/dist/text-parts.d.ts +7 -0
- package/dist/text-parts.js +44 -0
- package/dist/text-parts.js.map +1 -1
- package/dist/text-parts.test.d.ts +1 -0
- package/dist/text-parts.test.js +46 -0
- package/dist/text-parts.test.js.map +1 -0
- package/dist/timing.d.ts +9 -2
- package/dist/timing.js +7 -4
- package/dist/timing.js.map +1 -1
- package/dist/wasm/translate.d.ts +4 -0
- package/dist/wasm/translate.js +2 -2
- package/dist/wasm/translate.js.map +1 -1
- package/package.json +21 -21
- package/shims/chalk/v5.ts +688 -0
- package/shims/hono-node-server/v2.ts +645 -0
- package/shims/hot-shots/client.ts +1126 -0
- package/shims/hot-shots/v8-unix-dgram.ts +8 -0
- package/shims/hot-shots/v8.ts +8 -0
- package/shims/undici/core/client.ts +4 -4
- package/surface-manifest.json +44 -52
package/dist/index.js
CHANGED
|
@@ -4,27 +4,33 @@ import { prepareExecutableModule } from "./executable/prepare.js";
|
|
|
4
4
|
import { prepareLibrary, libraryLocalizeSymbols, libraryWasmExports, libraryWasmRefusal, } from "./library/prepare.js";
|
|
5
5
|
import { analyzeWithFrontend } from "./frontend/analysis.js";
|
|
6
6
|
import { checkerCacheIdentity } from "./frontend/ts7/checker-backend.js";
|
|
7
|
+
import { setLibDiagnosticsStore } from "./frontend/ts7/lib-diagnostics.js";
|
|
7
8
|
import { analyzeWithVerdictCache, fileVerdictStore } from "./coverage/verdict-cache.js";
|
|
8
9
|
import { coverageCompilerIdentity } from "./coverage/verdict-startup.js";
|
|
9
10
|
import { commentOnlyReplay } from "./coverage/verdict-semantic.js";
|
|
10
11
|
import { llvmRefusalDiag, targetRefusalDiag } from "./backend/target-diagnostics.js";
|
|
11
12
|
import { compilePackedLibrary } from "./backend/library-pack.js";
|
|
12
13
|
import { InternalCompilerError } from "./errors.js";
|
|
14
|
+
import { frontendProcessExecArgv } from "./frontend-process-args.js";
|
|
15
|
+
import { spawn } from "node:child_process";
|
|
13
16
|
import { createHash } from "node:crypto";
|
|
14
|
-
import {
|
|
17
|
+
import { existsSync } from "node:fs";
|
|
18
|
+
import { copyFile, mkdir, mkdtemp, readFile, rename, rm, writeFile } from "node:fs/promises";
|
|
19
|
+
import { tmpdir } from "node:os";
|
|
15
20
|
import { basename, dirname, join, resolve } from "node:path";
|
|
21
|
+
import { fileURLToPath } from "node:url";
|
|
16
22
|
import { clearCcCaches, configuredTargetPlatform, } from "./backend/native-toolchain.js";
|
|
17
23
|
import { buildCacheRoot, prepareBuildCacheRoot, pruneBuildCache } from "./backend/build-cache.js";
|
|
18
24
|
import { CcCompileError, compileExternalC, compileExternalCLibrary, executableNativeEnvironmentFingerprint, mobileLibraryTarget, mobileTargetRefusal, resolveCc, } from "./backend/external-c.js";
|
|
19
|
-
import { emitLlvmModuleSource, LlvmUnsupportedError } from "./backend/llvm/emitter.js";
|
|
25
|
+
import { emitLlvmModuleSource, LlvmUnsupportedError, lowRegionTarget, } from "./backend/llvm/emitter.js";
|
|
20
26
|
import { inlineRcOption } from "./backend/llvm/shapes.js";
|
|
21
|
-
import { emitNativeArtifact, NativeCodegenError, writeLlvmSource, } from "./backend/native-codegen.js";
|
|
27
|
+
import { emitNativeArtifact, isLlvmFile, llvmInputBytes, NativeCodegenError, writeLlvmSource, } from "./backend/native-codegen.js";
|
|
22
28
|
import { nativePartitionPaths, nativeProgramPartitions } from "./backend/native-codegen-core.js";
|
|
23
29
|
import { privateSiblingPath } from "./backend/build-cache.js";
|
|
24
30
|
import { nativeCodegenTarget, nativeCodegenTargetRefusal } from "./backend/targets.js";
|
|
25
31
|
import { windowsSubsystemLinkerArgs } from "./backend/targets.js";
|
|
26
32
|
import { createNativeLinkInfo } from "./backend/native-link-info.js";
|
|
27
|
-
import { RuntimePackError
|
|
33
|
+
import { RuntimePackError } from "./backend/runtime-pack.js";
|
|
28
34
|
import { createNativeLinkPlan } from "./backend/link-plan.js";
|
|
29
35
|
import { nativeProfileKey, nativeProfileRefusal, } from "./backend/native-profile.js";
|
|
30
36
|
import { executableLinkerEnvironmentFingerprint, linkNativeExecutable, platformLinkerSupportsPersistentCache, resolvePlatformLinker, } from "./backend/linker.js";
|
|
@@ -37,25 +43,28 @@ import { canonicalModuleGraph, clearSidecarCaches, compilerReleaseVersion, libra
|
|
|
37
43
|
import {} from "./ir/ir.js";
|
|
38
44
|
import { moduleRuntimeFeatures } from "./ir/runtime-features.js";
|
|
39
45
|
import { serializeModuleParts } from "./ir/serialize.js";
|
|
40
|
-
import { writeTextParts } from "./text-parts.js";
|
|
46
|
+
import { readTextParts, writeTextParts } from "./text-parts.js";
|
|
41
47
|
import { validateModule } from "./ir/validate.js";
|
|
48
|
+
import { compilerOwnedFileRoots } from "./frontend/dts-paths.js";
|
|
42
49
|
import { loadProgram } from "./frontend/program-node.js";
|
|
43
50
|
import { runFrontend } from "./frontend/pipeline.js";
|
|
44
|
-
import { provenanceSources } from "./frontend/provenance-registry.js";
|
|
51
|
+
import { provenanceSources, setProvenanceSources, } from "./frontend/provenance-registry.js";
|
|
45
52
|
import { clearResolveCaches } from "./frontend/resolve.js";
|
|
46
53
|
import { loadFfiProfile } from "./ffi/ffi-manifest.js";
|
|
47
54
|
import { executableLinkFeatures } from "./backend/executable-features.js";
|
|
48
55
|
import { youngNurseryRequested } from "./backend/young-nursery.js";
|
|
49
|
-
import { FrontendInputTracker, trackedReadFile } from "./frontend/input-tracker.js";
|
|
56
|
+
import { FrontendInputTracker, trackedReadFile, } from "./frontend/input-tracker.js";
|
|
50
57
|
import { libraryFrontendImplementationFingerprint, publishEarlyLibraryCache, readEarlyLibraryCache, readSemanticLibraryCache, } from "./library/library-cache.js";
|
|
51
|
-
import { publishEarlyExecutableCache, publishEarlyExecutableRoute, readEarlyExecutableCache, } from "./executable/executable-cache.js";
|
|
58
|
+
import { hasEarlyExecutableNativeBuild, publishEarlyExecutableCache, publishEarlyExecutableRoute, readEarlyExecutableCache, recordEarlyExecutableNativeBuild, } from "./executable/executable-cache.js";
|
|
52
59
|
import { compilerImplementationIdentity } from "./library/compiler-self-identity.js";
|
|
60
|
+
import { isPerformanceCode } from "./diagnostics/dynamic-tier.js";
|
|
53
61
|
export const VERSION = "0.0.1";
|
|
54
62
|
export { EXTERNAL_OBJECT_ABI_STABILITY, RUNTIME_ABI_MARKER, RUNTIME_ABI_VERSION, } from "./backend/runtime-abi.js";
|
|
55
63
|
export { InternalCompilerError } from "./errors.js";
|
|
56
64
|
export { compileExternalC as compileC, compileExternalC, runtimeSrcDir, } from "./backend/external-c.js";
|
|
57
65
|
export { warmNativeCaches } from "./backend/warm-cache.js";
|
|
58
66
|
export { mergeNativeProfiles as mergeProfiles } from "./backend/native-codegen.js";
|
|
67
|
+
export { collectGarbageUnderHeapPressure } from "./heap-collection.js";
|
|
59
68
|
export { ANDROID_MIN_API, IPHONEOS_MIN_VERSION, isAndroidTarget, isIosTarget, isMobileTarget, mobileLibraryTarget, mobileTargetRefusal, } from "./backend/external-c.js";
|
|
60
69
|
export { emitLlvmModule } from "./backend/llvm/emitter.js";
|
|
61
70
|
export { renderDiagnostics, renderDiagnostics as renderAll, renderDiagnostic, } from "./diagnostics/render.js";
|
|
@@ -146,8 +155,22 @@ export async function compile(entryPath, opts) {
|
|
|
146
155
|
clearCompileSessionCaches();
|
|
147
156
|
const frontendInputs = new FrontendInputTracker();
|
|
148
157
|
const warnings = { warnings: [], sourceTexts: null };
|
|
149
|
-
|
|
150
|
-
|
|
158
|
+
// compileTracked starts it for a build with no earlier build of the same invocation.
|
|
159
|
+
const frontendProcess = preparesInChildProcess(opts) ? new FrontendProcess() : undefined;
|
|
160
|
+
try {
|
|
161
|
+
const result = await frontendInputs.run(() => compileTracked(entryPath, opts, frontendInputs, warnings, frontendProcess));
|
|
162
|
+
return withCompileWarnings(result, warnings);
|
|
163
|
+
}
|
|
164
|
+
finally {
|
|
165
|
+
setLibDiagnosticsStore(null);
|
|
166
|
+
frontendProcess?.release();
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
/** The build's performance warnings (SC61xx), stored with its cache entry
|
|
170
|
+
* so a cache hit repeats them. */
|
|
171
|
+
function performanceWarnings(sink) {
|
|
172
|
+
const performance = (sink?.warnings ?? []).filter((d) => isPerformanceCode(d.code));
|
|
173
|
+
return performance.length === 0 ? {} : { performance };
|
|
151
174
|
}
|
|
152
175
|
function withCompileWarnings(result, sink) {
|
|
153
176
|
if (!result.ok || sink.warnings.length === 0)
|
|
@@ -179,7 +202,10 @@ function executableNativeFeatures(mod, backend, optimization) {
|
|
|
179
202
|
...executableLinkFeatures(mod),
|
|
180
203
|
};
|
|
181
204
|
}
|
|
182
|
-
async function compileExecutableNative(features, llvmPath, outPath, sanitize, ffi, windowsSubsystem, strip, programSplit = null, programObjectDependencies = [], onArtifactReady, programPartitions = [], profileGenerate = false
|
|
205
|
+
async function compileExecutableNative(features, llvmPath, outPath, sanitize, ffi, windowsSubsystem, strip, programSplit = null, programObjectDependencies = [], onArtifactReady, programPartitions = [], profileGenerate = false,
|
|
206
|
+
/** The kept LLVM text's shared name, when `llvmPath` is the build's private copy of it
|
|
207
|
+
* (BuildSources): the spelling clang sees and native cache keys name. */
|
|
208
|
+
llvmVisiblePath) {
|
|
183
209
|
const programIsObject = /\.(?:o|obj)$/.test(llvmPath);
|
|
184
210
|
const runtimePackTarget = programIsObject && !sanitize ? nativeCodegenTarget() : null;
|
|
185
211
|
if (runtimePackTarget !== null) {
|
|
@@ -216,7 +242,9 @@ async function compileExecutableNative(features, llvmPath, outPath, sanitize, ff
|
|
|
216
242
|
if (programIsObject)
|
|
217
243
|
throw new InternalCompilerError("program objects must link against a precompiled runtime pack");
|
|
218
244
|
await compileExternalC({
|
|
219
|
-
|
|
245
|
+
...(llvmVisiblePath === undefined || llvmVisiblePath === llvmPath
|
|
246
|
+
? { cPath: llvmPath }
|
|
247
|
+
: { cPath: llvmVisiblePath, cSourcePath: llvmPath }),
|
|
220
248
|
outPath,
|
|
221
249
|
cacheIdentity: "scriptc-generated-v1",
|
|
222
250
|
...optimizationField(features.optimization),
|
|
@@ -247,9 +275,10 @@ async function compileExecutableNative(features, llvmPath, outPath, sanitize, ff
|
|
|
247
275
|
...(features.dynTier ? { dynTier: true } : {}),
|
|
248
276
|
...(features.streamDyn ? { streamDyn: true } : {}),
|
|
249
277
|
...(features.handleProps ? { handleProps: true } : {}),
|
|
278
|
+
...(features.declAdopt ? { declAdopt: true } : {}),
|
|
250
279
|
...(features.dynForAwait ? { dynForAwait: true } : {}),
|
|
251
280
|
...(features.eventsOnceSignal ? { eventsOnceSignal: true } : {}),
|
|
252
|
-
...(features.
|
|
281
|
+
...(features.dynBuffer ? { dynBuffer: true } : {}),
|
|
253
282
|
...(features.builtinValues ? { builtinValues: true } : {}),
|
|
254
283
|
events: features.events,
|
|
255
284
|
emitter: features.emitter,
|
|
@@ -268,6 +297,7 @@ async function compileExecutableNative(features, llvmPath, outPath, sanitize, ff
|
|
|
268
297
|
dgram: features.dgram,
|
|
269
298
|
dnsPromises: features.dnsPromises,
|
|
270
299
|
dgramDyn: features.dgramDyn,
|
|
300
|
+
textCodecDyn: features.textCodecDyn,
|
|
271
301
|
watch: features.watch,
|
|
272
302
|
foreignFfi: features.foreignFfi,
|
|
273
303
|
...(features.workers ? { workers: true } : {}),
|
|
@@ -277,6 +307,9 @@ async function compileExecutableNative(features, llvmPath, outPath, sanitize, ff
|
|
|
277
307
|
tlsCa: features.tlsCa,
|
|
278
308
|
cipher: features.cipher,
|
|
279
309
|
ecdh: features.ecdh,
|
|
310
|
+
dh: features.dh,
|
|
311
|
+
pki: features.pki,
|
|
312
|
+
ed25519: features.ed25519,
|
|
280
313
|
webcrypto: features.webcrypto,
|
|
281
314
|
perfLoop: features.perfLoop,
|
|
282
315
|
...(onArtifactReady === undefined ? {} : { onArtifactReady }),
|
|
@@ -289,7 +322,7 @@ async function compileExecutableNative(features, llvmPath, outPath, sanitize, ff
|
|
|
289
322
|
}),
|
|
290
323
|
});
|
|
291
324
|
}
|
|
292
|
-
async function emitNativeProgramObject(entryPath, opts, llvm,
|
|
325
|
+
async function emitNativeProgramObject(entryPath, opts, llvm, profile) {
|
|
293
326
|
const stem = basename(entryPath).replace(/\.(ts|mts|cts|js|mjs|cjs)$/, "");
|
|
294
327
|
const artifactPath = join(opts.outDir, `${stem}.helper.o`);
|
|
295
328
|
// compileExecutableNative recognizes object inputs by suffix. The random
|
|
@@ -298,25 +331,8 @@ async function emitNativeProgramObject(entryPath, opts, llvm, features, profile)
|
|
|
298
331
|
const linkPath = `${privateSiblingPath(artifactPath, "native-program-object")}.o`;
|
|
299
332
|
// The validated program-object artifact is a single object by contract.
|
|
300
333
|
const target = nativeCodegenTarget();
|
|
301
|
-
const llvmBytes = (
|
|
334
|
+
const llvmBytes = llvmInputBytes(llvm);
|
|
302
335
|
const partitions = opts.nativeProgramObject === true || target === null ? 1 : nativeProgramPartitions(llvmBytes);
|
|
303
|
-
// Optimized programs import small runtime functions from the bitcode of
|
|
304
|
-
// the exact runtime units they link, so LLVM can inline across the
|
|
305
|
-
// boundary. Release units ship only the bodies that need none of their
|
|
306
|
-
// unit-local state, which keeps the import cheap; speed units promote
|
|
307
|
-
// that state and offer more. Every partition reads the bitcode again, so
|
|
308
|
-
// release imports only into programs small enough for one partition: in
|
|
309
|
-
// larger ones the build-time and size cost outgrows the gain.
|
|
310
|
-
const runtimeBitcode = opts.sanitize !== true &&
|
|
311
|
-
target !== null &&
|
|
312
|
-
(opts.optimization === "speed" ||
|
|
313
|
-
(opts.optimization !== "dev" && nativeProgramPartitions(llvmBytes) === 1))
|
|
314
|
-
? await loadRuntimeBitcode({
|
|
315
|
-
target,
|
|
316
|
-
features,
|
|
317
|
-
optimization: opts.optimization === "speed" ? "speed" : "release",
|
|
318
|
-
})
|
|
319
|
-
: null;
|
|
320
336
|
try {
|
|
321
337
|
const artifact = await emitNativeArtifact({
|
|
322
338
|
outputPath: linkPath,
|
|
@@ -326,16 +342,13 @@ async function emitNativeProgramObject(entryPath, opts, llvm, features, profile)
|
|
|
326
342
|
optimization: opts.optimization === "dev" ? "0" : "2",
|
|
327
343
|
...(opts.sanitize === undefined ? {} : { sanitize: opts.sanitize }),
|
|
328
344
|
partitions,
|
|
329
|
-
...(runtimeBitcode === null
|
|
330
|
-
? {}
|
|
331
|
-
: { importBitcode: { paths: runtimeBitcode.paths, digests: runtimeBitcode.digests } }),
|
|
332
345
|
...(profile === undefined ? {} : { profile }),
|
|
333
346
|
});
|
|
334
347
|
return {
|
|
335
348
|
linkPath,
|
|
336
349
|
partitionPaths: artifact.outputPaths.slice(1),
|
|
337
350
|
artifactPath,
|
|
338
|
-
dependencies:
|
|
351
|
+
dependencies: artifact.dependencies,
|
|
339
352
|
};
|
|
340
353
|
}
|
|
341
354
|
catch (error) {
|
|
@@ -391,7 +404,7 @@ async function prepareExecutableInput(entryPath, opts, ffi, buildPlatform, timin
|
|
|
391
404
|
const debugOptions = opts.optimization === "dev" && !opts.strip ? { debugSources: sourceTexts } : {};
|
|
392
405
|
if (outputKind === "ir") {
|
|
393
406
|
await mkdir(dirname(opts.outPath), { recursive: true });
|
|
394
|
-
await writeTextParts(opts.outPath, serializeModuleParts(mod));
|
|
407
|
+
await writeTextParts(opts.outPath, serializeModuleParts(mod, compilerOwnedFileRoots()));
|
|
395
408
|
return { ok: true, artifact: { kind: "ir", path: opts.outPath } };
|
|
396
409
|
}
|
|
397
410
|
if (outputKind === "llvm" || outputKind === "asm" || outputKind === "obj") {
|
|
@@ -404,6 +417,7 @@ async function prepareExecutableInput(entryPath, opts, ffi, buildPlatform, timin
|
|
|
404
417
|
wasi: buildPlatform === "wasi",
|
|
405
418
|
runtimeAbiMarker: outputKind === "obj",
|
|
406
419
|
objectAudit: opts.sanitize === true,
|
|
420
|
+
lowRegion: lowRegionTarget(buildPlatform, opts.sanitize === true),
|
|
407
421
|
...(opts.sanitize === true ? { wasmBoundsChecks: true } : {}),
|
|
408
422
|
...inlineRcOption(opts.optimization, opts.sanitize === true),
|
|
409
423
|
});
|
|
@@ -462,6 +476,8 @@ async function prepareExecutableInput(entryPath, opts, ffi, buildPlatform, timin
|
|
|
462
476
|
}
|
|
463
477
|
await mkdir(opts.outDir, { recursive: true });
|
|
464
478
|
const llvmPath = defaultSourcePaths.llvm;
|
|
479
|
+
// The extension keeps clang reading the copy as LLVM IR rather than as a linker input.
|
|
480
|
+
const llvmSourcePath = `${privateSiblingPath(llvmPath, "llvm")}.ll`;
|
|
465
481
|
const backend = "llvm";
|
|
466
482
|
const useRuntimePack = opts.nativeProgramObject === true || usesPrecompiledRuntimePack(opts, backend);
|
|
467
483
|
let llvmSource;
|
|
@@ -473,6 +489,7 @@ async function prepareExecutableInput(entryPath, opts, ffi, buildPlatform, timin
|
|
|
473
489
|
wasi: buildPlatform === "wasi",
|
|
474
490
|
runtimeAbiMarker: useRuntimePack,
|
|
475
491
|
objectAudit: opts.sanitize === true,
|
|
492
|
+
lowRegion: lowRegionTarget(buildPlatform, opts.sanitize === true),
|
|
476
493
|
...(opts.sanitize === true ? { wasmBoundsChecks: true } : {}),
|
|
477
494
|
...inlineRcOption(opts.optimization, opts.sanitize === true),
|
|
478
495
|
...(opts.detachedExit === true ? { detachedExit: true } : {}),
|
|
@@ -484,12 +501,14 @@ async function prepareExecutableInput(entryPath, opts, ffi, buildPlatform, timin
|
|
|
484
501
|
return { ok: false, diagnostics: [llvmRefusalDiag(err, entryPath)], sourceTexts };
|
|
485
502
|
}
|
|
486
503
|
timing("llvm-emit");
|
|
487
|
-
await writeLlvmSource(
|
|
504
|
+
await writeLlvmSource(llvmSourcePath, llvmSource);
|
|
488
505
|
timing("llvm-write");
|
|
489
506
|
let irPath;
|
|
507
|
+
let irSourcePath;
|
|
490
508
|
if (opts.emitIr) {
|
|
491
509
|
irPath = defaultSourcePaths.ir;
|
|
492
|
-
|
|
510
|
+
irSourcePath = privateSiblingPath(irPath, "ir");
|
|
511
|
+
await writeTextParts(irSourcePath, serializeModuleParts(mod, compilerOwnedFileRoots()));
|
|
493
512
|
}
|
|
494
513
|
const nativeFeatures = executableNativeFeatures(mod, backend, opts.optimization ?? "release");
|
|
495
514
|
timing("link-features");
|
|
@@ -501,10 +520,267 @@ async function prepareExecutableInput(entryPath, opts, ffi, buildPlatform, timin
|
|
|
501
520
|
? splitLlvmProgram(llvmSource)
|
|
502
521
|
: null;
|
|
503
522
|
timing("llvm-split");
|
|
504
|
-
return {
|
|
523
|
+
return {
|
|
524
|
+
llvmSource,
|
|
525
|
+
llvmPath,
|
|
526
|
+
llvmSourcePath,
|
|
527
|
+
irPath,
|
|
528
|
+
irSourcePath,
|
|
529
|
+
nativeFeatures,
|
|
530
|
+
programSplit,
|
|
531
|
+
sourceTexts,
|
|
532
|
+
};
|
|
533
|
+
}
|
|
534
|
+
/** Moves a build's private copies to the shared names, or drops them when that fails. */
|
|
535
|
+
async function installBuildSources(sources) {
|
|
536
|
+
const install = async (source, destination, current) => {
|
|
537
|
+
if (source === undefined || destination === undefined || source === destination)
|
|
538
|
+
return;
|
|
539
|
+
if (current === true)
|
|
540
|
+
await rm(source, { force: true });
|
|
541
|
+
else
|
|
542
|
+
await rename(source, destination).catch(() => rm(source, { force: true }));
|
|
543
|
+
};
|
|
544
|
+
await Promise.all([
|
|
545
|
+
install(sources.llvmSourcePath, sources.llvmPath, sources.llvmPathCurrent),
|
|
546
|
+
install(sources.irSourcePath, sources.irPath, sources.irPathCurrent),
|
|
547
|
+
]);
|
|
548
|
+
}
|
|
549
|
+
/**
|
|
550
|
+
* A build that compiles the LLVM text with the C driver (no precompiled runtime pack) records the
|
|
551
|
+
* output directory in its native cache proofs, so that directory has to be in its final state before
|
|
552
|
+
* the native build starts. The build therefore installs the shared names first and compiles and
|
|
553
|
+
* caches copies in a private directory outside the output directory. Returns that directory and the
|
|
554
|
+
* copies.
|
|
555
|
+
*/
|
|
556
|
+
async function stageDriverBuildSources(sources) {
|
|
557
|
+
const dir = await mkdtemp(join(tmpdir(), "scriptc-program-"));
|
|
558
|
+
const llvmSourcePath = join(dir, basename(sources.llvmPath));
|
|
559
|
+
const irSourcePath = sources.irPath === undefined || sources.irSourcePath === undefined
|
|
560
|
+
? undefined
|
|
561
|
+
: join(dir, basename(sources.irPath));
|
|
562
|
+
try {
|
|
563
|
+
await Promise.all([
|
|
564
|
+
copyFile(sources.llvmSourcePath, llvmSourcePath),
|
|
565
|
+
irSourcePath === undefined || sources.irSourcePath === undefined
|
|
566
|
+
? undefined
|
|
567
|
+
: copyFile(sources.irSourcePath, irSourcePath),
|
|
568
|
+
]);
|
|
569
|
+
}
|
|
570
|
+
catch (err) {
|
|
571
|
+
await rm(dir, { recursive: true, force: true });
|
|
572
|
+
throw err;
|
|
573
|
+
}
|
|
574
|
+
await installBuildSources(sources);
|
|
575
|
+
return {
|
|
576
|
+
dir,
|
|
577
|
+
sources: { llvmPath: sources.llvmPath, llvmSourcePath, irPath: sources.irPath, irSourcePath },
|
|
578
|
+
};
|
|
579
|
+
}
|
|
580
|
+
/**
|
|
581
|
+
* The child process that prepares an executable build's input: frontend, lowering and LLVM emission
|
|
582
|
+
* (`runFrontendProcess`). Node's heap keeps the pages a build's frontend used for the life of the
|
|
583
|
+
* process, so running them in a process of their own leaves the native helper the memory they took.
|
|
584
|
+
*/
|
|
585
|
+
const frontendProcessEntry = fileURLToPath(new URL("./frontend-process.js", import.meta.url));
|
|
586
|
+
/**
|
|
587
|
+
* Whether `prepareExecutableInputInChild` may prepare this build: optimized executables, when the
|
|
588
|
+
* compiler runs from its built files. Development builds split the LLVM text in this process, and
|
|
589
|
+
* SCRIPTC_FRONTEND_PROCESS=0 keeps the frontend in-process.
|
|
590
|
+
*
|
|
591
|
+
* compileTracked starts the process only when no earlier build of the same invocation emitted its
|
|
592
|
+
* native program object (`hasEarlyExecutableNativeBuild`). A rebuild finds most native partitions
|
|
593
|
+
* in the helper's cache, so its memory peaks in the frontend, and the parent process would add to
|
|
594
|
+
* that peak.
|
|
595
|
+
*/
|
|
596
|
+
function preparesInChildProcess(opts) {
|
|
597
|
+
return (process.env["SCRIPTC_FRONTEND_PROCESS"] !== "0" &&
|
|
598
|
+
(opts.outputKind ?? "exe") === "exe" &&
|
|
599
|
+
(opts.optimization ?? "release") !== "dev" &&
|
|
600
|
+
existsSync(frontendProcessEntry));
|
|
601
|
+
}
|
|
602
|
+
/**
|
|
603
|
+
* The frontend process (frontend-process.ts) of one compile. `start` launches it; it then waits on
|
|
604
|
+
* its stdin for the paths of a request and its result (`run`), and exits once its stdin closes
|
|
605
|
+
* without them (`release`).
|
|
606
|
+
*/
|
|
607
|
+
class FrontendProcess {
|
|
608
|
+
child;
|
|
609
|
+
exited;
|
|
610
|
+
sent = false;
|
|
611
|
+
/** Whether `start` launched the process. */
|
|
612
|
+
get started() {
|
|
613
|
+
return this.child !== undefined;
|
|
614
|
+
}
|
|
615
|
+
start() {
|
|
616
|
+
if (this.child !== undefined)
|
|
617
|
+
return;
|
|
618
|
+
const execArgv = frontendProcessExecArgv(process.execArgv);
|
|
619
|
+
const child = spawn(process.execPath, [...execArgv, frontendProcessEntry], {
|
|
620
|
+
stdio: ["pipe", "inherit", "inherit"],
|
|
621
|
+
});
|
|
622
|
+
this.exited = new Promise((resolveExit) => {
|
|
623
|
+
child.on("error", () => resolveExit(null));
|
|
624
|
+
child.on("exit", (code) => resolveExit(code));
|
|
625
|
+
});
|
|
626
|
+
// A failed start surfaces as a failed run; the build then prepares its input in-process.
|
|
627
|
+
child.stdin.on("error", () => undefined);
|
|
628
|
+
this.child = child;
|
|
629
|
+
}
|
|
630
|
+
/** Sends the request at `requestPath`; resolves with the process's exit code. */
|
|
631
|
+
run(requestPath, resultPath) {
|
|
632
|
+
if (this.child === undefined || this.exited === undefined || this.sent)
|
|
633
|
+
return Promise.resolve(null);
|
|
634
|
+
this.sent = true;
|
|
635
|
+
this.child.stdin.end(`${requestPath}\n${resultPath}\n`);
|
|
636
|
+
return this.exited;
|
|
637
|
+
}
|
|
638
|
+
/** Lets the process exit if no request was sent. */
|
|
639
|
+
release() {
|
|
640
|
+
if (this.child === undefined || this.sent)
|
|
641
|
+
return;
|
|
642
|
+
this.sent = true;
|
|
643
|
+
this.child.stdin.end();
|
|
644
|
+
// The build is done with it: this process need not wait for it to exit.
|
|
645
|
+
this.child.unref();
|
|
646
|
+
this.child.stdin.unref?.();
|
|
647
|
+
}
|
|
648
|
+
}
|
|
649
|
+
/**
|
|
650
|
+
* `prepareExecutableInput` in the frontend process, with the LLVM text passed on as its file. The
|
|
651
|
+
* process's frontend inputs join `frontendInputs` and its warnings `warningSink`. If it fails, the
|
|
652
|
+
* input is prepared here, so the build reports the same errors.
|
|
653
|
+
*/
|
|
654
|
+
async function prepareExecutableInputInChild(frontendProcess, entryPath, opts, ffi, buildPlatform, timing, timingClock, frontendInputs, warningSink) {
|
|
655
|
+
await mkdir(opts.outDir, { recursive: true });
|
|
656
|
+
const requestPath = privateSiblingPath(join(opts.outDir, "frontend-request.json"), "frontend");
|
|
657
|
+
const resultPath = privateSiblingPath(join(opts.outDir, "frontend-result.json"), "frontend");
|
|
658
|
+
let result = { kind: "failed" };
|
|
659
|
+
try {
|
|
660
|
+
const request = {
|
|
661
|
+
entryPath,
|
|
662
|
+
opts,
|
|
663
|
+
buildPlatform,
|
|
664
|
+
timing: timingClock,
|
|
665
|
+
provenance: provenanceSources(),
|
|
666
|
+
};
|
|
667
|
+
await writeFile(requestPath, JSON.stringify(request), { mode: 0o600 });
|
|
668
|
+
const exitCode = await frontendProcess.run(requestPath, resultPath);
|
|
669
|
+
if (exitCode === 0)
|
|
670
|
+
result = JSON.parse(await readFile(resultPath, "utf8"));
|
|
671
|
+
}
|
|
672
|
+
catch {
|
|
673
|
+
result = { kind: "failed" };
|
|
674
|
+
}
|
|
675
|
+
finally {
|
|
676
|
+
await rm(requestPath, { force: true });
|
|
677
|
+
await rm(resultPath, { force: true });
|
|
678
|
+
}
|
|
679
|
+
if (result.kind === "failed")
|
|
680
|
+
return prepareExecutableInput(entryPath, opts, ffi, buildPlatform, timing, warningSink);
|
|
681
|
+
timing("frontend-process");
|
|
682
|
+
for (const probe of result.frontend.probes)
|
|
683
|
+
frontendInputs.record(probe);
|
|
684
|
+
if (!result.frontend.stable)
|
|
685
|
+
frontendInputs.markUnstable();
|
|
686
|
+
const sourceTexts = new Map(result.sourceTexts);
|
|
687
|
+
if (warningSink !== undefined && result.warnings.length > 0) {
|
|
688
|
+
warningSink.warnings = result.warnings;
|
|
689
|
+
warningSink.sourceTexts = sourceTexts;
|
|
690
|
+
}
|
|
691
|
+
if (result.kind === "diagnostics")
|
|
692
|
+
return { ok: false, diagnostics: result.diagnostics, sourceTexts };
|
|
693
|
+
return {
|
|
694
|
+
llvmSource: { file: result.nativeInputPath, bytes: result.llvmBytes },
|
|
695
|
+
llvmPath: result.llvmPath,
|
|
696
|
+
llvmSourcePath: result.nativeInputPath,
|
|
697
|
+
irPath: result.irPath,
|
|
698
|
+
irSourcePath: result.irSourcePath,
|
|
699
|
+
nativeFeatures: result.nativeFeatures,
|
|
700
|
+
programSplit: null,
|
|
701
|
+
sourceTexts,
|
|
702
|
+
};
|
|
703
|
+
}
|
|
704
|
+
/**
|
|
705
|
+
* The frontend process (frontend-process.ts): prepares the executable input of the request at
|
|
706
|
+
* `requestPath` as `compileTracked` would in-process, and writes what it prepared, without the LLVM
|
|
707
|
+
* text, to `resultPath`.
|
|
708
|
+
*/
|
|
709
|
+
/** Has the build reuse the diagnostics of the declaration files scriptc
|
|
710
|
+
* supplies (lib-diagnostics.ts) through the build cache at `root`, when the
|
|
711
|
+
* build uses one (executables; source outputs create no cache) and the
|
|
712
|
+
* checker is tsc-ts. */
|
|
713
|
+
function configureLibDiagnostics(root) {
|
|
714
|
+
let checker;
|
|
715
|
+
try {
|
|
716
|
+
checker = root === null ? undefined : checkerCacheIdentity();
|
|
717
|
+
}
|
|
718
|
+
catch {
|
|
719
|
+
// A missing checker fails where the build starts it.
|
|
720
|
+
checker = undefined;
|
|
721
|
+
}
|
|
722
|
+
setLibDiagnosticsStore(root === null || checker === undefined
|
|
723
|
+
? null
|
|
724
|
+
: fileVerdictStore(join(root, "lib-diagnostics-v1")), checker ?? "");
|
|
725
|
+
}
|
|
726
|
+
export async function runFrontendProcess(requestPath, resultPath) {
|
|
727
|
+
const request = JSON.parse(await readFile(requestPath, "utf8"));
|
|
728
|
+
clearCompileSessionCaches();
|
|
729
|
+
setProvenanceSources(request.provenance);
|
|
730
|
+
// The compile that started this process prepared the cache root.
|
|
731
|
+
configureLibDiagnostics((request.opts.outputKind ?? "exe") === "exe" && provenanceSources() === null
|
|
732
|
+
? await prepareBuildCacheRoot(buildCacheRoot())
|
|
733
|
+
: null);
|
|
734
|
+
const frontendInputs = new FrontendInputTracker();
|
|
735
|
+
const warnings = { warnings: [], sourceTexts: null };
|
|
736
|
+
let result = { kind: "failed" };
|
|
737
|
+
try {
|
|
738
|
+
let ffi = null;
|
|
739
|
+
if (request.opts.ffiProfilePath !== undefined) {
|
|
740
|
+
const loaded = loadFfiProfile(resolve(request.opts.ffiProfilePath));
|
|
741
|
+
if (!loaded.ok)
|
|
742
|
+
throw new InternalCompilerError("the FFI profile could not be reloaded");
|
|
743
|
+
ffi = loaded.profile;
|
|
744
|
+
}
|
|
745
|
+
const prepared = await frontendInputs.run(() => prepareExecutableInput(request.entryPath, request.opts, ffi, request.buildPlatform, compilationTiming(request.timing), warnings));
|
|
746
|
+
const frontend = frontendInputs.snapshot();
|
|
747
|
+
if (!("ok" in prepared)) {
|
|
748
|
+
if (isLlvmFile(prepared.llvmSource))
|
|
749
|
+
throw new InternalCompilerError("in-process preparation returned LLVM text as a file");
|
|
750
|
+
result = {
|
|
751
|
+
kind: "prepared",
|
|
752
|
+
llvmPath: prepared.llvmPath,
|
|
753
|
+
nativeInputPath: prepared.llvmSourcePath,
|
|
754
|
+
llvmBytes: llvmInputBytes(prepared.llvmSource),
|
|
755
|
+
irPath: prepared.irPath,
|
|
756
|
+
irSourcePath: prepared.irSourcePath,
|
|
757
|
+
nativeFeatures: prepared.nativeFeatures,
|
|
758
|
+
sourceTexts: [...prepared.sourceTexts],
|
|
759
|
+
warnings: warnings.warnings,
|
|
760
|
+
frontend,
|
|
761
|
+
};
|
|
762
|
+
}
|
|
763
|
+
else if (!prepared.ok) {
|
|
764
|
+
result = {
|
|
765
|
+
kind: "diagnostics",
|
|
766
|
+
diagnostics: prepared.diagnostics,
|
|
767
|
+
sourceTexts: [...prepared.sourceTexts],
|
|
768
|
+
warnings: warnings.warnings,
|
|
769
|
+
frontend,
|
|
770
|
+
};
|
|
771
|
+
}
|
|
772
|
+
}
|
|
773
|
+
catch {
|
|
774
|
+
result = { kind: "failed" };
|
|
775
|
+
}
|
|
776
|
+
finally {
|
|
777
|
+
setLibDiagnosticsStore(null);
|
|
778
|
+
}
|
|
779
|
+
await writeFile(resultPath, JSON.stringify(result), { mode: 0o600 });
|
|
505
780
|
}
|
|
506
|
-
async function compileTracked(entryPath, opts, frontendInputs, warningSink) {
|
|
781
|
+
async function compileTracked(entryPath, opts, frontendInputs, warningSink, frontendProcess) {
|
|
507
782
|
const timing = compilationTiming();
|
|
783
|
+
const timingStart = Date.now();
|
|
508
784
|
entryPath = resolve(entryPath);
|
|
509
785
|
const outputKind = opts.outputKind ?? "exe";
|
|
510
786
|
if ((opts.backend !== undefined && opts.backend !== "llvm") ||
|
|
@@ -704,19 +980,11 @@ async function compileTracked(entryPath, opts, frontendInputs, warningSink) {
|
|
|
704
980
|
const cacheRoot = outputKind === "exe" && provenanceSources() === null
|
|
705
981
|
? await prepareBuildCacheRoot(buildCacheRoot())
|
|
706
982
|
: null;
|
|
983
|
+
configureLibDiagnostics(cacheRoot);
|
|
707
984
|
let earlyCacheOptions = null;
|
|
708
985
|
if (outputKind === "exe") {
|
|
709
986
|
const helperObjectRoute = opts.nativeProgramObject === true || usesPrecompiledRuntimePack(opts, "llvm");
|
|
710
|
-
|
|
711
|
-
// the same cache key. Start both before waiting so edits do not pay their
|
|
712
|
-
// filesystem and subprocess latency serially.
|
|
713
|
-
const [implementation, nativeEnvironment] = await Promise.all([
|
|
714
|
-
compilerImplementationIdentity(),
|
|
715
|
-
helperObjectRoute
|
|
716
|
-
? executableLinkerEnvironmentFingerprint(process.env, nativeCodegenTarget()?.defaultLinker)
|
|
717
|
-
: executableNativeEnvironmentFingerprint(),
|
|
718
|
-
]);
|
|
719
|
-
earlyCacheOptions = {
|
|
987
|
+
const routeOptions = {
|
|
720
988
|
entryPath,
|
|
721
989
|
outDir: opts.outDir,
|
|
722
990
|
outPath: opts.outPath,
|
|
@@ -744,8 +1012,25 @@ async function compileTracked(entryPath, opts, frontendInputs, warningSink) {
|
|
|
744
1012
|
? resolvePlatformLinker(process.env, nativeCodegenTarget()?.defaultLinker)
|
|
745
1013
|
: (process.env["SCRIPTC_CC"] ?? "clang"),
|
|
746
1014
|
],
|
|
747
|
-
nativeEnvironment,
|
|
748
1015
|
nodeVersion: process.version,
|
|
1016
|
+
};
|
|
1017
|
+
// The frontend process prepares the first build of an invocation (preparesInChildProcess).
|
|
1018
|
+
// Started here, it loads the compiler while this process computes the rest of the cache key.
|
|
1019
|
+
if (frontendProcess !== undefined &&
|
|
1020
|
+
!(await hasEarlyExecutableNativeBuild(cacheRoot, routeOptions)))
|
|
1021
|
+
frontendProcess.start();
|
|
1022
|
+
// Package content and native driver discovery are independent inputs to
|
|
1023
|
+
// the same cache key. Start both before waiting so edits do not pay their
|
|
1024
|
+
// filesystem and subprocess latency serially.
|
|
1025
|
+
const [implementation, nativeEnvironment] = await Promise.all([
|
|
1026
|
+
compilerImplementationIdentity(),
|
|
1027
|
+
helperObjectRoute
|
|
1028
|
+
? executableLinkerEnvironmentFingerprint(process.env, nativeCodegenTarget()?.defaultLinker)
|
|
1029
|
+
: executableNativeEnvironmentFingerprint(),
|
|
1030
|
+
]);
|
|
1031
|
+
earlyCacheOptions = {
|
|
1032
|
+
...routeOptions,
|
|
1033
|
+
nativeEnvironment,
|
|
749
1034
|
implementation: implementation.digest,
|
|
750
1035
|
implementationDependencies: implementation.dependencies,
|
|
751
1036
|
};
|
|
@@ -758,6 +1043,12 @@ async function compileTracked(entryPath, opts, frontendInputs, warningSink) {
|
|
|
758
1043
|
if (earlyCacheOptions === null) {
|
|
759
1044
|
throw new InternalCompilerError("executable cache hit without executable cache options");
|
|
760
1045
|
}
|
|
1046
|
+
// A cached build repeats its performance warning (SC6101): the code it
|
|
1047
|
+
// names is just as untyped as when it was built.
|
|
1048
|
+
if (warningSink !== undefined && earlyHit.performance !== undefined) {
|
|
1049
|
+
warningSink.warnings = earlyHit.performance;
|
|
1050
|
+
warningSink.sourceTexts = new Map();
|
|
1051
|
+
}
|
|
761
1052
|
const executableCacheOptions = earlyCacheOptions;
|
|
762
1053
|
// Route/proof metadata is independently evictable. A full-compiler
|
|
763
1054
|
// fallback that still finds the validated payload repairs that lightweight
|
|
@@ -780,39 +1071,64 @@ async function compileTracked(entryPath, opts, frontendInputs, warningSink) {
|
|
|
780
1071
|
...(earlyHit.irPath === undefined ? {} : { irPath: earlyHit.irPath }),
|
|
781
1072
|
};
|
|
782
1073
|
}
|
|
783
|
-
|
|
1074
|
+
// The build's private copies of the cached LLVM text and IR (BuildSources).
|
|
1075
|
+
const hitSources = {
|
|
1076
|
+
llvmPath: earlyHit.llvmPath,
|
|
1077
|
+
llvmSourcePath: earlyHit.llvmSourcePath ?? earlyHit.llvmPath,
|
|
1078
|
+
irPath: earlyHit.irPath,
|
|
1079
|
+
irSourcePath: earlyHit.irSourcePath,
|
|
1080
|
+
llvmPathCurrent: earlyHit.llvmPathCurrent,
|
|
1081
|
+
irPathCurrent: earlyHit.irPathCurrent,
|
|
1082
|
+
};
|
|
1083
|
+
// What the native build compiles and the cache publishes: hitSources, or their staged copies.
|
|
1084
|
+
let nativeSources = hitSources;
|
|
1085
|
+
let stagedDir = null;
|
|
1086
|
+
let nativeInputPath = hitSources.llvmSourcePath;
|
|
784
1087
|
let nativeProgramObject = null;
|
|
785
1088
|
const useRuntimePack = opts.nativeProgramObject === true ||
|
|
786
1089
|
usesPrecompiledRuntimePack(opts, earlyHit.native.backend);
|
|
787
|
-
|
|
788
|
-
if (
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
1090
|
+
try {
|
|
1091
|
+
if (useRuntimePack) {
|
|
1092
|
+
if (earlyHit.native.backend !== "llvm") {
|
|
1093
|
+
throw new InternalCompilerError("native program-object cache hit restored a non-LLVM translation unit");
|
|
1094
|
+
}
|
|
1095
|
+
try {
|
|
1096
|
+
nativeProgramObject = await emitNativeProgramObject(entryPath, opts,
|
|
1097
|
+
// A large program's LLVM exceeds the engine's string limit as one
|
|
1098
|
+
// string; the emitter takes it in parts, as on a cold build.
|
|
1099
|
+
await readTextParts(hitSources.llvmSourcePath), profile);
|
|
1100
|
+
nativeInputPath = nativeProgramObject.linkPath;
|
|
1101
|
+
}
|
|
1102
|
+
catch (err) {
|
|
1103
|
+
if (!(err instanceof NativeCodegenError))
|
|
1104
|
+
throw err;
|
|
1105
|
+
return {
|
|
1106
|
+
ok: false,
|
|
1107
|
+
diagnostics: [nativeCodegenDiag(err.diagnosticCode, err.message, entryPath)],
|
|
1108
|
+
sourceTexts: new Map(),
|
|
1109
|
+
};
|
|
1110
|
+
}
|
|
794
1111
|
}
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
diagnostics: [nativeCodegenDiag(err.diagnosticCode, err.message, entryPath)],
|
|
801
|
-
sourceTexts: new Map(),
|
|
802
|
-
};
|
|
1112
|
+
else {
|
|
1113
|
+
const staged = await stageDriverBuildSources(hitSources);
|
|
1114
|
+
stagedDir = staged.dir;
|
|
1115
|
+
nativeSources = staged.sources;
|
|
1116
|
+
nativeInputPath = nativeSources.llvmSourcePath;
|
|
803
1117
|
}
|
|
804
|
-
}
|
|
805
|
-
try {
|
|
806
1118
|
await compileExecutableNative(earlyHit.native, nativeInputPath, opts.outPath, opts.sanitize ?? false, ffi, opts.windowsSubsystem, opts.strip, null, nativeProgramObject?.dependencies, opts.nativeProgramObject === true
|
|
807
1119
|
? undefined
|
|
808
1120
|
: async ({ dependencies }) => {
|
|
809
1121
|
await publishEarlyExecutableCache(cacheRoot, executableCacheOptions, {
|
|
810
1122
|
...earlyHit,
|
|
1123
|
+
llvmPath: nativeSources.llvmSourcePath,
|
|
1124
|
+
...(nativeSources.irSourcePath === undefined
|
|
1125
|
+
? {}
|
|
1126
|
+
: { irPath: nativeSources.irSourcePath }),
|
|
811
1127
|
executableRestored: true,
|
|
812
1128
|
nativeDependencies: dependencies,
|
|
813
1129
|
frontend: earlyHit.frontend,
|
|
814
1130
|
});
|
|
815
|
-
}, nativeProgramObject?.partitionPaths, profile?.generate !== undefined);
|
|
1131
|
+
}, nativeProgramObject?.partitionPaths, profile?.generate !== undefined, hitSources.llvmPath);
|
|
816
1132
|
if (nativeProgramObject !== null && opts.nativeProgramObject === true) {
|
|
817
1133
|
await rename(nativeProgramObject.linkPath, nativeProgramObject.artifactPath);
|
|
818
1134
|
}
|
|
@@ -840,6 +1156,10 @@ async function compileTracked(entryPath, opts, frontendInputs, warningSink) {
|
|
|
840
1156
|
if (nativeProgramObject !== null) {
|
|
841
1157
|
await removeNativeProgramObject(nativeProgramObject.linkPath, nativeProgramObject.partitionPaths);
|
|
842
1158
|
}
|
|
1159
|
+
if (stagedDir === null)
|
|
1160
|
+
await installBuildSources(hitSources);
|
|
1161
|
+
else
|
|
1162
|
+
await rm(stagedDir, { recursive: true, force: true });
|
|
843
1163
|
}
|
|
844
1164
|
await pruneBuildCache(cacheRoot);
|
|
845
1165
|
return {
|
|
@@ -857,10 +1177,22 @@ async function compileTracked(entryPath, opts, frontendInputs, warningSink) {
|
|
|
857
1177
|
};
|
|
858
1178
|
}
|
|
859
1179
|
timing("executable-cache-miss");
|
|
860
|
-
const prepared =
|
|
1180
|
+
const prepared = frontendProcess?.started === true
|
|
1181
|
+
? await prepareExecutableInputInChild(frontendProcess, entryPath, opts, ffi, buildPlatform, timing, { start: timingStart, previous: Date.now() }, frontendInputs, warningSink)
|
|
1182
|
+
: await prepareExecutableInput(entryPath, opts, ffi, buildPlatform, timing, warningSink);
|
|
861
1183
|
if ("ok" in prepared)
|
|
862
1184
|
return prepared;
|
|
863
|
-
const
|
|
1185
|
+
const buildSources = {
|
|
1186
|
+
llvmPath: prepared.llvmPath,
|
|
1187
|
+
llvmSourcePath: prepared.llvmSourcePath,
|
|
1188
|
+
irPath: prepared.irPath,
|
|
1189
|
+
irSourcePath: prepared.irSourcePath,
|
|
1190
|
+
};
|
|
1191
|
+
const { llvmSource, llvmPath, irPath } = prepared;
|
|
1192
|
+
const { nativeFeatures, programSplit, sourceTexts } = prepared;
|
|
1193
|
+
// What the native build compiles and the cache publishes: buildSources, or their staged copies.
|
|
1194
|
+
let { llvmSourcePath, irSourcePath } = buildSources;
|
|
1195
|
+
let stagedDir = null;
|
|
864
1196
|
const backend = "llvm";
|
|
865
1197
|
await mkdir(dirname(opts.outPath), { recursive: true });
|
|
866
1198
|
if (earlyCacheOptions === null) {
|
|
@@ -876,8 +1208,9 @@ async function compileTracked(entryPath, opts, frontendInputs, warningSink) {
|
|
|
876
1208
|
throw new InternalCompilerError("native program-object validation requires the LLVM backend");
|
|
877
1209
|
}
|
|
878
1210
|
try {
|
|
879
|
-
nativeProgramObject = await emitNativeProgramObject(entryPath, opts, llvmSource,
|
|
1211
|
+
nativeProgramObject = await emitNativeProgramObject(entryPath, opts, llvmSource, profile);
|
|
880
1212
|
timing("native-object");
|
|
1213
|
+
await recordEarlyExecutableNativeBuild(cacheRoot, executableCacheOptions).catch(() => undefined);
|
|
881
1214
|
}
|
|
882
1215
|
catch (err) {
|
|
883
1216
|
if (!(err instanceof NativeCodegenError))
|
|
@@ -889,23 +1222,39 @@ async function compileTracked(entryPath, opts, frontendInputs, warningSink) {
|
|
|
889
1222
|
};
|
|
890
1223
|
}
|
|
891
1224
|
}
|
|
892
|
-
|
|
1225
|
+
else {
|
|
1226
|
+
const staged = await stageDriverBuildSources(buildSources);
|
|
1227
|
+
stagedDir = staged.dir;
|
|
1228
|
+
({ llvmSourcePath, irSourcePath } = staged.sources);
|
|
1229
|
+
}
|
|
1230
|
+
await compileExecutableNative(nativeFeatures, nativeProgramObject?.linkPath ?? llvmSourcePath, opts.outPath, opts.sanitize ?? false, ffi, opts.windowsSubsystem, opts.strip, programSplit, nativeProgramObject?.dependencies, opts.nativeProgramObject === true
|
|
893
1231
|
? undefined
|
|
894
1232
|
: async ({ dependencies }) => {
|
|
895
1233
|
await publishEarlyExecutableCache(cacheRoot, executableCacheOptions, {
|
|
896
|
-
llvmPath,
|
|
1234
|
+
llvmPath: llvmSourcePath,
|
|
897
1235
|
native: nativeFeatures,
|
|
898
1236
|
executableRestored: true,
|
|
899
1237
|
nativeDependencies: dependencies,
|
|
900
1238
|
frontend: frontendInputs.snapshot(),
|
|
901
|
-
...(
|
|
1239
|
+
...(irSourcePath === undefined ? {} : { irPath: irSourcePath }),
|
|
1240
|
+
...performanceWarnings(warningSink),
|
|
902
1241
|
});
|
|
903
1242
|
publishedExecutable = true;
|
|
904
|
-
}, nativeProgramObject?.partitionPaths, profile?.generate !== undefined);
|
|
1243
|
+
}, nativeProgramObject?.partitionPaths, profile?.generate !== undefined, llvmPath);
|
|
905
1244
|
timing("native-link");
|
|
906
1245
|
if (nativeProgramObject !== null && opts.nativeProgramObject === true) {
|
|
907
1246
|
await rename(nativeProgramObject.linkPath, nativeProgramObject.artifactPath);
|
|
908
1247
|
}
|
|
1248
|
+
if (!publishedExecutable) {
|
|
1249
|
+
await publishEarlyExecutableCache(cacheRoot, executableCacheOptions, {
|
|
1250
|
+
llvmPath: llvmSourcePath,
|
|
1251
|
+
native: nativeFeatures,
|
|
1252
|
+
executableRestored: false,
|
|
1253
|
+
frontend: frontendInputs.snapshot(),
|
|
1254
|
+
...(irSourcePath === undefined ? {} : { irPath: irSourcePath }),
|
|
1255
|
+
...performanceWarnings(warningSink),
|
|
1256
|
+
}).catch(() => undefined);
|
|
1257
|
+
}
|
|
909
1258
|
}
|
|
910
1259
|
catch (err) {
|
|
911
1260
|
if (err instanceof RuntimePackError) {
|
|
@@ -926,15 +1275,10 @@ async function compileTracked(entryPath, opts, frontendInputs, warningSink) {
|
|
|
926
1275
|
if (nativeProgramObject !== null) {
|
|
927
1276
|
await removeNativeProgramObject(nativeProgramObject.linkPath, nativeProgramObject.partitionPaths);
|
|
928
1277
|
}
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
native: nativeFeatures,
|
|
934
|
-
executableRestored: false,
|
|
935
|
-
frontend: frontendInputs.snapshot(),
|
|
936
|
-
...(irPath === undefined ? {} : { irPath }),
|
|
937
|
-
}).catch(() => undefined);
|
|
1278
|
+
if (stagedDir === null)
|
|
1279
|
+
await installBuildSources(buildSources);
|
|
1280
|
+
else
|
|
1281
|
+
await rm(stagedDir, { recursive: true, force: true });
|
|
938
1282
|
}
|
|
939
1283
|
await pruneBuildCache(cacheRoot);
|
|
940
1284
|
timing("complete");
|
|
@@ -974,6 +1318,7 @@ function libraryNativeFeatures(mod, backend) {
|
|
|
974
1318
|
copying: features.copying,
|
|
975
1319
|
textDecoderLegacy: features.legacyTextDecoder,
|
|
976
1320
|
dynInvoke: features.dynInvoke,
|
|
1321
|
+
...(features.dynBuffer ? { dynBuffer: true } : {}),
|
|
977
1322
|
...(features.dynTier ? { dynTier: true } : {}),
|
|
978
1323
|
...(mod.lib?.identity !== undefined ? { buildId: mod.lib.identity.buildId } : {}),
|
|
979
1324
|
};
|
|
@@ -1048,6 +1393,7 @@ async function compileLibraryNative(profile, llvmPath, archivePath, sanitize, fe
|
|
|
1048
1393
|
copying: features.copying,
|
|
1049
1394
|
textDecoderLegacy: features.textDecoderLegacy,
|
|
1050
1395
|
dynInvoke: features.dynInvoke,
|
|
1396
|
+
...(features.dynBuffer === true ? { dynBuffer: true } : {}),
|
|
1051
1397
|
...(features.dynTier === true ? { dynTier: true } : {}),
|
|
1052
1398
|
};
|
|
1053
1399
|
if (packTarget !== null)
|
|
@@ -1089,7 +1435,7 @@ async function emitSemanticLibraryHit(hit, profile, opts, archivePath, cacheRoot
|
|
|
1089
1435
|
let irPath;
|
|
1090
1436
|
if (opts.emitIr) {
|
|
1091
1437
|
irPath = join(opts.outDir, `${stem}.lib.ir.json`);
|
|
1092
|
-
await writeTextParts(irPath, serializeModuleParts(mod));
|
|
1438
|
+
await writeTextParts(irPath, serializeModuleParts(mod, compilerOwnedFileRoots()));
|
|
1093
1439
|
}
|
|
1094
1440
|
await compileLibraryNative(profile, llvmPath, archivePath, opts.sanitize ?? false, hit.native);
|
|
1095
1441
|
timing("native-archive");
|
|
@@ -1326,7 +1672,7 @@ async function compileLibraryTracked(opts, frontendInputs) {
|
|
|
1326
1672
|
let irPath;
|
|
1327
1673
|
if (opts.emitIr) {
|
|
1328
1674
|
irPath = join(opts.outDir, `${stem}.lib.ir.json`);
|
|
1329
|
-
await writeTextParts(irPath, serializeModuleParts(mod));
|
|
1675
|
+
await writeTextParts(irPath, serializeModuleParts(mod, compilerOwnedFileRoots()));
|
|
1330
1676
|
}
|
|
1331
1677
|
const nativeFeatures = libraryNativeFeatures(mod, profile.emission);
|
|
1332
1678
|
await compileLibraryNative(profile, llvmPath, archivePath, opts.sanitize ?? false, nativeFeatures);
|