Skip to main content
Ant targets the WinterTC Minimum Common API specification (Ecma TC55), the emerging standard for server-side JavaScript interoperability. This means code written against standard globals like fetch, URL, crypto, or ReadableStream runs on Ant without modification, and it means Ant plays well in ecosystems that test for WinterTC compliance. Alongside that baseline, Ant ships a broad set of Node-compatible built-in modules so that existing npm packages and Node-style code work out of the box.

ECMAScript conformance

Ant measures conformance against two test suites: js-zoo (which covers ES1 through modern ES) and test262 (the official ECMAScript conformance test suite). The numbers below are from the Ant 0.9.1 release.
SuitePass rateNotes
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
test262 coverage is an active area of work. The team prioritizes real-world API coverage over exhaustive spec compliance, so you may encounter edge cases in less-common language features.

WinterTC Minimum Common API

Ant is fully WinterTC conformant, which means the following standard globals are available without any imports:
  • fetch, Request, Response, Headers — HTTP client API
  • URL, URLSearchParams — URL parsing and construction
  • crypto — Web Crypto API (subtleCrypto, randomUUID, getRandomValues)
  • TextEncoder, TextDecoder — text encoding and decoding
  • ReadableStream, WritableStream, TransformStream — WHATWG streams
  • Blob, FormData — binary data and multipart forms
  • AbortController, AbortSignal — request cancellation
  • structuredClone — deep cloning
  • queueMicrotask, setTimeout, setInterval, clearTimeout, clearInterval — timers
  • performance — performance timing (High Resolution Time)
  • navigator — environment metadata (navigator.userAgent, etc.)

Node.js compatibility

Ant provides Node-compatible built-in modules accessible via the node: prefix or as bare names. You can import them either way:
import fs from 'node:fs';
import path from 'path';

// Both forms work
import crypto from 'node:crypto';
import crypto from 'crypto';
ModuleImportDescription
node:fs / ant:fsimport fs from 'node:fs'File system operations
node:path / ant:pathimport path from 'node:path'Path utilities
node:osimport os from 'node:os'Operating system info
ModuleImportDescription
node:netimport net from 'node:net'TCP networking
node:tlsimport tls from 'node:tls'TLS/SSL sockets
node:dnsimport dns from 'node:dns'DNS resolution
ModuleImportDescription
node:crypto / ant:cryptoimport crypto from 'node:crypto'Cryptography
node:streamimport stream from 'node:stream'Node streams
node:bufferimport { Buffer } from 'node:buffer'Buffer
node:zlibimport zlib from 'node:zlib'Compression
node:string_decoderimport { StringDecoder } from 'node:string_decoder'String decoder
ModuleImportDescription
node:child_processimport { spawn } from 'node:child_process'Spawn child processes
node:worker_threadsimport { Worker } from 'node:worker_threads'Worker threads
node:eventsimport { EventEmitter } from 'node:events'EventEmitter
node:async_hooksimport { AsyncLocalStorage } from 'node:async_hooks'Async context tracking
ModuleImportDescription
node:urlimport { fileURLToPath } from 'node:url'URL utilities
node:utilimport util from 'node:util'Utility functions
node:assertimport assert from 'node:assert'Assertions
node:readlineimport readline from 'node:readline'Readline interface
node:perf_hooksimport { performance } from 'node:perf_hooks'Performance timing
node:ttyimport tty from 'node:tty'TTY utilities
node:consoleimport console from 'node:console'Console
node:timersimport { setTimeout } from 'node:timers'Timer functions
node:v8import v8 from 'node:v8'V8 compatibility shim

Ant-only modules

These modules are unique to Ant and are not available in Node, Bun, or Deno. They expose low-level capabilities designed for environments where Ant’s small footprint is an advantage.
ModuleImportDescription
ant:ffiimport ffi from 'ant:ffi'Call native shared libraries from JavaScript
ant:shellimport shell from 'ant:shell'Execute shell commands and capture output
ant:lmdbimport lmdb from 'ant:lmdb'Embedded LMDB key-value store
ant:lmdb gives you a persistent key-value store with no external database process — useful for edge deployments and CLI tools that need durable local state.

Supported platforms

Ant ships official CI-built binaries for the following platforms:
Operating systemArchitectureVariantStaticCI environment
GNU/Linuxx64glibcNoUbuntu 22.04
GNU/Linuxaarch64glibcNoUbuntu 22.04
GNU/Linuxx64muslYesAlpine Edge
GNU/Linuxaarch64muslYesAlpine Edge
macOSx64darwinNomacOS 15
macOSaarch64darwinNomacOS 15
Windowsx64mingw/msysNoMSYS2 MINGW64
Windows builds use the MSYS2 MINGW64 toolchain. Native MSVC builds are not currently supported.

Known limitations

  • test262 conformance is approximately 50% and actively improving. Some edge cases in less-common ES6+ features may behave differently than in V8 or JSC.
  • Not every Node.js API surface is implemented. If you encounter a missing method, check the issue tracker or open a new issue.
  • Node.js compatibility is provided on a best-effort basis for the APIs listed above — full behavioral parity with Node is not a goal.