Skip to content

perry

v0.5.359 Feature

This release adds 2 notable features for engineering teams evaluating rollout.

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 Highlights, Infrastructure, and console.log across a mixed release.

Full changelog

Highlights

  • fetch + Blob/ArrayBuffer overhaulawait response.arrayBuffer() now returns real bytes (not a metadata stub) [#227 / PR #232]; await response.blob() now returns a real Blob with arrayBuffer / text / bytes / slice instance methods [#234 / PR #238]; default User-Agent perry/<version> set on the shared client so anonymous requests to e.g. api.github.com stop hitting 403 Forbidden [#236].
  • perry/updater subsystem — Ed25519-signed auto-update for desktop apps with sentinel-rollback flow; low-level ambients + @perry/updater wrapper [PR #224, docs in #248].
  • Issue #185 Phase D — live inspector UI at localhost:7676 with editable style fields, POST /style/:h for 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 empty const array writes silently dropped [#221], iOS/tvOS/visionOS Button styled-color crash [#185 follow-up].

Fixes

  • #221 — module-level const A: T[] = [] mutated via arr[i] = v from inside a function silently dropped writes (js_array_set_f64 no-op'd at index ≥ length).
  • #232 / #227await response.arrayBuffer() returned {byteLength: N} stub; now returns a real BufferHeader with the body bytes.
  • #233Array.push from inside an async function silently capped at 16 elements (parameter slot wasn't updated with the realloc'd pointer).
  • #234await response.blob() returned a metadata-only stub; now returns a real Blob with full instance method surface.
  • #235await Foo.method({...}) could silently hang when the method had a default param the caller skipped (cross-module method declare hardcoded to 6 doubles).
  • #236 — anonymous fetch got 403 Forbidden from sites that demand a User-Agent; Promise.resolve(x).then(<NULL_CALLBACK>) chained next stayed pending forever; console.log as a value (.then(console.log)) lowered to 0.0; fetch rejections printed as [object Object].
  • iOS/tvOS/visionOS — Button("X", () => {}, { color: "white" }) crashed with unrecognized selector setTextColor: on UIButton; now class-probes and routes to setTitleColor:forState:.
  • textfieldGetString / textareaGetString returned gibberish numbers — dispatch metadata had ReturnKind::F64 but FFI returned *StringHeader.
  • better-sqlite3 — new Database(path).prepare(sql).run/get/all chain 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/updater high-level wrapper [PR #224].
  • Issue #185 Phase DPOST /style/:h runtime style edits, editable inspector UI fields, live inspector UI served at localhost:7676 from the embedded geisterhand HTTP server.
  • fs.appendFileSync end-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-env skips 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 -target on host invocations to prevent MinGW-default clang from rewriting the IR's MSVC triple to GNU/MinGW (which produced spurious LNK2019: unresolved external symbol __main errors); 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 minus shadow which 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

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]