This release adds 2 notable features for engineering teams evaluating rollout.
✓ No known CVEs patched in this version
Topics
+5 more
Affected surfaces
Summary
AI summaryUpdates Infrastructure, v0.5.156, and https://github.com/PerryTS/perry/issues/131 across a mixed release.
Full changelog
Three versions' worth of fixes (v0.5.156–v0.5.158) plus the watch-mode AST cache and a perry check UX fix.
Fixes
--target web/ WASM — five compounding bugs (#133):str.charCodeAtand other un-special-casedString.prototypemethods fell through__classDispatch→ undefined;Math.sin/cos/tan/atan2/exp/… returned undefined because the WASM codegen had no handlers for the trig family;arr.push(1); arr.length === 0on top-levelconst arr = []because ArrayPush/Pop/Shift/Unshift/PushSpread/Splice only looked inlocal_map; Firefox NaN-canonicalization strippedSTRING/POINTER/INT32tag payloads across the JS↔WASM boundary (splitwrapForI64into legacy-rt + BigInt-safe-ffi variants);INT32_TAGconstants crashed wasm-bindgen with TypeError.--target android— obj.field returns NaN (#128): the PIC receiver guard (#51) and.lengthfast-path guard (#73) both used a Darwin-mimalloc-calibrated heap-window check. Bionic's Scudo allocator places allocations far below the 2 TB floor, so every real object pointer failed. Replaced with a platform-independent NaN-box tag check — same LLVM cost, works everywhere.perry check— emit file:line:column for HIR lowering errors (#129): previously every HIR-lowering error printed location-less. NewLowerErrortype carries anOption<Span>,lower_bail!macro wraps sites,check.rsdowncasts and attaches the span to the emitted diagnostic. Two sites migrated (super-prop access, binding patterns); infrastructure is in place for the remaining ~35 sites to land incrementally.- Release-packages
await-testsgate — query by filename, stop swallowing gh errors (v0.5.156): v0.5.155's gate timed out for 45 min with[]fromgh run list --workfloweven though the runs existed. Swapped togh api /repos/{repo}/actions/workflows/{file}/runsand dropped the2>/dev/null || echo '[]'that masked real API errors. Emergency-republish workflow_dispatch bypass preserved.
Features
perry dev— in-memory AST cache across rebuilds (#131, PR #132, by @TheHypnoo): new path-keyed content-addressedParseCacheowned byperry devfor the watch session's lifetime. Unchanged files reuse their prior AST; byte-identical content → hit regardless of mtime. Smoke test: after editing one file, rebuild is1/2 hit (1 miss)in 502 ms. Scope is strictlyperry dev—perry compileand other entrypoints passNoneand behave identically to v0.5.155.
Infrastructure
chore: gitignore benchmark binaries—image_conv,issue42_noallocno longer surface ingit status.
Full commit range: v0.5.155..v0.5.158.
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]