Skip to content

perry

v0.5.825 Feature

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

Published 23d 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

ReleasePort's take

Light signal
editorial:auto 13d

This release introduces multiple feature enhancements across npm packages, platform widgets, performance improvements, and critical bug fixes.

Why it matters: Test these changes in development before production to capture byte‑identical SQL CRUD, in‑process GET round‑trip, new widget components, promise_all_chains speedup, GC reduction, and ws panic fixes.

Summary

AI summary

Broad release touches Release sweep at HEAD, Terminal UI, Real-world npm packages, and Real widgets across platforms.

Changes in this release

Feature Medium

drizzle-orm with better-sqlite3 achieves byte-identical SQL CRUD round-trip

drizzle-orm with better-sqlite3 achieves byte-identical SQL CRUD round-trip

Source: llm_adapter@2026-05-21

Confidence: high

Feature Medium

axios with node:http enables in-process GET round-trip

axios with node:http enables in-process GET round-trip

Source: llm_adapter@2026-05-21

Confidence: high

Feature Medium

iOS and watchOS widget targets auto-invoke swiftc, emit .appex

iOS and watchOS widget targets auto-invoke swiftc, emit .appex

Source: llm_adapter@2026-05-21

Confidence: high

Feature Medium

Android widget target support path established under #676

Android widget target support path established under #676

Source: llm_adapter@2026-05-21

Confidence: high

Feature Medium

Terminal UI ink-style ergonomics with hooks, JSX intrinsics added

Terminal UI ink-style ergonomics with hooks, JSX intrinsics added

Source: llm_adapter@2026-05-21

Confidence: high

Feature Medium

Effect Schema supports nested-class static-field initialization

Effect Schema supports nested-class static-field initialization

Source: llm_adapter@2026-05-21

Confidence: high

Feature Medium

Android widgets: Chart, TreeView, RichTooltip, Combobox, Calendar

Android widgets: Chart, TreeView, RichTooltip, Combobox, Calendar

Source: llm_adapter@2026-05-21

Confidence: high

Feature Medium

iOS visionOS widgets: TreeView, RichTooltip, Combobox added

iOS visionOS widgets: TreeView, RichTooltip, Combobox added

Source: llm_adapter@2026-05-21

Confidence: high

Feature Medium

HarmonyOS ArkUI codegen: Calendar, Select, RichEditor, bindPopup

HarmonyOS ArkUI codegen: Calendar, Select, RichEditor, bindPopup

Source: llm_adapter@2026-05-21

Confidence: high

Feature Medium

Release-readiness test harness with 13 verification tiers added

Release-readiness test harness with 13 verification tiers added

Source: llm_adapter@2026-05-21

Confidence: low

Feature Low

Release‑readiness test harness added with 13 verification tiers covering builds, parity, real npm packages, GC stress, threading, docs, UI matrix, simulators, emulators, Windows smoke, and link smoke

Release‑readiness test harness added with 13 verification tiers covering builds, parity, real npm packages, GC stress, threading, docs, UI matrix, simulators, emulators, Windows smoke, and link smoke

Source: granite4.1:30b@2026-05-24-audit

Confidence: low

Performance Medium

promise_all_chains improved from 8.1× to 1.82× Bun baseline

promise_all_chains improved from 8.1× to 1.82× Bun baseline

Source: llm_adapter@2026-05-21

Confidence: high

Performance Medium

GC try_mark_value self-time reduced from 28% to 8%

GC try_mark_value self-time reduced from 28% to 8%

Source: llm_adapter@2026-05-21

Confidence: high

Performance Medium

macOS setjmp replaced with _setjmp, 60% kernel reduction

macOS setjmp replaced with _setjmp, 60% kernel reduction

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

ws tokio runtime panic fixed

ws tokio runtime panic fixed

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

sigv4 webcrypto implementation working

sigv4 webcrypto implementation working

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

drizzle axios codegen blockers cleared

drizzle axios codegen blockers cleared

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

Map<K,V>|undefined iteration bug fixed

Map<K,V>|undefined iteration bug fixed

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

redis createClient implementation fixed

redis createClient implementation fixed

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

try/finally codegen bug fixed

try/finally codegen bug fixed

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

generator-transform bug fixed

generator-transform bug fixed

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

TypeError throw helpers bug fixed

TypeError throw helpers bug fixed

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

state.text() macOS updates bug fixed

state.text() macOS updates bug fixed

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

watchOS simulator symbols bug fixed

watchOS simulator symbols bug fixed

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

cross-module tagged-template rest params working

cross-module tagged-template rest params working

Source: llm_adapter@2026-05-21

Confidence: low

Bugfix Medium

__dirname require rest-param AOT working

__dirname require rest-param AOT working

Source: llm_adapter@2026-05-21

Confidence: low

Bugfix Medium

NavStack visibility bug fixed

NavStack visibility bug fixed

Source: llm_adapter@2026-05-21

Confidence: low

Bugfix Medium

arr.entries() Any-typed receivers bug fixed

arr.entries() Any-typed receivers bug fixed

Source: llm_adapter@2026-05-21

Confidence: low

Bugfix Medium

JSON.stringify date ISO format bug fixed

JSON.stringify date ISO format bug fixed

Source: llm_adapter@2026-05-21

Confidence: low

Bugfix Medium

NaN equality indexOf includes SameValueZero fixed

NaN equality indexOf includes SameValueZero fixed

Source: llm_adapter@2026-05-21

Confidence: low

Bugfix Medium

FetchGetWithAuth DateToLocaleString LLVM arms support

FetchGetWithAuth DateToLocaleString LLVM arms support

Source: llm_adapter@2026-05-21

Confidence: low

Bugfix Medium

