Skip to content

perry

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

Fixed unimplemented ForEach(state, render) causing the todo app to show a window.

Full changelog

Followup to #103. v0.5.109 fixed the type stubs + docs; this release fixes the actual codegen so the todo app visibly shows a window.

Bug Fixes

  • ForEach(state, render) from perry/ui was unimplemented in codegen. The generic dispatch path emitted perry/ui warning: method 'ForEach' not in dispatch table (args: 2) and returned 0/undefined. The outer VStack's widget_add_child then got an invalid handle, AppKit silently refused to attach the window body, and the process ran with lsappinfo type="BackgroundOnly" — CPU burning, no window. Added a special case in crates/perry-codegen/src/lower_call.rs (next to VStack/HStack) that synthesizes a perry_ui_vstack_create(8.0) container, calls perry_ui_for_each_init(container, state_handle, render_closure), and returns the NaN-boxed container pointer.

    Why it's a special case and not a UiSig table entry: same reason as VStack/HStack — variadic-in-shape (needs side-effectful container synthesis + separate for_each_init call + handle return), which doesn't fit the uniform args→runtime_fn table.

Verified

  • test_min4.ts (VStack containing ForEach over State<string[]>) launches with type="Foreground".
  • The corrected todo app from the docs/src/ui/state.md "Complete Example" compiles and launches with type="Foreground".

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]