1# Changelog 2All notable changes to this project will be documented in this file. 3 4The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), 5and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). 6 7## 1.6.0 (2023-03-26) 8### Added 9- Impl `Zeroize` for `core::num::Wrapping` ([#818]) 10- Impl `Zeroize` for `str` and `Box<str>` ([#842]) 11 12### Changed 13- 2021 edition upgrade; MSRV 1.56 ([#869]) 14 15[#818]: https://github.com/RustCrypto/utils/pull/818 16[#842]: https://github.com/RustCrypto/utils/pull/842 17[#869]: https://github.com/RustCrypto/utils/pull/869 18 19## 1.5.7 (2022-07-20) 20### Added 21- Optional `serde` support ([#780]) 22 23[#780]: https://github.com/RustCrypto/utils/pull/780 24 25## 1.5.6 (2022-06-29) 26### Added 27- `#[inline(always)]` annotations ([#772]) 28- `#[ignore]` attribute on flaky CString test ([#776]) 29 30### Changed 31- Factor integration tests into `tests/` ([#771]) 32 33[#771]: https://github.com/RustCrypto/utils/pull/771 34[#772]: https://github.com/RustCrypto/utils/pull/772 35[#776]: https://github.com/RustCrypto/utils/pull/776 36 37## 1.5.5 (2022-04-30) 38### Added 39- Impl `Zeroize` for std::ffi::CString ([#759]) 40- `AsRef<T>` and `AsMut<T>` impls for `Zeroizing` ([#761]) 41 42[#759]: https://github.com/RustCrypto/utils/pull/759 43[#761]: https://github.com/RustCrypto/utils/pull/761 44 45## 1.5.4 (2022-03-16) 46### Added 47- Nightly-only upport for zeroizing ARM64 SIMD registers ([#749]) 48 49[#749]: https://github.com/RustCrypto/utils/pull/749 50 51## 1.5.3 (2022-02-25) 52### Fixed 53- Deriving `ZeroizeOnDrop` on `DerefMut` ([#739]) 54 55[#739]: https://github.com/RustCrypto/utils/pull/739 56 57## 1.5.2 (2022-01-31) [YANKED] 58### Fixed 59- Ambiguous method for `AssertZeroizeOnDrop` ([#725]) 60 61[#725]: https://github.com/RustCrypto/utils/pull/725 62 63## 1.5.1 (2022-01-27) [YANKED] 64### Fixed 65- Double `mut` on `AssertZeroizeOnDrop` ([#719]) 66 67[#719]: https://github.com/RustCrypto/utils/pull/719 68 69## 1.5.0 (2022-01-14) [YANKED] 70### Added 71- `Zeroize` impls for `PhantomData`, `PhantomPinned`, and tuples with 0-10 elements ([#660]) 72- `#[zeroize(bound = "T: MyTrait")]` ([#663]) 73- `ZeroizeOnDrop` trait and custom derive ([#699], [#700], [#703]) 74 75[#660]: https://github.com/RustCrypto/utils/pull/660 76[#663]: https://github.com/RustCrypto/utils/pull/663 77[#699]: https://github.com/RustCrypto/utils/pull/699 78[#700]: https://github.com/RustCrypto/utils/pull/700 79[#703]: https://github.com/RustCrypto/utils/pull/703 80 81## 1.4.3 (2021-11-04) 82### Added 83- Implement `Zeroize` for `NonZeroX` 84 85### Changed 86- Moved to `RustCrypto/utils` repository 87 88## 1.4.2 (2021-09-21) 89### Added 90- Derive `Default` on `Zeroizing` 91 92## 1.4.1 (2021-07-20) 93### Added 94- Implement Zeroize for `[MaybeUninit<Z>]` 95 96## 1.4.0 (2021-07-18) 97NOTE: This release includes an MSRV bump to Rust 1.51. Please use `zeroize = "1.3.0"` 98if you would like to support older Rust versions. 99 100### Added 101- Use const generics to impl `Zeroize` for `[Z; N]`; MSRV 1.51 102- `Zeroizing::clone_from` now zeroizes the destination before cloning 103 104## 1.3.0 (2021-04-19) 105### Added 106- impl `Zeroize` for `Box<[Z]>` 107- Clear residual space within `Option 108 109### Changed 110- Ensure `Option` is `None` when zeroized 111- Bump MSRV to 1.47 112 113## 1.2.0 (2020-12-09) 114### Added 115- `Zeroize` support for x86(_64) SIMD registers 116 117### Changed 118- Simplify `String::zeroize` 119- MSRV 1.44+ 120 121## 1.1.1 (2020-09-15) 122- Add `doc_cfg` 123- zeroize entire capacity of `String` 124- zeroize entire capacity of `Vec` 125 126## 1.1.0 (2019-12-02) 127- Add `TryZeroize` trait 128- Add `From<Z: Zeroize>` impl for `Zeroizing<Z>` 129- Remove `bytes-preview` feature 130 131## 1.0.0 (2019-10-13) 132- Initial 1.0 release 133- zeroize_derive: Remove legacy `no_drop` attribute support 134- Rename `bytes` feature to `bytes-preview` 135- Further relax `Zeroize` trait bounds for `Vec` 136- Derive `Clone`, `Debug`, and `Eq` for `Zeroizing` 137 138## 1.0.0-pre (2019-09-30) 139- Loosen `Vec` trait bounds for `Zeroize` 140 141## 0.10.1 (2019-09-03) 142- (Optionally) Impl `Zeroize` for `Bytes` and `BytesMut` 143 144## 0.10.0 (2019-08-19) 145Barring unforeseen circumstances, this release aims to be the last `0.x` 146release prior to a `zeroize` 1.0 release. 147 148- Disable `zeroize_derive` Cargo feature by default 149- Remove `std` feature in favor of `alloc`; MSRV 1.36+ 150- Deprecate `#[zeroize(no_drop)]` attribute 151- Use 1.0 `proc-macro2`, `quote`, and `syn` crates 152 153## 0.9.3 (2019-07-27) 154- Improved attribute parser; fixes nightly build 155 156## 0.9.2 (2019-06-28) 157- README.md: add Gitter badges; update image links 158 159## 0.9.1 (2019-06-04) 160- Impl `Zeroize` for `Option<Z: Zeroize>` 161 162## 0.9.0 (2019-06-04) 163**NOTICE**: This release changes the default behavior of `derive(Zeroize)` 164to no longer derive a `Drop` impl. If you wish to derive `Drop`, you must 165now explicitly add a `#[zeroize(drop)]` attribute on the type for which you 166are deriving `Zeroize`. 167 168- Remove CPU fences 169- Remove scary language about undefined behavior 170- Bound blanket array impls on `Zeroize` instead of `DefaultIsZeroes` 171- Require `zeroize(drop)` or `zeroize(no_drop)` attributes when deriving 172 `Zeroize` . 173- Support stablized 'alloc' crate 174 175## 0.8.0 (2019-05-20) 176- Impl `Drop` by default when deriving `Zeroize` 177 178## 0.7.0 (2019-05-19) 179- Use synstructure for custom derive 180- Add explicit array impls for `DefaultIsZeroes` 181- Remove `nightly` feature 182- Add `Zeroizing<Z>` to zeroize values on drop 183 184## 0.6.0 (2019-03-23) 185- Add ZeroizeOnDrop marker trait + custom derive 186- Custom derive support for `Zeroize` 187- Rename `ZeroizeWithDefault` to `DefaultIsZeroes` 188 189## 0.5.2 (2018-12-25) 190- Add `debug_assert!` to ensure string interiors are zeroized 191 192## 0.5.1 (2018-12-24) 193- Avoid re-exporting the whole prelude 194 195## 0.5.0 (2018-12-24) 196This release is a rewrite which replaces FFI bindings to OS-specific APIs with 197a pure Rust solution. 198 199- Use `core::sync::atomic` fences 200- Test wasm target 201- Rewrite using `core::ptr::write_volatile` 202 203## 0.4.2 (2018-10-12) 204- Fix ldd scraper for older glibc versions 205 206## 0.4.1 (2018-10-12) 207- Support musl-libc 208 209## 0.4.0 (2018-10-12) 210- Impl `Zeroize` trait on concrete types 211 212## 0.3.0 (2018-10-11) 213- Replace `secure_zero_memory` with `Zeroize` 214 215## 0.2.0 (2018-10-11) 216- Add `Zeroize` trait 217 218## 0.1.2 (2018-10-03) 219- README.md: Fix intrinsic links 220 221## 0.1.1 (2018-10-03) 222- Documentation improvements 223 224## 0.1.0 (2018-10-03) 225- Initial release 226