Skip to content

perry

v0.5.1129 Feature

This release adds 3 notable features for engineering teams evaluating rollout.

Published 1mo Build & Package
✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

android compile harmonyos ios llvm macos
+5 more
native smc typescript watchos windows

Summary

AI summary

Broad release touches Highlights, class, runtime, and Infrastructure.

Changes in this release

Feature Medium

Adds aarch64-linux compile target.

Adds aarch64-linux compile target.

Source: llm_adapter@2026-06-07

Confidence: high

Feature Medium

Adds native TC39 Temporal API with 8 types and Temporal.Now.

Adds native TC39 Temporal API with 8 types and Temporal.Now.

Source: llm_adapter@2026-06-07

Confidence: high

Feature Medium

Adds options/fields-object methods (round, total, with*, conversions) to Temporal API.

Adds options/fields-object methods (round, total, with*, conversions) to Temporal API.

Source: llm_adapter@2026-06-07

Confidence: high

Feature Medium

Adds static accessors, canonical numeric keys, and default‑aware .length to classes.

Adds static accessors, canonical numeric keys, and default‑aware .length to classes.

Source: llm_adapter@2026-06-07

Confidence: high

Feature Medium

Adds public class‑element semantics including accessor keys and prototype‑ref setters.

Adds public class‑element semantics including accessor keys and prototype‑ref setters.

Source: llm_adapter@2026-06-07

Confidence: high

Performance Medium

Improves String.prototype methods achieving 60%→79% test262 parity.

Improves String.prototype methods achieving 60%→79% test262 parity.

Source: llm_adapter@2026-06-07

Confidence: high

Performance Medium

Improves Number built‑in methods achieving 86%→97% test262 parity.

Improves Number built‑in methods achieving 86%→97% test262 parity.

Source: llm_adapter@2026-06-07

Confidence: high

Performance Low

Zero‑fills inline‑allocated object field slots for codegen efficiency.

Zero‑fills inline‑allocated object field slots for codegen efficiency.

Source: granite4.1:30b@2026-06-07-audit

Confidence: low

Bugfix Medium

Fixes computed‑key evaluation order and TypeError on null‑proto keys in classes.

Fixes computed‑key evaluation order and TypeError on null‑proto keys in classes.

Source: llm_adapter@2026-06-07

Confidence: high

Bugfix Medium

Fixes handling of empty‑string static accessors in classes.

Fixes handling of empty‑string static accessors in classes.

Source: llm_adapter@2026-06-07

Confidence: high

Bugfix Medium

Hides private members from reflection and resolves exotic‑private‑name symbol collisions.

Hides private members from reflection and resolves exotic‑private‑name symbol collisions.

Source: llm_adapter@2026-06-07

Confidence: high

Bugfix Low

Fixes Object ToPropertyDescriptor field presence using HasProperty.

Fixes Object ToPropertyDescriptor field presence using HasProperty.

Source: granite4.1:30b@2026-06-07-audit

Confidence: low

Bugfix Low

Corrects Array generic array-like and stored-method semantics.

Corrects Array generic array-like and stored-method semantics.

Source: granite4.1:30b@2026-06-07-audit

Confidence: low

Bugfix Low

Prevents dereferencing Web‑Fetch/native handles as heap objects, fixing Hono response SIGSEGV.

Prevents dereferencing Web‑Fetch/native handles as heap objects, fixing Hono response SIGSEGV.

Source: granite4.1:30b@2026-06-07-audit

Confidence: low

Bugfix Low

Validates and applies non-configurable property redefines correctly.

Validates and applies non-configurable property redefines correctly.

Source: granite4.1:30b@2026-06-07-audit

Confidence: low

Bugfix Low

Retains existing-property attributes in Object.defineProperty.

Retains existing-property attributes in Object.defineProperty.

Source: granite4.1:30b@2026-06-07-audit

Confidence: low

Bugfix Low

Dispatches Reflect proxy descriptors properly.

Dispatches Reflect proxy descriptors properly.

Source: granite4.1:30b@2026-06-07-audit

Confidence: low

Bugfix Low

Fixes generic‑this handling and index coercion for String.prototype slice/substring methods.

Fixes generic‑this handling and index coercion for String.prototype slice/substring methods.

