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
Replaced recursive JSON parsing in vendor/boa_engine/src/builtins/json/mod.rs and crates/slice-engine/src/intrinsics/simd_ops.rs with an explicit heap-allocated frame stack (ParseFrame::ObjectWaitValue, ParseFrame::ArrayWaitElement, ReviverFrame), safely handling 512+ levels of nesting without native thread stack overflow (RangeError: Maximum JSON nesting depth (512) exceeded) while enforcing strict ECMA-404 control-character rejection (0x00..=0x1F), valid UTF-16 surrogates, and __proto__ own-data-property definitions.
Added an ASCII zero-escape fast path (!b.iter().any(|&c| c < 0x20 || c == b'\\' || c >= 0x80)), making common JSON key/value parsing 6–18% faster in microbenchmarks.
Propagated non-zero process.exit(code) (__SLICE_PROCESS_EXIT__:N), process.exitCode, and "beforeExit" / "exit" lifecycle hooks cleanly to the host CLI exit status across Tier-0 and Tier-2 execution without printing a spurious stack trace.
Unhandled Promise Rejection Detection (#49):
Added per-promise handled tracking to the Boa job queue alongside process.on("unhandledRejection", ...) dispatch and non-zero exit enforcement when unhandled rejections remain after draining the event loop.
Propagated deterministic virtual clock seeds (Date.now(), new Date(), performance.now()) into node:worker_threads worker isolates.
Made worker.terminate() resolve with exit code 1 (Promise<1>) and fire "exit" once without emitting a spurious "error" event on normal process.exit(0).
Propagated AsyncLocalStorage store snapshots across Promise.prototype.then/catch/finally microtasks, queueMicrotask, setTimeout, setInterval, setImmediate, and process.nextTick.
Returned Timeout / Immediate objects with .ref(), .unref(), .hasRef(), .refresh(), and [Symbol.toPrimitive](); excluded unref'd timers from keeping the event loop alive; and implemented node:timers/promises (setTimeout, setImmediate, setInterval async iterator, scheduler.wait/yield) with AbortSignal cancellation.