PackageTrack
Sign in Get early access

oxc-miette

Fancy diagnostic reporting library and protocol for us mere mortals who aren't compiler hackers.

4.0.0 5.3M downloads/mo #4400 most downloaded on crates.io oxc-project/oxc-miette

What this package is like to depend on

Last release 13 days ago

10 Aug 2026

Ships fairly regularly

a new release about every 6 weeks

Nearly every release is documented

notes for 18 of 19 stable releases

Nothing withdrawn

no release was ever pulled

2 years old

19 releases · first in 2024

8 releases in the last 12 months

see the full history below

Release timeline

19 releases · Oct 2024 to Aug 2026
2025 2026
Release Pre-release

Releases

latest 19
  1. 4.0.0 10 Aug 2026
    Release notes

    Bug Fixes

    • Reject out-of-bounds label offsets, scan the prefix with memchr2 (#223)

    Performance

    • Derive primary-label line/column instead of a second read_span (#222)
    • Scan the source once per snippet render via a shared line-break index (#225)
    • Optimize single-context prefix scans (#242)
    • Specialize LF-only prefix scans (#243)
    • Inline single-line context storage (#245)
    • Skip wrapping for fitting text (#246)
    • Skip width scan for tabless lines (#247)
    • Use byte widths for plain ascii (#248)
    • Scan snippet lines with memchr (#249)
    • Measure ascii display widths by byte (#250)
    • Write labels without temporary strings (#251)
    • Write fitting diagnostic text directly (#252)
    • Borrow graphical label text (#253)
    • Write underline runs in chunks (#255)
    • Preallocate snippet lines (#258)
    • Skip plain style formatting (#259)
    • Write label padding in chunks (#280)
    • Restore chunked underline rendering (#283)
    • Reduce snippet rendering allocations (#284)
    • Stream fitting diagnostic titles (#285)
    • Stream blank line-number gutters (#286)
    • Stream numbered line gutters (#287)
    • Stream fitting help text (#288)

    Documentation

    • Document the flattened error-report modules (#236)
    • Synchronize the documented MSRV (#277)

    Refactor

    • Move line_column_at onto MietteSpanContents (#224)
    • Split the graphical renderer into a module directory (#227)
    • Remove dead commented-out code from the graphical renderer (#233)
    • Flatten the eyreish module into the crate root (#235)
    • Remove the inert graphical cause-chain builders (#238)
    • Remove the unused ErrReport / EyreContext compat aliases (#239)
    • Remove the unused with_urls builder (#241)
    • Encapsulate source span scanning (#244)
    • Remove the anyhow/eyre-style WrapErr/Context feature (#240)
    • Mark value-returning APIs as must use (#275)
    • Make tests clippy-clean and race-free (#276)
    • Simplify derive and runtime code (#282)
    • Remove narratable report handler (#300)
    • Separate diagnostic protocol from application errors (#301)
    • Prune unused diagnostic features (#302)
    • Simplify source span protocol (#303)
    • Narrow diagnostic protocol (#304)
    • (reporting) Remove unused rendering state (#305)
    • (protocol) Require contiguous source data (#306)
    • (protocol) Remove unused implementations (#307)

    Testing

    • Move public-API unit tests into the integration suite (#229)

    Chore

    • (deps) Update rust crates (#231)
    • (deps) Update rust crate syn to v3 (#232)
    • (deps) Update rust crate syn to v3.0.1 (#234)
    • Sync Rust and Clippy lints (#281)
    • (deps) Update rust crates (#290)
    • (deps) Update semgrep/semgrep docker tag to v1.171.0 (#291)
    • (deps) Update rust crate trybuild to v1.0.119 (#296)
    • (deps) Update github actions (#297)
    • (deps) Update codspeedhq/action action to v5 (#298)
    • (deps) Update codspeedhq/action action to v5.0.2 (#310)
    • (deps) Update rust crate ureq to v3.4.0 (#311)

    CI

    • Skip exhaustive textwrap test under miri (#254)
    • (semgrep) Add scan workflow (#257)

    Bench

    • Add CodSpeed benchmark for diagnostic rendering (#215)
    • Add a multi-label diagnostic rendering case (#220)
    • Align render cases with oxlint (#279)
    • Measure cold first-render cost separately (#292)
    Open source →
  2. 3.0.1 19 Jul 2026
    Release notes

    Performance

    • Reuse span contents in render_context instead of re-reading (#212)
    • Speed up read_span with bulk memchr line scanning (#211)

    Documentation

    • Normalize README sponsor section (#204)
    • Update sponsor section (#213)

    Refactor

    • Move long std/core paths to top-level imports (#196)

    Chore

    • Bump cargo-shear to 1.13.1 (#200)
    • Configure clippy exported api lint (#203)
    • Standardize rustfmt config (#205)
    • (deps) Update dependency rust to v1.96.1 (#207)
    • (deps) Update oxc-project/security-action action to v1.0.8 (#201)
    • (deps) Update rust crates (#199)
    • (deps) Update rust crates (#209)
    • (deps) Update rust to v1.97.0 (#210)
    • (deps) Update dependency rust to v1.97.1 (#208)

    CI

    • Use latest rust toolchain, drop stale 1.70.0 matrix (#198)
    • Add crates environment to release workflow
    Open source →
  3. 3.0.0 08 Jun 2026
    Release notes

    Performance

    • [breaking] Store source spans as u32 to shrink LabeledSpan (#180)
    • Store diagnostic labels inline to avoid allocations (#182)
    • Return Cow<str> from code/help/note/url instead of boxing (#183)
    • Return concrete MietteSpanContents from SourceCode::read_span (#184)
    • Return inline Related from Diagnostic::related (#185)
    • Avoid allocating a styled label just to test its presence (#186)
    • Write styled gutter/underline glyphs directly instead of allocating (#187)
    • Avoid an intermediate String when building FancySpan labels (#188)
    • Borrow name/language in MietteSpanContents instead of cloning (#190)
    • Style FancySpan label parts once at construction (#191)
    • Revert LabeledSpan.label to String to avoid a realloc per label (#192)
    • Borrow source lines in the renderer instead of allocating a String each (#193)
    • Avoid cloning LabeledSpans when building snippet contexts (#194)

    Refactor

    • Import Cow at the top instead of fully-qualifying inline (#195)

    Chore

    • (deps) Update github-actions (#164)
    • (deps) Update rust crates (#165)
    • (deps) Update taiki-e/install-action action to v2.75.7 (#166)
    • (deps) Update dependency rust to v1.95.0 (#168)
    • (deps) Update github-actions (#170)
    • (deps) Update oxc-project/security-action action to v1.0.2 (#171)
    • (deps) Update oxc-project/security-action action to v1.0.3 (#172)
    • (deps) Update oxc-project/security-action action to v1.0.5 (#173)
    • Use ubuntu-latest for security workflow (#175)
    • (deps) Update actions/create-github-app-token action to v3.2.0 (#176)
    • (deps) Update rust crate serde_json to v1.0.150 (#177)
    • (deps) Update dependency rust to v1.96.0 (#178)
    • (deps) Update github actions (#179)
    • (deps) Update rust crates to v1.13.3 (#181)

    CI

    • Replace OXC_BOT_PAT with GitHub App tokens (#167)
    • Add security analysis workflow (#169)
    Open source →
  4. 2.7.1 30 Mar 2026
    Release notes

    Bug Fixes

    • Forward SourceCode::name through Arc and Cow (#162)

    Testing

    • Implement insta for snapshot testing (#138)

    Chore

    • (deps) Update taiki-e/install-action action to v2.65.13 (#128)
    • (deps) Update github-actions (#130)
    • (deps) Update rust crates (#131)
    • (deps) Update github-actions (#133)
    • (deps) Update rust crate thiserror to v2.0.18 (#134)
    • (deps) Update dependency rust to v1.93.0 (#135)
    • (deps) Update github-actions (#136)
    • (deps) Update rust crates to v1.0.106 (#137)
    • (deps) Update rust crates (#139)
    • (deps) Update github-actions (#140)
    • (deps) Update github-actions (#142)
    • (deps) Update rust crates (#143)
    • (deps) Update dependency rust to v1.93.1 (#144)
    • (deps) Update github-actions (#145)
    • (deps) Update rust crates (#146)
    • (deps) Update rust crate syn to v2.0.116 (#147)
    • (deps) Update github-actions (#148)
    • (deps) Update rust crate syn to v2.0.117 (#149)
    • (deps) Update rust crate owo-colors to v4.3.0 (#150)
    • (deps) Update github-actions (#151)
    • (deps) Update dependency rust to v1.94.0 (#152)
    • (deps) Update github-actions (#153)
    • (deps) Update rust crate quote to v1.0.45 (#154)
    • (deps) Update taiki-e/install-action action to v2.68.25 (#155)
    • (deps) Update github-actions (#156)
    • Apply cargo shear --fix (#157)
    • (deps) Update github-actions (#158)
    • (deps) Update dependency rust to v1.94.1 (#159)
    • (deps) Update github-actions (#160)
    • (deps) Update rust crates (#161)
    Open source →
  5. 2.7.0 04 Jan 2026
    Release notes

    Features

    • Support notes for diagnostics (#124)

    Chore

    • (deps) Update dependency rust to v1.91.0 (#104)
    • (deps) Update github-actions (#106)
    • (deps) Lock file maintenance rust crates (#107)
    • (deps) Update taiki-e/install-action action to v2.62.49 (#109)
    • (deps) Lock file maintenance (#110)
    • (deps) Update dependency rust to v1.91.1 (#111)
    • (deps) Update github-actions (#112)
    • (deps) Update rust crate syn to v2.0.110 (#108)
    • (deps) Update github-actions (#113)
    • (deps) Update rust crate syn to v2.0.111 (#114)
    • (deps) Update actions/checkout action to v6 (#115)
    • (deps) Update github-actions (#116)
    • (deps) Update github-actions (#117)
    • (deps) Update dependency rust to v1.92.0 (#118)
    • (deps) Update github-actions (#119)
    • (deps) Update github-actions (#120)
    • (deps) Update rust crate supports-hyperlinks to v3.2.0 (#121)
    • (deps) Update github-actions (#122)
    • (deps) Update rust crates (#123)
    • (deps) Update rust crate syn to v2.0.113 (#126)
    • (deps) Update taiki-e/install-action action to v2.65.12 (#127)
    Open source →
  6. 2.6.0 30 Oct 2025
    Release notes

    Features

    • Expose name method on SourceCode for getting the file name (#103)

    Chore

    • (deps) Update github-actions (#93)
    • (deps) Update github/codeql-action action to v4 (#96)
    • (deps) Lock file maintenance rust crates (#97)
    • (deps) Update taiki-e/install-action action to v2.62.28 (#95)
    • (deps) Update github-actions (#99)
    • (deps) Lock file maintenance rust crates (#100)
    • (deps) Update github-actions (#101)
    • (deps) Lock file maintenance rust crates (#102)
    Open source →
  7. 2.5.1 29 Sep 2025
    Release notes

    Chore

    • (deps) Update github-actions (#88)
    • (deps) Update dependency rust to v1.90.0 (#87)
    • (deps) Update taiki-e/install-action action to v2.62.0 (#90)
    • (deps) Lock file maintenance rust crates (#91)
    • (deps) Update github-actions (#92)
    Open source →
  8. 2.5.0 16 Sep 2025
    Release notes

    Features

    • Correctly calculate emoji sequences width (#85)

    Chore

    • (deps) Update taiki-e/install-action action to v2.57.5 (#67)
    • (deps) Update dependency rust to v1.89.0 (#69)
    • (deps) Lock file maintenance rust crates (#71)
    • (deps) Update github-actions (#70)
    • (deps) Lock file maintenance rust crates (#72)
    • (deps) Lock file maintenance rust crates (#75)
    • (deps) Update github-actions (#73)
    • (deps) Update actions/checkout action to v5 (#74)
    • (deps) Lock file maintenance rust crates (#77)
    • (deps) Update github-actions (#76)
    • (deps) Update taiki-e/install-action action to v2.58.29 (#78)
    • (deps) Update github-actions (#79)
    • (deps) Lock file maintenance (#80)
    • (deps) Update github-actions (#82)
    • (deps) Lock file maintenance rust crates (#83)
    • (deps) Lock file maintenance rust crates (#84)

    CI

    • Update

    <!-- generated by git-cliff -->

    Open source →
  9. 2.4.0 30 Jul 2025
    Release notes

    Features

    • Add mut LabelSpan.set_span_offset (#62)

    <!-- generated by git-cliff -->

    Open source →
  10. 2.3.2 28 Jul 2025
    Release notes

    Chore

    • (deps) Update github-actions (#52)
    • (deps) Update github-actions (#54)
    • (deps) Lock file maintenance rust crates (#56)
    • (deps) Update taiki-e/install-action action to v2.56.13 (#55)
    • (deps) Lock file maintenance rust crates (#59)
    • (deps) Update github-actions (#58)
    • (deps) Lock file maintenance (#61)
    • (deps) Update github-actions (#60)

    CI

    • (release) Enable trusted publishing

    <!-- generated by git-cliff --> The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

    Open source →
  11. 2.3.1 27 Jun 2025
    Release notes

    <!-- 7 -->Chore

    • (deps) update dependency rust to v1.88.0 (#51)
    • (deps) update github-actions (#49)
    • (deps) lock file maintenance rust crates (#50)
    • (deps) update github-actions (#47)
    • (deps) lock file maintenance rust crates (#48)
    • (deps) update github-actions (#44)
    • (deps) lock file maintenance rust crates (#45)
    • (deps) update taiki-e/install-action action to v2.52.4 (#43)
    Open source →
  12. 2.3.0 26 May 2025
    Release notes

    <!-- 0 -->Features

    • (formatter) output lint/col in json formatter (#42)

    <!-- 7 -->Chore

    • (release-plz) group version
    • (deps) update taiki-e/install-action action to v2.52.1 (#40)
    • (deps) lock file maintenance rust crates (#41)
    • (deps) update github-actions (#38)
    • (deps) lock file maintenance rust crates (#39)
    • (deps) update dependency rust to v1.87.0 (#37)
    • (deps) lock file maintenance rust crates (#36)
    • (deps) update github-actions (#34)
    • (deps) lock file maintenance rust crates (#35)
    • (deps) update github-actions (#33)
    • (deps) lock file maintenance rust crates (#32)
    • (deps) update github-actions (#31)
    • (deps) update github-actions (#30)
    • (deps) update github-actions (#28)
    • (deps) lock file maintenance (#29)
    • (deps) update dependency rust to v1.86.0 (#27)
    • (deps) update github-actions (#26)
    • (deps) update github-actions (#24)
    • (deps) lock file maintenance (#25)
    • (deps) update dependency rust to v1.85.1 (#22)

    <!-- 8 -->CI

    • fix permissions
    • add zizmor
    Open source →
  13. 2.2.1 19 Mar 2025
    Release notes

    Fixed

    • "Formatting argument out of range" in rustc nightly (#20)
    Open source →
  14. 2.2.0 17 Mar 2025
    Release notes

    Added

    • report in color with env var CI and FORCE_COLOR (#16)

    Other

    • (deps) update marcoieni/release-plz-action digest to 4cd77ee (#17)

    miette Release Changelog

    <a name="7.2.0"></a>

    Open source →
  15. 2.1.2 14 Mar 2025
    Release notes

    So it turns out I forgot to make snippets and other stuff forward through when you use .context() &co. This should be fixed now 😅

    Bug Fixes

    • context: pass on diagnostic metadata when wrapping with Report (e4fdac38)

    <a name="2.1.1"></a>

    Open source →
  16. 2.0.0 14 Mar 2025
    Release notes

    This release overhauls the toplevel/main experience for miette. It adds a new Report type based on eyre::Report and overhauls various types to fit into this model, as well as prepare for some future changes in Rust that will make it possible to integrate miette directly with crates like eyre instead of having to use this specific Report.

    On top of that, it includes a couple of nice new features, such as #[diagnostic(transparent)], which should be super useful when wrapping other diagnostics with your own types!

    Breaking Changes

    • report: anyhow-ify DiagnosticReport (#35) (3f9da04b)
      • DiagnosticReport is now just Report, and is a different, eyre::Report-like type.
      • DiagnosticResult is now just Result.
      • .into_diagnostic() now just transforms the error into a Report.
      • DiagnosticReportPrinter has been replaced with ReportHandler
      • set_printer has been replaced by set_hook
      • code is now optional.
      • .into_diagnostic() no longer takes a code argument.
      • #[diagnostic] is now optional when deriving Diagnostic.

    Features

    • derive: Add #[diagnostic(transparent,forward)] (#36) (53f5d6d1)
    • Source: impl Source for str, &str (make &'static str usable for testing) (#40) (50c7a883)
    • source: Remove bound T: Clone from Source implementation for Cow. (#42) (0427c9f9)

    Bug Fixes

    • reporter: Only inc the line count if we haven't already done so with '\n' or '\r\n' (#37) (5a474370)
    • printer: Show snippet message for unnamed sources (#39) (84219f6c)

    <a name="1.1.0"></a>

    Open source →
  17. 1.0.2 03 Nov 2024

    Nothing published for this version

  18. 1.0.1 27 Oct 2024
    Release notes

    This is a (literally) small release. I noticed that the crate's size had increased significantly before I realized cargo was including the images/ folder. This is not needed, as these images are just hosted on GitHub.

    miette should be smaller now, I hope :)

    Bug Fixes

    • crate: reduce crate size by removing images (5f74da67)

    <a name="1.0.0"></a>

    Open source →
  19. 1.0.0 27 Oct 2024
    Release notes

    ...you know what? I'm just gonna tag 1.0.0, because I don't want sub-1.0 versions anymore, but the Cargo ecosystem buries pre-releases pretty thoroughly. Integers are cheap!

    So here we are! We made it to 1.0, and with some really nice goodies to boot.

    Most fun is the fact that the default printer now has clickabble url linking support. A new Diagnostic::url() method has been added to the protocol that, is used to figure out what URL to send folks to! This should work on most "modern" terminals, but more thorough support checking will be done in the future. And of course, the narrated reporter prints them out too.

    I also took the time to completely redo how messages, labels, and filenames are handled in the system, and this is a pretty big change you might run into. Godspeed!

    Last but not least, we got our first external contribution! Thank you to @martica for the bug fix!

    Anyway, here's to 1.0, and to many more after that. Enjoy! :)

    Breaking Changes

    • snippets: Overhauled how snippets handle labels, sources, and messages, including the derive macro (61283e9e

    Features

    • links: added URL linking support and automatic docs.rs link generation (7e76e2de)
    • theme: Add an initial rgb style with nicer colors (3546dcec) - @martica

    Bug Fixes

    • printer: clamp highlight length to at least 1 (#32) (9d601599)

    <a name="1.0.0-beta.1"></a>

    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