github PerryTS/perry v0.5.178

latest releases: v0.5.1159, v0.5.1158, v0.5.1151...
one month ago

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.

Don't miss a new perry release

NewReleases is sending notifications on new releases.