@scriptc/compiler 0.4.7 → 0.4.8
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/node-fallback/child_process.d.ts +71 -22
- package/ambient/node-fallback/crypto.d.ts +15 -7
- package/ambient/node-fallback/events.d.ts +23 -5
- package/ambient/node-fallback/fs.d.ts +3 -2
- package/ambient/node-fallback/http.d.ts +23 -17
- package/ambient/node-fallback/https.d.ts +5 -2
- package/ambient/node-fallback/net.d.ts +6 -0
- package/ambient/node-fallback/os.d.ts +11 -1
- package/ambient/node-fallback/path-posix.d.ts +6 -0
- package/ambient/node-fallback/path-win32.d.ts +5 -0
- package/ambient/node-fallback/path.d.ts +2 -0
- package/ambient/node-fallback/zlib.d.ts +31 -2
- package/ambient/scriptc-node-fallback.d.ts +37 -7
- package/ambient/scriptc.d.ts +7 -2
- package/dist/backend/executable-features.js +11 -3
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/library-pack.d.ts +6 -0
- package/dist/backend/library-pack.js +17 -6
- package/dist/backend/library-pack.js.map +1 -1
- package/dist/backend/library-pack.test.d.ts +1 -0
- package/dist/backend/library-pack.test.js +28 -0
- package/dist/backend/library-pack.test.js.map +1 -0
- package/dist/backend/linker.d.ts +9 -2
- package/dist/backend/linker.js +190 -32
- package/dist/backend/linker.js.map +1 -1
- package/dist/backend/lld.d.ts +8 -4
- package/dist/backend/lld.js +19 -13
- package/dist/backend/lld.js.map +1 -1
- package/dist/backend/lld.test.js +3 -1
- package/dist/backend/lld.test.js.map +1 -1
- package/dist/backend/llvm/alloc.d.ts +15 -2
- package/dist/backend/llvm/alloc.js +172 -36
- package/dist/backend/llvm/alloc.js.map +1 -1
- package/dist/backend/llvm/alloc.test.js +69 -1
- package/dist/backend/llvm/alloc.test.js.map +1 -1
- package/dist/backend/llvm/arenas.d.ts +17 -4
- package/dist/backend/llvm/arenas.js +105 -10
- package/dist/backend/llvm/arenas.js.map +1 -1
- package/dist/backend/llvm/arenas.test.js +229 -0
- package/dist/backend/llvm/arenas.test.js.map +1 -1
- package/dist/backend/llvm/bytes-alias.js +10 -1
- package/dist/backend/llvm/bytes-alias.js.map +1 -1
- package/dist/backend/llvm/bytes-headers.js +6 -0
- package/dist/backend/llvm/bytes-headers.js.map +1 -1
- package/dist/backend/llvm/bytes-loop-versions.test.js +25 -0
- package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.js +10 -0
- package/dist/backend/llvm/call-lifetimes.js.map +1 -1
- package/dist/backend/llvm/classes.d.ts +16 -9
- package/dist/backend/llvm/classes.js +142 -37
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/classes.test.js +42 -0
- package/dist/backend/llvm/classes.test.js.map +1 -1
- package/dist/backend/llvm/cpu-dispatch.d.ts +15 -5
- package/dist/backend/llvm/cpu-dispatch.js +31 -7
- package/dist/backend/llvm/cpu-dispatch.js.map +1 -1
- package/dist/backend/llvm/dyn.d.ts +12 -3
- package/dist/backend/llvm/dyn.js +31 -7
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emit-function.js +67 -4
- package/dist/backend/llvm/emit-function.js.map +1 -1
- package/dist/backend/llvm/emit-module.js +90 -39
- package/dist/backend/llvm/emit-module.js.map +1 -1
- package/dist/backend/llvm/emit-module.test.d.ts +1 -0
- package/dist/backend/llvm/emit-module.test.js +52 -0
- package/dist/backend/llvm/emit-module.test.js.map +1 -0
- package/dist/backend/llvm/emit-statements.js +99 -15
- package/dist/backend/llvm/emit-statements.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +113 -8
- package/dist/backend/llvm/emitter.js +438 -67
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +31 -3
- package/dist/backend/llvm/emitter.test.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +19 -1
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.js +16 -1
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-calls.js +18 -2
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.js +31 -10
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +31 -3
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-records.d.ts +1 -1
- package/dist/backend/llvm/expr-records.js +124 -56
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +17 -0
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/js-groups.d.ts +21 -0
- package/dist/backend/llvm/js-groups.js +277 -0
- package/dist/backend/llvm/js-groups.js.map +1 -0
- package/dist/backend/llvm/js-ic.d.ts +19 -1
- package/dist/backend/llvm/js-ic.js +96 -23
- package/dist/backend/llvm/js-ic.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +132 -1
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-network.js +33 -6
- package/dist/backend/llvm/lib-network.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +44 -3
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +69 -2
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.test.js +32 -0
- package/dist/backend/llvm/local-union-storage.test.js.map +1 -1
- package/dist/backend/llvm/loop-state.js +7 -2
- package/dist/backend/llvm/loop-state.js.map +1 -1
- package/dist/backend/llvm/map-entry-fusion.d.ts +8 -0
- package/dist/backend/llvm/map-entry-fusion.js +3 -3
- package/dist/backend/llvm/map-entry-fusion.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.test.js +6 -6
- package/dist/backend/llvm/map-number-lookup.test.js.map +1 -1
- package/dist/backend/llvm/nullable-unions.js +7 -6
- package/dist/backend/llvm/nullable-unions.js.map +1 -1
- package/dist/backend/llvm/nullable-unions.test.js +4 -1
- package/dist/backend/llvm/nullable-unions.test.js.map +1 -1
- package/dist/backend/llvm/receivers.js +3 -0
- package/dist/backend/llvm/receivers.js.map +1 -1
- package/dist/backend/llvm/record-entry-fusion.d.ts +32 -0
- package/dist/backend/llvm/record-entry-fusion.js +217 -0
- package/dist/backend/llvm/record-entry-fusion.js.map +1 -0
- package/dist/backend/llvm/record-results.d.ts +5 -2
- package/dist/backend/llvm/record-results.js +13 -12
- package/dist/backend/llvm/record-results.js.map +1 -1
- package/dist/backend/llvm/record-views.js +12 -6
- package/dist/backend/llvm/record-views.js.map +1 -1
- package/dist/backend/llvm/reference-effects.js +1 -0
- package/dist/backend/llvm/reference-effects.js.map +1 -1
- package/dist/backend/llvm/reference-writes.js +3 -0
- package/dist/backend/llvm/reference-writes.js.map +1 -1
- package/dist/backend/llvm/region-ir.js +1 -0
- package/dist/backend/llvm/region-ir.js.map +1 -1
- package/dist/backend/llvm/region-sites.d.ts +18 -0
- package/dist/backend/llvm/region-sites.js +79 -1
- package/dist/backend/llvm/region-sites.js.map +1 -1
- package/dist/backend/llvm/runtime-registries.test.js +53 -6
- package/dist/backend/llvm/runtime-registries.test.js.map +1 -1
- package/dist/backend/llvm/serialized-ir-emission.test.js +3 -1
- package/dist/backend/llvm/serialized-ir-emission.test.js.map +1 -1
- package/dist/backend/llvm/shapes.d.ts +33 -3
- package/dist/backend/llvm/shapes.js +183 -13
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/stack-objects.d.ts +1 -2
- package/dist/backend/llvm/stack-objects.js +8 -5
- package/dist/backend/llvm/stack-objects.js.map +1 -1
- package/dist/backend/llvm/walkers.d.ts +12 -0
- package/dist/backend/llvm/walkers.js +46 -2
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/may-throw.js +12 -2
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/may-throw.test.js +13 -0
- package/dist/backend/may-throw.test.js.map +1 -1
- package/dist/backend/native/contracts.d.ts +48 -8
- package/dist/backend/native/executable.js +55 -13
- package/dist/backend/native/executable.js.map +1 -1
- package/dist/backend/native/helper-identity-record.d.ts +11 -0
- package/dist/backend/native/helper-identity-record.js +76 -0
- package/dist/backend/native/helper-identity-record.js.map +1 -0
- package/dist/backend/native/helper-identity-record.test.d.ts +1 -0
- package/dist/backend/native/helper-identity-record.test.js +101 -0
- package/dist/backend/native/helper-identity-record.test.js.map +1 -0
- package/dist/backend/native/library.js +9 -1
- package/dist/backend/native/library.js.map +1 -1
- package/dist/backend/native/runtime-inputs.js +4 -1
- package/dist/backend/native/runtime-inputs.js.map +1 -1
- package/dist/backend/native/vendor.d.ts +1 -1
- package/dist/backend/native/vendor.js +1 -1
- package/dist/backend/native/vendor.js.map +1 -1
- package/dist/backend/native-codegen-core.d.ts +13 -10
- package/dist/backend/native-codegen-core.js +26 -13
- package/dist/backend/native-codegen-core.js.map +1 -1
- package/dist/backend/native-codegen.js +27 -8
- package/dist/backend/native-codegen.js.map +1 -1
- package/dist/backend/native-codegen.test.js +110 -14
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +37 -8
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/runtime-pack-core.d.ts +17 -2
- package/dist/backend/runtime-pack-core.js +18 -3
- package/dist/backend/runtime-pack-core.js.map +1 -1
- package/dist/backend/runtime-pack-targets.test.js +1 -1
- package/dist/backend/runtime-pack-targets.test.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +211 -2
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/tree-classes.d.ts +42 -0
- package/dist/backend/tree-classes.js +723 -0
- package/dist/backend/tree-classes.js.map +1 -0
- package/dist/backend/tree-classes.test.d.ts +1 -0
- package/dist/backend/tree-classes.test.js +338 -0
- package/dist/backend/tree-classes.test.js.map +1 -0
- package/dist/backend/vendor-archives.d.ts +5 -1
- package/dist/backend/vendor-archives.js +51 -7
- package/dist/backend/vendor-archives.js.map +1 -1
- package/dist/backend/vendor-inputs.d.ts +25 -4
- package/dist/backend/vendor-inputs.js +68 -4
- package/dist/backend/vendor-inputs.js.map +1 -1
- package/dist/backend/vendor-inputs.test.js +35 -1
- package/dist/backend/vendor-inputs.test.js.map +1 -1
- package/dist/backend/warm-cache.js +1 -1
- package/dist/backend/warm-cache.js.map +1 -1
- package/dist/compat/fetch-profile.js +2 -2
- package/dist/coverage/report.js +47 -0
- package/dist/coverage/report.js.map +1 -1
- package/dist/coverage/surface-manifest.js +1 -1
- package/dist/diagnostics/codes.d.ts +8 -0
- package/dist/diagnostics/codes.js +8 -0
- package/dist/diagnostics/codes.js.map +1 -1
- package/dist/diagnostics/diagnostic.d.ts +27 -9
- package/dist/diagnostics/diagnostic.js +60 -19
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/diagnostics/envelope.d.ts +18 -0
- package/dist/diagnostics/envelope.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +21 -2
- package/dist/executable/executable-cache.js +21 -1
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +123 -1
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/executable/prepare.js +199 -248
- package/dist/executable/prepare.js.map +1 -1
- package/dist/frontend/analysis.js +200 -18
- package/dist/frontend/analysis.js.map +1 -1
- package/dist/frontend/builtin-modules.d.ts +4 -0
- package/dist/frontend/builtin-modules.js +10 -0
- package/dist/frontend/builtin-modules.js.map +1 -1
- package/dist/frontend/early-errors.d.ts +12 -2
- package/dist/frontend/early-errors.js +535 -4
- package/dist/frontend/early-errors.js.map +1 -1
- package/dist/frontend/early-errors.test.js +165 -0
- package/dist/frontend/early-errors.test.js.map +1 -1
- package/dist/frontend/inferred-js-diagnostics.test.js +65 -0
- package/dist/frontend/inferred-js-diagnostics.test.js.map +1 -1
- package/dist/frontend/jsx-opinion-sites.test.d.ts +1 -0
- package/dist/frontend/jsx-opinion-sites.test.js +86 -0
- package/dist/frontend/jsx-opinion-sites.test.js.map +1 -0
- package/dist/frontend/lib-exports.d.ts +23 -4
- package/dist/frontend/lib-exports.js +98 -26
- package/dist/frontend/lib-exports.js.map +1 -1
- package/dist/frontend/lowering/binding-analysis.js +21 -3
- package/dist/frontend/lowering/binding-analysis.js.map +1 -1
- package/dist/frontend/lowering/buffers.d.ts +8 -0
- package/dist/frontend/lowering/buffers.js +43 -0
- package/dist/frontend/lowering/buffers.js.map +1 -0
- package/dist/frontend/lowering/builtin-calls.js +4 -0
- package/dist/frontend/lowering/builtin-calls.js.map +1 -1
- package/dist/frontend/lowering/builtin-namespaces.d.ts +3 -2
- package/dist/frontend/lowering/builtin-namespaces.js +24 -3
- package/dist/frontend/lowering/builtin-namespaces.js.map +1 -1
- package/dist/frontend/lowering/builtin-statics.d.ts +24 -0
- package/dist/frontend/lowering/builtin-statics.js +407 -0
- package/dist/frontend/lowering/builtin-statics.js.map +1 -0
- package/dist/frontend/lowering/builtins/arguments.d.ts +4 -0
- package/dist/frontend/lowering/builtins/arguments.js +12 -0
- package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
- package/dist/frontend/lowering/builtins/atomics.d.ts +6 -1
- package/dist/frontend/lowering/builtins/atomics.js +87 -1
- package/dist/frontend/lowering/builtins/atomics.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-methods.js +2 -2
- package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-sync.d.ts +13 -0
- package/dist/frontend/lowering/builtins/child-process-sync.js +1 -13
- package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process.d.ts +10 -4
- package/dist/frontend/lowering/builtins/child-process.js +560 -27
- package/dist/frontend/lowering/builtins/child-process.js.map +1 -1
- package/dist/frontend/lowering/builtins/compression.d.ts +2 -2
- package/dist/frontend/lowering/builtins/compression.js +41 -21
- package/dist/frontend/lowering/builtins/compression.js.map +1 -1
- package/dist/frontend/lowering/builtins/constants.js +7 -2
- package/dist/frontend/lowering/builtins/constants.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +1 -0
- package/dist/frontend/lowering/builtins/filesystem-calls.js +28 -2
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/json.js +4 -0
- package/dist/frontend/lowering/builtins/json.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-calls.js +3 -1
- package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/numbers.d.ts +4 -1
- package/dist/frontend/lowering/builtins/numbers.js +10 -2
- package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
- package/dist/frontend/lowering/builtins/operating-system.d.ts +6 -3
- package/dist/frontend/lowering/builtins/operating-system.js +96 -16
- package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
- package/dist/frontend/lowering/builtins/process.d.ts +2 -2
- package/dist/frontend/lowering/builtins/process.js +103 -8
- package/dist/frontend/lowering/builtins/process.js.map +1 -1
- package/dist/frontend/lowering/builtins/promises.js +169 -8
- package/dist/frontend/lowering/builtins/promises.js.map +1 -1
- package/dist/frontend/lowering/builtins/properties.js +6 -2
- package/dist/frontend/lowering/builtins/properties.js.map +1 -1
- package/dist/frontend/lowering/builtins/readline.d.ts +6 -4
- package/dist/frontend/lowering/builtins/readline.js +180 -36
- package/dist/frontend/lowering/builtins/readline.js.map +1 -1
- package/dist/frontend/lowering/builtins/url.js +35 -12
- package/dist/frontend/lowering/builtins/url.js.map +1 -1
- package/dist/frontend/lowering/builtins/webassembly.js +2 -0
- package/dist/frontend/lowering/builtins/webassembly.js.map +1 -1
- package/dist/frontend/lowering/call-arguments.d.ts +10 -0
- package/dist/frontend/lowering/call-arguments.js +37 -2
- package/dist/frontend/lowering/call-arguments.js.map +1 -1
- package/dist/frontend/lowering/call-signatures.d.ts +10 -0
- package/dist/frontend/lowering/call-signatures.js +103 -0
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/class-construction.d.ts +14 -2
- package/dist/frontend/lowering/class-construction.js +99 -5
- package/dist/frontend/lowering/class-construction.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +9 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js +1283 -1030
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js +158 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
- package/dist/frontend/lowering/class-prototypes.js +20 -15
- package/dist/frontend/lowering/class-prototypes.js.map +1 -1
- package/dist/frontend/lowering/class-runtime-statics.d.ts +8 -0
- package/dist/frontend/lowering/class-runtime-statics.js +20 -1
- package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
- package/dist/frontend/lowering/class-unions.js +21 -4
- package/dist/frontend/lowering/class-unions.js.map +1 -1
- package/dist/frontend/lowering/coercions/function-adapters.js +9 -0
- package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
- package/dist/frontend/lowering/coercions/state.d.ts +8 -0
- package/dist/frontend/lowering/coercions/state.js +17 -0
- package/dist/frontend/lowering/coercions/state.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural-plans.js +20 -5
- package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural.js +10 -1
- package/dist/frontend/lowering/coercions/structural.js.map +1 -1
- package/dist/frontend/lowering/coercions/unions.d.ts +2 -1
- package/dist/frontend/lowering/coercions/unions.js +54 -10
- package/dist/frontend/lowering/coercions/unions.js.map +1 -1
- package/dist/frontend/lowering/constructor-returns.d.ts +23 -2
- package/dist/frontend/lowering/constructor-returns.js +284 -58
- package/dist/frontend/lowering/constructor-returns.js.map +1 -1
- package/dist/frontend/lowering/containers/array-callbacks.js +156 -62
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-construction.js +21 -3
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-from-async.js +139 -3
- package/dist/frontend/lowering/containers/array-from-async.js.map +1 -1
- package/dist/frontend/lowering/containers/array-iteration.d.ts +14 -4
- package/dist/frontend/lowering/containers/array-iteration.js +24 -7
- package/dist/frontend/lowering/containers/array-iteration.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.js +14 -11
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.d.ts +6 -0
- package/dist/frontend/lowering/containers/bytes.js +446 -86
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/callback-arguments.d.ts +5 -0
- package/dist/frontend/lowering/containers/callback-arguments.js +21 -12
- package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-grouping.js +421 -2
- package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-methods.js +52 -17
- package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/iterator-helpers.d.ts +23 -0
- package/dist/frontend/lowering/containers/iterator-helpers.js +176 -10
- package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -1
- package/dist/frontend/lowering/containers/string-and-regexp.d.ts +5 -2
- package/dist/frontend/lowering/containers/string-and-regexp.js +45 -11
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/crypto-tables.d.ts +3 -3
- package/dist/frontend/lowering/crypto-tables.js +5 -5
- package/dist/frontend/lowering/dispatch-sites.js +3 -0
- package/dist/frontend/lowering/dispatch-sites.js.map +1 -1
- package/dist/frontend/lowering/divergences.d.ts +40 -0
- package/dist/frontend/lowering/divergences.js +239 -20
- package/dist/frontend/lowering/divergences.js.map +1 -1
- package/dist/frontend/lowering/effect-free.d.ts +12 -0
- package/dist/frontend/lowering/effect-free.js +44 -0
- package/dist/frontend/lowering/effect-free.js.map +1 -0
- package/dist/frontend/lowering/expressions/array-literals.d.ts +10 -0
- 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 +115 -5
- package/dist/frontend/lowering/expressions/binary.js.map +1 -1
- package/dist/frontend/lowering/expressions/element-access.js +151 -7
- package/dist/frontend/lowering/expressions/element-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/hosted-narrowing.d.ts +15 -0
- package/dist/frontend/lowering/expressions/hosted-narrowing.js +54 -1
- package/dist/frontend/lowering/expressions/hosted-narrowing.js.map +1 -1
- package/dist/frontend/lowering/expressions/identifiers.js +31 -2
- package/dist/frontend/lowering/expressions/identifiers.js.map +1 -1
- package/dist/frontend/lowering/expressions/narrowing.d.ts +3 -0
- package/dist/frontend/lowering/expressions/narrowing.js +175 -22
- package/dist/frontend/lowering/expressions/narrowing.js.map +1 -1
- package/dist/frontend/lowering/expressions/object-literals.js +173 -11
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/optional-chains.js +5 -1
- package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
- package/dist/frontend/lowering/expressions/property-access.d.ts +8 -0
- package/dist/frontend/lowering/expressions/property-access.js +379 -109
- package/dist/frontend/lowering/expressions/property-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/relational.js +237 -7
- package/dist/frontend/lowering/expressions/relational.js.map +1 -1
- package/dist/frontend/lowering/expressions/typeof.js +8 -0
- package/dist/frontend/lowering/expressions/typeof.js.map +1 -1
- package/dist/frontend/lowering/expressions/union-fields.d.ts +20 -1
- package/dist/frontend/lowering/expressions/union-fields.js +103 -13
- package/dist/frontend/lowering/expressions/union-fields.js.map +1 -1
- package/dist/frontend/lowering/expressions/updates.js +74 -55
- package/dist/frontend/lowering/expressions/updates.js.map +1 -1
- package/dist/frontend/lowering/function-returns.js +37 -10
- package/dist/frontend/lowering/function-returns.js.map +1 -1
- package/dist/frontend/lowering/general-streams.js +5 -0
- package/dist/frontend/lowering/general-streams.js.map +1 -1
- package/dist/frontend/lowering/generator-delegation.d.ts +15 -7
- package/dist/frontend/lowering/generator-delegation.js +301 -118
- package/dist/frontend/lowering/generator-delegation.js.map +1 -1
- package/dist/frontend/lowering/generic-functions.d.ts +27 -1
- package/dist/frontend/lowering/generic-functions.js +432 -18
- package/dist/frontend/lowering/generic-functions.js.map +1 -1
- package/dist/frontend/lowering/global-function-values.d.ts +25 -0
- package/dist/frontend/lowering/global-function-values.js +193 -0
- package/dist/frontend/lowering/global-function-values.js.map +1 -0
- package/dist/frontend/lowering/global-values.d.ts +6 -4
- package/dist/frontend/lowering/global-values.js +24 -10
- package/dist/frontend/lowering/global-values.js.map +1 -1
- package/dist/frontend/lowering/host-global-values.d.ts +31 -0
- package/dist/frontend/lowering/host-global-values.js +121 -0
- package/dist/frontend/lowering/host-global-values.js.map +1 -0
- package/dist/frontend/lowering/host-globals.d.ts +74 -0
- package/dist/frontend/lowering/host-globals.js +344 -0
- package/dist/frontend/lowering/host-globals.js.map +1 -0
- package/dist/frontend/lowering/http2-constants.js +1 -1
- package/dist/frontend/lowering/iterator-adapters.js +46 -17
- package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
- package/dist/frontend/lowering/iterator-prototype.d.ts +30 -0
- package/dist/frontend/lowering/iterator-prototype.js +160 -0
- package/dist/frontend/lowering/iterator-prototype.js.map +1 -0
- package/dist/frontend/lowering/key-order-witness.js +43 -22
- package/dist/frontend/lowering/key-order-witness.js.map +1 -1
- package/dist/frontend/lowering/key-order-witness.test.js +1 -0
- package/dist/frontend/lowering/key-order-witness.test.js.map +1 -1
- package/dist/frontend/lowering/lib-boundary.js +11 -3
- package/dist/frontend/lowering/lib-boundary.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.js +30 -15
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-async-iteration.d.ts +11 -0
- package/dist/frontend/lowering/lower-async-iteration.js +15 -0
- package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
- package/dist/frontend/lowering/lower-builtin-values.js +11 -1
- package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.d.ts +25 -0
- package/dist/frontend/lowering/lower-calls.js +929 -227
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.test.js +59 -16
- package/dist/frontend/lowering/lower-calls.test.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +20 -0
- package/dist/frontend/lowering/lower-classes.js +468 -44
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-event-emitter.d.ts +6 -2
- package/dist/frontend/lowering/lower-event-emitter.js +253 -83
- package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +1 -1
- package/dist/frontend/lowering/lower-exprs.js +71 -20
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-functions.js +25 -6
- package/dist/frontend/lowering/lower-functions.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.js +57 -10
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-global-value.d.ts +6 -0
- package/dist/frontend/lowering/lower-global-value.js +14 -5
- package/dist/frontend/lowering/lower-global-value.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.d.ts +4 -0
- package/dist/frontend/lowering/lower-inspect.js +638 -64
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.js +48 -2
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.js +18 -0
- package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
- package/dist/frontend/lowering/lower-node-island.js +16 -6
- package/dist/frontend/lowering/lower-node-island.js.map +1 -1
- package/dist/frontend/lowering/lower-server.js +303 -87
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stdlib.js +45 -0
- package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +14 -11
- package/dist/frontend/lowering/lower-stmts.js +270 -52
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-timers.js +110 -27
- package/dist/frontend/lowering/lower-timers.js.map +1 -1
- package/dist/frontend/lowering/lower-url.js +6 -3
- package/dist/frontend/lowering/lower-url.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +227 -21
- package/dist/frontend/lowering/lowerer.js +651 -92
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/lowerer.test.js +18 -0
- package/dist/frontend/lowering/lowerer.test.js.map +1 -1
- package/dist/frontend/lowering/lowering-facts.d.ts +110 -0
- package/dist/frontend/lowering/lowering-facts.js +323 -0
- package/dist/frontend/lowering/lowering-facts.js.map +1 -0
- package/dist/frontend/lowering/lowering-facts.test.d.ts +1 -0
- package/dist/frontend/lowering/lowering-facts.test.js +100 -0
- package/dist/frontend/lowering/lowering-facts.test.js.map +1 -0
- package/dist/frontend/lowering/nan-coded-reads.d.ts +27 -4
- package/dist/frontend/lowering/nan-coded-reads.js +112 -9
- package/dist/frontend/lowering/nan-coded-reads.js.map +1 -1
- package/dist/frontend/lowering/optional-arguments.d.ts +4 -0
- package/dist/frontend/lowering/optional-arguments.js +26 -2
- package/dist/frontend/lowering/optional-arguments.js.map +1 -1
- package/dist/frontend/lowering/partial-assertions.d.ts +0 -3
- package/dist/frontend/lowering/partial-assertions.js +9 -15
- package/dist/frontend/lowering/partial-assertions.js.map +1 -1
- package/dist/frontend/lowering/primitive-throws.d.ts +100 -0
- package/dist/frontend/lowering/primitive-throws.js +241 -0
- package/dist/frontend/lowering/primitive-throws.js.map +1 -0
- package/dist/frontend/lowering/primitive-wrappers.js +1 -0
- package/dist/frontend/lowering/primitive-wrappers.js.map +1 -1
- package/dist/frontend/lowering/record-inherited.d.ts +17 -1
- package/dist/frontend/lowering/record-inherited.js +16 -2
- package/dist/frontend/lowering/record-inherited.js.map +1 -1
- package/dist/frontend/lowering/record-links.d.ts +73 -0
- package/dist/frontend/lowering/record-links.js +797 -0
- package/dist/frontend/lowering/record-links.js.map +1 -0
- package/dist/frontend/lowering/runtime-optional-provenance.d.ts +27 -7
- package/dist/frontend/lowering/runtime-optional-provenance.js +25 -11
- package/dist/frontend/lowering/runtime-optional-provenance.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-report.d.ts +40 -0
- package/dist/frontend/lowering/runtime-optional-report.js +300 -0
- package/dist/frontend/lowering/runtime-optional-report.js.map +1 -0
- package/dist/frontend/lowering/scoped-type-memo.test.d.ts +1 -0
- package/dist/frontend/lowering/scoped-type-memo.test.js +86 -0
- package/dist/frontend/lowering/scoped-type-memo.test.js.map +1 -0
- package/dist/frontend/lowering/static-typeof.d.ts +3 -1
- package/dist/frontend/lowering/static-typeof.js +6 -1
- package/dist/frontend/lowering/static-typeof.js.map +1 -1
- package/dist/frontend/lowering/strict-mode.d.ts +1 -5
- package/dist/frontend/lowering/strict-mode.js +4 -30
- package/dist/frontend/lowering/strict-mode.js.map +1 -1
- package/dist/frontend/lowering/structural-instances.d.ts +7 -0
- package/dist/frontend/lowering/structural-instances.js +23 -0
- package/dist/frontend/lowering/structural-instances.js.map +1 -1
- package/dist/frontend/lowering/surfaces.d.ts +15 -1
- package/dist/frontend/lowering/surfaces.js +78 -10
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/union-retag.d.ts +13 -1
- package/dist/frontend/lowering/union-retag.js +55 -1
- package/dist/frontend/lowering/union-retag.js.map +1 -1
- package/dist/frontend/lowering/union-retag.test.js +51 -0
- package/dist/frontend/lowering/union-retag.test.js.map +1 -1
- package/dist/frontend/lowering/unit-journal.d.ts +8 -0
- package/dist/frontend/lowering/unit-journal.js +14 -0
- package/dist/frontend/lowering/unit-journal.js.map +1 -1
- package/dist/frontend/lowering/unit-journal.test.js +36 -1
- package/dist/frontend/lowering/unit-journal.test.js.map +1 -1
- package/dist/frontend/lowering/zlib-constants.js +3 -2
- package/dist/frontend/lowering/zlib-constants.js.map +1 -1
- package/dist/frontend/npm-static.js +78 -9
- package/dist/frontend/npm-static.js.map +1 -1
- package/dist/frontend/npm-static.test.js +95 -2
- package/dist/frontend/npm-static.test.js.map +1 -1
- package/dist/frontend/pipeline.d.ts +5 -4
- package/dist/frontend/pipeline.js +94 -31
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/pipeline.test.js +68 -11
- package/dist/frontend/pipeline.test.js.map +1 -1
- package/dist/frontend/program.d.ts +62 -2
- package/dist/frontend/program.js +695 -422
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/program.test.js +37 -1
- package/dist/frontend/program.test.js.map +1 -1
- package/dist/frontend/services-node.d.ts +7 -0
- package/dist/frontend/services-node.js +32 -1
- package/dist/frontend/services-node.js.map +1 -1
- package/dist/frontend/services-node.test.js +51 -0
- package/dist/frontend/services-node.test.js.map +1 -1
- package/dist/frontend/shape-inference/overlay.js +68 -2
- package/dist/frontend/shape-inference/overlay.js.map +1 -1
- package/dist/frontend/tier-analysis.d.ts +9 -0
- package/dist/frontend/tier-analysis.js +1 -0
- package/dist/frontend/tier-analysis.js.map +1 -1
- package/dist/frontend/tsc-codes.d.ts +57 -3
- package/dist/frontend/tsc-codes.js +935 -150
- package/dist/frontend/tsc-codes.js.map +1 -1
- package/dist/frontend/tsc-codes.test.js +221 -12
- package/dist/frontend/tsc-codes.test.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +91 -9
- package/dist/frontend/type-mapper.js +622 -181
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +80 -15
- package/dist/index.js.map +1 -1
- package/dist/index.test.d.ts +1 -0
- package/dist/index.test.js +60 -0
- package/dist/index.test.js.map +1 -0
- package/dist/ir/builtin-effects.js +43 -0
- package/dist/ir/builtin-effects.js.map +1 -1
- package/dist/ir/builtin-signatures.d.ts +1 -1
- package/dist/ir/builtin-signatures.js +242 -16
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/callback-specialization.d.ts +3 -2
- package/dist/ir/callback-specialization.js +35 -25
- package/dist/ir/callback-specialization.js.map +1 -1
- package/dist/ir/capture-values.d.ts +8 -4
- package/dist/ir/capture-values.js +9 -6
- package/dist/ir/capture-values.js.map +1 -1
- package/dist/ir/char-unit-locals.d.ts +6 -2
- package/dist/ir/char-unit-locals.js +11 -2
- package/dist/ir/char-unit-locals.js.map +1 -1
- package/dist/ir/class-key-index.d.ts +18 -0
- package/dist/ir/class-key-index.js +29 -0
- package/dist/ir/class-key-index.js.map +1 -0
- package/dist/ir/class-key-index.test.d.ts +1 -0
- package/dist/ir/class-key-index.test.js +25 -0
- package/dist/ir/class-key-index.test.js.map +1 -0
- package/dist/ir/codec.generated.d.ts +1 -1
- package/dist/ir/codec.generated.js +724 -648
- package/dist/ir/codec.generated.js.map +1 -1
- package/dist/ir/constant-globals.d.ts +5 -2
- package/dist/ir/constant-globals.js +25 -27
- package/dist/ir/constant-globals.js.map +1 -1
- package/dist/ir/expression-inlining.d.ts +4 -2
- package/dist/ir/expression-inlining.js +8 -2
- package/dist/ir/expression-inlining.js.map +1 -1
- package/dist/ir/field-values.d.ts +5 -2
- package/dist/ir/field-values.js +32 -21
- package/dist/ir/field-values.js.map +1 -1
- package/dist/ir/fields.generated.d.ts +11 -2
- package/dist/ir/fields.generated.js +8 -0
- package/dist/ir/fields.generated.js.map +1 -1
- package/dist/ir/final-fields.js +1 -1
- package/dist/ir/final-fields.js.map +1 -1
- package/dist/ir/function-references.d.ts +5 -4
- package/dist/ir/function-references.js +7 -4
- package/dist/ir/function-references.js.map +1 -1
- package/dist/ir/function-references.test.js +7 -0
- package/dist/ir/function-references.test.js.map +1 -1
- package/dist/ir/init-only-globals.d.ts +4 -2
- package/dist/ir/init-only-globals.js +17 -18
- package/dist/ir/init-only-globals.js.map +1 -1
- package/dist/ir/inline-array-views.js +1 -0
- package/dist/ir/inline-array-views.js.map +1 -1
- package/dist/ir/int32-slots.js +7 -0
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/ir.d.ts +59 -4
- package/dist/ir/ir.js +7 -0
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/js-groups.d.ts +51 -0
- package/dist/ir/js-groups.js +394 -0
- package/dist/ir/js-groups.js.map +1 -0
- package/dist/ir/js-groups.test.d.ts +1 -0
- package/dist/ir/js-groups.test.js +555 -0
- package/dist/ir/js-groups.test.js.map +1 -0
- package/dist/ir/js-ic.js +30 -5
- package/dist/ir/js-ic.js.map +1 -1
- package/dist/ir/js-ic.test.js +27 -1
- package/dist/ir/js-ic.test.js.map +1 -1
- package/dist/ir/node-index.d.ts +23 -6
- package/dist/ir/node-index.js +126 -49
- package/dist/ir/node-index.js.map +1 -1
- package/dist/ir/numeric-call-specialization.d.ts +4 -2
- package/dist/ir/numeric-call-specialization.js +40 -26
- package/dist/ir/numeric-call-specialization.js.map +1 -1
- package/dist/ir/paired-while-loops.d.ts +4 -2
- package/dist/ir/paired-while-loops.js +8 -2
- package/dist/ir/paired-while-loops.js.map +1 -1
- package/dist/ir/parameter-versions.d.ts +13 -4
- package/dist/ir/parameter-versions.js +63 -42
- package/dist/ir/parameter-versions.js.map +1 -1
- package/dist/ir/property-bags.d.ts +4 -2
- package/dist/ir/property-bags.js +22 -17
- package/dist/ir/property-bags.js.map +1 -1
- package/dist/ir/row-pairs.d.ts +4 -2
- package/dist/ir/row-pairs.js +12 -11
- package/dist/ir/row-pairs.js.map +1 -1
- package/dist/ir/runtime-features.d.ts +87 -12
- package/dist/ir/runtime-features.js +263 -160
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/runtime-features.test.js +109 -139
- package/dist/ir/runtime-features.test.js.map +1 -1
- package/dist/ir/runtime-jam-loops.d.ts +35 -0
- package/dist/ir/runtime-jam-loops.js +604 -0
- package/dist/ir/runtime-jam-loops.js.map +1 -0
- package/dist/ir/runtime-jam-loops.test.d.ts +1 -0
- package/dist/ir/runtime-jam-loops.test.js +565 -0
- package/dist/ir/runtime-jam-loops.test.js.map +1 -0
- package/dist/ir/saturating-loop-jams.d.ts +4 -2
- package/dist/ir/saturating-loop-jams.js +11 -10
- package/dist/ir/saturating-loop-jams.js.map +1 -1
- package/dist/ir/scalar-records.d.ts +5 -2
- package/dist/ir/scalar-records.js +12 -2
- package/dist/ir/scalar-records.js.map +1 -1
- package/dist/ir/self-captures.d.ts +4 -2
- package/dist/ir/self-captures.js +32 -27
- package/dist/ir/self-captures.js.map +1 -1
- package/dist/ir/serialize.d.ts +6 -1
- package/dist/ir/serialize.js +87 -23
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/serialize.test.js +26 -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.js +4 -0
- package/dist/ir/traverse.js.map +1 -1
- package/dist/ir/typed-argument-clones.d.ts +30 -0
- package/dist/ir/typed-argument-clones.js +789 -0
- package/dist/ir/typed-argument-clones.js.map +1 -0
- package/dist/ir/union-arm-loops.d.ts +3 -0
- package/dist/ir/union-arm-loops.js +373 -0
- package/dist/ir/union-arm-loops.js.map +1 -0
- package/dist/ir/union-arm-loops.test.d.ts +1 -0
- package/dist/ir/union-arm-loops.test.js +230 -0
- package/dist/ir/union-arm-loops.test.js.map +1 -0
- package/dist/ir/validate.js +88 -18
- package/dist/ir/validate.js.map +1 -1
- package/dist/library/compiler-self-identity.d.ts +8 -2
- package/dist/library/compiler-self-identity.js +92 -18
- package/dist/library/compiler-self-identity.js.map +1 -1
- package/dist/library/compiler-self-identity.test.js +150 -3
- package/dist/library/compiler-self-identity.test.js.map +1 -1
- package/dist/library/int-infer.d.ts +5 -0
- package/dist/library/int-infer.js +15 -3
- package/dist/library/int-infer.js.map +1 -1
- package/dist/library/ir-policy.js +1 -0
- package/dist/library/ir-policy.js.map +1 -1
- package/dist/library/library-cache.d.ts +4 -0
- package/dist/library/library-cache.js +2 -0
- package/dist/library/library-cache.js.map +1 -1
- package/dist/library/library-cache.test.js +26 -0
- package/dist/library/library-cache.test.js.map +1 -1
- package/dist/library/prepare.js +99 -31
- package/dist/library/prepare.js.map +1 -1
- package/dist/native/cache.d.ts +7 -0
- package/dist/native/cache.js +47 -0
- package/dist/native/cache.js.map +1 -1
- package/dist/native/cache.test.js +13 -1
- package/dist/native/cache.test.js.map +1 -1
- package/dist/native/cli.js +1 -1
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.js +18 -3
- package/dist/native/compiler.js.map +1 -1
- package/dist/native/executable-cache-open.test.js +31 -5
- package/dist/native/executable-cache-open.test.js.map +1 -1
- package/dist/native/executable-cache.d.ts +6 -1
- package/dist/native/executable-cache.js +7 -1
- package/dist/native/executable-cache.js.map +1 -1
- package/dist/native/prepare.d.ts +3 -0
- package/dist/native/prepare.js +43 -26
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/prepare.test.js +25 -3
- package/dist/native/prepare.test.js.map +1 -1
- package/dist/native/sanitizer.js +10 -1
- package/dist/native/sanitizer.js.map +1 -1
- package/dist/native/sanitizer.test.js +7 -2
- package/dist/native/sanitizer.test.js.map +1 -1
- package/dist/node-islands/boundary.d.ts +12 -0
- package/dist/node-islands/boundary.js +38 -6
- package/dist/node-islands/boundary.js.map +1 -1
- package/dist/node-islands/boundary.test.d.ts +1 -0
- package/dist/node-islands/boundary.test.js +76 -0
- package/dist/node-islands/boundary.test.js.map +1 -0
- package/dist/node-islands/detect.d.ts +9 -0
- package/dist/node-islands/detect.js +110 -0
- package/dist/node-islands/detect.js.map +1 -1
- package/dist/node-islands/detect.test.js +24 -0
- package/dist/node-islands/detect.test.js.map +1 -1
- package/dist/node-islands/graph-islands.d.ts +40 -0
- package/dist/node-islands/graph-islands.js +128 -0
- package/dist/node-islands/graph-islands.js.map +1 -0
- package/dist/node-islands/growth.d.ts +57 -0
- package/dist/node-islands/growth.js +205 -0
- package/dist/node-islands/growth.js.map +1 -0
- package/dist/node-islands/report.d.ts +12 -0
- package/dist/node-islands/report.js +28 -0
- package/dist/node-islands/report.js.map +1 -1
- package/dist/node-islands/report.test.js +2 -0
- package/dist/node-islands/report.test.js.map +1 -1
- package/dist/node-islands/rules.js +5 -0
- package/dist/node-islands/rules.js.map +1 -1
- package/dist/node-islands/scan.d.ts +11 -2
- package/dist/node-islands/scan.js +61 -9
- package/dist/node-islands/scan.js.map +1 -1
- package/dist/wasm/translate.js +11 -5
- package/dist/wasm/translate.js.map +1 -1
- package/dist/wasm/translate.test.js +35 -0
- package/dist/wasm/translate.test.js.map +1 -1
- package/package.json +20 -20
- package/surface-manifest.json +184 -117
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/** Runtime requirements derived from the lowered program, shared by compiler hosts. */
|
|
2
2
|
import {} from "../ir/ir.js";
|
|
3
|
-
import { moduleRuntimeFeatures } from "../ir/runtime-features.js";
|
|
3
|
+
import { jsObjectModelFact, moduleRuntimeFeatures } from "../ir/runtime-features.js";
|
|
4
4
|
import { hasForeignFfiCallback } from "./ffi-callbacks.js";
|
|
5
5
|
import { youngNurseryRequested } from "./young-nursery.js";
|
|
6
6
|
export function executableLinkFeatures(mod, largePages = false) {
|
|
@@ -12,12 +12,14 @@ export function executableLinkFeatures(mod, largePages = false) {
|
|
|
12
12
|
regex: features.regex,
|
|
13
13
|
copying: features.copying,
|
|
14
14
|
textDecoderLegacy: features.legacyTextDecoder,
|
|
15
|
+
bigintBytes: features.bigintBytes,
|
|
15
16
|
fileHandle: features.fileHandle,
|
|
16
17
|
fetch: features.fetch,
|
|
17
18
|
...(features.eventTarget ? { eventTarget: true } : {}),
|
|
18
19
|
...(features.wasm ? { wasm: true } : {}),
|
|
19
20
|
...(features.warningReplace ? { warningReplace: true } : {}),
|
|
20
|
-
...(features
|
|
21
|
+
...(jsObjectModelFact(features) ? { jsObjectModel: true } : {}),
|
|
22
|
+
mutableBuffers: features.mutableBuffers,
|
|
21
23
|
...(features.stdioExtended ? { stdioExtended: true } : {}),
|
|
22
24
|
...(features.fsFlags ? { fsFlags: true } : {}),
|
|
23
25
|
...(features.strdecDyn ? { strdecDyn: true } : {}),
|
|
@@ -28,20 +30,26 @@ export function executableLinkFeatures(mod, largePages = false) {
|
|
|
28
30
|
...(features.moduleNamespace ? { moduleNamespace: true } : {}),
|
|
29
31
|
...(features.moduleNamespaceDyn ? { moduleNamespaceDyn: true } : {}),
|
|
30
32
|
...(features.primitiveWrapper ? { primitiveWrapper: true } : {}),
|
|
33
|
+
...(features.iteratorProto ? { iteratorProto: true } : {}),
|
|
31
34
|
zlib: features.zlib,
|
|
32
35
|
...(features.brotli ? { brotli: true } : {}),
|
|
36
|
+
...(features.zstd ? { zstd: true } : {}),
|
|
33
37
|
assert: features.assert,
|
|
34
38
|
inspect: features.inspect,
|
|
35
39
|
dynInvoke: features.dynInvoke,
|
|
36
40
|
dc: features.dc,
|
|
37
41
|
dynAsync: features.dynAsync,
|
|
42
|
+
...(features.promiseGeneric ? { promiseGeneric: true } : {}),
|
|
38
43
|
...(features.dynTier ? { dynTier: true } : {}),
|
|
39
44
|
...(features.streamDyn ? { streamDyn: true } : {}),
|
|
40
45
|
...(features.handleProps ? { handleProps: true } : {}),
|
|
41
46
|
...(features.childLifecycle ? { childLifecycle: true } : {}),
|
|
47
|
+
...(features.childOptionExt ? { childOptionExt: true } : {}),
|
|
42
48
|
...(features.declAdopt ? { declAdopt: true } : {}),
|
|
43
49
|
...(features.typeOrigins ? { typeOrigins: true } : {}),
|
|
44
50
|
...(features.dynForAwait ? { dynForAwait: true } : {}),
|
|
51
|
+
...(features.dynIntegrityQueries ? { dynIntegrityQueries: true } : {}),
|
|
52
|
+
...(features.genBind ? { genBind: true } : {}),
|
|
45
53
|
...(features.eventsOnceSignal ? { eventsOnceSignal: true } : {}),
|
|
46
54
|
...(features.mime ? { mime: true } : {}),
|
|
47
55
|
...(features.webStreams ? { webStreams: true } : {}),
|
|
@@ -50,6 +58,7 @@ export function executableLinkFeatures(mod, largePages = false) {
|
|
|
50
58
|
...(features.dynBuffer ? { dynBuffer: true } : {}),
|
|
51
59
|
...(features.builtinValues ? { builtinValues: true } : {}),
|
|
52
60
|
...(features.stdlibPrototypeValue ? { stdlibPrototypeValue: true } : {}),
|
|
61
|
+
...(features.hostAbsentGlobals ? { hostAbsentGlobals: true } : {}),
|
|
53
62
|
...(features.arrayLikeDispatch ? { arrayLikeDispatch: true } : {}),
|
|
54
63
|
...(features.builtinPrototypeValue ? { builtinPrototypeValue: true } : {}),
|
|
55
64
|
...(features.computedRequire ? { computedRequire: true } : {}),
|
|
@@ -76,7 +85,6 @@ export function executableLinkFeatures(mod, largePages = false) {
|
|
|
76
85
|
textCodecDyn: features.textCodecDyn,
|
|
77
86
|
watch: features.fsWatch,
|
|
78
87
|
watchFile: features.fsWatchFile,
|
|
79
|
-
fsBufferBrand: features.fsBufferBrand,
|
|
80
88
|
foreignFfi: hasForeignFfiCallback(mod.ffiImports ?? []),
|
|
81
89
|
nodeTest: features.nodeTest,
|
|
82
90
|
tls: features.tls,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executable-features.js","sourceRoot":"","sources":["../../src/backend/executable-features.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,OAAO,EAAiB,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"executable-features.js","sourceRoot":"","sources":["../../src/backend/executable-features.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
|
+
import type { NativeLinkFeatures } from "./native-link-info.js";
|
|
1
2
|
import { type LibArchiveOptions } from "./native/contracts.js";
|
|
2
3
|
import { type NativeTargetSpec } from "./targets.js";
|
|
4
|
+
/** The runtime gates a library archive selects its pack objects with. The
|
|
5
|
+
* program's IR decides them: a unit the program names but this table leaves
|
|
6
|
+
* off is missing from the archive, and the embedder's link fails on the
|
|
7
|
+
* entry point the program calls. */
|
|
8
|
+
export declare function libraryArchiveFeatures(options: LibArchiveOptions): NativeLinkFeatures;
|
|
3
9
|
/** Assemble a library from LLVM program objects and verified runtime objects.
|
|
4
10
|
* The runtime's library and per-thread modes are compiled when packaging. */
|
|
5
11
|
export declare function compilePackedLibrary(options: LibArchiveOptions, target: NativeTargetSpec, wasmExports?: readonly string[]): Promise<void>;
|
|
@@ -12,14 +12,16 @@ import {} from "./native/contracts.js";
|
|
|
12
12
|
import { loadRuntimePack, RuntimePackError, stageRuntimePackArtifacts } from "./runtime-pack.js";
|
|
13
13
|
import { executableOptimizationLinkerArgs } from "./targets.js";
|
|
14
14
|
const run = promisify(execFile);
|
|
15
|
-
/**
|
|
16
|
-
*
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
15
|
+
/** The runtime gates a library archive selects its pack objects with. The
|
|
16
|
+
* program's IR decides them: a unit the program names but this table leaves
|
|
17
|
+
* off is missing from the archive, and the embedder's link fails on the
|
|
18
|
+
* entry point the program calls. */
|
|
19
|
+
export function libraryArchiveFeatures(options) {
|
|
20
|
+
return {
|
|
20
21
|
regex: options.regex ?? false,
|
|
21
22
|
copying: options.copying ?? false,
|
|
22
23
|
textDecoderLegacy: options.textDecoderLegacy ?? false,
|
|
24
|
+
bigintBytes: options.bigintBytes ?? false,
|
|
23
25
|
fileHandle: false,
|
|
24
26
|
fetch: false,
|
|
25
27
|
zlib: options.zlib ?? false,
|
|
@@ -28,6 +30,10 @@ export async function compilePackedLibrary(options, target, wasmExports) {
|
|
|
28
30
|
dynInvoke: options.dynInvoke ?? false,
|
|
29
31
|
...(options.dynBuffer === true ? { dynBuffer: true } : {}),
|
|
30
32
|
...(options.dynTier === true ? { dynTier: true } : {}),
|
|
33
|
+
// A program that resizes, grows or detaches a buffer names the views
|
|
34
|
+
// registry's arming entry point, so the archive must carry the unit and
|
|
35
|
+
// the JavaScript object model build it belongs to.
|
|
36
|
+
...(options.mutableBuffers === true ? { mutableBuffers: true } : {}),
|
|
31
37
|
dc: false,
|
|
32
38
|
dynAsync: false,
|
|
33
39
|
events: false,
|
|
@@ -50,7 +56,6 @@ export async function compilePackedLibrary(options, target, wasmExports) {
|
|
|
50
56
|
textCodecDyn: false,
|
|
51
57
|
watch: false,
|
|
52
58
|
watchFile: false,
|
|
53
|
-
fsBufferBrand: false,
|
|
54
59
|
foreignFfi: false,
|
|
55
60
|
nodeTest: false,
|
|
56
61
|
tls: false,
|
|
@@ -64,6 +69,12 @@ export async function compilePackedLibrary(options, target, wasmExports) {
|
|
|
64
69
|
perfLoop: false,
|
|
65
70
|
tlsCa: false,
|
|
66
71
|
};
|
|
72
|
+
}
|
|
73
|
+
/** Assemble a library from LLVM program objects and verified runtime objects.
|
|
74
|
+
* The runtime's library and per-thread modes are compiled when packaging. */
|
|
75
|
+
export async function compilePackedLibrary(options, target, wasmExports) {
|
|
76
|
+
const optimization = options.optimization ?? "release";
|
|
77
|
+
const features = libraryArchiveFeatures(options);
|
|
67
78
|
const selection = await loadRuntimePack({
|
|
68
79
|
target,
|
|
69
80
|
features,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"library-pack.js","sourceRoot":"","sources":["../../src/backend/library-pack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,EAAE,WAAW,EAAiB,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAA0B,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AACjG,OAAO,EAAE,gCAAgC,EAAyB,MAAM,cAAc,CAAC;AAEvF,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAEhC;
|
|
1
|
+
{"version":3,"file":"library-pack.js","sourceRoot":"","sources":["../../src/backend/library-pack.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { describe, expect, test } from "vitest";
|
|
2
|
+
import { libraryArchiveFeatures } from "./library-pack.js";
|
|
3
|
+
import { effectiveRuntimeFeatures } from "./runtime-pack-core.js";
|
|
4
|
+
const base = { cPath: "program.ll", outPath: "library.lib.a" };
|
|
5
|
+
describe("library archive runtime gates", () => {
|
|
6
|
+
// A program that resizes, grows or detaches a buffer names the views
|
|
7
|
+
// registry's arming entry point from %main. The archive selects its pack
|
|
8
|
+
// objects from these gates, so leaving the fact off drops
|
|
9
|
+
// scr_js_buffers.o and the embedder's link fails on the symbol.
|
|
10
|
+
test("a buffer-moving program selects the views registry and its object model build", () => {
|
|
11
|
+
const features = libraryArchiveFeatures({ ...base, mutableBuffers: true });
|
|
12
|
+
expect(features.mutableBuffers).toBe(true);
|
|
13
|
+
expect(effectiveRuntimeFeatures(features)).toMatchObject({
|
|
14
|
+
mutableBuffers: true,
|
|
15
|
+
jsObjectModel: true,
|
|
16
|
+
dynTier: true,
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
test("a program that leaves buffers alone selects neither build", () => {
|
|
20
|
+
const features = libraryArchiveFeatures(base);
|
|
21
|
+
expect(features.mutableBuffers).toBeUndefined();
|
|
22
|
+
expect(effectiveRuntimeFeatures(features)).toMatchObject({
|
|
23
|
+
jsObjectModel: false,
|
|
24
|
+
dynTier: false,
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
//# sourceMappingURL=library-pack.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"library-pack.test.js","sourceRoot":"","sources":["../../src/backend/library-pack.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAElE,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;AAE/D,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,qEAAqE;IACrE,yEAAyE;IACzE,0DAA0D;IAC1D,gEAAgE;IAChE,IAAI,CAAC,+EAA+E,EAAE,GAAG,EAAE;QACzF,MAAM,QAAQ,GAAG,sBAAsB,CAAC,EAAE,GAAG,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3E,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC;YACvD,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,IAAI;YACnB,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACrE,MAAM,QAAQ,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,aAAa,EAAE,CAAC;QAChD,MAAM,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC;YACvD,aAAa,EAAE,KAAK;YACpB,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/backend/linker.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type NativeTargetPlatform } from "./targets.js";
|
|
1
2
|
import { type NativeArtifactDependency } from "./native/contracts.js";
|
|
2
3
|
import { type RuntimePackSelection } from "./runtime-pack.js";
|
|
3
4
|
import type { NativeLinkPlan } from "./link-plan.js";
|
|
@@ -12,8 +13,8 @@ export declare function resolvePlatformLinker(env?: NodeJS.ProcessEnv, defaultLi
|
|
|
12
13
|
* only the helper-produced program object and runtime-pack artifacts. */
|
|
13
14
|
export declare function executableLinkerEnvironmentFingerprint(env?: NodeJS.ProcessEnv, defaultLinker?: string): Promise<string>;
|
|
14
15
|
/** Whether the object-only linker route can publish a whole executable cache
|
|
15
|
-
* entry.
|
|
16
|
-
*
|
|
16
|
+
* entry. A caller-selected SCRIPTC_LINKER may be a wrapper with hidden
|
|
17
|
+
* inputs, so only the environment's own driver is considered. */
|
|
17
18
|
export declare function platformLinkerSupportsPersistentCache(env?: NodeJS.ProcessEnv, target?: Pick<NativeLinkPlan["target"], "platform" | "defaultLinker">): boolean;
|
|
18
19
|
/** Install the selected runtime pack's RUN-time data files (ICU's
|
|
19
20
|
* icudt78l.dat) beside the executable that links them. The compiler's link
|
|
@@ -25,6 +26,12 @@ export declare function platformLinkerSupportsPersistentCache(env?: NodeJS.Proce
|
|
|
25
26
|
* be pure cost. The copy is atomic (private temporary, then rename) so two
|
|
26
27
|
* concurrent builds of the same program never observe a partial file. */
|
|
27
28
|
export declare function installRuntimeDataFiles(selection: RuntimePackSelection, outputPath: string): Promise<void>;
|
|
29
|
+
/** What to install when a target's link driver cannot be spawned. A spawn
|
|
30
|
+
* failure names only the driver (`spawn zig ENOENT`), which says neither
|
|
31
|
+
* what the driver is used for nor where it comes from, so the message names
|
|
32
|
+
* the target's requirement and the package that provides the driver. Null
|
|
33
|
+
* for any other failure, whose own output is the useful report. */
|
|
34
|
+
export declare function missingLinkDriverMessage(error: unknown, linker: string, platform: NativeTargetPlatform): string | null;
|
|
28
35
|
export declare function linkNativeExecutable(plan: NativeLinkPlan, options?: {
|
|
29
36
|
linker?: string;
|
|
30
37
|
onArtifactReady?: (artifact: {
|
package/dist/backend/linker.js
CHANGED
|
@@ -6,20 +6,20 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { execFile } from "node:child_process";
|
|
8
8
|
import { createHash, randomUUID } from "node:crypto";
|
|
9
|
-
import { existsSync, realpathSync, statSync } from "node:fs";
|
|
9
|
+
import { closeSync, existsSync, openSync, readSync, realpathSync, statSync } from "node:fs";
|
|
10
10
|
import { copyFile, mkdtemp, readFile, rename, rm, stat } from "node:fs/promises";
|
|
11
11
|
import { delimiter } from "node:path";
|
|
12
12
|
import { basename, dirname, isAbsolute, join, resolve } from "node:path";
|
|
13
13
|
import { promisify } from "node:util";
|
|
14
14
|
import { CcCompileError, subprocessFailureDetail } from "./native/process.js";
|
|
15
15
|
import { NativeCodegenError } from "./native-codegen-core.js";
|
|
16
|
-
import { staticExecutableRefusal, staticLinkFailureNote, staticLinkMapArgs } from "./targets.js";
|
|
16
|
+
import { staticExecutableRefusal, staticLinkFailureNote, staticLinkMapArgs, } from "./targets.js";
|
|
17
17
|
import { nativeArtifactDependenciesStillMatch } from "./native/artifact-stamps.js";
|
|
18
18
|
import { parseLinkTraceFiles } from "./native/linker-fingerprint.js";
|
|
19
19
|
import { toolchainEnvironmentCachePolicy, toolchainEnvironmentFingerprint, } from "./toolchain-environment.js";
|
|
20
20
|
import {} from "./native/contracts.js";
|
|
21
21
|
import { RuntimePackError, stageRuntimePackArtifacts, } from "./runtime-pack.js";
|
|
22
|
-
import { inputsWithoutLld, lldLinkerArgs } from "./lld.js";
|
|
22
|
+
import { inputsWithoutLld, lldLinkerArgs, resolveCommandFile, resolvedLldFile } from "./lld.js";
|
|
23
23
|
import { hugeTextLinkerArgs, rewriteHugeTextExecutable } from "./huge-text.js";
|
|
24
24
|
import { systemLibraryLinkerArgs } from "./link-plan-core.js";
|
|
25
25
|
import { createDarwinDebugSymbols, installDarwinDebugSymbols, readDarwinDebugSymbols, } from "./debug-symbols.js";
|
|
@@ -33,8 +33,8 @@ export function resolvePlatformLinker(env = process.env, defaultLinker = "clang"
|
|
|
33
33
|
/** Exact executable selected for a linker spelling. The object-only route
|
|
34
34
|
* must still invalidate an early executable when a new `clang` appears ahead
|
|
35
35
|
* of an unchanged PATH entry; relying on the string "clang" would restore a
|
|
36
|
-
* binary
|
|
37
|
-
function
|
|
36
|
+
* binary it did not link. */
|
|
37
|
+
function resolvePlatformLinkerProgram(env, linker = resolvePlatformLinker(env)) {
|
|
38
38
|
const hasSeparator = linker.includes("/") || linker.includes("\\");
|
|
39
39
|
const pathEntries = hasSeparator ? [""] : (env["PATH"] ?? "/usr/bin:/bin").split(delimiter);
|
|
40
40
|
const extensions = process.platform === "win32" && !/\.[^/\\]+$/.test(linker)
|
|
@@ -55,14 +55,61 @@ function platformLinkerIdentity(env, linker = resolvePlatformLinker(env)) {
|
|
|
55
55
|
const info = statSync(canonical);
|
|
56
56
|
if (!info.isFile())
|
|
57
57
|
continue;
|
|
58
|
-
return
|
|
58
|
+
return {
|
|
59
|
+
path: canonical,
|
|
60
|
+
identity: [canonical, info.dev, info.ino, info.size, info.mtimeMs, info.ctimeMs].join("\0"),
|
|
61
|
+
};
|
|
59
62
|
}
|
|
60
63
|
catch {
|
|
61
64
|
// Keep searching PATH exactly as process spawning does.
|
|
62
65
|
}
|
|
63
66
|
}
|
|
64
67
|
}
|
|
65
|
-
return
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
function platformLinkerIdentity(env, linker = resolvePlatformLinker(env)) {
|
|
71
|
+
return resolvePlatformLinkerProgram(env, linker)?.identity ?? `<unresolved:${linker}>`;
|
|
72
|
+
}
|
|
73
|
+
/** Whether `path` starts with a program image rather than a script
|
|
74
|
+
* interpreter line. A script's own bytes do not describe what it runs: the
|
|
75
|
+
* interpreter, and whatever the script decides from its surroundings at run
|
|
76
|
+
* time, stay outside the identity of the file. */
|
|
77
|
+
function programIsSelfContained(path) {
|
|
78
|
+
let descriptor = null;
|
|
79
|
+
try {
|
|
80
|
+
descriptor = openSync(path, "r");
|
|
81
|
+
const magic = Buffer.alloc(2);
|
|
82
|
+
const read = readSync(descriptor, magic, 0, magic.length, 0);
|
|
83
|
+
return !(read === magic.length && magic.toString("latin1") === "#!");
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
finally {
|
|
89
|
+
if (descriptor !== null)
|
|
90
|
+
closeSync(descriptor);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/** The linker program a driver runs when the link line names no `-fuse-ld`.
|
|
94
|
+
* The driver reports it by name, and that name is resolved on PATH the way
|
|
95
|
+
* the driver resolves it, so a new higher-priority `ld` appears in the
|
|
96
|
+
* identity even though PATH and the driver file are unchanged. */
|
|
97
|
+
async function defaultLinkerIdentity(linker, env) {
|
|
98
|
+
try {
|
|
99
|
+
const reported = await execFileAsync(linker, ["-print-prog-name=ld"], {
|
|
100
|
+
env,
|
|
101
|
+
maxBuffer: 16 * 1024 * 1024,
|
|
102
|
+
});
|
|
103
|
+
const program = reported.stdout.trim();
|
|
104
|
+
if (program === "")
|
|
105
|
+
return "<no-default-linker>";
|
|
106
|
+
return platformLinkerIdentity(env, program);
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
return env["SCRIPTC_LINKER"] === undefined
|
|
110
|
+
? `<unavailable:${linker}:${randomUUID()}>`
|
|
111
|
+
: `<unavailable:${linker}>`;
|
|
112
|
+
}
|
|
66
113
|
}
|
|
67
114
|
/** Cache-route identity for an object-only platform-link invocation. The
|
|
68
115
|
* complete executable cache additionally records and revalidates the
|
|
@@ -93,13 +140,29 @@ export async function executableLinkerEnvironmentFingerprint(env = process.env,
|
|
|
93
140
|
? `<unavailable:${linker}:${randomUUID()}>`
|
|
94
141
|
: `<unavailable:${linker}>`;
|
|
95
142
|
}
|
|
143
|
+
// `-fuse-ld=lld` is chosen from the files around the driver, not from the
|
|
144
|
+
// environment: an ld.lld appearing or disappearing changes the link line
|
|
145
|
+
// while PATH and the driver file stay the same. Without lld the driver runs
|
|
146
|
+
// the linker program it reports, and that program is resolved on PATH at
|
|
147
|
+
// link time, so its own identity is recorded as well.
|
|
148
|
+
const lldFile = process.platform === "linux" ? resolvedLldFile(linker, env) : null;
|
|
149
|
+
const lldIdentity = process.platform === "linux" ? (lldFile ?? "<no-ld.lld>") : "<not-linux>";
|
|
150
|
+
const defaultLinkerLinkIdentity = process.platform !== "linux"
|
|
151
|
+
? "<not-linux>"
|
|
152
|
+
: lldFile !== null
|
|
153
|
+
? "<lld-selected>"
|
|
154
|
+
: await defaultLinkerIdentity(linker, env);
|
|
96
155
|
const hash = createHash("sha256")
|
|
97
|
-
.update("executable-linker-environment-
|
|
156
|
+
.update("executable-linker-environment-v4\0")
|
|
98
157
|
.update(toolchainEnvironmentFingerprint(env))
|
|
99
158
|
.update("\0")
|
|
100
159
|
.update(linkerIdentity)
|
|
101
160
|
.update("\0")
|
|
102
161
|
.update(effectiveDriverIdentity)
|
|
162
|
+
.update("\0")
|
|
163
|
+
.update(lldIdentity)
|
|
164
|
+
.update("\0")
|
|
165
|
+
.update(defaultLinkerLinkIdentity)
|
|
103
166
|
.update("\0");
|
|
104
167
|
for (const name of ["PATH", "SCRIPTC_TEST_RUNTIME_SRC_DIR"]) {
|
|
105
168
|
const value = env[name];
|
|
@@ -112,17 +175,37 @@ export async function executableLinkerEnvironmentFingerprint(env = process.env,
|
|
|
112
175
|
return hash.digest("hex");
|
|
113
176
|
}
|
|
114
177
|
/** Whether the object-only linker route can publish a whole executable cache
|
|
115
|
-
* entry.
|
|
116
|
-
*
|
|
178
|
+
* entry. A caller-selected SCRIPTC_LINKER may be a wrapper with hidden
|
|
179
|
+
* inputs, so only the environment's own driver is considered. */
|
|
117
180
|
export function platformLinkerSupportsPersistentCache(env = process.env, target) {
|
|
118
|
-
|
|
181
|
+
// The final cache entry is keyed on the driver's file identity and, before
|
|
182
|
+
// publication, linkNativeExecutable snapshots the driver, the linker it
|
|
183
|
+
// selects and every input the link opened. On Darwin that proof is only
|
|
184
|
+
// trusted for the Apple system shim, which is a stable front door to the
|
|
185
|
+
// active SDK. On Linux the driver may sit in any prefix and the proof
|
|
186
|
+
// covers it directly, so any resolved driver file is accepted.
|
|
187
|
+
const platform = target?.platform ?? process.platform;
|
|
188
|
+
if (platform !== "darwin" && platform !== "linux")
|
|
189
|
+
return false;
|
|
190
|
+
if (env["SCRIPTC_LINKER"] !== undefined)
|
|
191
|
+
return false;
|
|
192
|
+
if (!toolchainEnvironmentCachePolicy(env).completeArtifacts)
|
|
119
193
|
return false;
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
194
|
+
const program = resolvePlatformLinkerProgram(env);
|
|
195
|
+
if (program === null)
|
|
196
|
+
return false;
|
|
197
|
+
if (platform !== "linux")
|
|
198
|
+
return program.path.startsWith("/usr/bin/clang");
|
|
199
|
+
// A program file's own bytes describe what it runs, so its identity is a
|
|
200
|
+
// cache key. A script is not: the interpreter and whatever the script
|
|
201
|
+
// decides at run time (injected linker options, environment) stay outside
|
|
202
|
+
// the file, so a warm build would restore an executable linked under an
|
|
203
|
+
// earlier configuration. The driver and, when `-fuse-ld=lld` selects one,
|
|
204
|
+
// the linker program must both be program files.
|
|
205
|
+
if (!programIsSelfContained(program.path))
|
|
206
|
+
return false;
|
|
207
|
+
const lld = resolvedLldFile(program.path, env);
|
|
208
|
+
return lld === null || programIsSelfContained(lld);
|
|
126
209
|
}
|
|
127
210
|
async function snapshotDependencies(paths) {
|
|
128
211
|
const { lstat, realpath } = await import("node:fs/promises");
|
|
@@ -161,16 +244,24 @@ async function snapshotDependencies(paths) {
|
|
|
161
244
|
* object and staged runtime pack already give the linker everything it needs
|
|
162
245
|
* for a faithful dry/trace link. Besides keeping the Phase 5 boundary
|
|
163
246
|
* honest, this observes driver options injected only at link time. */
|
|
164
|
-
async function objectLinkerDependencyPaths(linker, args, cwd, excludedRoots) {
|
|
247
|
+
async function objectLinkerDependencyPaths(linker, args, cwd, excludedRoots, toolPaths) {
|
|
165
248
|
const [reportedLinker, dryRun, trace] = await Promise.all([
|
|
166
249
|
execFileAsync(linker, ["-print-prog-name=ld"], { cwd, maxBuffer: 16 * 1024 * 1024 }),
|
|
167
250
|
execFileAsync(linker, [...args, "-###"], { cwd, maxBuffer: 32 * 1024 * 1024 }),
|
|
168
251
|
execFileAsync(linker, [...args, "-Wl,-t"], { cwd, maxBuffer: 32 * 1024 * 1024 }),
|
|
169
252
|
]);
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
253
|
+
// The driver and the linker program it selects are link inputs that neither
|
|
254
|
+
// the dry run nor the trace lists.
|
|
255
|
+
const paths = new Set(toolPaths);
|
|
256
|
+
const add = async (reported) => {
|
|
257
|
+
const candidate = reported.trim();
|
|
258
|
+
if (candidate === "")
|
|
259
|
+
return;
|
|
260
|
+
// A bare program name is looked up on PATH exactly as the driver did.
|
|
261
|
+
const path = candidate.includes("/")
|
|
262
|
+
? resolve(cwd, candidate)
|
|
263
|
+
: resolveCommandFile(candidate, process.env);
|
|
264
|
+
if (path === null)
|
|
174
265
|
return;
|
|
175
266
|
const info = await stat(path).catch(() => null);
|
|
176
267
|
if (info?.isFile())
|
|
@@ -213,6 +304,40 @@ export async function installRuntimeDataFiles(selection, outputPath) {
|
|
|
213
304
|
});
|
|
214
305
|
}
|
|
215
306
|
}
|
|
307
|
+
/** A driver the host cannot execute at all, rather than one that ran and
|
|
308
|
+
* failed. `execFile` reports both as a rejected call; only a missing
|
|
309
|
+
* executable says the build needs a tool this host does not have. */
|
|
310
|
+
function isMissingExecutable(error) {
|
|
311
|
+
return error?.code === "ENOENT";
|
|
312
|
+
}
|
|
313
|
+
/** What to install when a target's link driver cannot be spawned. A spawn
|
|
314
|
+
* failure names only the driver (`spawn zig ENOENT`), which says neither
|
|
315
|
+
* what the driver is used for nor where it comes from, so the message names
|
|
316
|
+
* the target's requirement and the package that provides the driver. Null
|
|
317
|
+
* for any other failure, whose own output is the useful report. */
|
|
318
|
+
export function missingLinkDriverMessage(error, linker, platform) {
|
|
319
|
+
if (!isMissingExecutable(error))
|
|
320
|
+
return null;
|
|
321
|
+
const driver = basename(linker.replace(/\\/g, "/")).replace(/\.exe$/i, "");
|
|
322
|
+
let guidance;
|
|
323
|
+
if (driver === "zig")
|
|
324
|
+
guidance =
|
|
325
|
+
platform === "win32"
|
|
326
|
+
? "Windows targets link with Zig, whose releases are a single zig.exe: download it from https://ziglang.org/download and put it on PATH."
|
|
327
|
+
: "This target links with Zig: download it from https://ziglang.org/download and put zig on PATH.";
|
|
328
|
+
else if (driver === "clang" || driver === "clang-cl")
|
|
329
|
+
guidance =
|
|
330
|
+
platform === "darwin"
|
|
331
|
+
? 'macOS targets link with the clang in Apple\'s Command Line Tools: install them with "xcode-select --install".'
|
|
332
|
+
: platform === "win32"
|
|
333
|
+
? "Windows targets link with clang from the LLVM release: download it from https://releases.llvm.org and put clang.exe on PATH."
|
|
334
|
+
: 'Linux targets link with clang: install it with the distribution\'s package manager, for example "apt install clang".';
|
|
335
|
+
else
|
|
336
|
+
guidance = `Install ${driver} and put it on PATH.`;
|
|
337
|
+
return (`cannot run the link driver "${linker}": the host has no ${driver} executable.\n` +
|
|
338
|
+
`${guidance}\n` +
|
|
339
|
+
"Set SCRIPTC_LINKER to use a different driver.");
|
|
340
|
+
}
|
|
216
341
|
export async function linkNativeExecutable(plan, options = {}) {
|
|
217
342
|
const explicitLinker = options.linker ?? process.env["SCRIPTC_LINKER"];
|
|
218
343
|
const linker = explicitLinker ?? plan.target.defaultLinker;
|
|
@@ -245,6 +370,12 @@ export async function linkNativeExecutable(plan, options = {}) {
|
|
|
245
370
|
];
|
|
246
371
|
};
|
|
247
372
|
const args = linkArgs(lld.length !== 0);
|
|
373
|
+
// The driver binary and the lld that `-fuse-ld=lld` selects are consumed
|
|
374
|
+
// outside the linker's own input list, so the proof names them directly.
|
|
375
|
+
const linkTools = [
|
|
376
|
+
resolveCommandFile(linker, process.env),
|
|
377
|
+
lld.length === 0 ? null : resolvedLldFile(linker, process.env),
|
|
378
|
+
].filter((path) => path !== null);
|
|
248
379
|
// The pack snapshots bracket both verification passes and private staging;
|
|
249
380
|
// the program-object snapshot begins before helper emission. Snapshot the
|
|
250
381
|
// remaining cache-bearing inputs before the linker consumes them, then
|
|
@@ -258,22 +389,37 @@ export async function linkNativeExecutable(plan, options = {}) {
|
|
|
258
389
|
const preLinkDependencies = options.onArtifactReady === undefined ||
|
|
259
390
|
!(await nativeArtifactDependenciesStillMatch(inheritedDependencies).catch(() => false))
|
|
260
391
|
? null
|
|
261
|
-
: await objectLinkerDependencyPaths(linker, args, privateOutRoot, [
|
|
262
|
-
privateOutRoot,
|
|
263
|
-
staged.root,
|
|
264
|
-
...plan.inputs,
|
|
265
|
-
])
|
|
392
|
+
: await objectLinkerDependencyPaths(linker, args, privateOutRoot, [privateOutRoot, staged.root, ...plan.inputs], linkTools)
|
|
266
393
|
.then(async (toolchain) => [
|
|
267
394
|
...inheritedDependencies,
|
|
268
395
|
...(await snapshotDependencies([...toolchain, ...additionalDependencyPaths])),
|
|
269
396
|
])
|
|
270
397
|
.catch(() => null);
|
|
271
|
-
|
|
398
|
+
const link = async (withLld) => {
|
|
399
|
+
try {
|
|
400
|
+
await execFileAsync(linker, linkArgs(withLld));
|
|
401
|
+
}
|
|
402
|
+
catch (error) {
|
|
403
|
+
// Only the link invocation itself can report a driver the host lacks.
|
|
404
|
+
// Everything after it fails with its own tool, whose name the message
|
|
405
|
+
// must keep.
|
|
406
|
+
const missing = missingLinkDriverMessage(error, linker, plan.target.platform);
|
|
407
|
+
if (missing === null)
|
|
408
|
+
throw error;
|
|
409
|
+
throw new CcCompileError(linker, subprocessFailureDetail(error), missing);
|
|
410
|
+
}
|
|
411
|
+
};
|
|
412
|
+
let linkedWithDefaultLinker = false;
|
|
413
|
+
await link(lld.length !== 0).catch(async (error) => {
|
|
272
414
|
// A failed link with lld runs again with the driver's default linker,
|
|
273
|
-
// whose error (if any) is the one reported.
|
|
274
|
-
|
|
415
|
+
// whose error (if any) is the one reported. That link line differs from
|
|
416
|
+
// the one the pre-link proof describes, so the result is not published.
|
|
417
|
+
// A driver the host cannot start is not retried, since the same command
|
|
418
|
+
// cannot succeed.
|
|
419
|
+
if (lld.length === 0 || error instanceof CcCompileError)
|
|
275
420
|
throw error;
|
|
276
|
-
await
|
|
421
|
+
await link(false);
|
|
422
|
+
linkedWithDefaultLinker = true;
|
|
277
423
|
});
|
|
278
424
|
const output = await stat(privateOut);
|
|
279
425
|
if (!output.isFile() || output.size === 0)
|
|
@@ -286,7 +432,18 @@ export async function linkNativeExecutable(plan, options = {}) {
|
|
|
286
432
|
throw new NativeCodegenError("SC3002", refusal);
|
|
287
433
|
}
|
|
288
434
|
if (plan.darwinDebugSymbols) {
|
|
289
|
-
|
|
435
|
+
try {
|
|
436
|
+
await createDarwinDebugSymbols(privateOut);
|
|
437
|
+
}
|
|
438
|
+
catch (error) {
|
|
439
|
+
// The link succeeded and only the debug symbols are missing, so name
|
|
440
|
+
// the tool that could not produce them rather than the driver.
|
|
441
|
+
const detail = subprocessFailureDetail(error);
|
|
442
|
+
throw new CcCompileError("dsymutil", detail, `dsymutil failed to collect the debug symbols for ${basename(plan.outputPath)}:\n${detail}` +
|
|
443
|
+
(isMissingExecutable(error)
|
|
444
|
+
? '\ndsymutil comes with Apple\'s developer tools: on macOS, install them with "xcode-select --install".'
|
|
445
|
+
: ""));
|
|
446
|
+
}
|
|
290
447
|
await installDarwinDebugSymbols(await readDarwinDebugSymbols(privateOut), plan.outputPath);
|
|
291
448
|
}
|
|
292
449
|
await rename(privateOut, plan.outputPath).catch(async () => {
|
|
@@ -298,6 +455,7 @@ export async function linkNativeExecutable(plan, options = {}) {
|
|
|
298
455
|
await rm(`${plan.outputPath}.dSYM`, { recursive: true, force: true });
|
|
299
456
|
}
|
|
300
457
|
if (options.onArtifactReady !== undefined &&
|
|
458
|
+
!linkedWithDefaultLinker &&
|
|
301
459
|
preLinkDependencies !== null &&
|
|
302
460
|
(await nativeArtifactDependenciesStillMatch(preLinkDependencies).catch(() => false))) {
|
|
303
461
|
await options.onArtifactReady({ dependencies: preLinkDependencies }).catch(() => undefined);
|