Skip to content

v0.5.6

Choose a tag to compare

@github-actions github-actions released this 17 Jun 08:32
· 4623 commits to main since this release
v0.5.6
2762fad

Hew v0.5.6

Makes owned-heap dyn Trait values work end-to-end, moves supertrait-dispatch
errors to the checker, and corrects f-string interpolation diagnostics — plus a
round of runtime de-globalization substrate and toolchain-trust work. Several
items were found building software against the shipped v0.5.5 toolchain.

Language

  • Owned-heap dyn Trait boxing works. Coercing a record or enum that owns
    heap (a string, Vec, bytes, HashMap/HashSet, a nested aggregate, or an
    enum with an owned payload) to a dyn Trait now compiles, runs, and frees
    correctly. It previously failed at compile time. The dyn vtable's drop-in-place
    slot runs the concrete's structural drop and storage is released at the drop
    site. (#1977)
  • Unsatisfied supertrait dispatch is a checker error. A generic call that
    needs a supertrait the concrete type doesn't declare is now rejected at type
    check with a clear not its declared supertrait diagnostic instead of failing
    late in code generation; and a supertrait method implemented inline up the chain
    and called through a generic now compiles and dispatches. (#1972)

Diagnostics

  • f-string interpolation spans are correct. A syntax error inside
    f"{ ... }" now points at the actual source location (its span was previously
    local to the interpolation fragment, landing at the wrong byte), and {{ / }}
    produce a clear diagnostic pointing at Hew's \{ / \} literal-brace syntax
    instead of a confusing parse cascade. (#1973)
  • Trait-resolver completeness — aliased associated-type projections resolve,
    and a wrong-owner dyn coercion is corrected. (#1926)

Internals and toolchain

  • Runtime de-globalization (substrate). Each actor now carries a non-owning
    pointer to its owning runtime, and the off-dispatch entry point is fail-closed:
    a multi-runtime resolution that would fall back to the default runtime now traps
    rather than mis-delivering. Single-runtime programs are unaffected. (groundwork
    for per-runtime isolation)
  • Suspend-point code generation was de-duplicated for the non-deadline async
    constructs (behaviour-preserving).
  • A curated Miri lane now runs over the runtime's hand-written unsafe data
    structures (Rc/Arc/arena/bytes/vec/deque) in CI, covering the aliasing and
    provenance axis that ASan and TSan can't.
  • Subprocess/timing tests were de-flaked by waiting for real conditions
    instead of fixed sleeps — including a stream double-poll death test that
    intermittently failed under coverage instrumentation.