]> git.lizzy.rs Git - enumset.git/blob - RELEASES.md
Import Span from proc_macro2 instead of syn
[enumset.git] / RELEASES.md
1 # Version 1.0.1 (2020-08-09)
2 * Implemented `ExactSizeIterator` for `EnumSetIter`.
3
4 # Version 1.0.0 (2020-04-06)
5
6 ## Breaking Changes
7 * **[WARNING: Potential silent breaking change]** Changed `EnumSet::insert` to
8   return whether a value was newly  inserted, rather than whether the value
9   already existed in the set. This corresponds better with the behavior of
10   `HashSet::insert` and `BTreeSet::insert`.
11 * Renamed `to_bits`/`from_bits` to `as_u128`/`from_u128`.
12 * `EnumSet::bit_width` and `EnumSet::variant_count` now return a `u32` instead
13   of a `u8` for future-proofing.
14 * Removed `nightly` feature flag, as it is no longer required.
15
16 ## New features
17 * Added a series of functions like `as_u128`/`from_u128` for other unsigned
18   numeric types. (e.g. `as_u8`/`from_u8`, `as_u16`/`from_u16`, etc)
19 * Added variants of `as_u128`/`from_u128` that return an `Option` instead of
20   panicking when the conversion cannot be done.
21 * Added variants of `as_u128`/`from_u128` that truncate unknown bits instead
22   of panicking.
23 * Implemented `Extend<EnumSet<T>>` and `FromIterator<EnumSet<T>>` for
24   `EnumSet<T>`.
25 * Added an `#[enumset(crate_name = "renamed_enumset")]` annotation for
26   handling renamed crates.
27
28 ## Bugfixes
29 * Fixed a bug where the procedural macro would fail on enums with a repr
30   annotation set. While reprs larger than u8 are supported, negative enum
31   variants or enum variants above 127 are still not currently supported.
32
33 # Version 0.4.5 (2020-02-19)
34 * Fixed a bug where compilation failed when the `serde` flag was enabled, and
35   another trait that defined `serialize` or `deserialize` was in scope.
36
37 # Version 0.4.4 (2019-10-12)
38 * Fixed a bug where `#[enumset(serialize_as_list)]` did not work when `Result`
39   is shadowed.
40
41 # Version 0.4.3 (2019-10-08)
42 * Implemented `Extend` and `FromIterator` for `EnumSet<T>`.
43
44 # Version 0.4.2 (2019-09-28)
45 * Fixed a bug preventing empty enums and enums with one value from compiling.
46
47 # Version 0.4.1 (2019-09-27)
48 * Fixed bug in `EnumSetIter::size_hint`.
49
50 # Version 0.4.0 (2019-05-06)
51 * Removed outdated macros and attributes.
52 * All attributes for the custom derive are now written as `#[enumset(...)]`
53 * Implemented `#[enumset(serialize_deny_unknown)]`
54 * Implemented `#[enumset(serialize_repr="...")]`
55 * `#[derive(EnumSetType)]` now only implements `Copy`, `Clone`, `PartialEq` and
56   `Eq` automatically.
57
58 # Version 0.3.19 (2019-05-02)
59 * Fix a bug when deserializing enums containing invalid bits set.
60
61 # Version 0.3.18 (2019-03-11)
62 * Fix an off-by-one error causing enums with 9, 17, 33, etc variants to behave
63   unexpectedly.
64
65 # Version 0.3.17 (2019-03-11)
66 * Add an `#[enumset_serialize_as_list]` attribute to cause the `Deserialize`
67   and `Serialize` implementations for `EnumSet<T>` to serialize it as a seq
68   of `T`s rather than an integer bitmask.
69
70 # Version 0.3.16 (2019-02-04)
71 * Added `Default` implementation for `EnumSet<T>` that returns an empty map.
72
73 # Version 0.3.15 (2019-01-08)
74 * Added optional `serde` support.
75
76 # Version 0.3.14 (2018-11-09)
77
78 * Deprecated the `enum_set_type!` macro in favor of a custom derive.
79 * Added a way to avoid the automatic operator overloads derived from
80   EnumSetTypes.
81 * Fixed a major issue that would have prevented `enumset` from being used in
82   `#[no_std]` crates.
83 * Minimum required version is now 1.30.0+. There should be no more need to
84   bump the minimum Rust version in the forseeable future.
85
86 # Prior versions
87
88 No release notes were kept for prior versions.