Skip to content

perry

v0.5.373 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

Updates Highlights, Infrastructure, and src across a mixed release.

Full changelog

Highlights

  • HarmonyOS Phase 1 complete — full toolchain from --target harmonyos[-simulator] scaffold through SDK detection, NAPI entry + ArkTS shim, HAP bundler, and the audit-driven emulator-validation fixes (#246, #247, #249, #250, #252, #253).
  • V8 interop landingJsLoadModule / JsGetExport / JsCallFunction / JsCallMethod / JsGetProperty / JsSetProperty / JsNew / JsNewFromHandle codegen arms; Phase 2B JsCreateCallback so Perry closures passed to JS-imported functions actually fire (#248, #254, #259).
  • Async correctness — spec-compliant microtask ordering for plain async functions via a CPS / state-machine transform that mirrors the existing generator transform (#256, #262).
  • Geisterhand Phase D — live apply_style dispatcher across iOS / tvOS / GTK4 / Windows; live screenshot preview in the inspector. Issue #185's three explicit asks (rich styling primitives, cross-platform parity, devtools) are now all shipped end-to-end.

Fixes

  • #240 cross-module interface dispatch silently dropped to undefined when the consumer module type-imported the interface
  • #241 declare @llvm.assume intrinsic in IR module prelude
  • #255 perry-jsruntime re-entrancy — Perry callbacks can read JS object props without RefCell already borrowed panic
  • #257 V8 interop link order on macOS
  • #258 typeof on JS handles
  • #260 perry.compilePackages ignored when invoking from a sub-dir of the package root
  • #261 class field closure init compile error (use of undefined value '@perry_closure_*')

Features

  • HarmonyOS: cross-compile target, NAPI bootstrapping, ArkTS entry shim, .hap bundler, ace_napi.z runtime link, native-object pickup for cc-rs C deps that don't survive the OHOS staticlib wrapper
  • Codegen: arr.push(...src) (ArrayPushSpread); V8 interop expression family (8 new HIR arms); generic-function method-call closure marshaling (JsCreateCallback)
  • Geisterhand: cross-platform apply_style (iOS / tvOS / GTK4 / Windows), live screenshot preview with selection-overlay highlighting, auto-refresh polling

Infrastructure

  • Conservative-scope guards in the new async/generator transform (skip when __perry_cap_* capture markers are present, or when the body has nested closures with non-empty captures) — both tracked as follow-up work, not regressions.

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]