github PerryTS/perry v0.5.294

latest releases: v0.5.1182, v0.5.1181, v0.5.1180...
one month ago

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.

Don't miss a new perry release

NewReleases is sending notifications on new releases.