PackageTrack
Sign in Get early access

error-stack

A context-aware error-handling library that supports arbitrary attached user data

0.8.0 4.3M downloads/mo #4850 most downloaded on crates.io hashintel/hash

What this package is like to depend on

Last release 1 months ago

03 Jul 2026

Release timing varies

gaps range from 9 days to 1.1 years

Nearly every release is documented

notes for 15 of 16 stable releases

Nothing withdrawn

no release was ever pulled

4 years old

16 releases · first in 2022

4 releases in the last 12 months

see the full history below

Release timeline

16 releases · Jun 2022 to Jul 2026
2023 2024 2025 2026
Release Pre-release

Releases

latest 16
  1. 0.8.0 03 Jul 2026
    Release notes

    What changed

    Breaking Changes

    • Fix a soundness hole in Report::frames_mut: the returned iterator handed out &mut Frames with independent lifetimes, so a frame and one of its sources (via Frame::sources_mut) could be borrowed mutably at the same time — undefined behavior triggerable from safe code, up to segfaults. frames_mut now takes a visitor closure (FnMut(&mut Frame) -> ControlFlow<()>) instead of returning an iterator, and the FramesMut type has been removed. Report::downcast_mut is unaffected. (#8946)
    Open source →
    Release notes

    Breaking Changes

    • Fix a soundness hole in Report::frames_mut: the returned iterator handed out &mut Frames with independent lifetimes, so a frame and one of its sources (via Frame::sources_mut) could be borrowed mutably at the same time — undefined behavior triggerable from safe code, up to segfaults. frames_mut now takes a visitor closure (FnMut(&mut Frame) -> ControlFlow<()>) instead of returning an iterator, and the FramesMut type has been removed. Report::downcast_mut is unaffected. (#8946)
    Open source →
  2. 0.7.1 27 May 2026
    Release notes

    What changed

    Fixes

    • Gate sink imports behind cfg(nightly) so error-stack compiles on stable Rust with the unstable feature enabled. (#8768)

    Full Changelog: https://github.com/hashintel/hash/compare/[email protected]@0.7.1

    Open source →
    Release notes

    Fixes

    • Gate sink imports behind cfg(nightly) so error-stack compiles on stable Rust with the unstable feature enabled. (#8768)
    Open source →
  3. 0.7.0 26 Mar 2026
    Release notes

    Features

    • Support trailing commans in bail! macro. (#7772)

    Breaking Changes

    • Remove deprecated Context (#7763)
    • Remove deprecated report! (#7763)
    • Remove deprecated Report::{attach_lazy, attach_printable, attach_printable_lazy} (#7763)
    • Depend on serde_core instead of serde. (#7909)
    Open source →
  4. 0.6.0 30 Aug 2025
    Release notes

    Features

    • Report has been split into Report<C> and Report<[C]> to distinguish between a group of related errors and a single error. These errors can still be nested. (#5047)
    • Introduce a new unstable flag, which is used to enable unstable features, these features are not covered by semver and may be modified or removed at any time. (#5181)
    • Reintroduce a new IntoReport trait, which is used to determine when a type can be converted to a Report. This allows the usage of errors more idiomatically in traits, such as type Error: IntoReport. (#6738)

    Breaking Changes

    • Rename attach[_lazy] to attach_opaque[_with] and attach_printable[_lazy] to attach[_with]. (#7753)
    • Set the MSRV to 1.83 (#5333)
    • Extend is no longer implemented by Report<C>, instead it is implemented on Report<[C]>, either use From or Report::expand to convert between Report<C> into Report<[C]>. (#5047)
    • extend_one has been renamed to push and is only implemented on Report<[C]>. (#5047)
    • bail!(report,) has been removed, one must now use bail!(report). This is in preparation for the unstable bail! macro that allows to construct Report<[C]>. (#5047)

    Deprecations

    • Context: Use core::error::Error instead (#5533)
    • Result<T, C>: Use core::result::Result<T, Report<C>> instead (#5533)
    • report!, use IntoReport::into_report instead. (#6738)
    Open source →
  5. 0.5.0 12 Jul 2024
    Release notes

    Features

    • Capture source() errors when converting Error to Report (#4678)

    Breaking Changes

    • Backtraces are not included in the std feature anymore. Instead, the backtrace feature is used which is enabled by default (#4685)
    • Remove deprecated IntoReport (#4706)
    Open source →
  6. 0.4.1 04 Sep 2023
    Release notes

    Fixes

    • Fix deprecation warning typo for IntoReport (#3088)
    Open source →
  7. 0.4.0 23 Aug 2023
    Release notes

    Breaking Changes

    • Add ResultExt::Context as associated type (#2883)

    Features

    • Implement ResultExt for Result even if the Err-variant is not Report<C> but only C: Context (#2883)

    Deprecations

    • IntoReport: Use ReportExt or From via Result::map_err(Report::from) instead (#2883)
    Open source →
  8. 0.3.1 08 Feb 2023
    Release notes
    • Fix multiline attachments not being aligned (#2022)
    Open source →
  9. 0.3.0 01 Feb 2023
    Release notes

    Breaking Changes

    • Remove all previously deprecated methods (#1485)
    • Remove pretty-print feature (#1800)

    Features

    • Add initial serializing support using serde (#1290)
    • Support Debug hooks on no-std platforms via the hooks feature (#1556)
    • Support converting Report into Error via Report::as_error and Report::into_error (#1749)
    • Support converting Report into Box<dyn Error> via the From trait (#1749)
    • Programmatic selection of color mode and charset used for Debug output (#1800)
    Open source →
  10. 0.2.4 04 Nov 2022
    Release notes
    • The output of Location is no longer hard-coded and can now be adjusted through hooks. (#1237)
    • The TypeId of a value contained in a Frame can now be accessed via Frame::type_id (#1289)
    • Deprecate Frame::location in favor of an additional attachment on context change/creation (#1311)
    Open source →
  11. 0.2.3 12 Oct 2022
    Release notes
    • Add Apache 2.0 as an additional license option (#1172)
    Open source →
  12. 0.2.2 07 Oct 2022
    Release notes

    Patch Changes

    Open source →
    Release notes
    • Add a space before attachment formatting (#1174)
    Open source →
  13. 0.2.1 03 Oct 2022
    Release notes

    Patch Changes

    Open source →
    Release notes

    Patch Changes

    Open source →
  14. 0.2.0 03 Oct 2022
    Release notes

    Minor Changes

    • #8670 891f36f Thanks @lunelson! - Expose preset-owned tokens and semanticTokens from @hashintel/ds-components/tokens in place of the old ./theme export, and add generated @hashintel/ds-helpers/recipes exports for recipe consumers.
    Open source →
    Release notes

    Breaking Changes

    • Set the MSRV to 1.63 (#944)
    • Use Provider API from core::any (#697)
    • Remove the unused features hooks, futures, and futures-core (#695, #1138)

    Features

    • Support backtraces on non-nightly channels starting with 1.65.0-beta (#1098)
    • Add support for core::error::Error on nightly (#1038)
    • Add support for Error::provide() (#904)
    • New output for Debug (#794)
    • New hook interface for Debug (#794)
    • Add support for related errors and multiple error sources (#747)
    • Add compatibility for anyhow and eyre to convert their types into Report (#763)
    • Implement Termination for Report (#671)
    • Report::set_debug_hook and Report::set_display_hook no longer return an error (#794)

    Deprecations

    • IntoReport::report: Use IntoReport::into_report instead (#698)
    • Report::backtrace: Use Report::downcast_ref::<Backtrace> (non-nightly), Report::request_ref::<Backtrace> (nightly) instead (#747)
    • Report::span_trace: Use Report::downcast_ref::<SpanTrace> (non-nightly), Report::request_ref::<SpanTrace> (nightly) instead (#747)
    • Frame::source: Use Frame::sources instead (#747)
    • Frame::source_mut: Use Frame::sources_mut instead (#747)
    • Report::set_debug_hook: Use Report::install_debug_hook instead (#794)
    • Report::set_display_hook(#794)

    Internal improvements

    • Greatly reduce the amount of unsafe code (#774)
    Open source →
  15. 0.1.1 10 Jun 2022

    Nothing published for this version

  16. 0.1.0 10 Jun 2022
    Release notes
    • Initial release
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive