diff options
author | Valentin Popov <valentin@popov.link> | 2024-01-08 00:21:28 +0300 |
---|---|---|
committer | Valentin Popov <valentin@popov.link> | 2024-01-08 00:21:28 +0300 |
commit | 1b6a04ca5504955c571d1c97504fb45ea0befee4 (patch) | |
tree | 7579f518b23313e8a9748a88ab6173d5e030b227 /vendor/bytemuck/changelog.md | |
parent | 5ecd8cf2cba827454317368b68571df0d13d7842 (diff) | |
download | fparkan-1b6a04ca5504955c571d1c97504fb45ea0befee4.tar.xz fparkan-1b6a04ca5504955c571d1c97504fb45ea0befee4.zip |
Initial vendor packages
Signed-off-by: Valentin Popov <valentin@popov.link>
Diffstat (limited to 'vendor/bytemuck/changelog.md')
-rw-r--r-- | vendor/bytemuck/changelog.md | 266 |
1 files changed, 266 insertions, 0 deletions
diff --git a/vendor/bytemuck/changelog.md b/vendor/bytemuck/changelog.md new file mode 100644 index 0000000..acc15d2 --- /dev/null +++ b/vendor/bytemuck/changelog.md @@ -0,0 +1,266 @@ +# `bytemuck` changelog + +## 1.14 + +* `write_zeroes` and `fill_zeroes` functions: Writes (to one) or fills (a slice) + zero bytes to all bytes covered by the provided reference. If your type has + padding, this will even zero out the padding bytes. +* `align_offset` feature: causes pointer alignment checks to use the + `align_offset` pointer method rather than as-casting the pointer to `usize`. + This *may* improve codegen, if the compiler would have otherwise thought that + the pointer address escaped. No formal benchmarks have been done either way. +* `must_cast` feature: Adds `must_*` family of functions. These functions will + fail to compile if the cast requested can't be statically known to succeed. + The error messages can be kinda bad when this happens, but eliminating the + possibility of a runtime error might be worth it to you. + +## 1.13.1 + +* 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`, or whatever. + +## 1.13 + +* Now depends on `bytemuck_derive-1.4.0` +* Various small enhancements that would have been patch version updates, but + which have been rolled into this minor version update. + +## 1.12.4 + +* 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 release. + +## 1.12.3 + +* 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 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. + +## 1.12.2 + +* 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 + `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. + +## 1.12.1 + +* Patch bumped the required `bytemuck_derive` version because of a regression in + how it handled `align(N)` attributes. + +## 1.12 + +* This minor version bump is caused by a version bump in our `bytemuck_derive` + dependency, which is in turn caused by a mixup in the minimum version of `syn` + that `bytemuck_derive` uses. See [Issue + 122](https://github.com/Lokathor/bytemuck/issues/122). There's not any + specific "new" API as you might normally expect from a minor version bump. +* [pali](https://github.com/pali6) fixed a problem with SPIR-V builds being + broken. The error handling functions were trying to be generic over `Display`, + which the error types normally support, except on SPIR-V targets (which run on + the GPU and don't have text formatting). + +## 1.11 + +* [WaffleLapkin](https://github.com/WaffleLapkin) added `wrap_box` and `peel_box` + to the `TransparentWrapperAlloc` trait. Default impls of these functions are + provided, and (as usual with the transparent trait stuff) you should not override + the default versions. + +## 1.10 + +* [TheEdward162](https://github.com/TheEdward162) added the `ZeroableInOption` + and `PodInOption` traits. These are for types that are `Zeroable` or `Pod` + *when in an option*, but not on their own. We provide impls for the various + "NonZeroINTEGER" types in `core`, and if you need to newtype a NonZero value + then you can impl these traits when you use `repr(transparent)`. + +## 1.9.1 + +* 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 unfortunate technical limit of current Rust, woe and calamity. + +## 1.9.0 + +* [fu5ha](https://github.com/fu5ha) added the `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](https://github.com/rust-lang/project-safe-transmute) for an actual + 2.0 version of the crate, but until then please enjoy this preview. +* Also Fusha added better support for `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. + +## 1.8.0 + +* `try_pod_read_unaligned` and `pod_read_unaligned` let you go from `&[u8]` to + `T:Pod` without worrying about alignment. + +## 1.7.3 + +* Experimental support for the `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. + +## 1.7.2 + +* 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 fermium, + only bytemuck. + +## 1.7.1 + +* **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 + 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. + +## 1.7 + +* In response to [Unsafe Code Guidelines Issue + #286](https://github.com/rust-lang/unsafe-code-guidelines/issues/286), this + version of Bytemuck has a ***Soundness-Required Breaking Change***. This is + "allowed" under Rust's backwards-compatibility guidelines, but it's still + annoying of course so we're trying to keep the damage minimal. + * **The Reason:** It turns out that pointer values should not have been `Pod`. More + specifically, `ptr as usize` is *not* the same operation as calling + `transmute::<_, usize>(ptr)`. + * LLVM has yet to fully sort out their story, but until they do, transmuting + pointers can cause miscompilations. They may fix things up in the future, + but we're not gonna just wait and have broken code in the mean time. + * **The Fix:** The breaking change is that the `Pod` impls for `*const T`, + `*mut T`, and `Option<NonNull<T>` are now gated behind the + `unsound_ptr_pod_impl` feature, which is off by default. + * You are *strongly discouraged* from using this feature, but if a dependency + of yours doesn't work when you upgrade to 1.7 because it relied on pointer + casting, then you might wish to temporarily enable the feature just to get + that dependency to build. Enabled features are global across all users of a + given semver compatible version, so if you enable the feature in your own + crate, your dependency will also end up getting the feature too, and then + it'll be able to compile. + * Please move away from using this feature as soon as you can. Consider it to + *already* be deprecated. + * [PR 65](https://github.com/Lokathor/bytemuck/pull/65) + +## 1.6.3 + +* Small goof with an errant `;`, so [PR 69](https://github.com/Lokathor/bytemuck/pull/69) + *actually* got things working on SPIR-V. + +## 1.6.2 + +cargo upload goof! ignore this one. + +## 1.6.1 + +* [DJMcNab](https://github.com/DJMcNab) did a fix so that the crate can build for SPIR-V + [PR 67](https://github.com/Lokathor/bytemuck/pull/67) + +## 1.6 + +* The `TransparentWrapper` trait now has more methods. More ways to wrap, and + now you can "peel" too! Note that we don't call it "unwrap" because that name + is too strongly associated with the Option/Result methods. + Thanks to [LU15W1R7H](https://github.com/LU15W1R7H) for doing + [PR 58](https://github.com/Lokathor/bytemuck/pull/58) +* Min Const Generics! Now there's Pod and Zeroable for arrays of any size when + you turn on the `min_const_generics` crate feature. + [zakarumych](https://github.com/zakarumych) got the work started in + [PR 59](https://github.com/Lokathor/bytemuck/pull/59), + and [chorman0773](https://github.com/chorman0773) finished off the task in + [PR 63](https://github.com/Lokathor/bytemuck/pull/63) + +## 1.5.1 + +* Fix `bytes_of` failing on zero sized types. + [PR 53](https://github.com/Lokathor/bytemuck/pull/53) + +## 1.5 + +* Added `pod_collect_to_vec`, which will gather a slice into a vec, +allowing you to change the pod type while also safely ignoring alignment. +[PR 50](https://github.com/Lokathor/bytemuck/pull/50) + +## 1.4.2 + +* [Kimundi](https://github.com/Kimundi) fixed an issue that could make `try_zeroed_box` +stack overflow for large values at low optimization levels. +[PR 43](https://github.com/Lokathor/bytemuck/pull/43) + +## 1.4.1 + +* [thomcc](https://github.com/thomcc) fixed up the CI and patched over a soundness hole in `offset_of!`. +[PR 38](https://github.com/Lokathor/bytemuck/pull/38) + +## 1.4 + +* [icewind1991](https://github.com/icewind1991) has contributed the proc-macros + for deriving impls of `Pod`, `TransparentWrapper`, `Zeroable`!! Everyone has + been waiting for this one folks! It's a big deal. Just enable the `derive` + cargo feature and then you'll be able to derive the traits on your types. It + generates all the appropriate tests for you. +* The `zeroable_maybe_uninit` feature now adds a `Zeroable` impl to the + `MaybeUninit` type. This is only behind a feature flag because `MaybeUninit` + didn't exist back in `1.34.0` (the minimum rust version of `bytemuck`). + +## 1.3.1 + +* The entire crate is now available under the `Apache-2.0 OR MIT` license as + well as the previous `Zlib` license + [#24](https://github.com/Lokathor/bytemuck/pull/24). +* [HeroicKatora](https://github.com/HeroicKatora) added the + `try_zeroed_slice_box` function + [#10](https://github.com/Lokathor/bytemuck/pull/17). `zeroed_slice_box` is + also available. +* The `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. +* The `PodCastError` type now supports `Hash` and `Display`. Also if you enable + the `extern_crate_std` feature then it will support `std::error::Error`. +* We now provide a `TransparentWrapper<T>` impl for `core::num::Wrapper<T>`. +* The error type of `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`. + +## 1.3.0 + +* 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` + feature was used. Still, this is yanked, sorry. + +## 1.2.0 + +* [thomcc](https://github.com/thomcc) added many things: + * A fully sound `offset_of!` macro + [#10](https://github.com/Lokathor/bytemuck/pull/10) + * A `Contiguous` trait for when you've got enums with declared values + all in a row [#12](https://github.com/Lokathor/bytemuck/pull/12) + * A `TransparentWrapper` marker trait for when you want to more clearly + enable adding and removing a wrapper struct to its inner value + [#15](https://github.com/Lokathor/bytemuck/pull/15) + * Now MIRI is run on CI in every single push! + [#16](https://github.com/Lokathor/bytemuck/pull/16) + +## 1.1.0 + +* [SimonSapin](https://github.com/SimonSapin) added `from_bytes`, + `from_bytes_mut`, `try_from_bytes`, and `try_from_bytes_mut` ([PR + Link](https://github.com/Lokathor/bytemuck/pull/8)) + +## 1.0.1 + +* Changed to the [zlib](https://opensource.org/licenses/Zlib) license. +* Added much more proper documentation. +* Reduced the minimum Rust version to 1.34 |