shell: switch to quickjs-jit 0.12.7 with upstream compatibility facade - #2903
Open
huacnlee wants to merge 19 commits into
Open
shell: switch to quickjs-jit 0.12.7 with upstream compatibility facade#2903huacnlee wants to merge 19 commits into
huacnlee wants to merge 19 commits into
Conversation
12 tasks
huacnlee
marked this pull request as draft
September 1, 2026 11:03
huacnlee
marked this pull request as ready for review
September 2, 2026 06:19
Co-authored-by: Codex <codex@openai.com>
Co-authored-by: Codex <codex@openai.com>
Update the benchmark commands to use the library test module path. Co-authored-by: Codex <codex@openai.com>
huacnlee
force-pushed
the
use-quickjs-jit
branch
from
September 2, 2026 06:21
65c0f25 to
a9d5873
Compare
Use the published quickjs-jit-runtime 0.12.4 crate so its runtime ABI matches quickjs-jit core and sys. Co-authored-by: Codex <codex@openai.com>
Co-authored-by: Codex <codex@openai.com>
Member
Author
|
Apple Silicon Issue #3 diagnostics are now wired through quickjs-jit PR #15 ( Fresh release verification on Apple arm64 / macOS 27:
Commands: cargo fmt --all -- --check
git diff --check
cargo check -p gpui-shell --tests
cargo test -p gpui-shell --release tests::benchmark::describing_a_panel_stays_inside_the_frame_budget -- --exact --nocapture
cargo test -p gpui-shell --release tests::benchmark::numeric_layout_installs_and_enters_native_code -- --exact --nocaptureThe remaining Issue #3 evidence is a paired panel parity run and the statistically sampled 0.12.5 performance comparison. |
Co-authored-by: Codex <codex@openai.com>
Member
Author
|
Follow-up |
This was referenced Sep 4, 2026
Co-authored-by: Codex <codex@openai.com>
Co-authored-by: Codex <codex@openai.com>
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.
Summary
Run GPUI Shell through
quickjs-jit0.12.7, preserving the existing QuickJS binding API and sharing one VM with LLRT. Pin the bindings, runtime, and upstreamrquickjscompatibility facade to9a83a7f9cdc178a0ab5d7b29c3c9227b0dcb8620; remove the compatibility crate previously maintained in this repository. The bundled facade is introduced by longbridge/quickjs-jit#22.Production runtimes enable automatic JIT. Debug runtimes remain interpreter-only. Defer JIT profiling during prelude/module evaluation, construction, initialization, and the first render; warm eligible functions can compile afterward. Cached frames still replay Rust snapshots without rerunning JavaScript.
The benchmarks compare automatic JIT with a true interpreter runtime, check snapshot parity and native entry, and expose categorized compilation/fallback metrics. The current mixed-workload regression remains unresolved; this PR is not evidence that default JIT is ready to merge.
Performance evidence
The 0.12.7 release-tag retest on Apple M3 used release builds, 30 independent processes per version/mode/workload, interleaved serial execution, 64 warmup renders, and 200 measured renders per process. Values below are medians across processes; the P99 column is the median of per-process P99s. Timings include snapshot validation. The interpreter baseline is the same quickjs-jit release with JIT disabled, not a separate upstream rquickjs build.
The panel entered no native code. The mixed workload fell back in 22/30 automatic samples; the other eight samples each recorded four rejected invalid artifacts. Snapshot checksums matched across all 360 samples. The zero-fallback mixed-workload assertion failed in 4/10 independent repeat runs. These findings supersede the earlier blanket acceptance conclusion; no cross-platform or memory/binary-size conclusions are drawn from this run.
Test Plan
git diff --check.cargo tree --locked -p gpui-shell -i quickjs-jit-core: one shared binding core; all six QuickJS/facade packages use the pinned revision.cargo test -p gpui-shell --release tests::benchmark -- --include-ignored --nocapture --test-threads=1: 10 passed, 1 failed. The failure is the existingmixed_market_panel_matches_interpreter_and_enters_native_codezero-fallback assertion, also reproduced before the facade migration.Checklist