Embedded-first design
Run in a caller-provided buffer or a single malloc block. GC threshold and C-stack limits are configurable.
Emjs is a lightweight JavaScript interpreter designed for firmware, tooling, and resource-constrained environments. It interprets source directly (no bytecode VM) and runs inside a fixed memory buffer you control.
Emjs targets scenarios where V8 or QuickJS would be too heavy, but you still want real JavaScript logic inside a C++ application.
Run in a caller-provided buffer or a single malloc block. GC threshold and C-stack limits are configurable.
Two static libraries (emjs-core, emjs-exts), a clean JsEngine API, and optional native function binding.
The emjs executable runs scripts, supports REPL mode, and ships with common extensions enabled at build time.
let/const, arrow functions, closures, array methods, try/catch, and more — documented against source code.
Browse topic pages for build instructions, API reference, language support, and extensions.
Build with CMake, install libraries, and embed Emjs in your first C++ program.
Run scripts, use interactive REPL, and install the emjs command.
eval, callGlobal, native bindings, GC controls, and value helpers.
Supported syntax, operators, control flow, functions, closures, and limitations.
Optional console, Math, JSON, Date, and more.