0.3.3
Features
- scriptc targets Node 24.22.0. Compatibility tables, tests and behavior follow Node 24.22.0.
node:cryptocovers more of Node 24: every digest increateHash,createHmac,crypto.hash,pbkdf2andhkdf, every Hash and Hmac encoding and option, secretKeyObjects (createSecretKey,generateKey,generateKeySync),randomFill,randomIntcallbacks,randomUUIDoptions,randomUUIDv7, andtimingSafeEqualover any view orArrayBuffer.node:fsaddsglob,globSyncandfs/promisesglob, the remainingfs/promisesfunctions with Node's argument checks, completefs.Statsin both lanes, and results frommkdir,readFileandwritecallbacks.readdirlists entries in byte order on POSIX hosts, and dynamicDirentvalues have Node's prototype and inspect form.BlobandFileare supported.readline/promises,stream.addAbortSignaland thestream/promisesoptions are supported, and stream chunks made from strings reach user code asBuffers.- The legacy
urlAPI,url.domainToASCIIandurl.domainToUnicodeare supported. process.memoryUsage, process identity members, andperformancemarks and measures are supported.EventTargetandEventcan be subclassed.- Sockets and servers support
ref()andunref(). The HTTP server enforces Node's header field limits, andutil.typeshas Node 24's keys. util.inspectprints class names and dynamic Maps and Sets as Node does.localeComparematches Node's collation forl·, U+0130, ligatures, combining Latin letters and vulgar fractions.
Performance
- Comparator sorts use V8's TimSort, and typed-array
sortandtoSortedare lowered natively. - The allocator has 8-byte size classes below 128 bytes, so small objects waste less memory.
- Interface calls are faster. Class methods are called directly through interfaces, interface dispatch is inlined and borrows array elements, and arrays of interface values are stored natively with direct field reads.
- Strings append in place for fields, concatenation chains and character codes, and string retains are inlined in release builds.
- Records are leaner. Scalar-union fields are stored inline, record parameters and returns widen by flow class, nullable records use widened record slots, result-slot entries are inlined, and conversions from typed records to
unknownare cheaper. - Typed
JSON.parsematches member names against the text and reads scalar members inline, and typedJSON.stringifywrites arrays from their slots. - Map and Set iteration steps are inlined, and
Object.valuesis built natively when its result is only iterated or read. - Array searches over objects and strings run inline, and array headers stay out of loops.
localeCompareis faster: it compares without building element lists and checks ASCII strings eight bytes at a time.- Remainders by powers of two skip
fmod, number and string dynamic boxes are freed without the destroy queue, and VT control characters are stripped in one pass.
Fixes
parseIntrounds as Node does on each architecture.- New runtime globals are defined with initializers, so library localization hides them.
- Native program objects use runtime ABI v21. Array, record and allocator layouts changed, so external object consumers must link the matching v0.3.3 runtime pack; the versioned marker rejects incompatible runtime objects at link time.