This release adds 3 notable features for engineering teams evaluating rollout.
Published 1mo
Build & Package
✓ No known CVEs patched
✓ No known CVEs patched in this version
Topics
android
compile
harmonyos
ios
llvm
macos
+5 more
native
smc
typescript
watchos
windows
Summary
AI summaryUpdates 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 landing —
JsLoadModule/JsGetExport/JsCallFunction/JsCallMethod/JsGetProperty/JsSetProperty/JsNew/JsNewFromHandlecodegen arms; Phase 2BJsCreateCallbackso 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_styledispatcher 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
undefinedwhen the consumer module type-imported the interface - #241 declare
@llvm.assumeintrinsic in IR module prelude - #255 perry-jsruntime re-entrancy — Perry callbacks can read JS object props without
RefCell already borrowedpanic - #257 V8 interop link order on macOS
- #258
typeofon JS handles - #260
perry.compilePackagesignored 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,
.hapbundler, 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
About perry
A native TypeScript compiler written in Rust. Compiles TypeScript directly to executables using SWC and LLVM.
Related context
Beta — feedback welcome: [email protected]