Source: granite4.1:30b@2026-06-07-audit

Confidence: low

Bugfix Low

Corrects boxed-method identity, toExponential rounding, Infinity handling, and parseInt identity in Number built-ins.

Corrects boxed-method identity, toExponential rounding, Infinity handling, and parseInt identity in Number built-ins.

Source: granite4.1:30b@2026-06-07-audit

Confidence: low

Bugfix Low

Adds brand check, radix coercion on BigInt.toString, fixes mixed BigInt/Number compare, and increment/decrement operators.

Adds brand check, radix coercion on BigInt.toString, fixes mixed BigInt/Number compare, and increment/decrement operators.

Source: granite4.1:30b@2026-06-07-audit

Confidence: low

Bugfix Low

Fixes Array callback thisArg, ToLength calculation, operation order, and 0‑arg validation.

Fixes Array callback thisArg, ToLength calculation, operation order, and 0‑arg validation.

Source: granite4.1:30b@2026-06-07-audit

Confidence: low

Bugfix Low

Corrects exotic length [[DefineOwnProperty]] handling and out‑of‑bounds prototype reads in Arrays.

Corrects exotic length [[DefineOwnProperty]] handling and out‑of‑bounds prototype reads in Arrays.

Source: granite4.1:30b@2026-06-07-audit

Confidence: low

Bugfix Low

Implements spec‑complete Array.of, Array.from, and unwraps Proxy for Array.isArray.

Implements spec‑complete Array.of, Array.from, and unwraps Proxy for Array.isArray.

Source: granite4.1:30b@2026-06-07-audit

Confidence: low

Bugfix Low

Makes Promise combinators (all, allSettled, race, any) spec‑compliant.

Makes Promise combinators (all, allSettled, race, any) spec‑compliant.

Source: granite4.1:30b@2026-06-07-audit

Confidence: low

Bugfix Low

Threads `this` through Promise.resolve and Promise.reject calls and fixes var-redeclare codegen.

Threads `this` through Promise.resolve and Promise.reject calls and fixes var-redeclare codegen.

Source: granite4.1:30b@2026-06-07-audit

Confidence: low

Bugfix Low

Assimilates object‑literal thenables via own `then` data property in Promises.

Assimilates object‑literal thenables via own `then` data property in Promises.

Source: granite4.1:30b@2026-06-07-audit

Confidence: low

Bugfix Low

Adds brand check for %TypedArray%.prototype iterators and corrects array‑like/iterable constructor handling.

Adds brand check for %TypedArray%.prototype iterators and corrects array‑like/iterable constructor handling.

Source: granite4.1:30b@2026-06-07-audit

Confidence: low

Bugfix Low

Fixes Map instance prototype reflection, live forEach iteration, and symbol‑key delete behavior.

Fixes Map instance prototype reflection, live forEach iteration, and symbol‑key delete behavior.

Source: granite4.1:30b@2026-06-07-audit

Confidence: low

Bugfix Low

Brings JSON.stringify implementation substantially closer to ECMA-262 specification.

Brings JSON.stringify implementation substantially closer to ECMA-262 specification.

Source: granite4.1:30b@2026-06-07-audit

Confidence: low

Bugfix Low

Corrects async-generator .return() value handling, prototype brand check, and wrapping of function‑expression async generators.

Corrects async-generator .return() value handling, prototype brand check, and wrapping of function‑expression async generators.

Source: granite4.1:30b@2026-06-07-audit

Confidence: low

Full changelog

