A small, embeddable & extendable JS engine in Rust
Yavashark is a JavaScript engine built as a daily side project since March 17, 2024 — 950 consecutive days and 4,200+ commits by announcement time. It passes around 82% of the test262 conformance suite, implements Temporal (via Boa's temporal_rs crate, also used in Google's V8) and Intl (via icu4x), and its CLI can already run TypeScript and React with TypeScript, including the full react and react-dom libraries. It's designed to be embedded in Rust applications and extended by binding Rust functions and methods to JavaScript through a macro.
Passes around 82% of the test262 JavaScript conformance suite (as of the October 2026 announcement)
Temporal support via Boa's temporal_rs crate (also used in Google's V8) and Intl support via the icu4x crate
CLI can run TypeScript and React with TypeScript, including the full react and react-dom libraries (demos in the engine repo)
bind Rust functions and methods to JavaScript via a macro
Experimental builds add a TCP and HTTP API, a filesystem and I/O API, and early timer work — all intentionally very small
Tree-walking interpreter with bytecode support for async/await
Browser playground at yavashark.dev to try the engine directly
A small, embeddable and easily extendable JavaScript engine, built in Rust as a daily side project since March 17, 2024 — 950 consecutive days and over 4,200 commits by the time of its announcement.
It passes around 82% of the test262 test suite as of the October 2026 announcement, though the author notes many other features are still missing or half-implemented.
Modest today: it's mostly a tree-walking interpreter plus bytecode for async/await, with no hidden classes, inline caches, NaN-boxing, or optimized object layout. In early testing, a prototype with the planned new GC averaged about 3.5× V8's jitless mode across 19 microbenchmarks (beating it in every one, and beating JIT-enabled V8 in a few like exceptions and generators) — but the author cautions integration may bring slowdowns and V8-level raw compute is not the goal.
You bind Rust functions and methods to JavaScript via a macro. The announcement shows a filesystem object whose open(path) method reads a file into a string; more embedding examples live in the repo's examples directory.
Yes. The CLI can already run TypeScript and React with TypeScript, including the full react and react-dom libraries; a React demo is available in the repo's demos directory.
The engine is developed publicly on GitHub with 4,200+ commits. It's currently a solo project, but the author is accepting contributions.
Temporal (via Boa's temporal_rs crate, also used in Google's V8) and Intl (via icu4x) are implemented, and there's bytecode support for async/await, though with missing features.
In the browser playground at https://yavashark.dev/, or by cloning the engine repo.