Skip to content

perry

v0.5.1180 Feature

This release adds 5 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

Broad release touches Highlights, Performance, Infrastructure, and hir.

Full changelog

Native TypeScript compiler — 130 commits since v0.5.1167. Highlights below; full diff: v0.5.1167...v0.5.1180.

Highlights

  • npm packages compile natively at much higher fidelity — extensive CJS-wrap and resolution fixes for ajv, pino, commander, execa, hono, semver/joi/winston, uuid, dayjs.
  • Intl support expandedgetCanonicalLocales, supportedValuesOf, formatToParts, plus ListFormat/RelativeTimeFormat/PluralRules (#5320).
  • Codegen & lowering perf — outlined inline allocator (~17% faster), shared constructor symbol (~2.5x), O(1) HIR registry/scope/closure-capture analysis, smaller IR.
  • Binary size — per-app feature gating (regex/Temporal/URL/normalize/segmenter), devirtualized native-module dispatch (−20% hello-world __text), gated dgram/diagnostics.

Features

  • feat(intl): getCanonicalLocales, supportedValuesOf, formatToParts + ListFormat/RelativeTimeFormat/PluralRules (#5320)
  • feat(hir): Annex B B.3.3 sloppy block-level function hoisting (#5319); emit nested namespaces (#5167)
  • feat(error): source location on construct + ReferenceError throws (#5274); on dynamic call-dispatch TypeErrors (#5250)
  • feat(compile): defer unimplemented node/stdlib APIs, dynamic import(), eval/new Function, and .wasm imports to throw-on-reach (#5246, #5233, #5209, #5236); text-asset imports as string (#5224)
  • feat(cluster): primary-coordinated shared port for listen(0) + SCHED_RR fd-passing (#5193)
  • feat(wearos): full Wear OS app target — `--target wearos` / `perry run wearos` (#5173)
  • feat(resolve): honor tsconfig compilerOptions.paths/baseUrl (#5215); lower require("") to module namespace (#5220)
  • feat(plugin): unregister/off methods for hooks, tools, services, routes, events (#5279)
  • feat(compile): per-app feature gating for regex/Temporal/URL/normalize/segmenter (#5153)
  • feat(ui-windows-winui): render-backend dispatch seam + startup probe (#4897)

Fixes

  • CJS/compile-package: alias-vs-named-export collisions, chain-aware class hoist, function-nested class exports, commander real-source compile (#5337, #5328, #5325, #5212)
  • resolve: honor 'node' exports condition above 'default' (execa) (#5339); symlinked relative imports (#5210)
  • proxy/reflect: Array.prototype on proxy arrays (#5208), Reflect.set/construct receiver segfaults (#5164, #5184)
  • http/net: res.setHeaders SIGSEGV (#5175), 100-continue handshake (#5123), web-fetch/node:http pump split (#5189), socket.write from data handler (#5120)
  • runtime/object: getPrototypeOf identity (#5192), symbol keys + accessor descriptors (#5177), TypedArray @@toStringTag (#5318), Promise expando props (#5188)
  • gc: register per-class keys-array global as GC root (#5162); root source string across slice (#5160)
  • regex: stop false-rejecting valid char classes & bounded quantifiers (#5277)
  • Next.js standalone walls 36-46 (#5125, #5152, #5178)

Performance

  • perf(codegen): outline per-new-site inline allocator (#5294); shared constructor symbol (#5304); inline class-field shape guard (#5198); guarded numeric array index reads (#5132)
  • perf(hir): O(1) registry/scope/closure-capture lookups, fix exponential native-fluent re-lowering (#5267, #5270)
  • perf(transform): inline small this-using methods on exact receivers (#5092)
  • perf(size): devirtualize native-module dispatch tables (#5256)

Infrastructure

  • ci: move sccache onto persisted disk cache (#5324); cache-warm workflow (#5326); bound cargo-test timeout (#5221)
  • test262: un-skip eval/intl402/property-escapes; honest parity numbers (#5300, #5327)
  • npm: ship static archives zstd-compressed to clear E413 size limit (#5145)
  • test(node-suite): ratchet baseline to clean 98.1% (#5166)

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 →

Related context

Earlier breaking changes

  • v0.5.1158 `cluster` workers share a listening port using SO_REUSEPORT and IPC round‑trip.
  • v0.5.1158 Streams now support BYOB readers and real `ByteLengthQueuingStrategy` accounting.
  • v0.5.1158 `Atomics.wait`, `notify`, and `waitAsync` now block and wake across agents using a shared `SharedArrayBuffer`.
  • v0.5.1158 `node:dns` and `node:dgram` perform real network I/O instead of stub behavior.
  • v0.5.1158 `AsyncLocalStorage` and `async_hooks` now propagate context across await, microtasks, timers, and `process.nextTick`.

Beta — feedback welcome: [email protected]