MIRROR: javascript for 🐜's, a tiny runtime with big ambitions
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

C 67.2%
JavaScript 24.6%
Zig 4.9%
TypeScript 1.3%
Meson 0.8%
Shell 0.5%
Rust 0.2%
C++ 0.1%
Python 0.1%
CSS 0.1%
CMake 0.1%
Other 0.4%
1313 4 0

Clone this repository

https://tangled.org/themackabu.com/ant https://tangled.org/did:plc:ekfqkayythfa62nwye5ecvdp/ant
git@tangled.org:themackabu.com/ant git@tangled.org:did:plc:ekfqkayythfa62nwye5ecvdp/ant

For self-hosted knots, clone URLs may differ based on your setup.

Download tar.gz
README.md

🐜 Ant#

An ant carries 50× its weight. So does this one.

Ant is a lightweight, high-performance JavaScript runtime built from scratch.
Built to carry more than it weighs while delivering near-V8 speeds.

$ ls -lh ant
-rwxr-xr-x⠀9.0M⠀ant*

# built with -Os
-rwxr-xr-x⠀6.5M⠀ant*

Table of contents#

Why Ant?#

Ant Node Bun Deno
Binary size ~9 MB ~120 MB ~60 MB ~90 MB
Cold start ~5 ms ~31 ms ~13 ms ~25 ms
Engine Ant Silver V8 JSC V8
JIT
WinterTC conformant partial

Ant is designed for environments where size and startup time matter: serverless functions, edge computing, embedded systems, CLI tools, and anywhere you'd want JavaScript but can't afford a 50MB+ runtime.

The engine, Ant Silver is hand-built, not a wrapper around V8, JSC, or SpiderMonkey. The JIT compiler uses a fork of MIR, a lightweight backend that enables near compiled performance.

Installation#

curl -fsSL https://ant.themackabu.com/install | bash

Spec conformance#

Ant targets the WinterTC Minimum Common API specification, the standard for server-side JavaScript interoperability developed by Ecma TC55.

Suite Pass rate Notes
js-zoo (ES1–ES5) ~100%
js-zoo (ES6) ~82%
js-zoo (ES2016+) ~86%
js-zoo (overall) 88% 1211/1368 passing
test262 ~50% Improving, focus is on real-world coverage

Benchmarks#

Cold start#

Measures the time to import Hono, register routes, and exit. Each runtime loads the same bench-coldstart.js script from examples/npm/hono/ that creates a Hono app with two routes, prints "ready", and calls process.exit(0). No HTTP server is actually started, this isolates module resolution and initialization overhead.

Measured with hyperfine (10 warmup runs, 100 timed runs):

hyperfine --warmup 10 --runs 100 \
  'ant  examples/npm/hono/bench-coldstart.js' \
  'node examples/npm/hono/bench-coldstart.js' \
  'bun  examples/npm/hono/bench-coldstart.js' \
  'deno run --allow-read --allow-env examples/npm/hono/bench-coldstart.js'
Runtime Mean Min Max Relative
Ant 5.7 ms 5.0 ms 7.3 ms 1.00
Bun 12.8 ms 11.6 ms 16.4 ms 2.24× slower
Deno 24.8 ms 22.2 ms 29.4 ms 4.32× slower
Node 31.1 ms 27.1 ms 151.7 ms 5.41× slower
Environment
Detail Value
Hardware Apple M4 Pro, 24 GB RAM, 14 cores
OS macOS 15.7.5 (arm64)
Ant 0.9.1
Node 25.9.0
Bun 1.3.13
Deno 2.7.12

Building Ant#

See BUILDING.md for instructions on how to build Ant from source and a list of supported platforms.

Security#

For information on reporting security vulnerabilities in Ant, see SECURITY.md.

Community#

Contributing to Ant#

We welcome contributions through pull request. See CONTRIBUTING.md for more details.
For information about the governance of Ant, see GOVERNANCE.md.