BEAM-native JS engine and compiler#5
Open
dannote wants to merge 2809 commits into
Open
Conversation
0eb3475 to
7c1c574
Compare
75fdba5 to
527d5b9
Compare
Result: {"status":"keep","compatibility_failures":0,"compiler_test262_cases":300,"compiler_test262_pass":300,"compiler_test262_failures":0,"compiler_test262_compiler_errors":0,"compiler_test262_compiler_crashes":0,"compiler_test262_compiler_fails":0,"compiler_test262_both_fail":0,"compiler_test262_interpreter_fail_compiler_pass":0,"compatibility_pass":300,"compatibility_cases":300,"compiler_errors":0,"compiler_crashes":0,"compiler_fails":0,"both_fail":0,"interpreter_fail_compiler_pass":0,"elapsed_ms":5034}
Result: {"status":"keep","compatibility_failures":0,"quickjs_parity_cases":17,"quickjs_parity_pass":17,"quickjs_parity_failures":0,"compatibility_pass":17,"compatibility_cases":17,"compiler_errors":0,"compiler_crashes":0,"compiler_fails":0,"both_fail":0,"interpreter_fail_compiler_pass":0,"elapsed_ms":73575}
Result: {"status":"keep","compatibility_failures":12,"quickjs_parity_all_cases":1170,"quickjs_parity_all_native_accepted":941,"quickjs_parity_all_pass":929,"quickjs_parity_all_failures":12,"quickjs_parity_all_native_rejected":5,"quickjs_parity_all_skipped":224,"compiler_errors":0,"compiler_timeouts":0,"compiler_crashes":0,"compiler_fails":0,"both_fail":3,"interpreter_fail_compiler_pass":9,"interpreter_timeouts":0,"interpreter_crashes":0,"compatibility_pass":929,"compatibility_cases":941,"elapsed_ms":33278}
Result: {"status":"keep","compatibility_failures":11,"quickjs_parity_all_cases":1170,"quickjs_parity_all_native_accepted":941,"quickjs_parity_all_pass":930,"quickjs_parity_all_failures":11,"quickjs_parity_all_native_rejected":5,"quickjs_parity_all_skipped":224,"compiler_errors":0,"compiler_timeouts":0,"compiler_crashes":0,"compiler_fails":0,"both_fail":2,"interpreter_fail_compiler_pass":9,"interpreter_timeouts":0,"interpreter_crashes":0,"compatibility_pass":930,"compatibility_cases":941,"elapsed_ms":14963}
Result: {"status":"keep","compatibility_failures":6,"quickjs_parity_all_cases":1170,"quickjs_parity_all_native_accepted":941,"quickjs_parity_all_pass":935,"quickjs_parity_all_failures":6,"quickjs_parity_all_native_rejected":5,"quickjs_parity_all_skipped":224,"compiler_errors":0,"compiler_timeouts":0,"compiler_crashes":0,"compiler_fails":0,"both_fail":0,"interpreter_fail_compiler_pass":6,"interpreter_timeouts":0,"interpreter_crashes":0,"compatibility_pass":935,"compatibility_cases":941,"elapsed_ms":15040}
Result: {"status":"keep","compatibility_failures":0,"quickjs_parity_all_cases":1170,"quickjs_parity_all_native_accepted":941,"quickjs_parity_all_pass":941,"quickjs_parity_all_failures":0,"quickjs_parity_all_native_rejected":5,"quickjs_parity_all_skipped":224,"compiler_errors":0,"compiler_timeouts":0,"compiler_crashes":0,"compiler_fails":0,"both_fail":0,"interpreter_fail_compiler_pass":0,"interpreter_timeouts":0,"interpreter_crashes":0,"compatibility_pass":941,"compatibility_cases":941,"elapsed_ms":35852}
Result: {"status":"keep","compatibility_failures":3,"quickjs_parity_all_cases":92,"quickjs_parity_all_native_accepted":85,"quickjs_parity_all_pass":82,"quickjs_parity_all_failures":3,"quickjs_parity_all_native_rejected":7,"quickjs_parity_all_skipped":0,"compiler_errors":0,"compiler_timeouts":0,"compiler_crashes":0,"compiler_fails":0,"both_fail":3,"interpreter_fail_compiler_pass":0,"interpreter_timeouts":0,"interpreter_crashes":0,"compatibility_pass":82,"compatibility_cases":85,"elapsed_ms":4571}
Result: {"status":"keep","compatibility_failures":0,"quickjs_parity_all_cases":92,"quickjs_parity_all_native_accepted":85,"quickjs_parity_all_pass":85,"quickjs_parity_all_failures":0,"quickjs_parity_all_native_rejected":7,"quickjs_parity_all_skipped":0,"compiler_errors":0,"compiler_timeouts":0,"compiler_crashes":0,"compiler_fails":0,"both_fail":0,"interpreter_fail_compiler_pass":0,"interpreter_timeouts":0,"interpreter_crashes":0,"compatibility_pass":85,"compatibility_cases":85,"elapsed_ms":6606}
Result: {"status":"keep","compatibility_failures":0,"quickjs_parity_all_cases":1170,"quickjs_parity_all_native_accepted":941,"quickjs_parity_all_pass":941,"quickjs_parity_all_failures":0,"quickjs_parity_all_native_rejected":5,"quickjs_parity_all_skipped":224,"compiler_errors":0,"compiler_timeouts":0,"compiler_crashes":0,"compiler_fails":0,"both_fail":0,"interpreter_fail_compiler_pass":0,"interpreter_timeouts":0,"interpreter_crashes":0,"compatibility_pass":941,"compatibility_cases":941,"elapsed_ms":15452}
Result: {"status":"keep","compatibility_failures":52,"quickjs_parity_all_cases":3411,"quickjs_parity_all_native_accepted":3408,"quickjs_parity_all_pass":3356,"quickjs_parity_all_failures":52,"quickjs_parity_all_native_rejected":3,"quickjs_parity_all_skipped":0,"compiler_errors":0,"compiler_timeouts":0,"compiler_crashes":0,"compiler_fails":16,"both_fail":36,"interpreter_fail_compiler_pass":0,"interpreter_timeouts":0,"interpreter_crashes":0,"compatibility_pass":3356,"compatibility_cases":3408,"elapsed_ms":205703}
Result: {"status":"keep","compatibility_failures":39,"quickjs_parity_all_cases":3411,"quickjs_parity_all_native_accepted":3408,"quickjs_parity_all_pass":3369,"quickjs_parity_all_failures":39,"quickjs_parity_all_native_rejected":3,"quickjs_parity_all_skipped":0,"compiler_errors":0,"compiler_timeouts":0,"compiler_crashes":0,"compiler_fails":16,"both_fail":23,"interpreter_fail_compiler_pass":0,"interpreter_timeouts":0,"interpreter_crashes":0,"compatibility_pass":3369,"compatibility_cases":3408,"elapsed_ms":214752}
Result: {"status":"keep","compatibility_failures":35,"quickjs_parity_all_cases":3411,"quickjs_parity_all_native_accepted":3408,"quickjs_parity_all_pass":3373,"quickjs_parity_all_failures":35,"quickjs_parity_all_native_rejected":3,"quickjs_parity_all_skipped":0,"compiler_errors":0,"compiler_timeouts":0,"compiler_crashes":0,"compiler_fails":16,"both_fail":19,"interpreter_fail_compiler_pass":0,"interpreter_timeouts":0,"interpreter_crashes":0,"compatibility_pass":3373,"compatibility_cases":3408,"elapsed_ms":100769}
Result: {"status":"keep","compatibility_failures":30,"quickjs_parity_all_cases":3411,"quickjs_parity_all_native_accepted":3408,"quickjs_parity_all_pass":3378,"quickjs_parity_all_failures":30,"quickjs_parity_all_native_rejected":3,"quickjs_parity_all_skipped":0,"compiler_errors":0,"compiler_timeouts":0,"compiler_crashes":0,"compiler_fails":16,"both_fail":14,"interpreter_fail_compiler_pass":0,"interpreter_timeouts":0,"interpreter_crashes":0,"compatibility_pass":3378,"compatibility_cases":3408,"elapsed_ms":118168}
Result: {"status":"keep","compatibility_failures":28,"quickjs_parity_all_cases":3411,"quickjs_parity_all_native_accepted":3408,"quickjs_parity_all_pass":3380,"quickjs_parity_all_failures":28,"quickjs_parity_all_native_rejected":3,"quickjs_parity_all_skipped":0,"compiler_errors":0,"compiler_timeouts":0,"compiler_crashes":0,"compiler_fails":16,"both_fail":12,"interpreter_fail_compiler_pass":0,"interpreter_timeouts":0,"interpreter_crashes":0,"compatibility_pass":3380,"compatibility_cases":3408,"elapsed_ms":88168}
Result: {"status":"keep","compatibility_failures":27,"quickjs_parity_all_cases":3411,"quickjs_parity_all_native_accepted":3408,"quickjs_parity_all_pass":3381,"quickjs_parity_all_failures":27,"quickjs_parity_all_native_rejected":3,"quickjs_parity_all_skipped":0,"compiler_errors":0,"compiler_timeouts":0,"compiler_crashes":0,"compiler_fails":16,"both_fail":11,"interpreter_fail_compiler_pass":0,"interpreter_timeouts":0,"interpreter_crashes":0,"compatibility_pass":3381,"compatibility_cases":3408,"elapsed_ms":83131}
Result: {"status":"keep","compatibility_failures":24,"quickjs_parity_all_cases":3411,"quickjs_parity_all_native_accepted":3408,"quickjs_parity_all_pass":3384,"quickjs_parity_all_failures":24,"quickjs_parity_all_native_rejected":3,"quickjs_parity_all_skipped":0,"compiler_errors":0,"compiler_timeouts":0,"compiler_crashes":0,"compiler_fails":16,"both_fail":8,"interpreter_fail_compiler_pass":0,"interpreter_timeouts":0,"interpreter_crashes":0,"compatibility_pass":3384,"compatibility_cases":3408,"elapsed_ms":81592}
Result: {"status":"keep","compatibility_failures":21,"quickjs_parity_all_cases":3411,"quickjs_parity_all_native_accepted":3408,"quickjs_parity_all_pass":3387,"quickjs_parity_all_failures":21,"quickjs_parity_all_native_rejected":3,"quickjs_parity_all_skipped":0,"compiler_errors":0,"compiler_timeouts":0,"compiler_crashes":0,"compiler_fails":16,"both_fail":5,"interpreter_fail_compiler_pass":0,"interpreter_timeouts":0,"interpreter_crashes":0,"compatibility_pass":3387,"compatibility_cases":3408,"elapsed_ms":81733}
Result: {"status":"keep","compatibility_failures":20,"quickjs_parity_all_cases":3411,"quickjs_parity_all_native_accepted":3408,"quickjs_parity_all_pass":3388,"quickjs_parity_all_failures":20,"quickjs_parity_all_native_rejected":3,"quickjs_parity_all_skipped":0,"compiler_errors":0,"compiler_timeouts":0,"compiler_crashes":0,"compiler_fails":16,"both_fail":4,"interpreter_fail_compiler_pass":0,"interpreter_timeouts":0,"interpreter_crashes":0,"compatibility_pass":3388,"compatibility_cases":3408,"elapsed_ms":81858}
Result: {"status":"keep","compatibility_failures":19,"quickjs_parity_all_cases":3411,"quickjs_parity_all_native_accepted":3408,"quickjs_parity_all_pass":3389,"quickjs_parity_all_failures":19,"quickjs_parity_all_native_rejected":3,"quickjs_parity_all_skipped":0,"compiler_errors":0,"compiler_timeouts":0,"compiler_crashes":0,"compiler_fails":16,"both_fail":3,"interpreter_fail_compiler_pass":0,"interpreter_timeouts":0,"interpreter_crashes":0,"compatibility_pass":3389,"compatibility_cases":3408,"elapsed_ms":81810}
Result: {"status":"keep","compatibility_failures":17,"quickjs_parity_all_cases":3411,"quickjs_parity_all_native_accepted":3408,"quickjs_parity_all_pass":3391,"quickjs_parity_all_failures":17,"quickjs_parity_all_native_rejected":3,"quickjs_parity_all_skipped":0,"compiler_errors":0,"compiler_timeouts":0,"compiler_crashes":0,"compiler_fails":16,"both_fail":1,"interpreter_fail_compiler_pass":0,"interpreter_timeouts":0,"interpreter_crashes":0,"compatibility_pass":3391,"compatibility_cases":3408,"elapsed_ms":82899}
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Introduces a BEAM-native JavaScript execution engine from the ground up. Before this branch, QuickBEAM executed JavaScript through native QuickJS only; there was no Elixir bytecode decoder, BEAM interpreter, or BEAM compiler backend.
BEAM execution path
mode: :beam,mode: :auto,mode: :beam_compiler, andQUICKBEAM_MODE=beam_compiler.QuickBEAM.disasm/2.with,super, destructuring, iterators, and error propagation across interpreted and compiled paths.Compiler and VM architecture
OpcodeSpec, including operand formats, byte sizes, stack effects, branch/control metadata, slot metadata, call arity, and lowering ownership.RuntimeABIand keeps compiler lowering from calling lower-level VM/object-model internals directly.Object model and semantics
ObjectModel.InternalMethodsfor get/set/define/delete/own keys/prototype/extensibility paths, with focused proxy invariant modules.ToNumber, direct eval strictness, caller arguments reuse, transactional global writes, proxy invariants, invalid branch labels, malformed bytecode parsing, finally lowering arg-count, iterator-result owner lifecycle, and GC root handling.Builtins, metadata, and runtime cleanup
@ecma/@annex, nestedsymboldeclarations, descriptor-aware object declarations,object extends:,object prototype:, andobject into:.ArrayIterator,IteratorResult,ObjectIntegrity,ObjectEnumeration,ObjectAssign,ObjectDescriptors, andTypedArrayInstallation.Native/runtime reliability
JS_DupValuereferences.Audit and benchmark tooling
invalid, strict Test262 statement window passing, semantic compiler corpus passing, and compiler perf audit tracked.Recent validation
mix format --check-formattedmix compile --warnings-as-errorsmix reach.checkmix test test/vm/runtime test/vm/compiler test/vm/object_model test/vm/interpreter test/vm/builtin_dsl_test.exs test/vm/ecma_metadata_test.exs --max-failures 5mix test test/vm/object_descriptors_order_test.exs test/vm/object_proxy_integrity_test.exs test/vm/object_define_accessor_test.exs test/vm/object_own_property_primitives_test.exs test/vm/object_keys_test.exs test/vm/object_model/proxy_test.exs test/vm/compiler/core_test.exs --max-failures 5QUICKBEAM_BUILD=1 mix test --max-failures 1 --timeout 120000—7 doctests, 4251 tests, 0 failures, 3 skippedmix test --max-cases 1 --max-failures 1 --timeout 120000—7 doctests, 4251 tests, 0 failures, 3 skippedQUICKBEAM_BUILD=1 mix test test/napi_test.exs test/web_apis --max-failures 1 --timeout 120000—1045 tests, 0 failures, 2 skipped