NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #323 most downloaded on crates.io
A crate for mucking around with piles of bytes.
Last release 2 months ago
19 Jul 2026
Ships fairly regularly
a new release about every 2 months
Most releases are documented
notes for 25 of 38 stable releases
19 versions withdrawn
withdrawn after publishing
7 years old
58 releases · first in 2019
chore: Release bytemuck version 1.25.2
chore: Release bytemuck version 1.25.2
chore: Release bytemuck version 1.25.1
chore: Release bytemuck version 1.25.1
try_cast_slice that empty slices must still be aligned.One column per quarter.
chore: Release bytemuck version 1.25.0
chore: Release bytemuck version 1.25.0
chore: Release bytemuck version 1.24.0
chore: Release bytemuck version 1.24.0
* bump derive minimum version.
derive minimum version.Added a windows-only ZeroableInOption impl for "stdcall" functions.
ZeroableInOption impl for "stdcall" functions.Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Adds #[repr(C)] to the union Transmute type that's used internally for most of the transmutations.
#[repr(C)] to the union Transmute<A, B> type that's used internally
for most of the transmutations.Makes the must_cast versions of the by-value and by-ref casts be const. The mut ref cast is unaffected for now (mut references aren't yet stable in co
must_cast versions of the by-value and by-ref casts be const.
The mut ref cast is unaffected for now (mut references aren't yet stable in const fn).
This increases the MSRV of using that particular feature from 1.57 to 1.64.Fully described in https://github.com/Lokathor/bytemuck/pull/256, This makes casting slices to/from ZST elements more consistent between the crate's c
Fixes potential UB where BoxBytes could attempt to free a dangling pointer if the Layout is zero sized. This type was introduced in 1.14.1, so that ve
BoxBytes could attempt to free a dangling pointer
if the Layout is zero sized. This type was introduced in 1.14.1, so that
version and the others up to and including 1.16.1 are now yanked for safety.NOT SEMVER SUPPORTED: Adds the nightly_float Cargo feature. This activates the f16 and f128 nightly features, and then provides Zeroable and Pod impls
nightly_float Cargo feature. This
activates the f16 and f128 nightly features, and then provides Zeroable
and Pod impls for those types.Adds a const_zeroed feature (MSRV 1.75) which puts a zeroed fn at the crate root. This is just like the Zeroable::zeroed method, but as a const fn.
const_zeroed feature (MSRV 1.75) which puts a zeroed fn at the crate root.
This is just like the Zeroable::zeroed method, but as a const fn.This primarily relaxes the bounds on a From impl.
This primarily relaxes the bounds on a From impl.
Previously:
impl<T: NoUninit> From<Box<T>> for BoxBytes
Now:
impl<T: ?Sized + sealed::BoxBytesOf> From<Box<T>> for BoxBytes
All related functions and methods are similarly updated.
We believe this to be backwards compatible with all previous uses,
and now BoxBytes can be converted to/from more types than before.
The new std simd nightly features are apparently arch-specific. This adjusts the feature activation to be x86/ x86_64 only.
Changes the name of the Nightly feature activated by the crate's nightly_stdsimd feature. This is needed as of (approximately) Nightly 2024-02-06 and
nightly_stdsimd feature. This is needed as of (approximately) Nightly
2024-02-06 and later, because the Nightly feature was changed.* docs clarifications.
Nothing published for this version
Remove the requirement for the *source* data type to be AnyBitPattern on pod_collect_to_vec, allowing you to pod collect vecs of char into vecs of u32
AnyBitPattern on
pod_collect_to_vec, allowing you to pod collect vecs of char into vecs of
u32, or whatever.Nothing published for this version
This has additional impls for existing traits and cleans up some internal code, but there's no new functions so I guess it counts as just a patch rele
This bugfix makes the crate do stuff with Arc or not based on the target_has_atomic config. Previously, some targets that have allocation but not atom
Arc or not based on the
target_has_atomic config. Previously, some targets that have allocation but
not atomics were getting errors. This raises the MSRV of the
extern_crate_alloc feature to 1.60, but opt-in features are not considered
to be hard locked to 1.34 like the basic build of the crate is.Fixes try_pod_read_unaligned bug that made it always fail unless the target type was exactly pointer sized in which case UB *could* happen. The Checke
try_pod_read_unaligned bug that made it always fail unless the target
type was exactly pointer sized in which case UB could happen. The
CheckedBitPattern::is_valid_bit_pattern was being asked to check that a
reference to the pod value was a valid bit pattern, rather than the actual
bit pattern itself, and so the check could in some cases be illegally
bypassed.Patch bumped the required bytemuck_derive version because of a regression in how it handled align(N) attributes.
bytemuck_derive version because of a regression in
how it handled align(N) attributes.Nothing published for this version
Nothing published for this version
Nothing published for this version
Bumped the minimum bytemuck_derive dependency version from 1.0 to 1.1. The fact that bytemuck and bytemuck_derive are separate crates at all is an unf
bytemuck_derive dependency version from 1.0 to 1.1.
The fact that bytemuck and bytemuck_derive are separate crates at all is
an unfortunate technical limit of current Rust, woe and calamity.fu5ha added the NoUninit, AnyBitPattern, and CheckedBitPattern traits. This allows for a more fine-grained level of detail in what casting operations
NoUninit, AnyBitPattern, and
CheckedBitPattern traits. This allows for a more fine-grained level of
detail in what casting operations are allowed for a type. Types that already
implement Zeroable and Pod will have a blanket impl for these new traits.
This is a "preview" of the direction that the crate will probably go in the
eventual 2.0 version. We're still waiting on Project Safe
Transmute for an actual
2.0 version of the crate, but until then please enjoy this preview.union types in the derive macros. I
still don't know how any of the proc-macro stuff works at all, so please
direct questions to her.try_pod_read_unaligned and pod_read_unaligned let you go from &[u8] to T:Pod without worrying about alignment.
try_pod_read_unaligned and pod_read_unaligned let you go from &[u8] to
T:Pod without worrying about alignment.Experimental support for the portable_simd language extension under the nightly_portable_simd cargo feature. As the name implies, this is an experimen
portable_simd language extension under the
nightly_portable_simd cargo feature. As the name implies, this is an
experimental crate feature and it's not part of the semver contract. All
it does is add the appropriate Zeroable and Pod impls.Why does this repo keep being hit with publishing problems? What did I do to deserve this curse, Ferris? This doesn't ever happen with tinyvec or ferm
Soundness Fix: The wrap/peel methods for owned value conversion, added to TransparentWrapper in 1.6, can cause a double-drop if used with types that i
TransparentWrapper in 1.6, can cause a double-drop if used with types that
impl Drop. The fix was simply to add a ManuallyDrop layer around the value
before doing the transmute_copy that is used to wrap/peel. While this fix
could technically be backported to the 1.6 series, since 1.7 is semver
compatible anyway the 1.6 series has simply been yanked.Nothing published for this version
Small goof with an errant ;, so PR 69 *actually* got things working on SPIR-V.
;, so PR 69
actually got things working on SPIR-V.cargo upload goof! ignore this one.
cargo upload goof! ignore this one.
DJMcNab did a fix so that the crate can build for SPIR-V PR 67
Nothing published for this version
Fix bytes_of failing on zero sized types. PR 53
bytes_of failing on zero sized types.
PR 53Nothing published for this version
thomcc fixed up the CI and patched over a soundness hole in offset_of!. PR 38
Nothing published for this version
The entire crate is now available under the Apache-2.0 OR MIT license as well as the previous Zlib license #24.
Apache-2.0 OR MIT license as
well as the previous Zlib license
#24.try_zeroed_slice_box function
#10. zeroed_slice_box is
also available.offset_of! macro now supports a 2-arg version. For types that impl
Default, it'll just make an instance using default and then call over to the
3-arg version.PodCastError type now supports Hash and Display. Also if you enable
the extern_crate_std feature then it will support std::error::Error.TransparentWrapper<T> impl for core::num::Wrapper<T>.try_from_bytes and try_from_bytes_mut when the input
isn't aligned has been corrected from being AlignmentMismatch (intended for
allocation casting only) to TargetAlignmentGreaterAndInputNotAligned.Had a bug because the CI was messed up! It wasn't soundness related, because it prevented the crate from building entirely if the extern_crate_alloc f
extern_crate_alloc
feature was used. Still, this is yanked, sorry.Nothing published for this version
A fully sound offset_of! macro #10
offset_of! macro
#10Contiguous trait for when you've got enums with declared values
all in a row #12TransparentWrapper marker trait for when you want to more clearly
enable adding and removing a wrapper struct to its inner value
#15Nothing published for this version
SimonSapin added from_bytes, from_bytes_mut, try_from_bytes, and try_from_bytes_mut (PR Link)
from_bytes,
from_bytes_mut, try_from_bytes, and try_from_bytes_mut (PR
Link)Added much more proper documentation.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →