github PerryTS/perry v0.4.47

latest releases: v0.5.1220, v0.5.1219, v0.5.1206...
3 months ago

Bug Fixes

  • x86_64 module-local function dispatch: Function wrappers for .map(resolveType) callbacks used Linkage::Export even for non-exported functions. When two modules shared the same filename and function names (e.g., two contract.ts files both with resolveType), the linker resolved the wrong wrapper. Non-exported wrappers now use Linkage::Local.
  • obj[c.name] garbage on any-typed objects: is_string_index_expr_get no longer returns false for all PropertyGet on non-string objects — now defaults to string except for known class instances with numeric fields.
  • Union-typed obj[intKey] wrong dispatch: is_union added to is_known_array check so js_dynamic_array_get (which handles arrays at runtime) is used instead of string-key property lookup.
  • Cross-module await Promise<[T, T]> tuple indexing: Type::Tuple added to the Await expression-inference handler's inner_type match for correct is_array flag on resolved value.
  • Bug #8 regression reverted: Broad Tuple additions to is_typed_pointer/is_typed_array caused SIGBUS on complex module graphs; reverted to minimal one-line fix.

Features

  • Promise.race: Full implementation — js_promise_race runtime function iterates promise array, attaches resolve/reject handlers with first-wins semantics, handles already-settled promises and non-promise values.

Previous (v0.4.46)

  • String.replaceAll, String.matchAll, arr.shift()?.method() fix, Buffer.subarray/slice, SQLite params/pragma/transaction, .length on Call results, x86_64 overload dispatch fix

Don't miss a new perry release

NewReleases is sending notifications on new releases.