Skip to content

v0.3.6 — scopes-based symbolication and trace-mapping parity fixes

Choose a tag to compare

@BartWaardenburg BartWaardenburg released this 17 Apr 08:06
· 322 commits to main since this release
v0.3.6
e755128

Features

  • Scopes-based function name resolution in srcmap-symbolicate. When a mapping has no associated name, the symbolicator now walks the scopes-proposal range tree at the generated position, skips hidden ranges, and returns the innermost stack-frame scope's original name. Implements the FindOriginalFunctionName operation from the ECMA-426 scopes proposal, so symbolicated frames pick up readable function names from scopes data alone.

Bug fixes

  • srcmap-sourcemap: match @jridgewell/trace-mapping tie-break for duplicate-column segments. When two segments share a generated column, GLB now returns the earliest-equal segment and LUB returns the latest-equal, matching trace-mapping semantics. Rust's binary_search_by_key previously returned an unspecified index among equal keys, which could pick a NO_SOURCE segment over the source-bearing one and break drop-in parity.
  • srcmap-sourcemap: preserve metadata when flattening indexed (sectioned) maps. debugId, x_* / x-* extensions, and sourceRoot from the outer map are now propagated into the flattened result, and scopes from each section are merged (generated ranges offset, definition and source indices remapped) instead of being dropped.
  • srcmap-remapping: only compose the inner map against its matching outer source. compose_pair previously returned the inner map for every outer source, so unrelated passthrough sources were incorrectly rewritten through the inner map. The match is now restricted to outer sources that equal inner.file (or the sole outer source when inner.file is unset).

Docs

  • Reframe "full ECMA-426 compliance" as stable core support plus explicitly-labelled draft proposals. debugId, rangeMappings, scopes/variables, and sourcesFunctionMappings are not in the published ECMA-426 core — README, ROADMAP, crate/package READMEs, and the repo badge now say so, and ROADMAP links point at the canonical tc39/ecma426 proposal files.

Full Changelog: v0.3.5...v0.3.6