Skip to content

Latest commit

 

History

History
48 lines (29 loc) · 2.18 KB

File metadata and controls

48 lines (29 loc) · 2.18 KB

CHANGELOG

All significant changes to this project will be documented in this file.

Unreleased

v0.4.0-rc.1 (2026-08-24)

Breaking Changes

  • Remove Exn::raise_all(parent, children). Import IteratorExt and use children.into_iter().raise(parent) instead.
  • Remove the unused ResultExt::Error associated type. Generic code that named it must carry the error type separately.

New Features

  • Let a bare Exn serve as the standard type-erased boundary. Concrete errors and typed Exn<E> values convert into it through From and ?; converting a typed exception preserves its complete frame tree and runtime error types without another allocation.
  • Add IteratorExt::raise to aggregate an iterator of errors or typed or type-erased exceptions beneath one typed parent.
  • Allow Exn<E> and marker-only adapters to use unsized root markers. Construction still requires a sized error passed by value, and conversion into arbitrary custom trait-object markers is not provided.

Packaging

  • Include the Apache-2.0 license in the published exn package.

v0.3.1 (2026-05-06)

New Features

  • Use a more compact ASCII tree format for default Debug output.

Bug Fixes

  • Fix conversion from Exn<E> into boxed std::error::Error trait objects.

v0.3.0 (2026-01-31)

Breaking Changes

  • Exn::from_iter has been renamed to Exn::raise_all
  • exn::Error trait bound has been removed in favor of inlined StdError + Send + Sync + 'static bounds.
  • err.raise() has been moved to the exn::ErrorExt extension trait.
  • Exn::error(&self) has been replaced with impl Deref<Target = E> for Exn<E>.

New Features

  • Exn<E> now implements Deref<Target = E>, allowing for more ergonomic access to the inner error.
  • This crate is now no_std compatible, while the alloc crate is still required for heap allocations. It is worth noting that no_std support is a nice-to-have feature, and can be dropped if it blocks other important features in the future. Before 1.0, once exn APIs settle down, the decision on whether to keep no_std as a promise will be finalized.
  • Frame now implements std::error::Error.
  • Support convert Exn<E> into Box<dyn std::error::Error>.