Skip to content

Error Forge v0.9.7 — Release Candidate

Pre-release
Pre-release

Choose a tag to compare

@jamesgober jamesgober released this 25 Mar 00:03
· 44 commits to main since this release

Error Forge v0.9.7 — Stability, Polish, and Release Readiness

This release is all about hardening the 0.9 line for real production use.

0.9.7 focuses on correctness, consistency, and developer trust: tighter macro behavior, corrected derive handling, cleaner docs, and a fully green quality bar (test, clippy, and doc) across feature sets.

What is new in 0.9.7

API and runtime hardening

  • Added try_register_error_hook(...) so duplicate hook registration can be detected explicitly.
  • CodedError::with_retryable(...) now applies a real per-instance override.
  • CodedError::with_status(...) now applies a real per-instance override.

Macro and derive reliability fixes

  • Fixed define_errors! helper expansion edge cases that could affect tag parsing, display generation, and source chaining.
  • Fixed #[derive(ModError)] so list-style attributes such as #[error_display("...")] and #[error_http_status(...)] are correctly honored.
  • Aligned define_errors! default fatal behavior with ForgeError and AppError defaults (false unless explicitly set).

Documentation accuracy pass

  • Reworked README and API documentation to match the real public surface and current behavior.
  • Removed stale/outdated sections that no longer represented shipped APIs.
  • Refined examples and guidance for sync-first recovery behavior and feature-gated usage.

Quality and verification

  • Added regression coverage for macro generation, derive behavior, coded-error overrides, and feature-gated paths.
  • Cleared strict lint warnings and kept the crate clean under:
    • cargo test --all-features
    • cargo clippy --all-targets --all-features -- -D warnings
    • cargo doc --all-features --no-deps

Still here from the 0.9 line

  • Unified ForgeError model with stable metadata (kind, retryability, status/exit codes).
  • Rich declarative and derive ergonomics via define_errors! and #[derive(ModError)].
  • Error composition via group!.
  • Context propagation (ContextError, ResultExt).
  • Error code registry and collectors.
  • Sync recovery primitives (retry/backoff/circuit breaker) plus optional async error trait support.

Compatibility and migration notes

  • Non-breaking for current 0.9 adopters.
  • Existing sync hook flows continue to work.
  • New try_register_error_hook(...) is additive and can be adopted incrementally.
  • Derive users relying on list-style attributes should see improved consistency.

Install / upgrade

[dependencies]
error-forge = "0.9.7"

Optional features commonly used in production:

[dependencies]
error-forge = { version = "0.9.7", features = ["derive", "async", "serde", "log", "tracing"] }

Thanks

Thanks to everyone pushing for higher reliability and cleaner docs. This release is intentionally less flashy and more foundational: fewer surprises, clearer behavior, and better confidence when deploying Error Forge in production systems.

Full Changelog: v0.9.6...v0.9.7