Skip to content

Latest commit

 

History

History
436 lines (264 loc) · 11.8 KB

CHANGELOG.md

File metadata and controls

436 lines (264 loc) · 11.8 KB

Changelog

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

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

0.7.0 - XXXX-XX-XX

Changed

  • Rust 1.34 is now the minimum supported Rust version. This is a breaking change.

0.6.9 - 2020-09-21

Added

  • #[derive(Snafu)] is now supported on unit structs and structs with fields.
  • ensure! now supports trailing commas.

Fixed

  • The error text for a misuse of #[snafu(context)] was corrected.
  • More usages of Option in the generated code are now fully qualified.

0.6.8 - 2020-05-11

Fixed

  • The code generated by the Snafu macro no longer conflicts with a local module called core or snafu.

0.6.7 - 2020-05-03

Added

  • Demonstration error types are now present in the guide.
  • The user's guide is now an optional feature flag. To preserve compatibility, it is enabled by default, but most users can disable it.
  • It is now possible to import the snafu crate under a different name using #[snafu(crate_root)].

0.6.6 - 2020-04-05

Added

  • Context selectors without an underlying cause now have a build method in addition to the existing fail method. build creates the error but does not wrap it in a Result.

[0.6.5] - 2020-04-05

  • This version was a failed publish; please use 0.6.6 instead.

0.6.4 - 2020-04-05

  • This version was a failed publish; please use 0.6.6 instead.

0.6.3 - 2020-03-18

Fixed

  • License files are now included with the snafu-derive package.

0.6.2 - 2020-01-17

Added

  • Automatically-generated code no longer triggers the single_use_lifetimes lint.

0.6.1 - 2020-01-07

Added

  • It is now possible to create errors that have no context using #[snafu(context(false))]. This allows using the question mark operator without calling .context(...).

Fixed

  • Reduced the possibility for a name collision when implementing Display when a formatted value was called f.

0.6.0 - 2019-11-07

Added

  • Optional support for using the unstable std::backtrace::Backtrace type and implementing std::error::Error::backtrace via the unstable-backtraces-impl-std feature flag.
  • Error variants can now use Option<Backtrace> for the backtrace field. Backtrace will always have the backtrace collected, while Option<Backtrace> requires that an environment variable be set.
  • Basic support for no-std environments.
  • The ensure! macro now allows creating opaque errors.
  • Context selectors have basic documentation generated. This allows using #[deny(missing_docs)].

Changed

  • Rust 1.31 is now the minimum supported Rust version. This is a breaking change.
  • The Backtrace type is now always available, but does nothing by default. It is recommended that the end application enables backtrace functionality. This is a breaking change.
  • Support for std::future::Future has been stabilized, which means the feature flag has been renamed from unstable-futures to futures. This is a breaking change.
  • The backtrace-crate feature flag has been renamed to backtraces-impl-backtrace-crate. Enabling this flag now replaces snafu::Backtrace with backtrace::Backtrace. The AsRef implementation has been removed. This is a breaking change.
  • A new trait for constructing backtraces is used instead of Default so the Backtrace type no longer implements Default or has any inherent methods. This is a breaking change.

0.5.0 - 2019-08-26

Added

  • Compiler errors are generated when SNAFU attributes are used in incorrect locations. This is a breaking change.
  • Compiler errors are generated when SNAFU attributes are duplicated. This is a breaking change.

Changed

  • #[snafu(source(from)) implies #[snafu(source)] (which implies #[snafu(source(true))]); #[snafu(source)] and #[snafu(source(true))] can be removed in these cases.

Fixed

  • Multiple attributes can be specified inside of a single #[snafu(...)].

Removed

  • #[snafu(backtrace(delegate))] on source fields is replaced by #[snafu(backtrace)]. This is a breaking change.

0.4.4 - 2019-08-07

Fixed

  • Ignore #[doc] attributes that do not correspond to documentation comments. This allows #[doc(hidden)] to be used again.

Changed

  • Implement Future and Stream instead of TryFuture and TryStream for the combinators for the standard library's futures. This allows the Context future combinator to be directly used with .await and for the Context stream combinator to be used without calling .into_stream.

0.4.3 - 2019-07-23

Added

  • Add optional conversion of &snafu::Backtrace into &backtrace::Backtrace.

