Skip to content

Ant

CLI & Terminal
C Latest v0.12.0.1780342116 · 1d ago Security brief →

Features

  • Lightweight JavaScript runtime (~9 MB binary)
  • Near‑V8 performance with a cold start around 5 ms
  • Built from scratch (Ant Silver engine, not a V8/JSC wrapper)

Recent releases

View all 32 releases →
Review required
v0.12.0.1780342116 Breaking risk
Auth RCE / SSRF Breaking upgrade

Sandbox runtime + Release API

No immediate action
v0.11.1.1778652979 New feature

`--inspect` + faster regex

v0.11.0.1778361484 Breaking risk
Notable features
  • Added WebSocket API support
  • Added EventSource (Server‑Sent Events) API
  • Introduced ant:rpc module with example server and client
Full changelog

Ant 0.11.0

A major compatibility release focused on modern JavaScript behavior, richer networking APIs, stronger Node support, and a runtime that feels much more complete in real-world app code.

Highlights

ES6 & Proxy correctness

  • Private class brands now behave properly
  • Proxy, Reflect, own-key ordering, and Object.assign got a broad correctness pass
  • Classes, typed arrays, parser edge cases, and with () {} behavior all moved closer to spec

Networking APIs

  • Added WebSocket
  • Added EventSource
  • Added a ant:rpc module

Node/npm compatibility

  • Better compatibility for real packages, including the Discord example
  • Improved node:http/https behavior and CommonJS export handling
  • Better socket, TLS, and connect-failure behavior

Memory & runtime cleanup

  • Lower allocation pressure and less transient buffer churn
  • Better GC marking across more native-backed modules
  • Safer native object layout and pointer handling

Performance

  • Faster string building
  • Better JIT behavior for numeric loops and bailout snapshots
  • More benchmark coverage to track regressions and wins

Developer experience

  • console.inspect for strings
  • Broader spec and regression coverage across the runtime

Compatibility Scoreboard

| Area | Status |
| --------------------- | -------------------------------------------------------------------------------- |
| compat-table | 1511 / 1511 passing |
| test262 | ~64% passing |
| Big wins this release | Proxies, Reflect, private brands, WebSocket, EventSource, Node/npm compatibility |

Try It Now

Language compatibility
  • Added proper brand-based private class support
  • Added Array.isTemplateObject
  • Fixed class-method enumerability behavior
  • Enabled implicit strict mode for classes
  • Fixed typed-array and parser ES6 compatibility cases
  • Improved proxy behavior across a broad fixing pass
  • Improved Reflect behavior
  • Fixed own-key ordering regressions
  • Cleaned up Object.assign behavior
  • Added a better IsArray check for userland-facing paths
  • Fixed js_to_primitive exotic-helper behavior
  • Added more with () {} correctness fixes
  • Fixed thrown set-trap behavior
  • Emitted proper URLSearchParams array lengths
  • Fixed constructor-wrapper target-depth lookup
  • Fixed static-child this behavior
  • Fixed CommonJS export namespace behavior
Strings, functions, symbols, and object semantics
  • Improved ES6 function name support
  • Improved handling of explicit function length
  • Improved object primitive handling
  • Improved symbol primitive behavior
  • Improved Annex B string compatibility
  • Added more Annex B follow-up fixes
  • Improved string tags for newer builtins
  • Improved string_builder_t performance
  • Added console.inspect support for strings
  • Updated string specs and template-string coverage
  • Fixed a small .splice edge case
  • Improved flatMap performance
  • Fixed JSON and object behavior in more ES6-leaning cases
Networking, Web APIs, and real app support
  • Added EventSource
  • Added WebSocket
  • Added a basic ant:rpc module
  • Added spec coverage for EventSource and WebSocket
  • Added RPC examples
  • Added Node compatibility needed for the Discord npm example
  • Added a Discord example app
  • Improved node:http/https compatibility for more userland packages
  • Replaced the older tls.mjs path with a tls.c stub implementation
  • Improved TLS handle draining
  • Emitted synchronous connect failures on a microtask
  • Allowed better cleanup when listeners are aborted
  • Fixed stdin lockups
  • Fixed connection cleanup in net
  • Added better protocol, upgrade, TLS, and socket coverage in tests
