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.
- Feature-gate AVX-512 support under
simd
; restores MSRV 1.60 (#1073)
NOTE: yanked due concerns over the MSRV bump. See #1067.
- Unsafe
zeroize_flat_type
function (#1045) Zeroize
impls for__m512
types onx86
/x86_64
targets (#1052)
- Nightly warnings (#1055)
- Bump MSRV to 1.60 (#900)
NOTE: yanked because #900 bumped MSRV to 1.60, which vioates our MSRV policy.
- Impl
Zeroize
forMaybeUninit
(#900)
- Unnecessary
cfg
s on SIMD type impls (#930)
- 2021 edition upgrade; MSRV 1.56 (#869)
- Optional
serde
support (#780)
- Factor integration tests into
tests/
(#771)
- Nightly-only upport for zeroizing ARM64 SIMD registers (#749)
- Deriving
ZeroizeOnDrop
onDerefMut
(#739)
- Ambiguous method for
AssertZeroizeOnDrop
(#725)
- Double
mut
onAssertZeroizeOnDrop
(#719)
Zeroize
impls forPhantomData
,PhantomPinned
, and tuples with 0-10 elements (#660)#[zeroize(bound = "T: MyTrait")]
(#663)ZeroizeOnDrop
trait and custom derive (#699, #700, #703)
- Implement
Zeroize
forNonZeroX
- Moved to
RustCrypto/utils
repository
- Derive
Default
onZeroizing
- Implement Zeroize for
[MaybeUninit<Z>]
NOTE: This release includes an MSRV bump to Rust 1.51. Please use zeroize = "1.3.0"
if you would like to support older Rust versions.
- Use const generics to impl
Zeroize
for[Z; N]
; MSRV 1.51 Zeroizing::clone_from
now zeroizes the destination before cloning
- impl
Zeroize
forBox<[Z]>
- Clear residual space within `Option
- Ensure
Option
isNone
when zeroized - Bump MSRV to 1.47
Zeroize
support for x86(_64) SIMD registers
- Simplify
String::zeroize
- MSRV 1.44+
- Add
doc_cfg
- zeroize entire capacity of
String
- zeroize entire capacity of
Vec
- Add
TryZeroize
trait - Add
From<Z: Zeroize>
impl forZeroizing<Z>
- Remove
bytes-preview
feature
- Initial 1.0 release 🎉
- zeroize_derive: Remove legacy
no_drop
attribute support - Rename
bytes
feature tobytes-preview
- Further relax
Zeroize
trait bounds forVec
- Derive
Clone
,Debug
, andEq
forZeroizing
- Loosen
Vec
trait bounds forZeroize
- (Optionally) Impl
Zeroize
forBytes
andBytesMut
Barring unforeseen circumstances, this release aims to be the last 0.x
release prior to a zeroize
1.0 release.
- Disable
zeroize_derive
Cargo feature by default - Remove
std
feature in favor ofalloc
; MSRV 1.36+ - Deprecate
#[zeroize(no_drop)]
attribute - Use 1.0
proc-macro2
,quote
, andsyn
crates
- Improved attribute parser; fixes nightly build
- README.md: add Gitter badges; update image links
- Impl
Zeroize
forOption<Z: Zeroize>
NOTICE: This release changes the default behavior of derive(Zeroize)
to no longer derive a Drop
impl. If you wish to derive Drop
, you must
now explicitly add a #[zeroize(drop)]
attribute on the type for which you
are deriving Zeroize
.
- Remove CPU fences
- Remove scary language about undefined behavior
- Bound blanket array impls on
Zeroize
instead ofDefaultIsZeroes
- Require
zeroize(drop)
orzeroize(no_drop)
attributes when derivingZeroize
. - Support stablized 'alloc' crate
- Impl
Drop
by default when derivingZeroize
- Use synstructure for custom derive
- Add explicit array impls for
DefaultIsZeroes
- Remove
nightly
feature - Add
Zeroizing<Z>
to zeroize values on drop
- Add ZeroizeOnDrop marker trait + custom derive
- Custom derive support for
Zeroize
- Rename
ZeroizeWithDefault
toDefaultIsZeroes
- Add
debug_assert!
to ensure string interiors are zeroized
- Avoid re-exporting the whole prelude
This release is a rewrite which replaces FFI bindings to OS-specific APIs with a pure Rust solution.
- Use
core::sync::atomic
fences - Test wasm target
- Rewrite using
core::ptr::write_volatile
- Fix ldd scraper for older glibc versions
- Support musl-libc
- Impl
Zeroize
trait on concrete types
- Replace
secure_zero_memory
withZeroize
- Add
Zeroize
trait
- README.md: Fix intrinsic links
- Documentation improvements
- Initial release