]> git.lizzy.rs Git - enumset.git/blob - RELEASES.md
use trailing zeros count for iteration
[enumset.git] / RELEASES.md
1 # Version 1.0.7 (2021-07-05)
2 * Added the `#[repr(transparent)]` flag to `EnumSet<T>` to allow for safe usage
3   in FFI code. Note that invalid bits being set in the bitset causes UB, so
4   this should be done with care.
5
6 # Version 1.0.6 (2021-02-27)
7 * Fix an unneeded warning in the output for `enum_set!` for a single value.
8
9 # Version 1.0.5 (2021-02-24)
10 * Implemented `core::iter::Sum` for `EnumSet<T>`.
11 * Properly acknowledge that the minimum required Rust version is actually 1.34+
12   and not 1.31+. An retroactive changelog entry has been added to 1.0.0.
13
14 # Version 1.0.4 (2021-02-07)
15 * Fixes a bug that caused `enumset_derive` to require an import of `EnumSet`
16   in the scope to function.
17
18 # Version 1.0.3 (2021-01-27)
19 * (This version contains no code changes.)
20 * Redirected badges in the README to point at travis-ci.com instead of .org
21 * Added `README.md`, and the license files to the crate distribution.
22
23 # Version 1.0.2 (2021-01-25)
24 * Fixed critical error compiling on newer versions of `syn` caused by a
25   mistaken import from a private module.
26
27 # Version 1.0.1 (2020-08-09)
28 * Implemented `ExactSizeIterator` for `EnumSetIter`.
29
30 # Version 1.0.0 (2020-04-06)
31
32 ## Breaking Changes
33 * **[WARNING: Potential silent breaking change]** Changed `EnumSet::insert` to
34   return whether a value was newly  inserted, rather than whether the value
35   already existed in the set. This corresponds better with the behavior of
36   `HashSet::insert` and `BTreeSet::insert`.
37 * Renamed `to_bits`/`from_bits` to `as_u128`/`from_u128`.
38 * `EnumSet::bit_width` and `EnumSet::variant_count` now return a `u32` instead
39   of a `u8` for future-proofing.
40 * Removed `nightly` feature flag, as it is no longer required.
41 * Minimum required Rust version is now 1.34+.
42
43 ## New features
44 * Added a series of functions like `as_u128`/`from_u128` for other unsigned
45   numeric types. (e.g. `as_u8`/`from_u8`, `as_u16`/`from_u16`, etc)
46 * Added variants of `as_u128`/`from_u128` that return an `Option` instead of
47   panicking when the conversion cannot be done.
48 * Added variants of `as_u128`/`from_u128` that truncate unknown bits instead
49   of panicking.
50 * Implemented `Extend<EnumSet<T>>` and `FromIterator<EnumSet<T>>` for
51   `EnumSet<T>`.
52 * Added an `#[enumset(crate_name = "renamed_enumset")]` annotation for
53   handling renamed crates.
54
55 ## Bugfixes
56 * Fixed a bug where the procedural macro would fail on enums with a repr
57   annotation set. While reprs larger than u8 are supported, negative enum
58   variants or enum variants above 127 are still not currently supported.
59
60 # Version 0.4.5 (2020-02-19)
61 * Fixed a bug where compilation failed when the `serde` flag was enabled, and
62   another trait that defined `serialize` or `deserialize` was in scope.
63
64 # Version 0.4.4 (2019-10-12)
65 * Fixed a bug where `#[enumset(serialize_as_list)]` did not work when `Result`
66   is shadowed.
67
68 # Version 0.4.3 (2019-10-08)
69 * Implemented `Extend` and `FromIterator` for `EnumSet<T>`.
70
71 # Version 0.4.2 (2019-09-28)
72 * Fixed a bug preventing empty enums and enums with one value from compiling.
73
74 # Version 0.4.1 (2019-09-27)
75 * Fixed bug in `EnumSetIter::size_hint`.
76
77 # Version 0.4.0 (2019-05-06)
78 * Removed outdated macros and attributes.
79 * All attributes for the custom derive are now written as `#[enumset(...)]`
80 * Implemented `#[enumset(serialize_deny_unknown)]`
81 * Implemented `#[enumset(serialize_repr="...")]`
82 * `#[derive(EnumSetType)]` now only implements `Copy`, `Clone`, `PartialEq` and
83   `Eq` automatically.
84
85 # Version 0.3.19 (2019-05-02)
86 * Fix a bug when deserializing enums containing invalid bits set.
87
88 # Version 0.3.18 (2019-03-11)
89 * Fix an off-by-one error causing enums with 9, 17, 33, etc variants to behave
90   unexpectedly.
91
92 # Version 0.3.17 (2019-03-11)
93 * Add an `#[enumset_serialize_as_list]` attribute to cause the `Deserialize`
94   and `Serialize` implementations for `EnumSet<T>` to serialize it as a seq
95   of `T`s rather than an integer bitmask.
96
97 # Version 0.3.16 (2019-02-04)
98 * Added `Default` implementation for `EnumSet<T>` that returns an empty map.
99
100 # Version 0.3.15 (2019-01-08)
101 * Added optional `serde` support.
102
103 # Version 0.3.14 (2018-11-09)
104
105 * Deprecated the `enum_set_type!` macro in favor of a custom derive.
106 * Added a way to avoid the automatic operator overloads derived from
107   EnumSetTypes.
108 * Fixed a major issue that would have prevented `enumset` from being used in
109   `#[no_std]` crates.
110 * Minimum required version is now 1.30.0+. There should be no more need to
111   bump the minimum Rust version in the forseeable future.
112
113 # Prior versions
114
115 No release notes were kept for prior versions.