Fixed

  • Support default generic parameters on error types.

0.4.2 - 2019-07-21

Added

  • Documentation comment summaries are used as the default Display text.

Fixed

  • Quieted warnings from usages of bare trait objects.
  • The From trait is fully-qualified to avoid name clashes.

Changed

  • More errors are reported per compilation attempt.

0.4.1 - 2018-05-18

Fixed

  • A feature flag name was rejected by crates.io and needed to be updated; this release has no substantial changes beyond 0.4.0.

0.4.0 - 2018-05-18

Added

  • Context selectors now automatically implement Debug, Copy, and Clone. This is a breaking change.

  • Support for futures 0.1 futures and streams is available using the futures-01 feature flag.

  • Experimental support for standard library futures and streams is available using the unstable-futures feature flag.

Deprecated

  • eager_context and with_eager_context have been deprecated.

Removed

  • The Context type is no longer needed. This is a breaking change.

  • SNAFU types no longer implement Borrow<std::error::Error>. This is a breaking change.

0.3.1 - 2019-05-10

Fixed

  • Underlying error causes of Box<dyn std::error::Error + Send + Sync> are now supported.

Deprecated

  • Borrow is no longer required to be implemented for underlying error causes. In the next release containing breaking changes, the automatic implementation of Borrow<dyn std::error::Error> for SNAFU types will be removed.

0.3.0 - 2019-05-08

Added

  • Borrow<std::error::Error> is now automatically implemented for SNAFU types. This is a breaking change as it may conflict with an existing user implementation of the same trait. It is expected that the number of affected users is very small.

  • #[snafu(source)] can be used to identify the field that corresponds to the underlying error if it is not called source. It can also be used to disable automatically using a field called source for the underlying error.

  • #[snafu(backtrace)] can be used to identify the field that corresponds to the backtrace if it is not called backtrace. It can also be used to disable automatically using a field called backtrace for the backtrace.

  • #[snafu(source(from(...type..., ...expression...)))] can be used to perform transformations on the underlying error before it is stored. This allows boxing of large errors to avoid bloated return types or recursive errors.

  • The user guide has a basic comparison to Failure and migration paths for common Failure patterns.

Changed

  • The default Display implementation includes the underlying error message.

0.2.3 - 2019-04-24

Fixed

  • User-provided where clauses on error types are now copied to SNAFU-created impl blocks.
  • User-provided inline trait bounds (<T: SomeTrait>) are no longer included in SNAFU-generated type names.

0.2.2 - 2019-04-19

Fixed

  • Error enums with variants named Some or None no longer cause name conflicts in the generated code.

0.2.1 - 2019-04-14

Added

  • Deriving Snafu on a newtype struct now creates an opaque error type, suitable for conservative public APIs.

0.2.0 - 2019-03-02

Removed

  • snafu::display and snafu_display have been replaced with snafu(display)
  • snafu_visibility has been replaced with snafu(visibility)

Added

  • Backtraces can now be delegated to an underlying error via #[snafu(backtrace(delegate))].

0.1.9 - 2019-03-02

Added

  • Error enums with generic lifetimes and types are now supported.

Changed

  • The trait bounds applied to the fail method have been moved from the implementation block to the function itself.

0.1.8 - 2019-02-27

Fixed

  • Visibility is now applied to context selector fields.

0.1.7 - 2019-02-27

Added

  • #[snafu_visibility] can be used to configure the visibility of context selectors.

0.1.6 - 2019-02-24

Added

  • The OptionExt extension trait is now available for converting Options into Results while adding context.

0.1.5 - 2019-02-05

Changed

  • Errors from the macro are more detailed and point to reasonable sections of code.

0.1.4 - 2019-02-05

Added

  • The ensure macro is now available.

0.1.3 - 2019-02-04

Added

  • Ability to automatically capture backtraces.

Changed

  • Version requirements for dependencies loosened to allow compiling with more crate versions.

0.1.2 - 2019-02-02

Added

  • Support for Rust 1.18

0.1.1 - 2019-02-01

Added

  • Context selectors without an underlying source now have a fail method.

  • ResultExt now has the eager_context and with_eager_context methods to eagerly convert a source Result into a final Result type, skipping the intermediate Result<_, Context<_>> type.

0.1.0 - 2019-01-27

Initial version