github PerryTS/perry v0.5.1150

10 hours ago

Highlights

  • Massive TC39 test262 parity push across the spec surface — Temporal (Duration/Instant 29.8%→88.5%, ZonedDateTime 34%→84%, PlainDate/PlainDateTime/PlainTime/YearMonth/MonthDay/Now), async generators 57.7%→93.0%, plus broad Array/String/Function/Object/Proxy/Promise/RegExp/class/iteration/expression-semantics work.
  • Explicit Resource Managementusing / await using / Symbol.dispose / Symbol.asyncDispose / DisposableStack (#4795, #4812).
  • SharedArrayBuffer + non-agent Atomics spec parity (#4794, #4803).
  • Annex B web-compat — String HTML methods, Object accessor methods, RegExp.prototype.compile, escape/unescape (#4796, #4813).
  • Lone-surrogate round-tripping via WTF-8 (#4793, #4806) and fancy-regex fallback wired through every RegExp op (#4797, #4801).
  • Cross-platform UI: DatePicker widget (#4772), drag & drop across all platforms (#4773), WinUI 3 backend scaffold + --target windows-winui (#4680).
  • Fully-static musl Linux target (--libc musl / [linux] libc) (#4834).

Features

  • feat(linux): fully-static musl target — --libc musl / [linux] libc (#4834)
  • feat(runtime): explicit-resource-management — using / await using / Symbol.dispose (#4795, #4812)
  • feat(runtime): SharedArrayBuffer + non-agent Atomics spec parity (#4794, #4803)
  • feat(annexb): String HTML methods, Object accessor methods, RegExp.compile, escape/unescape ToString (#4796, #4813)
  • feat(runtime): async-from-sync iterator adapter (#4590)
  • feat(ui): cross-platform DatePicker widget (#4772, #4790)
  • feat(ui): drag & drop across all platforms (#4773, #4791)
  • feat(ui-windows): WinUI 3 backend scaffold + --target windows-winui (#4680, #4780)
  • feat(codegen): default Windows output extension by type (#4771, #4782)
  • feat(publish): [android] version_code override (#4814)

Fixes — spec parity (test262)

  • fix(runtime): Temporal Duration + Instant parity 29.8%→88.5% (#4819)
  • fix(runtime): Temporal.ZonedDateTime parity 34%→84% (#4820)
  • fix(runtime): Temporal PlainDate/PlainDateTime parity + object-method arg-cap fix (#4821)
  • fix(runtime): Temporal PlainTime/YearMonth/MonthDay/Now parity + shared infra (#4818)
  • fix: standalone async-generator parity 57.7%→93.0% (#4777)
  • fix(runtime): built-ins/RegExp (non-lookbehind) parity (#4809)
  • fix: eval-code / function-code / arguments-object parity (#4808)
  • fix(runtime): Date/Number/JSON/Math/NativeErrors test262 tails (#4807)
  • fix(runtime): typed-array & exotic-descriptor crashes in built-ins tails (#4817)
  • fix(hir): expression-semantics parity (new/delete/call/spread/compound-assign) (#4802)
  • fix(hir): statement-semantics parity (for-of iterator protocol, with, eval completion-values) (#4786)
  • fix(runtime): built-ins/Object parity v2 (#4784)
  • fix(runtime): built-ins/Array parity v2 (#4778)
  • fix(runtime): built-ins/String boxed-receiver methods + arg coercion (#4754, #4755)
  • fix(runtime): built-ins/Function parity — instanceof Function, fn.constructor, prototype length/name (#4752, #4758, #4761)
  • fix(runtime): built-ins/Proxy parity (#4748)
  • fix(hir): class field/element initializer parity v2 (#4779)
  • fix: class accessor-name / super / subclass / method parity (#4770)
  • fix: class async / async-generator method parity (#4768)
  • fix(class): static & computed accessors on class expressions (#4747)
  • fix(class): method-as-value identity + injective private-symbol mangling (#4764)
  • fix(hir): class destructuring + default-parameter parity (#4766)
  • fix(hir): object-literal semantics parity (#4751)
  • fix(hir): iteration-statement protocol parity (#4750)
  • fix(operators): abstract relational comparison + logical-assignment NamedEvaluation (#4753)
  • fix(transform,runtime): yield* delegation next-capture + object-literal thenable await (#4783)
  • fix(runtime): TypedArray @@species (SpeciesCreate) for slice/subarray/map/filter (#4762)
  • fix(runtime): TypedArray dynamic buffer-view construction + from/of/new validation (#4763)
  • fix(runtime): TypedArray.prototype.set offset validation + array-like coercion (#4757)
  • fix(runtime): TypedArray element-store coercion (ToUint32 modular) + f16 rounding (#4746)
  • fix(runtime): Promise resolving-functions guard + combinator semantics (#4745)
  • fix(runtime): Promise static methods preserve receiver brand checks when borrowed (#4603)
  • fix(runtime): generic Array.prototype.reverse/fill over array-like receivers (#4620, #4640)

Fixes — runtime / codegen / crashes

  • fix(runtime): adopt returned promise state on async tail-return (#4832)
  • fix(runtime): honor dangerouslySetInnerHTML in hono/jsx rendering (#4827, #4830)
  • fix(runtime): nested-Proxy Object.getPrototypeOf no longer segfaults on Linux (#4824)
  • fix(runtime): round-trip lone surrogates via WTF-8 (#4793, #4806)
  • fix(runtime): wire fancy-regex fallback through every RegExp operation (#4797, #4801)
  • fix(hir): obj?.method(args) on builtins no longer short-circuits to undefined (#4816)
  • fix(runtime): for-of/spread over a Headers handle no longer segfaults (#4800)
  • fix(runtime): bind this=iterable when calling Symbol.iterator (#4788)
  • fix(runtime): function-object descriptors + proxy SetIntegrityLevel parity (#4789)
  • fix(runtime): frozen-array pop/shift/push/unshift throw TypeError (#4781)
  • fix(codegen): destructured-value copies no longer truncate to i32 (#4785)
  • fix(runtime): symbol-keyed property write on a native handle no longer throws (#4749)
  • fix(codegen): new <imported-function>() runs the constructor body (#4769)
  • fix: zod v4 safeParse on invalid input — crash + readable error (#4699, #4774)

Fixes — platform / stdlib / build

  • fix(macos): chdir to Contents/Resources on .app launch so assets resolve (#4833)
  • fix(hir): resolve CJS worker path joins (#4815)
  • fix(cjs): prune dead platform-guarded requires (#4822)
  • fix(publish): anchor bare-name [publish].exclude entries to the project root (#4811)
  • fix(android): make perry-ui-android resilient to a shadowed JNI_OnLoad (#4804)
  • fix(watchos/visionos): find the entry object by symbol, not filename (#4799)
  • fix(tvos): copy project resource dirs into the .app bundle (#4787)
  • fix(ui-windows): Mica-by-default + WM_DPICHANGED relayout (#4681, #4776)
  • fix(link): link libc++/libc++abi in cross-Apple branches (#4759)
  • fix(runtime): @hono/node-server c.req.text()/.json()/.formData() on POST/PUT (#4765)
  • fix(runtime): subclassing native Request/Response exposes working body methods (#4756)
  • fix(stream): honor emitClose/autoDestroy close-lifecycle options (#4386)
  • fix(net): native-handle instanceof net.Socket + explicit Tokio runtimes (#4525)
  • fix(http): Agent drops the bogus close method to match Node (#4628)
  • fix(zlib): expose external Transform stream handles + validate async one-shot callback (#4506, #4514)
  • fix(webcrypto): algorithm.length for KMAC128/256 (#4515)
  • fix(globals): spec .length for legacy/global function values (#4545)

See CHANGELOG.md for full detail.

Don't miss a new perry release

NewReleases is sending notifications on new releases.