This release adds 2 notable features for engineering teams evaluating rollout.
Published 1mo
Build & Package
✓ No known CVEs patched
✓ No known CVEs patched in this version
Topics
android
compile
harmonyos
ios
llvm
macos
+5 more
native
smc
typescript
watchos
windows
Summary
AI summaryUpdates Highlights, Infrastructure, and console.log across a mixed release.
Full changelog
Highlights
fetch+ Blob/ArrayBuffer overhaul —await response.arrayBuffer()now returns real bytes (not a metadata stub) [#227 / PR #232];await response.blob()now returns a realBlobwitharrayBuffer/text/bytes/sliceinstance methods [#234 / PR #238]; default User-Agentperry/<version>set on the shared client so anonymous requests to e.g.api.github.comstop hitting403 Forbidden[#236].perry/updatersubsystem — Ed25519-signed auto-update for desktop apps with sentinel-rollback flow; low-level ambients +@perry/updaterwrapper [PR #224, docs in #248].- Issue #185 Phase D — live inspector UI at
localhost:7676with editable style fields,POST /style/:hfor runtime style edits, and the macOS dispatcher wired (other platforms follow as sweep PRs). - Many correctness fixes — async-fn array param push silent-cap at 16 [#233], method-default-param dispatch passing garbage for skipped trailing args [#235],
.then(console.log)hang + Promise propagation when callback is null [#236], module-level emptyconstarray writes silently dropped [#221], iOS/tvOS/visionOSButtonstyled-color crash [#185 follow-up].
Fixes
#221— module-levelconst A: T[] = []mutated viaarr[i] = vfrom inside a function silently dropped writes (js_array_set_f64no-op'd at index ≥ length).#232 / #227—await response.arrayBuffer()returned{byteLength: N}stub; now returns a realBufferHeaderwith the body bytes.#233—Array.pushfrom inside an async function silently capped at 16 elements (parameter slot wasn't updated with the realloc'd pointer).#234—await response.blob()returned a metadata-only stub; now returns a realBlobwith full instance method surface.#235—await Foo.method({...})could silently hang when the method had a default param the caller skipped (cross-module method declare hardcoded to 6 doubles).#236— anonymousfetchgot403 Forbiddenfrom sites that demand a User-Agent;Promise.resolve(x).then(<NULL_CALLBACK>)chainednextstayed pending forever;console.logas a value (.then(console.log)) lowered to0.0; fetch rejections printed as[object Object].- iOS/tvOS/visionOS —
Button("X", () => {}, { color: "white" })crashed withunrecognized selector setTextColor:onUIButton; now class-probes and routes tosetTitleColor:forState:. textfieldGetString/textareaGetStringreturned gibberish numbers — dispatch metadata hadReturnKind::F64but FFI returned*StringHeader.- better-sqlite3 —
new Database(path).prepare(sql).run/get/allchain restored after the v0.5.329-v0.5.342 lower_call extraction series silently broke it.
Features
perry/updater— Ed25519-signed auto-update with sentinel-rollback, manifest schema, install + relaunch flow,@perry/updaterhigh-level wrapper [PR #224].- Issue #185 Phase D —
POST /style/:hruntime style edits, editable inspector UI fields, live inspector UI served atlocalhost:7676from the embedded geisterhand HTTP server. fs.appendFileSyncend-to-end wiring [PR #231].
Infrastructure
- PR #239 — capture compile stderr in parity + compile-smoke CI jobs into uploadable artifacts so the long-tail macOS-14 SDK/linker
ci-envskips can finally be diagnosed by reading the actual link error. Pure diagnostic plumbing — no source / version churn. - Scoop bucket — manifest published with SHA256 sidecars in the release workflow; field order brought into line with the ScoopInstaller style guide.
- Windows host builds — pin clang
-targeton host invocations to prevent MinGW-default clang from rewriting the IR's MSVC triple to GNU/MinGW (which produced spuriousLNK2019: unresolved external symbol __mainerrors); pre-flight clang probe + actionable hint on link failure [v0.5.353]. #210— Windows wires 4 of 5 styling stubs: text decoration, opacity, border color, border width (the deferred-paint family minusshadowwhich still needs DirectComposition).
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]