You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
0.2.9
Features
os.availableParallelism() works in static programs.
--detached-exit frees the address space after process.exit off the critical path, so large programs exit sooner.
Performance
Cycle-capable objects are smaller. A 16-byte collector header, typed rest spreads, leaf capture boxes, rarely used array storage moved out of line, and tracing only types that can actually lie on a cycle.
The heap and cycle collector scale better. Busy small-object slices use transparent huge pages, the collector's growth fraction widens further on large live heaps, and Map/Setclear and delete cost O(live) rather than O(peak).
Indexed reads are cheaper. Typed-array reads stay plain numbers where undefined acts like NaN, unproven indexes are checked with a signed round trip, lengths and in-range indexes convert to doubles without the unsigned sequence, nullable-union array elements are read inline, and counted loops that start from an unproven value run on integer counters.
Worker programs pay less overhead. Fewer termination polls, an exact per-thread pending word, a call-free macOS stack guard, and exiting worker threads return their free pages to the system.
More receivers and fields stay native. Optional-chain receivers are borrowed, int32 fields survive Error subclasses that forward constructor arguments, and method calls stay native when only an unrelated callback field shares the name.
Compiler-scale programs compile without hitting V8's string limit. Serialized IR is streamed.
Fixes
More values behave as in Node.js. Missing array and typed-array reads stay undefined through number arguments, narrowed slots and lambda results, and null stays distinct from the temporal dead zone in forward-captured bindings.
Union class fields work in more shapes. Optional base-class receivers are narrowed before shared field access, and fields declared with different types across a union can be read and written.
Workers share descriptor tables safely, and live array references are accessed one element at a time.
Native program objects use runtime ABI v12. Runtime object layouts changed, so external object consumers must link the matching v0.2.9 runtime pack; the versioned marker rejects incompatible runtime objects at link time.