v12.2.8f8451f4.0
Ant 12.2.8f8451f4.0
Package installs and dependency resolution are more deterministic
- Added platform-aware package filtering using npm-compatible operating-system, CPU, and Linux libc/ABI names.
- Upgraded
ant.lockbto lockfile version 4 so platform ABI data is recorded consistently. Invalid or older lockfiles now trigger a fresh resolve and install instead of stopping at an invalid-lockfile error. - Added virtual package links that preserve each dependency's peer-dependency context instead of flattening incompatible peer environments together.
- Improved registry-host caching and warmed-registry fallback deduplication.
- Added
ant install --forceandant update --forceto ignore cached metadata, re-resolve dependencies, and safely replace cached package contents. - Fixed cache cleanup and retained-memory issues in forced installs.
- Added metadata lookup for direct tarball URLs so packages installed from registry tarballs still resolve with their correct package metadata.
- Added automatic
npm_config_user_agent=ant/<version>for package executables launched through Ant. - Improved package trust output by listing blocked lifecycle scripts and the exact
ant trustcommands needed to run them. - Added lifecycle-build counts and clearer progress reporting to install, add, update, trust, and reinstall output.
- Limited add/update summaries to the direct packages requested by the user.
ants.land publishing and tooling improved
- Added multipart package publishing to the registry and ants.land CLI for larger package archives.
- Added tarball hashing and multipart create, part-upload, and completion handling.
Servers and interactive input are easier to use
- Added first-class
Ant.serve(options)for starting a server programmatically instead of relying only on a module default export. Ant.serve()now returns the live server object withhostname,port,url,stop,requestIP,timeout,upgradeWebSocket, andeventSource.- Listen failures now include Node-style
code,errno,syscall,address,port, or Unix-socketpathdetails. - Reworked readline and
process.stdinaround one shared input path so readline, keypress events, pause/resume, and data listeners cooperate correctly. - Fixed arrow-key decoding, sequential keypress delivery, stdin pausing, and piped-input handling.
- Reduced per-byte work in readline key-sequence processing.
Node and web API compatibility expanded
- Added
dns.promises.resolve()support for A, AAAA, SRV, and TXT records through c-ares. - Made
net.Socketandtls.TLSSocketinherit and initialize as duplex streams. - Added
Buffer.prototype.compare()andBuffer.prototype.equals(). - Added start/end bounds support to
Buffer.prototype.toString(). - Added proper
DataView.prototype.buffer,byteLength, andbyteOffsetaccessors. - Added Latin-1 conversion support to base64 and string-decoder paths.
- Added PBKDF2 key import and
SubtleCrypto.deriveBits()support for derived keys. - Added
fs.symlinkSync()and expandedfs.cpSync()to preserve symlinks, file modes, filters, dereference options, and verbatim link targets. - Missing CommonJS packages now throw errors with
code: 'MODULE_NOT_FOUND'from bothrequire()andrequire.resolve(). - Updated
process,process.env,process.versions,process.features, andprocess.releaseto inherit standard object methods such ashasOwnProperty. - Optimized
HeadersandResponseinitialization while preserving content-type normalization and constructor behavior.
JavaScript async execution and control flow are more correct
- Fixed async coroutine state corruption across nested generators,
for await, and awaits that occur before a yield. - Fixed returns, throws, breaks, continues, and labeled jumps so they unwind through every required
finallyblock. - Fixed async returns that previously skipped
finally, includingPromise.race()paths with pending competitors. - Fixed iterator-result undefined behavior affecting typed arrays, collections, headers, and
Promise.all(). - Made pending-promise garbage-collector tracking O(1) and scoped it per VM.
- Added a generational write barrier for closed upvalues so captured values remain live across collections.
- Fixed sloppy-mode
argumentsparameter aliasing, including after async activation materialization. - Fixed JIT-compiled derived constructors dropping the
thisvalue rebound bysuper().
Parser, object-model, and collection correctness improved
- Corrected static class method parsing, computed class elements, and strict class-element compilation.
- Fixed incorrect parsing of unparenthesized
inexpressions. - Fixed strict-mode reclassification for dynamically constructed functions.
- Added non-registered symbols and native functions as valid
WeakMapkeys andWeakSetvalues. - Removed the legacy rope-length cap that could break very large concatenated property strings.
- Improved builtin object construction and prototype consistency.
Silver JIT coverage and performance expanded
- Added JIT support for optimized field reads and optional property/element access.
- Added JIT support for nullish tests and nullish jumps.
- Added JIT support for private-field reads and writes.
- Added JIT support for stack
NIP, prefix/postfix increment, and decrement operations. - Added virtual-stack slot reservation and more precise boxed/numeric slot tracking.
- Fixed stale numeric-slot state after JIT
voidoperations. - Added targeted JIT correctness tests and hit/miss benchmarks for fields, elements, nullish operations, private fields, stack manipulation, and increment/decrement.
- Added dynamic-property, large-AST, React, response-construction, and decimal conversion performance workloads.
- Updated the Darwin ARM64 PGO profile and expanded PGO training with server workloads.
WASI, sandboxing, and embedding moved forward
- Added configurable WASI
preopensinstead of exposing only the current directory. - Fixed Darwin WASI native-call linkage.
- Fixed AArch64 KVM boot-parameter parsing and exception-vector setup.
- Added AArch64 sandbox register dumping for fault diagnosis and disabled unsupported DC ZVA use under KVM.
- Updated libant to compile the platform sandbox backends into the static library.
- Added libant allocator, native-tuning, LTO, and PGO build options.
Build, release, and project infrastructure improved
- Added a reproducible Nix toolchain layer with LLVM 21 on Linux and an Apple-SDK-safe unwrapped Clang setup on macOS.
- Added Cachix-backed Nix builds, system-partitioned vendor caches, stable output hashing, and ccache acceleration.
- Fixed Nix cache trust configuration and prevented unintended linker overrides.
- Fixed the Windows build after the runtime and tooling changes in this release.
- Added a dedicated manifest API route and GitHub workflow that attach release-note URLs without changing artifact provenance.
- Added vouch-managed contribution gating and automated vouch-list maintenance.
Testing coverage grew substantially
- Added a manifest-driven package and runtime test harness with snapshot support.
- Added focused harness groups for server, network, and HTTP benchmarking workloads.
- Added compatibility snapshots for esbuild, Rolldown, React, Preact, tar, djot, Lua, pidtree, and smoke workloads.
- Added regression coverage for
Ant.serve, readline input, platform package resolution, peer-context linking, forced installs, lifecycle trust, multipart publishing, base64, PBKDF2, filesystem symlinks, CommonJS errors, async/finally unwinding, GC upvalues, WeakMap symbols, large ropes, and the expanded JIT surface.
To upgrade to Ant 12.2.8f8451f4.0:
ant upgradeTo install Ant 12.2.8f8451f4.0:
curl -fsSL https://antjs.org/install | bash