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 expanded —
getCanonicalLocales,supportedValuesOf,formatToParts, plusListFormat/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)