Memory, GC, native layout, and runtime stability
  • Reduced allocation pressure in hot paths
  • Reduced transient buffer usage
  • Added a temporary parse arena with rewinding for short-lived parse work
  • Added finalizers for Request and Response
  • Added GC marking for crypto, events, LMDB, TLS, N-API, generators, and sockets
  • Improved native object layout by moving away from ANT_PTR
  • Stopped storing pointers in SLOT_DATA
  • Unified the native tag API
  • Removed redundant pointer-type checks in native paths
  • Reduced sv_func memory significantly with a sidecar layout
  • Added a hot path for both sidecar layouts
  • Reduced object size in some hot allocation paths
  • Fixed a MIR leak during bailout/unload paths
  • Fixed miscellaneous memory leaks
  • Improved stream allocation shapes
  • Optimized padding and memory layout for internals
Buffers, streams, TLS, and runtime polish
  • Fixed buffer offset safety issues
  • Fixed Buffer#indexOf range handling
  • Fixed UTF-8 buffer handling edge cases
  • Improved stream allocation behavior
  • Added more readable/writable state predicate coverage
  • Improved timers, event listeners, and stream lifecycle behavior
  • Updated event listener globals and related compatibility paths
  • Enabled WASM SIMD
Performance, JIT, and measurement
  • Optimized JIT numeric local loops
  • Hardened JIT bailout snapshots
  • Added a broad runtime/perf pass on the proxy-es6 branch
  • Improved performance in several proxy and object-model hot paths
  • Improved T_CFUNC promotion fallback behavior
  • Added deeper microbench coverage
  • Added more advanced Fibonacci benchmarks

To install Ant v0.11.0:

curl -fsSL https://ant.themackabu.com/install | bash
v0.10.2.1777541521 New feature
Notable features
  • Consistent handling of XDG paths
Full changelog

Patch Notes

Ant v0.10.2 is a tiny patch release focused on user directory behavior.

  • Ant now respects XDG paths more consistently.
  • Ant also keeps working with the legacy $HOME/.ant layout, so existing setups do not break.

To install Ant v0.10.2:

curl -fsSL https://ant.themackabu.com/install | bash
v0.10.0.1777368030 Breaking risk
Breaking changes
  • Removal of Ant binaries for version 0.10.0 due to a critical bug in number parsing.
Full changelog

[!CAUTION]
Ant binaries for 0.10.0 have been removed due to a critical bug in number parsing

Release Notes

Release v0.10.0 is a broad step forward for the language surface, Node compatibility, async/generator semantics, crash reporting, FFI, runtime performance, and developer tooling.

Language & ECMAScript Features

  • Added support for yield and generator functions
  • Added spec-shaped async generator prototype chains
  • Implemented explicit resource management support
  • Added parser, compiler, and runtime support for using, await using, and throw expressions
  • Added disposal symbols, SuppressedError, DisposableStack, and AsyncDisposableStack
  • Wired disposal cleanup through blocks, returns, breaks, continues, for...of, and async disposal paths
  • Added async-iterator helper plumbing needed by the new resource-management flow
  • Implemented Set.prototype.union
  • Implemented Set.prototype.intersection
  • Implemented Set.prototype.difference
  • Implemented Set.prototype.symmetricDifference
  • Implemented Set.prototype.isSubsetOf
  • Implemented Set.prototype.isSupersetOf
  • Implemented Set.prototype.isDisjointFrom
  • Added Map / WeakMap upsert support
  • Added BigInt64Array
  • Added Uint8Array base64 helpers
  • Added Uint8Array hex helpers
  • Added regexp index-group support
  • Fixed ES2019 symbol descriptions and function source-string behavior

Async, Generators & Coroutine Semantics

  • Stabilized async coroutines across more reentrant and callback-heavy cases
  • Fixed async generator await / yield interactions
  • Fixed async-generator overlap semantics
  • Fixed reentrant async-generator next() behavior
  • Added focused async-iterator and async-materialization coverage
  • Compiled async iteration correctly alongside TLA
  • Redesigned lazy-start and materialization cases
  • Switched coroutine tracking to a linked-list model
  • Only destroy coro->vm when the coroutine is actually reaped
  • Added promise assimilation helpers
  • Cleaned up dead code in promise paths
  • Used the active VM/coroutine more consistently for tracing and async work
  • Improved promise-job resume and dead-await/TLA fast-path coverage