Highlights

  • Native TC39 Temporal API via temporal_rs — 8 Temporal types plus Temporal.Now, and the full options-/fields-object method surface (round/total, with*, conversions) (#4716, #4727).
  • Major test262 parity gains across built-ins: String 60%→79%, Number 86%→97%, plus broad Array/Promise/Object/BigInt/TypedArray spec-compliance work.
  • New compile target: aarch64-linux (linux-arm64) (#4737).

Features

  • feat(compile): aarch64-linux target (#4737)
  • feat(class): static accessors, JS-canonical numeric keys, default-aware method .length (#4736)
  • feat(class): public class-element semantics — accessor keys, prototype-ref setters, static-method descriptors, grammar early errors (#4730)
  • feat(temporal): native TC39 Temporal API — 8 types + Temporal.Now (#4716)
  • feat(temporal): options-/fields-object methods — round/total, with*, conversions (#4727)
  • feat(compile): embed comctl32 v6 manifest so Windows UI apps get themed controls (#4683)

Fixes

  • fix(class): computed-key evaluation order + ToPropertyKey TypeError on null-proto key (#4744)
  • fix(class): computed-key accessor setter + empty-string static accessor (#4738)
  • fix(class): hide private members from reflection + exotic-private-name symbol collision (#4719)
  • fix(runtime): built-ins/Object ToPropertyDescriptor field presence is HasProperty (#4743)
  • fix(runtime): built-ins/Array generic array-like + stored-method semantics (#4742)
  • fix(runtime): stop dereferencing Web-Fetch/native handles as heap objects — Hono response SIGSEGV (#4739)
  • fix(object): ValidateAndApplyPropertyDescriptor for non-configurable redefines (#4722)
  • fix(object): retain existing-property attributes in Object.defineProperty (#4697)
  • fix(runtime): dispatch Reflect proxy descriptors (#4621)
  • fix(string): generic-this for all String.prototype methods + slice/substring index coercion — 60%→79% (#4720, #4713)
  • fix(number): boxed-method identity, toExponential rounding/Infinity, parseInt identity — 86%→97% (#4712)
  • fix(bigint): brand check + radix coercion on toString, mixed BigInt/Number compare, ++/-- (#4714)
  • fix(array): callback thisArg, array-like ToLength, op-order + 0-arg validation (#4721)
  • fix(array): exotic length [[DefineOwnProperty]] (ArraySetLength) + OOB prototype reads (#4709)
  • fix(array): spec-complete Array.of (#4708), Array.from (#4700), Array.isArray Proxy unwrap (#4707)
  • fix(promise): spec-compliant all/allSettled/race/any combinators (#4521, #4701)
  • fix(promise): thread this through Promise.{resolve,reject}.call + var-redeclare codegen (#4706)
  • fix(promise): assimilate object-literal thenables via own then data property (#4705)
  • fix(typedarray): brand-check %TypedArray%.prototype iterators + array-like/iterable constructor (#4702)
  • fix(map): instance prototype-member reflection, live forEach, symbol-key delete (#4710)
  • fix(json): JSON.stringify substantially closer to ECMA-262 (#4718)
  • fix(async-generator): await .return() value, brand-check prototype this, wrap function-expression async generators (#4723)
  • fix(codegen): zero-fill inline-allocated object field slots (#4717, #4726)
  • fix(http): park async request handlers instead of synthesizing a premature empty response (#4728)
  • fix(init): default tsconfig targets ES2023 for non-mutating array methods (#4731)
  • fix(windows): perry update extracts the .zip artifact (#4715)
  • fix: eliminate test262 segfaults in Proxy / String / Object.create / Array (#4724)

Infrastructure

  • test(runtime): regression unit test for is_closure_ptr small-handle floor (#4740)
  • ci(test262): parallel --jobs, --shard i/N, and full failure reporting (#4711)
  • fix(publish): never exit 0 without a build result when the hub WS drops (#4732)
  • fix(link): make tier-3 (tvOS/watchOS) std-dedup actually work (#4725)

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track perry

Get notified when new releases ship.

Sign up free

About perry

A native TypeScript compiler written in Rust. Compiles TypeScript directly to executables using SWC and LLVM.

All releases →

Related context

Earlier breaking changes

  • v0.5.1158 `cluster` workers share a listening port using SO_REUSEPORT and IPC round‑trip.
  • v0.5.1158 Streams now support BYOB readers and real `ByteLengthQueuingStrategy` accounting.
  • v0.5.1158 `Atomics.wait`, `notify`, and `waitAsync` now block and wake across agents using a shared `SharedArrayBuffer`.
  • v0.5.1158 `node:dns` and `node:dgram` perform real network I/O instead of stub behavior.
  • v0.5.1158 `AsyncLocalStorage` and `async_hooks` now propagate context across await, microtasks, timers, and `process.nextTick`.

Beta — feedback welcome: [email protected]