Cross‑module tagged‑template rest‑parameter handling fixed (issue #608)

Cross‑module tagged‑template rest‑parameter handling fixed (issue #608)

Source: granite4.1:30b@2026-05-24-audit

Confidence: low

Bugfix Medium

NavStack visibility issue resolved (issue #535)

NavStack visibility issue resolved (issue #535)

Source: granite4.1:30b@2026-05-24-audit

Confidence: low

Bugfix Medium

Array.prototype.entries() on Any‑typed receivers corrected (issue #597)

Array.prototype.entries() on Any‑typed receivers corrected (issue #597)

Source: granite4.1:30b@2026-05-24-audit

Confidence: low

Bugfix Medium

FetchGetWithAuth and DateToLocaleString LLVM code paths stabilized (issue #600)

FetchGetWithAuth and DateToLocaleString LLVM code paths stabilized (issue #600)

Source: granite4.1:30b@2026-05-24-audit

Confidence: low

Full changelog

Stability checkpoint release. 311 commits and 105 closed issues since v0.5.585. Most significant patch-version jump since v0.5.337. Headline themes: real npm packages now compile natively, a huge async/promise/GC performance overhaul, and the TUI + widget-target frontier.

Highlights

Real-world npm packages

  • drizzle-orm + better-sqlite3: byte-identical SQL CRUD round-trip under Perry (#488 path, #585/#588/#590 codegen blockers all cleared)
  • axios + node:http: in-process GET round-trip; #598 (NaN-box body), #589 (node:http runtime), #604 (event-loop drain) all landed
  • Effect Schema (#685, #687): nested-class static-field init + ClassRef.staticMethod dispatch through the BigIntFromSelf.pipe chain
  • hono, redis, ws: real binding work; full round-trip still tracked under followups #603 (hono :id routes) and #604-family (event-loop after close)

New platform targets (#676 ladder)

  • --target ios-widget / watchos-widget auto-invoke swiftc and emit a built .appex (v0.5.809) — refs #676 phase 1
  • --target android-widget path stays under #676 ladder for the next iteration

Terminal UI (#679 / #358)

  • Full ink-style ergonomics layer for perry/tui — hooks, Box/Text JSX intrinsics, focus management, all 5 phases shipped in v0.5.810
  • GC root scanners + state slot pools (v0.5.812)

Performance — promise_all_chains from 8.1× Bun → 1.82× (v0.5.816, v0.5.820)

  • (P1) Fuse __next body into async step closure
  • (P2) Reuse in-flight next Promise for done-case
  • (P3) Pack INLINE_TRAP_NEXT + CURRENT_STEP_CLOSURE into one TLS slot
  • (P5) Swap macOS setjmp(3)_setjmp(3) — 60% kernel reduction (the single biggest win)
  • (GC-1) Hashset-backed valid-pointer contains()try_mark_value 28% → 8% self-time
  • (GC-2/3/4) PtrHasher + lazy MallocState lookup-set + trace-phase mark specialization

Real widgets across platforms

  • Android: Chart (#474), TreeView (#480), RichTooltip (#479), RichText (#478), Combobox (#475), Calendar (#481)
  • iOS / visionOS: TreeView, RichTooltip, Combobox
  • ArkUI codegen (HarmonyOS path): Calendar, Select, RichEditor, bindPopup

Release-readiness harness (scripts/release_sweep.sh)

  • New tests/release/RELEASE_READINESS.md doc + .claude/skills/release-readiness-test/ Claude skill
  • 13 tiers covering cargo build/test, parity, real npm packages, GC stress, threading, doc-tests, UI matrix, Apple sims, Android emu, Windows, link-smoke

Notable fixes

  • #535 NavStack visibility, #536 try/finally codegen, #542/#543 Map<K,V>|undefined iteration, #561 sigv4/webcrypto, #585/#588/#589/#590 drizzle/axios codegen, #594 generator-transform, #596 TypeError throw helpers, #597 arr.entries() on Any-typed receivers, #599 state.text() macOS updates, #600 FetchGetWithAuth / DateToLocaleString LLVM arms, #601 perry-ext-fetch lib tests, #602 drizzle-better-sqlite3 link, #605 redis createClient, #606 ws tokio runtime panic, #607 watchos-simulator symbols, #608 cross-module tagged-template rest params, #613/#614/#615 baseline parity gaps, #665 cjs-wrap class identity, #667/#668/#672 AOT __dirname/require/rest-param, #680 type-only imports + namespace-member map, #685/#687 nested-class static init, JSON.stringify(date) ISO format, typeof new Date() returns "object", NaN equality (indexOf/includes/SameValueZero)

Release sweep at HEAD (macOS arm64)

  • Tier 0 build_matrix: PASS
  • Tier 1 cargo_workspace: PASS (133/133)
  • Tier 2 parity: PASS (277/325, 85.2% — +53 tests vs v0.5.714)
  • Tier 3 real_packages: 3/6 PASS (axios / drizzle / fastify green; hono / redis / ws tracked under #603/#604)
  • Tier 4 gc_stress: PASS (18/18)
  • Tier 5 threading: PASS (4/4)
  • Tier 6 doc_tests: 183/240 (small slip from 185)
  • Tier 7 ui_host_smoke: PASS
  • Tier 8/9/10 sim/emu: precondition gap (per-target runtime not pre-built on this host)
  • Tier 11 windows_smoke: SKIP (host gate)
  • Tier 12 link_smoke: PASS (6 targets linked, 7 SKIP for precondition, 0 regressions)

Composition

  • 171 fix • 36 feat • 21 docs • 20 perf • 12 test • 8 bench • 4 chore

This is a stability checkpoint. v0.6.0 comes next, gated on tier 3 fixtures going fully green + tier 8/9/10/12 cross-target preconditions met.

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 →

Beta — feedback welcome: [email protected]