v15.0.23
·
5835 commits
to main
since this release
15.0.23 (2026-09-11)
Bug Fixes
- declare Temporal dependency for published bundles (6f0ba99)
- safe-bash: bound OpenAI HTTP error responses (dd3d766)
- safe-js: accept ZonedDateTime zones in Instant formatting (75d4ac3)
- safe-js: accept ZonedDateTime zones in relative-date bags (c0fde6c)
- safe-js: account for retained DateTimeFormat options (edc8caf)
- safe-js: allow omitted yield operands in conditional arms (dfa1582)
- safe-js: avoid empty intrinsic retention allocations (c062082)
- safe-js: bind constructor calls to tagged template results (5ffb77f)
- safe-js: bind proxies through prototype and descriptor traps (17f9d1b)
- safe-js: box all primitive Date JSON receivers (82c6b5e)
- safe-js: catch unresolved references in exception blocks (f19721b)
- safe-js: coerce elements in typed array factory results (b77691f)
- safe-js: coerce guest legacy substr arguments (e62c429)
- safe-js: coerce guest normalization forms (644d72c)
- safe-js: coerce guest string character indexes (50f5af7)
- safe-js: coerce guest string range bounds (234d381)
- safe-js: coerce guest string repeat counts (dc0b452)
- safe-js: compile borrowed dynamic functions in owner realms (b4613fc)
- safe-js: correct generator snapshot metadata placement (7c8a751)
- safe-js: correct standard builtin function lengths (fa654e3)
- safe-js: declare global numeric predicate lengths (6bebedc)
- safe-js: defer proxy iterator calls until array construction (03759fa)
- safe-js: detect Proxy ancestors during Promise adoption (5714449)
- safe-js: dispatch array factory writes through result proxies (f1d744c)
- safe-js: dispatch proxies in Promise operations (74bf58a)
- safe-js: dispatch Proxy callbacks through host bridges (1f06899)
- safe-js: dispatch Proxy methods during SDK iterator disposal (8790922)
- safe-js: dispatch Proxy operations in SDK iterator consumers (10c60c4)
- safe-js: dispatch Proxy species in SDK buffer methods (3fb453d)
- safe-js: dispatch SDK Iterator.from Proxy operations (f36c212)
- safe-js: dispatch SDK lazy iterator Proxy operations (882c152)
- safe-js: dispatch SDK TypedArray.from Proxy operations (5b14248)
- safe-js: dispose pending host reconciliation waits (d24dedd)
- safe-js: dispose run-owned atomic waiters (bc6a2df)
- safe-js: distinguish month-day strings from offsets (f524051)
- safe-js: enforce imported property key budgets (d37226c)
- safe-js: enforce iterator collection array budgets (6ef11da)
- safe-js: enforce private PlainTime data boundaries (fafcdc1)
- safe-js: enforce reconciliation allocation limits (4098d92)
- safe-js: enforce replay input allocation budgets (d9bb073)
- safe-js: enforce restricted function prototype accessors (f9e2590)
- safe-js: enumerate array string properties in for-in (46b99c4)
- safe-js: enumerate guest builtins and boxed primitive prototypes (a2bccef)
- safe-js: evaluate missing function and generator calls normally (f7d7a2c)
- safe-js: execute foreign eval in its owning realm (524d913)
- safe-js: expose strict arguments restricted descriptors (105915a)
- safe-js: expose the Promise toStringTag property (6b2862e)
- safe-js: format Temporal Duration private fields (90f3fc1)
- safe-js: forward SDK bound constructor newTarget (a9f07ee)
- safe-js: hoist declarations in exception blocks (fc2c456)
- safe-js: honor buffer and typed array constructor realms (83a8f3d)
- safe-js: honor dynamic function constructor prototype realms (870563d)
- safe-js: honor foreign builtin constructor default realms (f9f7b1c)
- safe-js: honor foreign Promise constructor default realms (50369f5)
- safe-js: honor guest object operations during JSON revival (9fb9bb8)
- safe-js: honor Iterator setter receiver operations (9ebc60d)
- safe-js: honor padding argument conversion order (a4c1202)
- safe-js: honor Promise finally cleanup species realms (4ca4e20)
- safe-js: honor Proxy newTarget in SDK Iterator construction (fb40bd7)
- safe-js: honor Proxy newTarget prototypes in SDK buffers (3df8ff3)
- safe-js: honor removed Date JSON hooks (95a9914)
- safe-js: honor resource constructor default realms (e501b4f)
- safe-js: honor string index search coercion (adf10a7)
- safe-js: honor string search argument coercion (23e36fc)
- safe-js: ignore unused string method arguments (f25d058)
- safe-js: import native promises across realms (9384cb2)
- safe-js: import native RegExp values through host boundaries (daf40cd)
- safe-js: initialize conformance child realms (e41efac)
- safe-js: initialize standalone replay data without ESM cycle (83d854a)
- safe-js: install array unscopables intrinsic (7929d67)
- safe-js: isolate lexical loop header bindings (3cd9fad)
- safe-js: keep cleanup detach handles internal (0fca5e2)
- safe-js: keep template cleanup imports lightweight (51a66f3)
- safe-js: limit result realm retention to async generators (7c4f240)
- safe-js: make buffer constructor prototype bindings immutable (7f3af99)
- safe-js: make weak constructor prototypes read-only (c019b13)
- safe-js: meter restored module source compilation (f535553)
- safe-js: normalize internal Proxy read index keys (987bc72)
- safe-js: normalize raw template line endings (3e33386)
- safe-js: normalize SDK structured-clone record prototypes (3dec608)
- safe-js: observe Proxy inputs during SDK iteration (efd6306)
- safe-js: observe proxy traps when installing error causes (a984026)
- safe-js: parse CR-only Test262 metadata (38e91c8)
- safe-js: parse literal member assignment targets (6b98f83)
- safe-js: parse sloppy let in statement bodies (d4891dd)
- safe-js: parse yield at assignment precedence (224ded2)
- safe-js: preserve AggregateError errors array realms (962c556)
- safe-js: preserve array copy result creation realms (2478d8e)
- safe-js: preserve array literal realms for SDK execution (5159ca9)
- safe-js: preserve boxed primitive creation realms (fa36d37)
- safe-js: preserve buffer object state in public dumps (ec097d4)
- safe-js: preserve built-in iterator result realms (2f4690c)
- safe-js: preserve callable proxy object tags (3f2d50f)
- safe-js: preserve capability structured-clone errors (62d2906)
- safe-js: preserve collections in imported Promise settlements (39b20fd)
- safe-js: preserve constructed array realm identity (cf57485)
- safe-js: preserve context for Proxy then getters (9c184e4)
- safe-js: preserve Date constructor realm identity (f4a0580)
- safe-js: preserve default array species result realms (9a2e204)
- safe-js: preserve descriptor result creation realms (c6cba16)
- safe-js: preserve destructuring rest result realms (ed6c0f8)
- safe-js: preserve foreign Intl constructor default realms (0d11f5d)
- safe-js: preserve foreign intrinsic compilation ownership (0899c51)
- safe-js: preserve foreign intrinsic error prototypes (1532017)
- safe-js: preserve function rest parameter realms (5b6d9f4)
- safe-js: preserve generator realms through snapshots (e0de903)
- safe-js: preserve generator result identity and realms (52d8ad4)
- safe-js: preserve grouping bucket creation realms (9c98e2d)
- safe-js: preserve host callback receivers through replay (6a09637)
- safe-js: preserve imported promise replay scheduling (eab68fa)
- safe-js: preserve imported Promise settlement identities (c6e146f)
- safe-js: preserve imports referenced by direct eval (68d0a32)
- safe-js: preserve intrinsic realms through snapshots (97b8e85)
- safe-js: preserve iterator entry pair creation realms (d027ed7)
- safe-js: preserve iterator toArray creation realm (b5efb0d)
- safe-js: preserve iterator wrapper fallback result realms (8cc2bc4)
- safe-js: preserve JSON container creation realms (e80ee4e)
- safe-js: preserve lazy iterator helper result realms (da3750e)
- safe-js: preserve match result creation realms (ae5b505)
- safe-js: preserve module source and template identities (b6d705b)
- safe-js: preserve Object constructor realm identity (28ff907)
- safe-js: preserve object literal realm identity (8c45f57)
- safe-js: preserve Object.fromEntries result realms (9082c9d)
- safe-js: preserve optional chain short-circuit boundaries (46df79a)
- safe-js: preserve ordinary constructor default realms (9a8ad4f)
- safe-js: preserve originating intrinsic prototype parents (72ec7e1)
- safe-js: preserve pristine prototype graphs in snapshots (dc20c34)
- safe-js: preserve private calendars across Temporal inputs (a6e9eb6)
- safe-js: preserve Promise instance creation realms (3df8c6c)
- safe-js: preserve Promise result container realms (bf7ee14)
- safe-js: preserve Promise.any error property descriptors (67a9a8f)
- safe-js: preserve Proxy coercion in SDK TypedArray.of (ca8c3d8)
- safe-js: preserve Proxy locale-list membership (6e32b78)
- safe-js: preserve reflection result creation realms (3b35d0a)
- safe-js: preserve regex template substitution boundaries (ea35d7e)
- safe-js: preserve RegExp iterator result realms (d9b98da)
- safe-js: preserve RegExp matcher execution realms (abb1d26)
- safe-js: preserve restored bound constructor newTarget (f78aeaf)
- safe-js: preserve restored closure execution realms (8b2a1f9)
- safe-js: preserve SDK Reflect constructor context (283c121)
- safe-js: preserve SDK typed-array result prototypes (8228963)
- safe-js: preserve source reference errors in promise recovery (67328bd)
- safe-js: preserve split result creation realms (639aa09)
- safe-js: preserve string boxing in SDK Iterator.from (29d188a)
- safe-js: preserve template escape diagnostic positions (326472c)
- safe-js: preserve YearMonth calendar in MonthDay conversion (106adda)
- safe-js: preserve zoned formatting option validation order (21fbad9)
- safe-js: prevent silent Proxy data-copy loss (a776a78)
- safe-js: read Promise properties through Proxy ancestors (d833e4f)
- safe-js: recheck enumerability during object value iteration (a822ca7)
- safe-js: recheck enumerability during spread and rest (dc62924)
- safe-js: recognize legacy escape globals in lint (0a1a185)
- safe-js: recognize Proxy in runtime lint globals (d07d208)
- safe-js: reflect dynamic import attributes through guest operations (8cab804)
- safe-js: reject cyclic backing storage references (2023450)
- safe-js: reject executable SDK structured clones (4f2593a)
- safe-js: reject execution-backed structured-clone records (7d2b473)
- safe-js: reject host Instant structured cloning (17d7706)
- safe-js: reject internal continuation references in guest data (5ed2934)
- safe-js: reject Intl private state in SDK structured clones (1dee93a)
- safe-js: reject non-async await at execution boundaries (2b376fd)
- safe-js: reject primitive Symbol concat arguments (d408495)
- safe-js: reject promises in SDK structured cloning (eaf8c0e)
- safe-js: reject proxies during structured cloning (a9d9e26)
- safe-js: reject symbol values in SDK structured cloning (6b876cc)
- safe-js: reject unsafe finite iterator limits (d1eb8dc)
- safe-js: reject weak private state in graph cloning (25126c2)
- safe-js: reject weak state in structured clones (e8c0dcd)
- safe-js: reject zoned Intl values without coercion (6faba84)
- safe-js: replay newly imported settled Promises (25f9bb9)
- safe-js: report iterator structured-clone rejection consistently (1bb9150)
- safe-js: require parentheses for await exponent bases (ed0d2e5)
- safe-js: resolve inherited Proxy thenables (97511a9)
- safe-js: resolve Proxy thenables through guest reads (a1f5f84)
- safe-js: respect deleted collection and typed array tags (30f8815)
- safe-js: restrict in expressions in classic for initializers (8c124d5)
- safe-js: retain call context in restored bound functions (7c5abb4)
- safe-js: retain class realms through snapshots (dcff3a0)
- safe-js: retain collection instance prototype origins (c74d7ba)
- safe-js: retain Error constructor realms after cleanup (71a7bfc)
- safe-js: retain function prototype realms after cleanup (864d7b0)
- safe-js: retain invocation context in cached Intl functions (fa25060)
- safe-js: retain originating default prototype links (d84140d)
- safe-js: retain proxy prototype results during validation (b0686ee)
- safe-js: retain requested prototypes across proxy trap lookup (e9b9dc6)
- safe-js: retain runtime global and eval identities after cleanup (9e75796)
- safe-js: retain SDK constructor prototype fallback (3908b6b)
- safe-js: retain source locations in reference error stacks (ec8ccc3)
- safe-js: retain string matchAll matcher realms (c1b8b4e)
- safe-js: round duration quotients with exact arithmetic (f4fff71)
- safe-js: scope intrinsic execution contexts to realm identity (b4f9d23)
- safe-js: separate function realms when reusing budgets (6337735)
- safe-js: serialize proxies through guest JSON operations (0747990)
- safe-js: share catch binding protocols and checkpoint scopes (ff90931)
- safe-js: share conformance child realm budgets (17928b5)
- safe-js: share numeric parser intrinsics within each realm (0b3e4d7)
- safe-js: share safe promise allocation validation (74f834f)
- safe-js: stop numeric coercion after a left Symbol (a5919f0)
- safe-js: throw uncaught Script reference errors (19ac58a)
- safe-js: total blank durations at PlainDate boundaries (772de77)
- safe-js: unify direct collation argument conversion (c15f7bc)
- safe-js: unify raw string conversion and iteration budgets (2469466)
- safe-js: validate awaited promise settlement budgets (2cae77b)
- safe-js: validate Intl offset zones independently of ICU (22e6017)
- safe-js: validate private Temporal Duration field records (05de0f6)
- safe-js: validate shared callback receivers (d9e6c0f)
- safe-js: validate sort comparators before receiver access (d8e21fd)
- safe-js: validate Temporal offset components strictly (cbfa5ae)
Features
- safe-bash: support quiet zip and streamed unzip (1b3f481)
- safe-fs: add RPC atomic filesystem conformance (bbe9d1b)
- safe-js: account for reachable weak-state data (b28fe1e)
- safe-js: add budgeted Atomics.pause intrinsic (99711db)
- safe-js: add joint iterator helpers with snapshot recovery (1f8b80b)
- safe-js: add lazy Iterator.concat with snapshot recovery (2fa89c3)
- safe-js: add Map get-or-insert methods (d00fa92)
- safe-js: add owned PlainDate value storage (e7a9846)
- safe-js: add owned PlainDateTime value storage (5ef3129)
- safe-js: add owned PlainMonthDay private storage (8137db2)
- safe-js: add owned PlainTime value core (1cbdb67)
- safe-js: add owned PlainYearMonth private storage (241e44d)
- safe-js: add owned ZonedDateTime private storage (5191b81)
- safe-js: add PlainDate calendar arithmetic (1cb27fa)
- safe-js: add PlainDate calendar differences (a9dfe2b)
- safe-js: add PlainDate comparison and equality (b42c03d)
- safe-js: add private proxy state and trap lifecycle (f1cf3f3)
- safe-js: add replay-aware Temporal Now namespace (15d73a0)
- safe-js: add validated PlainTime input and partial updates (e3082b5)
- safe-js: admit PlainMonthDay to Intl date formatting (1265a2d)
- safe-js: admit PlainYearMonth to Intl date formatting (d81013c)
- safe-js: await proxy operations in array methods (4428354)
- safe-js: combine PlainDate with time values (938012a)
- safe-js: convert Date values to Temporal Instants (77468bf)
- safe-js: convert proxy property descriptor inputs (2eec293)
- safe-js: convert strings and private values with PlainDate.from (e7d9803)
- safe-js: copy proxy properties with spread and rest (15750d4)
- safe-js: copy proxy sources with object assign (938975f)
- safe-js: define array species results through proxies (7ff7175)
- safe-js: dispatch callable proxy apply operations (8ea51cc)
- safe-js: dispatch guest proxy assignment expressions (1dd9f72)
- safe-js: dispatch guest proxy member reads (e03e5bb)
- safe-js: dispatch legacy prototype accessors through proxies (c516fee)
- safe-js: dispatch proxy construction with newTarget (4c7c639)
- safe-js: dispatch proxy delete expressions (07747ef)
- safe-js: dispatch proxy membership expressions (37970dd)
- safe-js: encode shared backing storage references (fd84cf0)
- safe-js: enumerate proxy descriptor maps (f71a861)
- safe-js: enumerate proxy keys values and entries (c156b9e)
- safe-js: enumerate proxy properties in for-in (408d7b1)
- safe-js: enumerate proxy property descriptors (c74a46c)
- safe-js: execute guest dynamic functions and eval (5541c7a)
- safe-js: expose job-scoped WeakRef globals (dd65ec4)
- safe-js: expose owner-scheduled FinalizationRegistry (fffa9ba)
- safe-js: expose PlainDate construction and calendar replacement (2a400dc)
- safe-js: expose Proxy and revocable globals (643f579)
- safe-js: expose WeakMap and WeakSet globals (b8ab40b)
- safe-js: flatten proxy-wrapped nested arrays (e8e1fff)
- safe-js: follow proxy chains in isPrototypeOf (ea4b73c)
- safe-js: follow proxy chains in ordinary instanceof (cdb643f)
- safe-js: format owned Temporal dates through Intl (bdbb921)
- safe-js: format PlainDate values by locale (58b9b99)
- safe-js: freeze and seal proxy targets (1cfc9d1)
- safe-js: implement proxy extensibility operations (004e5fd)
- safe-js: implement proxy own-key enumeration (e7b9fda)
- safe-js: implement proxy own-property descriptor reads (db19e7a)
- safe-js: implement proxy property definitions (766a256)
- safe-js: implement proxy property deletion (86c0645)
- safe-js: implement proxy property existence checks (5e22887)
- safe-js: implement proxy property reads (18fc4db)
- safe-js: implement proxy property writes (e34b453)
- safe-js: implement proxy prototype operations (0bf89e7)
- safe-js: integrate Duration rounding adapter (27ed1da)
- safe-js: integrate PlainDate cross-type conversions (bfa61f5)
- safe-js: integrate PlainMonthDay constructor and methods (2ae015d)
- safe-js: integrate PlainYearMonth constructor and methods (493001c)
- safe-js: integrate shared memory with snapshots and host replay (90d094b)
- safe-js: integrate Temporal Duration constructor and methods (52cfd5b)
- safe-js: integrate Temporal namespace and Instant methods (bf59405)
- safe-js: integrate Temporal PlainDateTime constructor and methods (2583fc7)
- safe-js: integrate Temporal PlainTime constructors and methods (675552b)
- safe-js: integrate ZonedDateTime constructor and methods (13f964b)
- safe-js: merge partial PlainDate fields (548e2d9)
- safe-js: normalize Temporal rounding options (653b7ba)
- safe-js: parse Temporal calendar string forms (6c8f6d0)
- safe-js: parse Temporal time-zone string forms (1bf2cdd)
- safe-js: preserve imported promise input properties (61fe74f)
- safe-js: preserve private Temporal Instant epochs (c496f62)
- safe-js: preserve proxy graphs in checkpoints (7c93ada)
- safe-js: preserve requested formatter options in snapshots (5c3359b)
- safe-js: preserve Temporal private slots in replay data (b1b930f)
- safe-js: preserve Temporal values across data boundaries (6b36676)
- safe-js: preserve weak graph semantics in snapshots (9d2eeb4)
- safe-js: query proxy integrity levels (07d37b5)
- safe-js: query proxy own-property predicates (140914f)
- safe-js: read inherited object tags across proxies (ba24dfa)
- safe-js: read object tags through proxy receivers (ab5e31f)
- safe-js: recognize arrays through proxy targets (e1e8abd)
- safe-js: reconcile pending imported promise checkpoints (e305ee5)
- safe-js: reconcile private weak-state storage (bed3ed7)
- safe-js: reflect proxy property names and symbols (7619b3d)
- safe-js: replay imported host promise property graphs (3f16a34)
- safe-js: report failures from run-owned background jobs (556f723)
- safe-js: resolve legacy accessors through proxies (35e6e53)
- safe-js: resolve proxy with-environment bindings (c40ff23)
- safe-js: resolve raw Temporal prototypes in the receiving realm (288c696)
- safe-js: restore pending atomic wait continuations (a6bfef4)
- safe-js: restore Temporal private slots from guest heaps (c9386ea)
- safe-js: retain weak targets for their owning job (8deb1d3)
- safe-js: select array species through proxy targets (a06e52a)
- safe-js: spread proxy-wrapped arrays in concat (79e4571)
- safe-js: support Atomics on ordinary integer storage (098e503)
- safe-js: support detaching owner cleanup registrations (461cd5b)
- safe-js: support internal global Script execution (181638f)
- safe-js: track shared backing storage identity (a119b02)
- safe-js: validate inherited private-name contexts (94d9870)
Performance Improvements
- safe-js: avoid primitive intrinsic traversal entries (95ff949)
- safe-js: defer interpreter initialization for CLI help (e9a578b)
- safe-js: reuse array method write contexts (b97a300)
- safe-js: reuse unchanged intrinsic group captures (0c71c7a)
- safe-js: skip unrelated type checks when measuring closures (291ce5f)