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: everydocs/examples/ui/*.tsexample started failing with "App(...) requires a config object literal" because Phase 3 anon-class synthesis (v0.5.172) now wraps closed-shape literals intonew __AnonShape_N(...). Theperry/ui App()handler still hard-matchedExpr::Object(props). Swapped to the already-existingextract_options_fieldshelper that handles both Object and AnonShape-New paths (the same oneperry/thread spawnuses). 19/27 doc-tests → 27/27. -
just_factorySIGABRT in cargo-test: a repro test for a separate pre-existing stack overflow (top-levelconst 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_initemittedHirType::Named("Set")forExpr::SetNewFromArray, butis_set_expronly matchesHirType::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'sinfer_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_setparity: the simple Set.has regression is fixed, but the specificsetA.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 toknown_failures.jsonwith the repro; tracked as follow-up.
Infrastructure
release-packages.yml'sawait-testsgate correctly blocked the v0.5.177 publish once Tests turned red — working as designed.