Skip to content

perry

v0.5.112 Bugfix

This release fixes issues for SREs watching stability and regressions.

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 Verification, Bug Fixes, and Tpl-with-state across a mixed release.

Full changelog

Bug Fixes

  • **Auto-reactive Text(\...${state.value}...`)in HIR lowering (#104)** — the docs atstate.mdpromised template literals containingstate.valuereads would bind reactively, but no backend emitted the binding;count.set(...)fired subscribers, nothing had ever subscribed. Fixed incrates/perry-hir/src/lower.rsby desugaringText(Tpl-with-state)into an IIFE closure that creates the widget, registersstateOnChangeper distinct state (each capturing the widget handle and re-rendering viatextSetString), and returns the handle. The outer IIFE is required because collect_module_let_idsonly tracksStmt::Let; bare LocalSet/LocalGetinsideExpr::Sequenceat module top level had no backing WASM global or local and returnedTAG_UNDEFINED`, silently dropping the widget.
  • Wasm codegen collect_strings_in_expr traverses Expr::Sequence — was a Update | Sequence(_) => {} catch-all. Nested bridge-function names (perry_ui_text_create, perry_ui_state_on_change, perry_ui_text_set_string) and string literals ("Count: ") were dropped from the WASM string table, so the memcalls resolved to the empty name slot.
  • Wasm map_ui_method accepts "stateOnChange" — previously only "onChange" / "state_on_change"; the LLVM-side camelCase naming didn't round-trip to wasm.

Verification

  • Web/wasm: jsdom click-through — Text(\Count: ${count.value}`)` → 3 × Increment → "Count: 3".
  • Multi-state: test_ui_state_binding.ts (4 different template forms sharing one count state) all update together through +1 and -1 clicks.
  • macOS native: AppleScript driving AppKit window confirms reactive updates.
  • iOS/tvOS/watchOS/Android/GTK4/Windows: statically audited — identical FFI signatures (perry_ui_state_on_change(i64, f64), perry_ui_text_set_string(i64, i64)), real (non-stub) bodies, same js_closure_call1 extern-C ABI. Not exercised on hardware.

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]