Skip to content

perry

v0.5.294 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 undefined-symbol link error that prevented macOS UI and iOS builds from publishing binaries.

Full changelog

Hotfix for v0.5.293's failed publish. v0.5.293 tagged successfully but release-packages.yml's await-tests gate failed: 19 macOS UI doc-tests + iOS simctl build hit an _js_stdlib_process_pending undefined-symbol link error. v0.5.293's GH release page exists but ships no binaries. v0.5.294 fixes the underlying bug.

Fix

  • fix(ui) — UI crates (perry-ui-{macos,ios,tvos,visionos,gtk4}, 18 files) now call js_run_stdlib_pump instead of hard-linking js_stdlib_process_pending. The trampoline at crates/perry-runtime/src/lib.rs:121 is unconditionally exported and dispatches via the registered-callback pattern (js_stdlib_has_active_handles already worked this way at lib.rs:144).
  • chore(parity) — re-added test_gap_console_methods to test-parity/known_failures.json as ci-env; v0.5.290's drop was premature. Investigate normalize_output broadening separately.

Root cause

Cargo feature unification. perry-stdlib/Cargo.toml:81 says perry-runtime = { features = ["stdlib"] }. When perry's auto-optimize compiles both crates in one cargo invocation (crates/perry/src/commands/compile.rs:1844), the stdlib feature gets activated on perry-runtime — which triggers the #[cfg(not(feature = "stdlib"))] gate at crates/perry-runtime/src/lib.rs:65 and excludes mod stdlib_stubs;, removing _js_stdlib_process_pending from libperry_runtime.a. perry's compile then enters runtime-only link mode (no libperry_stdlib.a in the link line) and the symbol is undefined.

Local single-package builds (cargo build -p perry-runtime) don't unify features, so the stub is included and the bug stays hidden in dev. feedback_recompile_ui_lib.md was a workaround for this latent bug — rebuilding the macOS UI lib happened to align local artifacts with locally-built libperry_runtime.a (which had the symbol).

Verified locally by reproducing the CI auto-optimize path:

./target/release/perry compile docs/examples/ui/animation/fade_in.ts -o /tmp/fade_in_test
…
Linking (runtime-only)...
Linking perry/ui (native UI) from target/release/libperry_ui_macos.a
Wrote executable: /tmp/fade_in_test

What v0.5.293 was supposed to ship

If you want the full changelog from v0.5.178 through v0.5.293 (115 commits — generational GC default ON, SSO default ON, JSON tape-parse + lazy default ON, Windows lightweight toolchain, visionOS support, end-to-end notification work on iOS + Android, etc.), see https://github.com/PerryTS/perry/releases/tag/v0.5.293. The notes there are accurate; only the binaries failed to publish.

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]