v8x

v8x makes rusty_v8 engine agnostic. It is a drop-in replacement for the v8 crate that keeps the same Rust API and runs it on a different JavaScript engine:

-v8 = "149.4.0"
+v8 = { package = "v8x", version = "149.4.0", features = ["jsc"] }

Anything built on rusty_v8, including deno_core and Deno itself, compiles unchanged and runs on the engine you picked.

Engines

enginefeatureplatforms
JavaScriptCore (WebKit JSCOnly, built from source)jscmacOS
JavaScriptCore (Apple’s system framework)system_jscmacOS
QuickJS-ng (vendored, static)quickjsany

One engine is active at a time. The usual reason to swap is binary size:

enginedeno binaryengine size
V8 14.978.7 MB~40 MB static
JSC (vendored)80.7 MB~48 MB static
system JSC54.2 MB0, ships with the OS
quickjs-ng56.1 MB~1 MB static

Progress

Two suites run unmodified against every backend: the rusty_v8 integration tests, and deno_core’s own test suite under nextest. When a test fails, the backend gets fixed, not the test.