@scriptc/compiler 0.2.6 → 0.2.7
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 +5 -18
- package/dist/backend/cycle-analysis.d.ts +21 -9
- package/dist/backend/cycle-analysis.js +139 -67
- package/dist/backend/cycle-analysis.js.map +1 -1
- package/dist/backend/cycle-analysis.test.js +283 -3
- package/dist/backend/cycle-analysis.test.js.map +1 -1
- package/dist/backend/cycle-mutability.d.ts +39 -0
- package/dist/backend/cycle-mutability.js +205 -0
- package/dist/backend/cycle-mutability.js.map +1 -0
- package/dist/backend/link-plan-core.d.ts +2 -1
- package/dist/backend/link-plan-core.js +15 -3
- package/dist/backend/link-plan-core.js.map +1 -1
- package/dist/backend/link-plan.d.ts +2 -1
- package/dist/backend/link-plan.js.map +1 -1
- package/dist/backend/llvm/alloc.d.ts +40 -0
- package/dist/backend/llvm/alloc.js +205 -0
- package/dist/backend/llvm/alloc.js.map +1 -0
- package/dist/backend/llvm/alloc.test.d.ts +1 -0
- package/dist/backend/llvm/alloc.test.js +102 -0
- package/dist/backend/llvm/alloc.test.js.map +1 -0
- package/dist/backend/llvm/call-lifetimes.d.ts +15 -3
- package/dist/backend/llvm/call-lifetimes.js +42 -18
- package/dist/backend/llvm/call-lifetimes.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.test.js +170 -0
- package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/classes.d.ts +4 -1
- package/dist/backend/llvm/classes.js +35 -32
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/classes.test.js +36 -3
- package/dist/backend/llvm/classes.test.js.map +1 -1
- package/dist/backend/llvm/common.d.ts +13 -0
- package/dist/backend/llvm/common.js +30 -0
- package/dist/backend/llvm/common.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.d.ts +19 -3
- package/dist/backend/llvm/constant-callbacks.js +289 -52
- package/dist/backend/llvm/constant-callbacks.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.test.js +140 -3
- package/dist/backend/llvm/constant-callbacks.test.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.d.ts +29 -0
- package/dist/backend/llvm/dense-array-access.js +335 -0
- package/dist/backend/llvm/dense-array-access.js.map +1 -0
- package/dist/backend/llvm/dense-array-access.test.d.ts +1 -0
- package/dist/backend/llvm/dense-array-access.test.js +149 -0
- package/dist/backend/llvm/dense-array-access.test.js.map +1 -0
- package/dist/backend/llvm/dyn.d.ts +34 -0
- package/dist/backend/llvm/dyn.js +189 -1
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +124 -4
- package/dist/backend/llvm/emitter.js +623 -105
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +68 -6
- package/dist/backend/llvm/emitter.test.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +58 -4
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-async.test.d.ts +1 -0
- package/dist/backend/llvm/expr-async.test.js +62 -0
- package/dist/backend/llvm/expr-async.test.js.map +1 -0
- package/dist/backend/llvm/expr-calls.js +64 -6
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-containers.js +16 -5
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-control.js +92 -2
- package/dist/backend/llvm/expr-control.js.map +1 -1
- package/dist/backend/llvm/expr-dispatch.js +2 -0
- package/dist/backend/llvm/expr-dispatch.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.js +174 -25
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.d.ts +1 -1
- package/dist/backend/llvm/expr-primitives.js +52 -24
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.test.js +1 -1
- package/dist/backend/llvm/expr-records.js +3 -3
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +59 -2
- 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/integer-remainder.d.ts +11 -0
- package/dist/backend/llvm/integer-remainder.js +91 -0
- package/dist/backend/llvm/integer-remainder.js.map +1 -1
- package/dist/backend/llvm/layouts.d.ts +2 -1
- package/dist/backend/llvm/layouts.js +3 -2
- package/dist/backend/llvm/layouts.js.map +1 -1
- package/dist/backend/llvm/lazy-captures.d.ts +16 -0
- package/dist/backend/llvm/lazy-captures.js +96 -0
- package/dist/backend/llvm/lazy-captures.js.map +1 -0
- package/dist/backend/llvm/lazy-captures.test.d.ts +1 -0
- package/dist/backend/llvm/lazy-captures.test.js +78 -0
- package/dist/backend/llvm/lazy-captures.test.js.map +1 -0
- package/dist/backend/llvm/lib-filesystem.js +3 -4
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.d.ts +5 -1
- package/dist/backend/llvm/local-array-reads.js +78 -17
- package/dist/backend/llvm/local-array-reads.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.test.js +78 -1
- package/dist/backend/llvm/local-array-reads.test.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.d.ts +5 -1
- package/dist/backend/llvm/local-union-storage.js +48 -6
- package/dist/backend/llvm/local-union-storage.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.test.js +91 -4
- package/dist/backend/llvm/local-union-storage.test.js.map +1 -1
- package/dist/backend/llvm/map-read-lifetimes.test.js +1 -1
- package/dist/backend/llvm/nullable-fields.d.ts +28 -0
- package/dist/backend/llvm/nullable-fields.js +45 -0
- package/dist/backend/llvm/nullable-fields.js.map +1 -0
- package/dist/backend/llvm/nullable-fields.test.d.ts +1 -0
- package/dist/backend/llvm/nullable-fields.test.js +48 -0
- package/dist/backend/llvm/nullable-fields.test.js.map +1 -0
- package/dist/backend/llvm/serialized-ir-emission.test.d.ts +1 -0
- package/dist/backend/llvm/serialized-ir-emission.test.js +52 -0
- package/dist/backend/llvm/serialized-ir-emission.test.js.map +1 -0
- package/dist/backend/llvm/shapes.d.ts +69 -2
- package/dist/backend/llvm/shapes.js +259 -27
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/shapes.test.js +114 -5
- package/dist/backend/llvm/shapes.test.js.map +1 -1
- package/dist/backend/llvm/stack-callbacks.js +2 -3
- package/dist/backend/llvm/stack-callbacks.js.map +1 -1
- package/dist/backend/llvm/stack-captures.d.ts +3 -1
- package/dist/backend/llvm/stack-captures.js +5 -3
- package/dist/backend/llvm/stack-captures.js.map +1 -1
- package/dist/backend/llvm/stack-unions.test.js +38 -1
- package/dist/backend/llvm/stack-unions.test.js.map +1 -1
- package/dist/backend/llvm/string-construction.test.js +1 -1
- package/dist/backend/llvm/string-key-hash.d.ts +8 -0
- package/dist/backend/llvm/string-key-hash.js +59 -0
- package/dist/backend/llvm/string-key-hash.js.map +1 -0
- package/dist/backend/llvm/string-key-hash.test.d.ts +1 -0
- package/dist/backend/llvm/string-key-hash.test.js +34 -0
- package/dist/backend/llvm/string-key-hash.test.js.map +1 -0
- package/dist/backend/llvm/string-lifetimes.test.js +41 -4
- package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/switch-dispatch.js +1 -1
- package/dist/backend/llvm/switch-dispatch.js.map +1 -1
- package/dist/backend/llvm/switch-dispatch.test.js +2 -2
- package/dist/backend/llvm/switch-dispatch.test.js.map +1 -1
- package/dist/backend/may-throw.js +3 -0
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/may-throw.test.js +1 -1
- package/dist/backend/native/cache-warm.d.ts +2 -1
- package/dist/backend/native/cache-warm.js.map +1 -1
- package/dist/backend/native/contracts.d.ts +3 -2
- package/dist/backend/native/contracts.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-core.d.ts +2 -1
- package/dist/backend/native-codegen-core.js.map +1 -1
- package/dist/backend/native-codegen.d.ts +5 -0
- package/dist/backend/native-codegen.js +4 -0
- package/dist/backend/native-codegen.js.map +1 -1
- package/dist/backend/native-codegen.test.js +23 -0
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +3 -2
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/native-link-info.d.ts +2 -1
- package/dist/backend/native-link-info.js.map +1 -1
- package/dist/backend/native-link-info.test.js +2 -2
- package/dist/backend/native-link-info.test.js.map +1 -1
- package/dist/backend/native-tools.d.ts +3 -1
- package/dist/backend/native-tools.js +0 -1
- package/dist/backend/native-tools.js.map +1 -1
- package/dist/backend/optimization.d.ts +25 -0
- package/dist/backend/optimization.js +21 -0
- package/dist/backend/optimization.js.map +1 -0
- package/dist/backend/optimization.test.d.ts +1 -0
- package/dist/backend/optimization.test.js +24 -0
- package/dist/backend/optimization.test.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 +15 -4
- package/dist/backend/runtime-pack-core.js +23 -12
- package/dist/backend/runtime-pack-core.js.map +1 -1
- package/dist/backend/runtime-pack-native.d.ts +7 -3
- package/dist/backend/runtime-pack-native.js +0 -3
- package/dist/backend/runtime-pack-native.js.map +1 -1
- package/dist/backend/runtime-pack-targets.test.js +1 -1
- package/dist/backend/runtime-pack.d.ts +20 -2
- package/dist/backend/runtime-pack.js +23 -0
- package/dist/backend/runtime-pack.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +115 -2
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/target-diagnostics.test.js +1 -1
- package/dist/backend/targets.d.ts +2 -1
- package/dist/backend/targets.js +1 -1
- package/dist/backend/targets.js.map +1 -1
- package/dist/cli/command.js +5 -4
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/host.d.ts +2 -1
- package/dist/cli/usage.d.ts +1 -1
- package/dist/cli/usage.js +5 -2
- package/dist/cli/usage.js.map +1 -1
- package/dist/compile-types.d.ts +5 -2
- package/dist/diagnostics/diagnostic.js +10 -8
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +2 -2
- package/dist/executable/executable-cache.js +7 -4
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +20 -0
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/frontend/lowering/abstract-equality.js +5 -49
- package/dist/frontend/lowering/abstract-equality.js.map +1 -1
- package/dist/frontend/lowering/array-values.d.ts +23 -0
- package/dist/frontend/lowering/array-values.js +129 -0
- package/dist/frontend/lowering/array-values.js.map +1 -1
- package/dist/frontend/lowering/builtins/errors.js +17 -2
- package/dist/frontend/lowering/builtins/errors.js.map +1 -1
- package/dist/frontend/lowering/builtins/process.d.ts +6 -17
- package/dist/frontend/lowering/builtins/process.js +56 -29
- package/dist/frontend/lowering/builtins/process.js.map +1 -1
- package/dist/frontend/lowering/caught-value-dispatch.d.ts +11 -0
- package/dist/frontend/lowering/caught-value-dispatch.js +87 -0
- package/dist/frontend/lowering/caught-value-dispatch.js.map +1 -0
- package/dist/frontend/lowering/class-assertions.d.ts +4 -0
- package/dist/frontend/lowering/class-assertions.js +12 -4
- package/dist/frontend/lowering/class-assertions.js.map +1 -1
- package/dist/frontend/lowering/class-callbacks.d.ts +3 -3
- package/dist/frontend/lowering/class-callbacks.js +18 -5
- package/dist/frontend/lowering/class-callbacks.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +1 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js +4 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-method-mutations.d.ts +5 -0
- package/dist/frontend/lowering/class-method-mutations.js +472 -0
- package/dist/frontend/lowering/class-method-mutations.js.map +1 -0
- package/dist/frontend/lowering/class-method-values.js +25 -5
- package/dist/frontend/lowering/class-method-values.js.map +1 -1
- package/dist/frontend/lowering/class-prototypes.js +8 -2
- package/dist/frontend/lowering/class-prototypes.js.map +1 -1
- package/dist/frontend/lowering/class-unions.d.ts +16 -0
- package/dist/frontend/lowering/class-unions.js +127 -0
- package/dist/frontend/lowering/class-unions.js.map +1 -0
- package/dist/frontend/lowering/coercions/builders.js +8 -1
- package/dist/frontend/lowering/coercions/builders.js.map +1 -1
- package/dist/frontend/lowering/coercions/function-adapters.js +2 -0
- package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
- package/dist/frontend/lowering/coercions/identity.d.ts +7 -0
- package/dist/frontend/lowering/coercions/identity.js +26 -0
- package/dist/frontend/lowering/coercions/identity.js.map +1 -0
- package/dist/frontend/lowering/coercions/structural.js +9 -6
- package/dist/frontend/lowering/coercions/structural.js.map +1 -1
- package/dist/frontend/lowering/collection-narrowing.d.ts +6 -0
- package/dist/frontend/lowering/collection-narrowing.js +31 -0
- package/dist/frontend/lowering/collection-narrowing.js.map +1 -0
- package/dist/frontend/lowering/containers/array-callback-call.d.ts +7 -0
- package/dist/frontend/lowering/containers/array-callback-call.js +52 -0
- package/dist/frontend/lowering/containers/array-callback-call.js.map +1 -0
- package/dist/frontend/lowering/containers/array-callbacks.d.ts +1 -1
- package/dist/frontend/lowering/containers/array-callbacks.js +363 -49
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-concat.d.ts +7 -0
- package/dist/frontend/lowering/containers/array-concat.js +130 -0
- package/dist/frontend/lowering/containers/array-concat.js.map +1 -0
- package/dist/frontend/lowering/containers/array-construction.d.ts +2 -0
- package/dist/frontend/lowering/containers/array-construction.js +95 -3
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.d.ts +1 -11
- package/dist/frontend/lowering/containers/array-methods.js +43 -132
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-methods.js +10 -1
- package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/indexed-objects.js +56 -70
- package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
- package/dist/frontend/lowering/cycle-initialization.d.ts +41 -0
- package/dist/frontend/lowering/cycle-initialization.js +277 -0
- package/dist/frontend/lowering/cycle-initialization.js.map +1 -0
- package/dist/frontend/lowering/expressions/evaluation-safety.js +4 -0
- package/dist/frontend/lowering/expressions/evaluation-safety.js.map +1 -1
- package/dist/frontend/lowering/expressions/object-literals.js +138 -32
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/union-field-write.d.ts +4 -4
- package/dist/frontend/lowering/expressions/union-field-write.js +54 -44
- package/dist/frontend/lowering/expressions/union-field-write.js.map +1 -1
- package/dist/frontend/lowering/iterator-adapters.d.ts +20 -0
- package/dist/frontend/lowering/iterator-adapters.js +605 -0
- package/dist/frontend/lowering/iterator-adapters.js.map +1 -0
- package/dist/frontend/lowering/lower-array-sort.d.ts +1 -1
- package/dist/frontend/lowering/lower-array-sort.js +44 -5
- package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
- package/dist/frontend/lowering/lower-array-sort.test.d.ts +1 -0
- package/dist/frontend/lowering/lower-array-sort.test.js +31 -0
- package/dist/frontend/lowering/lower-array-sort.test.js.map +1 -0
- package/dist/frontend/lowering/lower-assert.js +7 -0
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-builtin-values.js +1 -0
- package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.d.ts +3 -3
- package/dist/frontend/lowering/lower-calls.js +162 -121
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +2 -0
- package/dist/frontend/lowering/lower-classes.js +45 -43
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +9 -2
- package/dist/frontend/lowering/lower-exprs.js +390 -157
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-functions.js +32 -19
- package/dist/frontend/lowering/lower-functions.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.js +26 -2
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.js +10 -2
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.js +46 -58
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +37 -0
- package/dist/frontend/lowering/lowerer.js +283 -18
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/native-ffi.js +3 -1
- package/dist/frontend/lowering/native-ffi.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-provenance.d.ts +15 -0
- package/dist/frontend/lowering/runtime-optional-provenance.js +40 -0
- package/dist/frontend/lowering/runtime-optional-provenance.js.map +1 -0
- package/dist/frontend/lowering/sanitize-class-types.test.js +2 -2
- package/dist/frontend/lowering/strict-equality.d.ts +9 -0
- package/dist/frontend/lowering/strict-equality.js +116 -0
- package/dist/frontend/lowering/strict-equality.js.map +1 -0
- package/dist/frontend/lowering/surfaces.js +3 -0
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/union-comparison.d.ts +5 -0
- package/dist/frontend/lowering/union-comparison.js +47 -0
- package/dist/frontend/lowering/union-comparison.js.map +1 -0
- package/dist/frontend/program.d.ts +38 -2
- package/dist/frontend/program.js +440 -59
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/program.test.js +59 -6
- package/dist/frontend/program.test.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +1 -1
- package/dist/frontend/type-mapper.js +89 -14
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/frontend/type-mapper.test.js +15 -3
- package/dist/frontend/type-mapper.test.js.map +1 -1
- package/dist/index.js +25 -9
- package/dist/index.js.map +1 -1
- package/dist/ir/analysis.d.ts +3 -1
- package/dist/ir/analysis.js +4 -0
- package/dist/ir/analysis.js.map +1 -1
- package/dist/ir/builtin-signatures.js +2 -3
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/constant-tables.test.js +1 -1
- package/dist/ir/initializer-bindings.test.js +1 -1
- package/dist/ir/ir.d.ts +78 -15
- package/dist/ir/ir.js +20 -6
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/scalar-records.test.js +1 -1
- package/dist/ir/serialize.d.ts +1 -1
- package/dist/ir/serialize.js +3 -3
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/traverse.js +8 -0
- package/dist/ir/traverse.js.map +1 -1
- package/dist/ir/validate.js +118 -20
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +269 -8
- package/dist/ir/validate.test.js.map +1 -1
- package/dist/library/fence-eval.test.js +1 -1
- package/dist/library/int-infer.test.js +4 -4
- package/dist/library/library-cache.test.js +5 -5
- package/dist/library/library-profile.d.ts +2 -1
- package/dist/library/library-profile.js +4 -3
- package/dist/library/library-profile.js.map +1 -1
- package/dist/native/compiler.js.map +1 -1
- package/dist/native/compiler.test.js +2 -2
- package/dist/native/library.d.ts +2 -1
- package/dist/native/library.js.map +1 -1
- package/dist/native/prepare.js +27 -3
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/sanitizer.d.ts +3 -2
- package/dist/native/sanitizer.js +3 -13
- package/dist/native/sanitizer.js.map +1 -1
- package/package.json +20 -20
- package/surface-manifest.json +8 -2
|
@@ -250,24 +250,8 @@ declare var process: {
|
|
|
250
250
|
* preserved. The boolean is Node's backpressure signal — these synchronous
|
|
251
251
|
* writes always return true. Static BufferEncoding arguments and the
|
|
252
252
|
* completion callback overloads match Node's WritableStream surface. */
|
|
253
|
-
stdout:
|
|
254
|
-
|
|
255
|
-
write(
|
|
256
|
-
data: string | Uint8Array,
|
|
257
|
-
encoding: BufferEncoding,
|
|
258
|
-
callback?: (error?: Error | null) => void,
|
|
259
|
-
): boolean;
|
|
260
|
-
readonly isTTY: boolean;
|
|
261
|
-
};
|
|
262
|
-
stderr: {
|
|
263
|
-
write(data: string | Uint8Array, callback?: (error?: Error | null) => void): boolean;
|
|
264
|
-
write(
|
|
265
|
-
data: string | Uint8Array,
|
|
266
|
-
encoding: BufferEncoding,
|
|
267
|
-
callback?: (error?: Error | null) => void,
|
|
268
|
-
): boolean;
|
|
269
|
-
readonly isTTY: boolean;
|
|
270
|
-
};
|
|
253
|
+
stdout: import("tty").WriteStream;
|
|
254
|
+
stderr: import("tty").WriteStream;
|
|
271
255
|
/* The stdin stream, the piped-input slice: the TTY probe, the
|
|
272
256
|
* data/end/error events (on and once — a 'data' listener keeps the
|
|
273
257
|
* event loop alive until EOF, like Node's flowing stdin), destroy()
|
|
@@ -4203,6 +4187,9 @@ declare module "tty" {
|
|
|
4203
4187
|
callback?: (error?: Error | null) => void,
|
|
4204
4188
|
): boolean;
|
|
4205
4189
|
readonly isTTY: boolean;
|
|
4190
|
+
readonly columns: number;
|
|
4191
|
+
readonly rows: number;
|
|
4192
|
+
getWindowSize(): [number, number];
|
|
4206
4193
|
}
|
|
4207
4194
|
export function isatty(fd: number): boolean;
|
|
4208
4195
|
}
|
|
@@ -1,14 +1,26 @@
|
|
|
1
1
|
import type { IrModule } from "../ir/ir.js";
|
|
2
2
|
/** Cycle capability for native code generation.
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* are
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
3
|
+
* Nodes are shape units and unions; edges are the references their fields
|
|
4
|
+
* and arms can hold (collections flattened into their element, key and
|
|
5
|
+
* value types). Closures, checked values, class values, caught values and
|
|
6
|
+
* promises are INTRINSIC: they can reach anything, so a unit holding one is
|
|
7
|
+
* on a potential cycle. Strings never are.
|
|
8
|
+
*
|
|
9
|
+
* An edge is IMMUTABLE when it can only be stored while its owner is still
|
|
10
|
+
* under construction (cycle-mutability.ts derives this from the IR): such an
|
|
11
|
+
* object can only point to objects that existed before it, so a heap cycle
|
|
12
|
+
* made only of immutable edges is impossible. Union arms are immutable (the
|
|
13
|
+
* boxes are), and any edge through an array, Map, or Set is mutable because
|
|
14
|
+
* the container's contents are. A strongly connected component is
|
|
15
|
+
* cycle-capable iff it contains an intrinsic unit or a mutable internal
|
|
16
|
+
* edge; a unit or union is traced iff it can reach a cycle-capable
|
|
17
|
+
* component. With every edge mutable this is exactly the earlier greatest
|
|
18
|
+
* fixpoint: traced iff the unit reaches a cycle or an intrinsic reference.
|
|
19
|
+
*
|
|
20
|
+
* A HIERARCHY is one unit of capability (a base-typed slot can hold any
|
|
21
|
+
* subclass and retain touches the cycle header, so header presence must be
|
|
22
|
+
* uniform across an extends tree): a unit is cycle-capable iff ANY member
|
|
23
|
+
* is — every backend uses the same grouping. */
|
|
12
24
|
export declare function computeTraced(mod: IrModule): {
|
|
13
25
|
shapes: Set<string>;
|
|
14
26
|
unions: Set<string>;
|
|
@@ -1,36 +1,29 @@
|
|
|
1
1
|
import { funcOf, mapOf, RUNTIME_EMITTER_CLASS, STRING, VOID } from "../ir/ir.js";
|
|
2
|
+
import { computeCycleMutability, fieldKey } from "./cycle-mutability.js";
|
|
2
3
|
/** Cycle capability for native code generation.
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* are
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
4
|
+
* Nodes are shape units and unions; edges are the references their fields
|
|
5
|
+
* and arms can hold (collections flattened into their element, key and
|
|
6
|
+
* value types). Closures, checked values, class values, caught values and
|
|
7
|
+
* promises are INTRINSIC: they can reach anything, so a unit holding one is
|
|
8
|
+
* on a potential cycle. Strings never are.
|
|
9
|
+
*
|
|
10
|
+
* An edge is IMMUTABLE when it can only be stored while its owner is still
|
|
11
|
+
* under construction (cycle-mutability.ts derives this from the IR): such an
|
|
12
|
+
* object can only point to objects that existed before it, so a heap cycle
|
|
13
|
+
* made only of immutable edges is impossible. Union arms are immutable (the
|
|
14
|
+
* boxes are), and any edge through an array, Map, or Set is mutable because
|
|
15
|
+
* the container's contents are. A strongly connected component is
|
|
16
|
+
* cycle-capable iff it contains an intrinsic unit or a mutable internal
|
|
17
|
+
* edge; a unit or union is traced iff it can reach a cycle-capable
|
|
18
|
+
* component. With every edge mutable this is exactly the earlier greatest
|
|
19
|
+
* fixpoint: traced iff the unit reaches a cycle or an intrinsic reference.
|
|
20
|
+
*
|
|
21
|
+
* A HIERARCHY is one unit of capability (a base-typed slot can hold any
|
|
22
|
+
* subclass and retain touches the cycle header, so header presence must be
|
|
23
|
+
* uniform across an extends tree): a unit is cycle-capable iff ANY member
|
|
24
|
+
* is — every backend uses the same grouping. */
|
|
12
25
|
export function computeTraced(mod) {
|
|
13
26
|
const classes = mod.classes ?? [];
|
|
14
|
-
const shapeDefs = [
|
|
15
|
-
...classes.map((c) => ({
|
|
16
|
-
key: `object:${c.name}`,
|
|
17
|
-
fields: [
|
|
18
|
-
...c.fields,
|
|
19
|
-
...(c.name === RUNTIME_EMITTER_CLASS
|
|
20
|
-
? [{ name: "<listeners>", type: funcOf([], VOID) }]
|
|
21
|
-
: []),
|
|
22
|
-
...(c.localCaptures !== undefined
|
|
23
|
-
? [{ name: "<class>", type: { kind: "classval", className: c.name } }]
|
|
24
|
-
: []),
|
|
25
|
-
],
|
|
26
|
-
})),
|
|
27
|
-
...(mod.records ?? []).map((r) => ({
|
|
28
|
-
key: `record:${r.id}`,
|
|
29
|
-
fields: r.indexValue
|
|
30
|
-
? [...r.fields, { name: "<overflow>", type: mapOf(STRING, r.indexValue) }]
|
|
31
|
-
: r.fields,
|
|
32
|
-
})),
|
|
33
|
-
];
|
|
34
27
|
// Hierarchy units: root lookup over the base links (classes with a base
|
|
35
28
|
// or a subclass — and the runtime emitter class — form units under their
|
|
36
29
|
// root; standalone classes and records stay singleton units).
|
|
@@ -51,28 +44,52 @@ export function computeTraced(mod) {
|
|
|
51
44
|
roots.set(member, cur);
|
|
52
45
|
return cur;
|
|
53
46
|
};
|
|
54
|
-
const
|
|
47
|
+
const unitOfClass = (name) => `object:${rootOf(name)}`;
|
|
48
|
+
const mutability = computeCycleMutability(mod, unitOfClass);
|
|
49
|
+
const shapeDefs = [
|
|
50
|
+
...classes.map((c) => ({
|
|
51
|
+
key: `object:${c.name}`,
|
|
52
|
+
unit: unitOfClass(c.name),
|
|
53
|
+
fields: [
|
|
54
|
+
...c.fields,
|
|
55
|
+
...(c.name === RUNTIME_EMITTER_CLASS
|
|
56
|
+
? [{ name: "<listeners>", type: funcOf([], VOID) }]
|
|
57
|
+
: []),
|
|
58
|
+
...(c.localCaptures !== undefined
|
|
59
|
+
? [{ name: "<class>", type: { kind: "classval", className: c.name } }]
|
|
60
|
+
: []),
|
|
61
|
+
],
|
|
62
|
+
})),
|
|
63
|
+
...(mod.records ?? []).map((r) => ({
|
|
64
|
+
key: `record:${r.id}`,
|
|
65
|
+
unit: `record:${r.id}`,
|
|
66
|
+
fields: r.indexValue
|
|
67
|
+
? [...r.fields, { name: "<overflow>", type: mapOf(STRING, r.indexValue) }]
|
|
68
|
+
: r.fields,
|
|
69
|
+
})),
|
|
70
|
+
];
|
|
71
|
+
const node = () => ({
|
|
55
72
|
intrinsic: false,
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
73
|
+
edges: new Map(),
|
|
74
|
+
index: -1,
|
|
75
|
+
low: 0,
|
|
76
|
+
onStack: false,
|
|
77
|
+
component: -1,
|
|
78
|
+
reverse: [],
|
|
79
|
+
traced: false,
|
|
59
80
|
});
|
|
60
81
|
const units = new Map();
|
|
61
82
|
const shapes = new Map();
|
|
62
|
-
const unions = new Map((mod.unions ?? []).map((u) => [u.id,
|
|
83
|
+
const unions = new Map((mod.unions ?? []).map((u) => [u.id, node()]));
|
|
63
84
|
for (const s of shapeDefs) {
|
|
64
|
-
|
|
65
|
-
? `object:${rootOf(s.key.slice("object:".length))}`
|
|
66
|
-
: s.key;
|
|
67
|
-
let unit = units.get(key);
|
|
85
|
+
let unit = units.get(s.unit);
|
|
68
86
|
if (!unit)
|
|
69
|
-
units.set(
|
|
87
|
+
units.set(s.unit, (unit = node()));
|
|
70
88
|
shapes.set(s.key, unit);
|
|
71
89
|
}
|
|
72
|
-
// Each field/arm is an OR of intrinsic capability and referenced
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
if (unit.intrinsic)
|
|
90
|
+
// Each field/arm is an OR of intrinsic capability and referenced nodes.
|
|
91
|
+
const addType = (from, t, mutable) => {
|
|
92
|
+
if (from.intrinsic)
|
|
76
93
|
return;
|
|
77
94
|
switch (t.kind) {
|
|
78
95
|
case "func":
|
|
@@ -80,8 +97,8 @@ export function computeTraced(mod) {
|
|
|
80
97
|
case "classval":
|
|
81
98
|
case "promise":
|
|
82
99
|
case "caught":
|
|
83
|
-
|
|
84
|
-
|
|
100
|
+
from.intrinsic = true;
|
|
101
|
+
from.edges.clear();
|
|
85
102
|
break;
|
|
86
103
|
case "object":
|
|
87
104
|
case "record":
|
|
@@ -90,44 +107,99 @@ export function computeTraced(mod) {
|
|
|
90
107
|
? unions.get(t.unionId)
|
|
91
108
|
: shapes.get(t.kind === "object" ? `object:${t.className}` : `record:${t.shapeId}`);
|
|
92
109
|
if (dependency)
|
|
93
|
-
|
|
110
|
+
from.edges.set(dependency, (from.edges.get(dependency) ?? false) || mutable);
|
|
94
111
|
break;
|
|
95
112
|
}
|
|
96
113
|
case "map":
|
|
97
|
-
addType(
|
|
98
|
-
addType(
|
|
114
|
+
addType(from, t.key, true);
|
|
115
|
+
addType(from, t.value, true);
|
|
99
116
|
break;
|
|
100
117
|
case "set":
|
|
101
118
|
case "array":
|
|
102
|
-
addType(
|
|
119
|
+
addType(from, t.elem, true);
|
|
103
120
|
break;
|
|
104
121
|
}
|
|
105
122
|
};
|
|
106
|
-
for (const s of shapeDefs)
|
|
123
|
+
for (const s of shapeDefs) {
|
|
124
|
+
const unitMutable = mutability.all || mutability.units.has(s.unit);
|
|
107
125
|
for (const field of s.fields)
|
|
108
|
-
addType(shapes.get(s.key), field.type);
|
|
126
|
+
addType(shapes.get(s.key), field.type, unitMutable || mutability.fields.has(fieldKey(s.unit, field.name)));
|
|
127
|
+
}
|
|
109
128
|
for (const u of mod.unions ?? [])
|
|
110
129
|
for (const arm of u.arms)
|
|
111
|
-
addType(unions.get(u.id), arm);
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
130
|
+
addType(unions.get(u.id), arm, mutability.all);
|
|
131
|
+
// Tarjan's strongly connected components, iteratively (shape chains can
|
|
132
|
+
// be thousands deep).
|
|
133
|
+
const all = [...units.values(), ...unions.values()];
|
|
134
|
+
const stack = [];
|
|
135
|
+
const componentCapable = [];
|
|
136
|
+
let nextIndex = 0;
|
|
137
|
+
for (const start of all) {
|
|
138
|
+
if (start.index >= 0)
|
|
139
|
+
continue;
|
|
140
|
+
const work = [];
|
|
141
|
+
const enter = (n) => {
|
|
142
|
+
n.index = n.low = nextIndex++;
|
|
143
|
+
n.onStack = true;
|
|
144
|
+
stack.push(n);
|
|
145
|
+
work.push({ n, next: [...n.edges.keys()], i: 0 });
|
|
146
|
+
};
|
|
147
|
+
enter(start);
|
|
148
|
+
while (work.length > 0) {
|
|
149
|
+
const frame = work[work.length - 1];
|
|
150
|
+
if (frame.i < frame.next.length) {
|
|
151
|
+
const m = frame.next[frame.i++];
|
|
152
|
+
if (m.index < 0)
|
|
153
|
+
enter(m);
|
|
154
|
+
else if (m.onStack)
|
|
155
|
+
frame.n.low = Math.min(frame.n.low, m.index);
|
|
156
|
+
continue;
|
|
157
|
+
}
|
|
158
|
+
work.pop();
|
|
159
|
+
const n = frame.n;
|
|
160
|
+
if (work.length > 0) {
|
|
161
|
+
const parent = work[work.length - 1].n;
|
|
162
|
+
parent.low = Math.min(parent.low, n.low);
|
|
163
|
+
}
|
|
164
|
+
if (n.low !== n.index)
|
|
165
|
+
continue;
|
|
166
|
+
const id = componentCapable.length;
|
|
167
|
+
const members = [];
|
|
168
|
+
let member;
|
|
169
|
+
do {
|
|
170
|
+
member = stack.pop();
|
|
171
|
+
member.onStack = false;
|
|
172
|
+
member.component = id;
|
|
173
|
+
members.push(member);
|
|
174
|
+
} while (member !== n);
|
|
175
|
+
let capable = false;
|
|
176
|
+
for (const m of members) {
|
|
177
|
+
if (m.intrinsic)
|
|
178
|
+
capable = true;
|
|
179
|
+
for (const [dependency, mutable] of m.edges)
|
|
180
|
+
if (mutable && dependency.component === id)
|
|
181
|
+
capable = true;
|
|
182
|
+
}
|
|
183
|
+
componentCapable.push(capable);
|
|
184
|
+
}
|
|
119
185
|
}
|
|
120
|
-
//
|
|
121
|
-
|
|
186
|
+
// Traced: reaches a cycle-capable component (reverse reachability).
|
|
187
|
+
for (const n of all)
|
|
188
|
+
for (const dependency of n.edges.keys())
|
|
189
|
+
dependency.reverse.push(n);
|
|
190
|
+
const pending = all.filter((n) => componentCapable[n.component]);
|
|
191
|
+
for (const n of pending)
|
|
192
|
+
n.traced = true;
|
|
122
193
|
for (let i = 0; i < pending.length; i++) {
|
|
123
|
-
for (const dependent of pending[i].
|
|
124
|
-
if (
|
|
125
|
-
|
|
194
|
+
for (const dependent of pending[i].reverse) {
|
|
195
|
+
if (dependent.traced)
|
|
196
|
+
continue;
|
|
197
|
+
dependent.traced = true;
|
|
198
|
+
pending.push(dependent);
|
|
126
199
|
}
|
|
127
200
|
}
|
|
128
|
-
const
|
|
129
|
-
const
|
|
130
|
-
const tracedUnions = new Set([...unions].filter(([, unit]) => retained(unit)).map(([id]) => id));
|
|
201
|
+
const tracedShapes = new Set([...shapes].filter(([, unit]) => unit.traced).map(([key]) => key));
|
|
202
|
+
const tracedUnions = new Set([...unions].filter(([, n]) => n.traced).map(([id]) => id));
|
|
131
203
|
return { shapes: tracedShapes, unions: tracedUnions };
|
|
132
204
|
}
|
|
133
205
|
//# sourceMappingURL=cycle-analysis.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cycle-analysis.js","sourceRoot":"","sources":["../../src/backend/cycle-analysis.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"cycle-analysis.js","sourceRoot":"","sources":["../../src/backend/cycle-analysis.ts"],"names":[],"mappings":"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"}
|