A JavaScript engine and runtime, written in the Milo programming language.
The runtime is in the same family as node, deno, bun (though obviously less mature).
Unlike node, deno, and bun which use existing JavaScript engines like V8 and JavaScriptCore, milojs uses milojs-engine, a JavaScript engine written in Milo.
milojs-engine executes code by parsing and running the parsed code directly, as opposed to a sophisticated JIT. This makes milojs-engine far simpler than V8 and JavaScriptCore, but slower.
There are two binaries in this repository:
milojs-engine— runs raw JavaScript with no host bindings. Similar to QuickJS.milojs- A node-compatible runtime, similar to node, deno, or bun. It can load modules, has an event loop, can access the filesystem, etc.
Parts of the code is formally verified to guarantee correctness using Milo's contracts.
P=$(uname -s | tr A-Z a-z)-$(uname -m | sed 's/x86_64/x64/;s/aarch64/arm64/')
curl -fsSL https://github.com/milo-language/milojs/releases/download/latest/milojs-$P.tar.gz | tar xz
cd milojs-$PRun it:
./milojs --version
./milojs script.jsor
./milojs-engine --version
./milojs-engine script.js
milojs implements the Node-API (N-API) C ABI to load and run real
.node addons — compiled shared libraries
