This release fixes issues for SREs watching stability and regressions.
✓ No known CVEs patched in this version
Topics
+5 more
Summary
AI summaryFixed 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 calljs_run_stdlib_pumpinstead of hard-linkingjs_stdlib_process_pending. The trampoline atcrates/perry-runtime/src/lib.rs:121is unconditionally exported and dispatches via the registered-callback pattern (js_stdlib_has_active_handlesalready worked this way atlib.rs:144).chore(parity)— re-addedtest_gap_console_methodstotest-parity/known_failures.jsonasci-env; v0.5.290's drop was premature. Investigatenormalize_outputbroadening 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
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]