deno
fa9ba06e - feat: add experimental QuickJS backend (#36194)

Commit
47 days ago
feat: add experimental QuickJS backend (#36194) ## Summary - add a `deno_v8` facade crate that re-exports either upstream `rusty_v8` or [`v8x`](https://github.com/littledivy/v8x) - keep V8 as the default backend while exposing mutually exclusive `v8` and `quickjs` Cargo features through `deno_core`, `deno`, `denort`, and `denort_desktop` - add an `--engine v8|quickjs` flag to `deno compile` / `deno desktop` that selects the runtime the produced binary uses, and publish the QuickJS `denort` / `libdenort` artifacts it resolves - make workspace lint and CI package selection aware of the mutually exclusive engine features The v8x dependency is pinned to an exact release candidate on crates.io (`v8x = "=149.4.0-rc.1"`). It currently tracks a different V8 line (149) than the default `v8` crate (150), so the two are bumped independently; the pin will move to a stable v8x release once one is published. The unrelated fixes that earlier rode along on this branch (the `#[op2(reentrant)]` heap-op change, the uv timer-deadline fix, the snapshot object-identity test, the `node_test_mock_timers` determinism fix, and the `tests/util/server` feature additions) are no longer part of this PR, so the QuickJS backend can be reviewed on its own. ## Building The existing V8 build remains unchanged: ```sh cargo build --bin deno ``` Build Deno with QuickJS: ```sh cargo build --bin deno --no-default-features --features quickjs ``` Build the standalone runtime used by compile output with QuickJS: ```sh cargo build -p denort --no-default-features --features quickjs ``` ## Validation - `cargo check --locked -p deno_v8 --no-default-features --features v8,simdutf` - `cargo check --locked -p deno_v8 --no-default-features --features quickjs,simdutf` - `cargo build --locked --bin deno` - `cargo build --locked --bin deno --no-default-features --features quickjs` - `./tools/lint.js --js` --------- Co-authored-by: Divy Srivastava <me@littledivy.com>
Author
Parents
Loading