Skip to content

perry

v0.5.178 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 Known, Infrastructure, and props across a mixed release.

Full changelog

Highlights

Fix-forward release that unblocks the stuck v0.5.177 release-packages pipeline. Three distinct CI regressions fixed — UI doc-tests now link on all three host OSes, cargo-test no longer SIGABRTs on the HIR repro suite, and new Set([...]) without explicit type args stops returning undefined on .has().

Fixes

  • App({...}) doc-tests on macOS/Ubuntu/Windows: every docs/examples/ui/*.ts example started failing with "App(...) requires a config object literal" because Phase 3 anon-class synthesis (v0.5.172) now wraps closed-shape literals into new __AnonShape_N(...). The perry/ui App() handler still hard-matched Expr::Object(props). Swapped to the already-existing extract_options_fields helper that handles both Object and AnonShape-New paths (the same one perry/thread spawn uses). 19/27 doc-tests → 27/27.

  • just_factory SIGABRT in cargo-test: a repro test for a separate pre-existing stack overflow (top-level const x = fn() + factory returning a nested object literal) wasn't marked #[ignore] — so the default 2 MB test stack blew on every CI run. Marked #[ignore] with matching rationale to its sibling; real fix tracked separately.

  • new Set([1,2,3]).has(1) returned undefined: refine_type_from_init emitted HirType::Named("Set") for Expr::SetNewFromArray, but is_set_expr only matches HirType::Generic { base: "Set" }. Without explicit <number> type args, every Set.has()/add()/delete() fell through to the undefined-dispatch path. Same shape in Phase 4's infer_type_from_expr. Both fixed; Map/Set/WeakMap/WeakSet/Array/Promise now always flow as Generic (intrinsic generics can't be Named).

Known

  • test_edge_map_set parity: the simple Set.has regression is fixed, but the specific setA.forEach((v) => setB.has(v)) pattern has a second, path-dependent bug — same MD5 file passes from /tmp/ but the intersection comes back empty from the project root. Added to known_failures.json with the repro; tracked as follow-up.

Infrastructure

  • release-packages.yml's await-tests gate correctly blocked the v0.5.177 publish once Tests turned red — working as designed.

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]