Node Compatibility & Builtin Coverage

  • Expanded compatibility across builtins and npm packages
  • Added Object.getOwnPropertyDescriptors
  • Treated native C functions as objects for Object-prototype operations
  • Preserved display names for builtin module namespaces
  • Used node: aliases in missing named export errors
  • Attached module-context metadata to cached builtin namespaces
  • Registered FS constants as the constants module
  • Added fs.chmod / fs.chmodSync support for numeric and octal-string modes
  • Added fs.readlink / fs.readlinkSync
  • Exported more FS open/stat mode constants
  • Added fs.realpath.native callback compatibility
  • Added registered path/posix and path/win32 variants
  • Added buffer constants including kMaxLength, kStringMaxLength, and INSPECT_MAX_BYTES
  • Added util.callbackify
  • Added util.aborted for AbortSignal-driven promises
  • Added process.listeners
  • Added process.emitWarning formatting and warning-event payload support
  • Added stream default high water mark getters/setters
  • Improved fs/promises FileHandle compatibility
  • Improved util.promisify behavior
  • Improved EventEmitter.listeners()
  • Improved console instance routing and trace sink behavior
  • Added SubtleCrypto.digest
  • Exposed node:url.parse
  • Improved node:net client shim coverage
  • Wired CommonJS exports onto Object.prototype semantics more cleanly
  • Made EventEmitter inherit from the expected function/object shape

Runtime, Compiler & JIT

Under the hood, Ant changed a lot:

  • Reduced compile time by removing a fast-path bypass
  • Reworked Silver string building around a builder-backed path instead of deep rope-heavy append chains
  • Taught the VM, compiler, JIT glue, and GC to preserve and flush builder-backed strings
  • Rewrote the string pool for performance
  • Threaded more string operations through the JIT
  • Added broader OP_SPECIAL(1..3) JIT support for super, this, and import metadata
  • Fixed a JIT method-call stack-growth regression
  • Improved regex compile speed
  • Added regexp abstract exec work
  • Migrated Array.prototype.includes into a dedicated opcode
  • Optimized the dense-array includes fast path
  • Improved dense and overall array indexing performance
  • Fixed ES2016 conformance regressions introduced along the way
  • Undid an arguments-lowering change that regressed behavior
  • Added safer entry frame-pointer handling in the engine
  • Avoided VM stack relocation pitfalls in destructuring iterator helpers
  • Removed unused T_CLOSURE
  • Allowed promotion from T_CFUNC to metadata-backed objects
  • Stored native functions exactly during assignment
  • Allowed constructed C-function prototypes during promotion
  • Fixed super lookup for extracted static methods and constructors
  • Moved array/object prototype references under the symbol struct

Memory Management & Correctness

  • Added write barriers for slots inside pipes, writable streams, and readable streams
  • Adjusted GC thresholds as part of broader promise/runtime tuning
  • Updated RSS reporting to reflect truer usage
  • Fixed iterable WeakMap regressions
  • Added a proper ERRNO path for FS modules
  • Fixed N-API exception handling
  • Prevented row/column assignment bugs in process/TTY paths
  • Shared enumerable-property iteration between spread and assign
  • Centralized proxy enumeration in smaller runtime fixes
  • Added inspect support for Headers, Request, and Response
  • Allowed generator/map support for object keys in Object.fromEntries-style paths

Streams, Fetch, URL & Server

  • Migrated process.stdout and process.stdin to ReadableStream-based plumbing
  • Aligned stdio encoding behavior and fixed TTY teardown on exit
  • Improved stream lifecycle behavior around flowing startup and transform callbacks
  • Rejected invalid readable-stream chunks more consistently
  • Handled broader stream chunks in reporting paths and cancelled abandoned bodies
  • Added fetch redirect support
  • Added proper URL parsing for hashable paths
  • Added a fast URL parsing path
  • Added proper idle/request timeouts in the server
  • Fixed a server string-buffer oversight
  • Prevented tlsuv from closing a request before completion

FFI, WASM, Intl & Platform Work

  • Rewrote the entire FFI module
  • Cleaned up related reflect/internal_prop behavior around the FFI rewrite
  • Removed unused T_FFI
  • Added new FFI wrapper coverage and refreshed the SQLite example
  • Migrated Intl into a dedicated module
  • Added a Lua example
  • Added WASM table fixtures
  • Allowed faster WASM paths
  • Handled WASM exit messages more cleanly
  • Prevented WASM from throwing stack-related failures in specific paths
  • Prevented WASI from starting unless running as a reactor
  • Removed a duplicate WAMR check
  • Improved the WASM demo and demo script
  • Switched to a patched MIR (http://github.com/themackabu/mir)
  • Bumped Windows stack limits
  • Used pthread_get_stacksize_np correctly
  • Added arena/mmap hints and Linux-specific arena tuning

Crash Handling & js.report

  • Added a native crash handler
  • Added Windows crash-handler support
  • Added upload-based crash reporting
  • Improved crash error-print formatting
  • Improved crash-message summaries

Install

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

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

About

Stars
291
Forks
11
Languages
C JavaScript Zig

Install & Platforms

Install via
shell-script
Platforms
macos arm64

Community & Support

Alternative to

Node Bun Deno

Beta — feedback welcome: [email protected]