PeruneJS
About project
A JavaScript engine written from scratch in C++20 — an AST-walking interpreter targeting ECMA-262 5.1, with its own garbage collector and a JSI-compatible embedding layer that lets it run a React Native app in place of Hermes.
- Lexer: UTF-8 input, Unicode identifiers, regexp literals, line-terminator tracking for ASI.
- Parser: recursive descent covering the full ES5.1 grammar (ASI, strict mode,
with, getters/setters). - Evaluator: tree-walking; every step returns a
Completionrecord, so JS exceptions flow as values rather than C++ exceptions. References, lexical environments, hoisting,eval, and stack-overflow protection (RangeError). - Standard library: including a hand-written backtracking regular expression engine.
Date
2026
Links
Github