Update bytemuck to 1.21.0
Test: m
Change-Id: Ia9a0ad89470b8bb47cfd61cac4549bcf06b7aa28
diff --git a/crates/bytemuck/.android-checksum.json b/crates/bytemuck/.android-checksum.json
index c366fab..e656abb 100644
--- a/crates/bytemuck/.android-checksum.json
+++ b/crates/bytemuck/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"611988967ee97aea7f05e00cfa027906b204dfc1dc47696e2c502e0524c3fa7a","Android.bp":"7954e136a195b0d26a4a0730f26a18f010fde3cc928b6f83522cc77b62fd6d26","Cargo.toml":"5fed6f33707c14e08f181a0f19bc5c9a7b4307d8cf5373b83a0eb91e73241930","LICENSE":"26c86e25199583069f0f8205e7a76be5bc10af20d9204df80f281a2ea9520941","LICENSE-APACHE":"26c86e25199583069f0f8205e7a76be5bc10af20d9204df80f281a2ea9520941","LICENSE-MIT":"cec4013700872627ee18d2128d3bbde3e1bf1912a61eec493299dc0f434300fb","LICENSE-ZLIB":"a5748e7b6f484bb179d81e382c7cf9526f2da5dc1b027844ae85ed0b739cb56d","METADATA":"9c740a8e8a247f3f164cf039d36add1e74f8b7bfa24b3245f128cfb1fa42e944","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"f6af7c3c0ef64c3625910cbf81cf69fe64d0ca6de5103379ae05cccc082c6a46","TEST_MAPPING":"56f237fe59538452b8639ea7252252654ac69662663eb2ea34ad388b1dae7572","cargo_embargo.json":"e0c03e048791d1e8f84c21f1e4d0b0db189a2ac3ca1d3feefdbc61d164342272","changelog.md":"68997787e8d711fa2e509feb230e7dd00a1556d9e45c1af43478d14585a7fea8","rustfmt.toml":"4dc084ed1f8eee76d5623a48573701dbb3eed85d0c858e50ad79c262598cc1c4","src/allocation.rs":"d0b8464cba876373fd2cd892f98ab8d7a8738bc850183ee084fb811c63c39912","src/anybitpattern.rs":"ae2f6c7567ac0050fd81bbe64c4552386f82c410d8c8f95844f348a523afa099","src/checked.rs":"be6b0edd1e7e65b06f109994e074f117b14378d0422d2da554745681566beeab","src/contiguous.rs":"5f226111b202ae4af33a67aebd72d5d4783b124f5aa2871aee7f5161e1f6d7fb","src/internal.rs":"77ac39d72f4c0c2baa2a9132574470dc603bce34c4f2a53e773c68538f83ac05","src/lib.rs":"3e83eb476477ad4f256e5c6258b86d9cac394dde53bf59866866d00d5529b82f","src/must.rs":"3e44ff35e8691b18f80ee897b2c521cac3cca4b13b1cfb77dbefc37ec4497a24","src/no_uninit.rs":"06a546319aac8a0cee275815860594121b16f5f740ee14aa62d28529242a9bb1","src/offset_of.rs":"d0726ced360c280d4c9f6d4dc709db482049c71434baa4810ea8782510b05989","src/pod.rs":"8f8d08e26cb5b784c682f50c9cc7432f1a592bb1d4ae72283ecbd13771736b51","src/pod_in_option.rs":"e88a449242133014c7490ae6c0ee4c164f3f41de80f329ce823299ce0fbc0692","src/transparent.rs":"43d6b547d72aa58fb31482fa61dcf2e5beb7075e2419805ae20c16915aa15083","src/zeroable.rs":"551b8f8fdec212afef7aa1d608542a78f994e404a0928b7baed251ec23391ae3","src/zeroable_in_option.rs":"e7e1842d2ae5af18cc040b2de9b4300b0ad8a29ffec2a0e1eea554f742765740","tests/array_tests.rs":"63a1f7bf11d09234d456f1eda4f7c59f7af313ee7f692f085fec6c7a303ab0a0","tests/cast_slice_tests.rs":"0fccf1f772c3eed58e24dd3cd0ef7e6c3f580fbc21867a849a35094a906a16b5","tests/checked_tests.rs":"2bee46585c6b6608df216381b1326c2fd56e05c8d7d121db4d37368eeff5fc7e","tests/derive.rs":"4d90facd45007555640269a46a0ef1c904c8665ee1ace879fa0c722977dc0acd","tests/doc_tests.rs":"ebc71de72bfe4499e0b512c94df4c06daa2cb09b6a519690e1f5d9d9e5ebc4dc","tests/offset_of_tests.rs":"fab12e44f1a5f7b86047b5bfa922d800081a2a3a27d58a9f72e374a73aec7f4f","tests/std_tests.rs":"45484e668354e80608df356860805ece04402ec4698760600d87dfc628089f3e","tests/transparent.rs":"66bb171f783a5ede3955ee63562352d538ca11eb16a9bfe72cc38b0f72e5a230","tests/wrapper_forgets.rs":"436c24e0834ff341db64b4b52bceb5c18c83415d01f830c2ec0fcad7266d4ba5"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"f0c247a14128bd7289a47cbbdb5d1df42f665bc16ea40c12fc5a1085774d6097","Android.bp":"9f13e6a1a13a7085aada8ac14c907fca0dd5e7f9f53dc41fd00cb75502d1f3e0","Cargo.toml":"0c59d16070f73859f051853924caf7fbeb7d052b55f9f4fd6c7e8960ec0c0e89","LICENSE":"26c86e25199583069f0f8205e7a76be5bc10af20d9204df80f281a2ea9520941","LICENSE-APACHE":"26c86e25199583069f0f8205e7a76be5bc10af20d9204df80f281a2ea9520941","LICENSE-MIT":"cec4013700872627ee18d2128d3bbde3e1bf1912a61eec493299dc0f434300fb","LICENSE-ZLIB":"a5748e7b6f484bb179d81e382c7cf9526f2da5dc1b027844ae85ed0b739cb56d","METADATA":"3f628b4d272e28eaed30808a93030c4c88c268a7d362c2610d30ca5e527361df","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"f6af7c3c0ef64c3625910cbf81cf69fe64d0ca6de5103379ae05cccc082c6a46","TEST_MAPPING":"56f237fe59538452b8639ea7252252654ac69662663eb2ea34ad388b1dae7572","cargo_embargo.json":"e0c03e048791d1e8f84c21f1e4d0b0db189a2ac3ca1d3feefdbc61d164342272","changelog.md":"2e0e62c563845a666a56ffe666acc2c99464207fb90087b4b8b3335e0d71a510","rustfmt.toml":"4dc084ed1f8eee76d5623a48573701dbb3eed85d0c858e50ad79c262598cc1c4","src/allocation.rs":"d0b8464cba876373fd2cd892f98ab8d7a8738bc850183ee084fb811c63c39912","src/anybitpattern.rs":"ae2f6c7567ac0050fd81bbe64c4552386f82c410d8c8f95844f348a523afa099","src/checked.rs":"8cdfa353780fcac3d085d1f00d170f7be08214fe899ce7dc921de221159f6e5c","src/contiguous.rs":"5f226111b202ae4af33a67aebd72d5d4783b124f5aa2871aee7f5161e1f6d7fb","src/internal.rs":"77ac39d72f4c0c2baa2a9132574470dc603bce34c4f2a53e773c68538f83ac05","src/lib.rs":"d358cc206da405c292132e28a485f00e7736051fd9e7ae56c7b1b2984b314ce9","src/must.rs":"ebe31709688108949d832d516f6115a76915da723c27b015f4f5c04f0f788027","src/no_uninit.rs":"06a546319aac8a0cee275815860594121b16f5f740ee14aa62d28529242a9bb1","src/offset_of.rs":"d0726ced360c280d4c9f6d4dc709db482049c71434baa4810ea8782510b05989","src/pod.rs":"7b1b485d33ed7dfeb4be4887f7c8b8d5304588b41cddd458acb532a51823bcbd","src/pod_in_option.rs":"e88a449242133014c7490ae6c0ee4c164f3f41de80f329ce823299ce0fbc0692","src/transparent.rs":"43d6b547d72aa58fb31482fa61dcf2e5beb7075e2419805ae20c16915aa15083","src/zeroable.rs":"f6da412d43d593906000113da6534b6964f3a18f0db14c0877f371b2c1e8e020","src/zeroable_in_option.rs":"e7e1842d2ae5af18cc040b2de9b4300b0ad8a29ffec2a0e1eea554f742765740","tests/array_tests.rs":"63a1f7bf11d09234d456f1eda4f7c59f7af313ee7f692f085fec6c7a303ab0a0","tests/cast_slice_tests.rs":"0fccf1f772c3eed58e24dd3cd0ef7e6c3f580fbc21867a849a35094a906a16b5","tests/checked_tests.rs":"2bee46585c6b6608df216381b1326c2fd56e05c8d7d121db4d37368eeff5fc7e","tests/derive.rs":"4d90facd45007555640269a46a0ef1c904c8665ee1ace879fa0c722977dc0acd","tests/doc_tests.rs":"ebc71de72bfe4499e0b512c94df4c06daa2cb09b6a519690e1f5d9d9e5ebc4dc","tests/offset_of_tests.rs":"fab12e44f1a5f7b86047b5bfa922d800081a2a3a27d58a9f72e374a73aec7f4f","tests/std_tests.rs":"45484e668354e80608df356860805ece04402ec4698760600d87dfc628089f3e","tests/transparent.rs":"66bb171f783a5ede3955ee63562352d538ca11eb16a9bfe72cc38b0f72e5a230","tests/wrapper_forgets.rs":"436c24e0834ff341db64b4b52bceb5c18c83415d01f830c2ec0fcad7266d4ba5"}}
\ No newline at end of file
diff --git a/crates/bytemuck/.cargo-checksum.json b/crates/bytemuck/.cargo-checksum.json
index e94d33d..2d9934f 100644
--- a/crates/bytemuck/.cargo-checksum.json
+++ b/crates/bytemuck/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"3649299f411a320ac0451f7c2f169ccd0b9246b93a95e3fb319a68dac04064fb","LICENSE-APACHE":"870e20c217d15bcfcbe53d7c5867cd8fac44a4ca0b41fc1eb843557e16063eba","LICENSE-MIT":"0b2d108c9c686a74ac312990ee8377902756a2a081a7af3b0f9d68abf0a8f1a1","LICENSE-ZLIB":"682b4c81b85e83ce6cc6e1ace38fdd97aeb4de0e972bd2b44aa0916c54af8c96","README.md":"167493de1f1ad16d13c778494ae344cd71306622c89d19002eaf7f4185c1f728","changelog.md":"8c79c066f7cccfac1e02badcbc8193de5511745ece3eae7a788dffbbfa8df239","rustfmt.toml":"f4c215534437936f924c937dbb1677f614761589300d6b389f3b518b3eb551b8","src/allocation.rs":"be0c1075015d32698722183523dae7d9cd679f93f6692e733dd6a361214404c9","src/anybitpattern.rs":"172bcc22ba7b38a9a36e34d0aa5efc8716bba77569a3c142f16f8103046f1d45","src/checked.rs":"f60c88558dbf7e1d7d2be43dce7efb100c8710cf57455d3cf586ddad4f274b14","src/contiguous.rs":"bb340c0f20a06aa725bb625edcb493146ba64980fd1fd9e450654aa37384c564","src/internal.rs":"2b5b4fdc1a5d14462dd604ca1f4f23116f40639d7d8b4c1a7189ce276edd8272","src/lib.rs":"ae83f2eb38d059356410b004024b4be500f4beebbe4d83face255f3912c47507","src/must.rs":"e14643ef6a89d2caf87b9907a5cc5624962074963ec1a046ed7ee4b37cd7eb83","src/no_uninit.rs":"4ab2f5ed29bff0b33630661154eb548f3e55581bfcf576a90397b7f8d5323201","src/offset_of.rs":"2afd190ef0462b30ade786fe813a91e7bf41cc2fa99a1d79002cbafab5964f37","src/pod.rs":"b149ec10657dc45039b0be57ef89a4be638ab54d7d15bb7a5094c48f5b067ee5","src/pod_in_option.rs":"73bbe1d69f32d909695ce26d131aa2d81eaa31e2b4532256ebfe1a6ba68675c1","src/transparent.rs":"5e555d6d83f5fe215ce2dbc949e87977aa92ab8d6f7a9be8479f63fdeda2359f","src/zeroable.rs":"fc38a6e1c6ff8f36407279752ee3858fedcb9b94a334273d74da0851dbbf89cf","src/zeroable_in_option.rs":"f74799ac3eee50116ec63a0ae4d3e351e0ab7ac807d01b4b59027bf6a68d6de6","tests/array_tests.rs":"98ca7a0dcd93e65f70d4db19643e707cafae5a249561ab151998cedb89b2e036","tests/cast_slice_tests.rs":"1869416e833757f603765afbf48152a6d32a100316529eb494b48fca6c5a8899","tests/checked_tests.rs":"27965acf20e46482b09ee56aaa2536868821be651a3b95052f40e554ecde9917","tests/derive.rs":"93b5ab70ecdd726811af9dee1702e23e964b8ceac59f727889f6a2678ad90d65","tests/doc_tests.rs":"f20708319fde62d8957909d51ee976fce394ad0891ebc4bbcf336ab026a34092","tests/offset_of_tests.rs":"fb5f91e17f984050969f8b06f1de58b5c1e80802c5deb992d3188f5ec274690f","tests/std_tests.rs":"967d4fb4cae24a374633c9b68f1ff65f86ba4c8a0e980adfe69dcaf60a9049c2","tests/transparent.rs":"ecef6e0987e28121b480942e58ce4534f13fe35667bde7f5c6e04e590b02f6a3","tests/wrapper_forgets.rs":"c6330546f6aa696245625056e7323b3916e3fb1a9fbecefe9c9e62d3726812d9"},"package":"8b37c88a63ffd85d15b406896cc343916d7cf57838a847b3a6f2ca5d39a5695a"}
\ No newline at end of file
+{"files":{"Cargo.toml":"97a0b8234556120873b15b5bf6ac70930f5fe38900bbcc70ba6283467a52b1f8","LICENSE-APACHE":"870e20c217d15bcfcbe53d7c5867cd8fac44a4ca0b41fc1eb843557e16063eba","LICENSE-MIT":"0b2d108c9c686a74ac312990ee8377902756a2a081a7af3b0f9d68abf0a8f1a1","LICENSE-ZLIB":"682b4c81b85e83ce6cc6e1ace38fdd97aeb4de0e972bd2b44aa0916c54af8c96","README.md":"167493de1f1ad16d13c778494ae344cd71306622c89d19002eaf7f4185c1f728","changelog.md":"bc6a75f248b44c5f9e97f99ed133b8bc6eeeb6aa1f1436442d1f6a6a3b53d6b5","rustfmt.toml":"f4c215534437936f924c937dbb1677f614761589300d6b389f3b518b3eb551b8","src/allocation.rs":"be0c1075015d32698722183523dae7d9cd679f93f6692e733dd6a361214404c9","src/anybitpattern.rs":"172bcc22ba7b38a9a36e34d0aa5efc8716bba77569a3c142f16f8103046f1d45","src/checked.rs":"35f69278bf0106ce2855bff48ae3aeb125a54c3ee4afb123cbfe135d518e68c0","src/contiguous.rs":"bb340c0f20a06aa725bb625edcb493146ba64980fd1fd9e450654aa37384c564","src/internal.rs":"2b5b4fdc1a5d14462dd604ca1f4f23116f40639d7d8b4c1a7189ce276edd8272","src/lib.rs":"752aa0122fa8e3d80dfc48d0bf694aebbbccf7a3686ca2376aca7bb60ed627c3","src/must.rs":"fed78b2a4dac5ef6758bab53a4f3bcabd8da071854bcc07dc70a255b327ec64c","src/no_uninit.rs":"4ab2f5ed29bff0b33630661154eb548f3e55581bfcf576a90397b7f8d5323201","src/offset_of.rs":"2afd190ef0462b30ade786fe813a91e7bf41cc2fa99a1d79002cbafab5964f37","src/pod.rs":"b010341e374a7c26f84286178c435f6df2e9d80f47306cb1dc29fdb0bc4d8e0f","src/pod_in_option.rs":"73bbe1d69f32d909695ce26d131aa2d81eaa31e2b4532256ebfe1a6ba68675c1","src/transparent.rs":"5e555d6d83f5fe215ce2dbc949e87977aa92ab8d6f7a9be8479f63fdeda2359f","src/zeroable.rs":"f44c0dbfe27661e39c17379e9a3a6ad458b8ca004c1fbf3d352a18aed3f093b1","src/zeroable_in_option.rs":"f74799ac3eee50116ec63a0ae4d3e351e0ab7ac807d01b4b59027bf6a68d6de6","tests/array_tests.rs":"98ca7a0dcd93e65f70d4db19643e707cafae5a249561ab151998cedb89b2e036","tests/cast_slice_tests.rs":"1869416e833757f603765afbf48152a6d32a100316529eb494b48fca6c5a8899","tests/checked_tests.rs":"27965acf20e46482b09ee56aaa2536868821be651a3b95052f40e554ecde9917","tests/derive.rs":"93b5ab70ecdd726811af9dee1702e23e964b8ceac59f727889f6a2678ad90d65","tests/doc_tests.rs":"f20708319fde62d8957909d51ee976fce394ad0891ebc4bbcf336ab026a34092","tests/offset_of_tests.rs":"fb5f91e17f984050969f8b06f1de58b5c1e80802c5deb992d3188f5ec274690f","tests/std_tests.rs":"967d4fb4cae24a374633c9b68f1ff65f86ba4c8a0e980adfe69dcaf60a9049c2","tests/transparent.rs":"ecef6e0987e28121b480942e58ce4534f13fe35667bde7f5c6e04e590b02f6a3","tests/wrapper_forgets.rs":"c6330546f6aa696245625056e7323b3916e3fb1a9fbecefe9c9e62d3726812d9"},"package":"ef657dfab802224e671f5818e9a4935f9b1957ed18e58292690cc39e7a4092a3"}
\ No newline at end of file
diff --git a/crates/bytemuck/Android.bp b/crates/bytemuck/Android.bp
index 2f2a854..6f363de 100644
--- a/crates/bytemuck/Android.bp
+++ b/crates/bytemuck/Android.bp
@@ -18,7 +18,7 @@
host_supported: true,
crate_name: "array_tests",
cargo_env_compat: true,
- cargo_pkg_version: "1.20.0",
+ cargo_pkg_version: "1.21.0",
crate_root: "tests/array_tests.rs",
test_suites: ["general-tests"],
auto_gen_config: true,
@@ -41,7 +41,7 @@
host_supported: true,
crate_name: "cast_slice_tests",
cargo_env_compat: true,
- cargo_pkg_version: "1.20.0",
+ cargo_pkg_version: "1.21.0",
crate_root: "tests/cast_slice_tests.rs",
test_suites: ["general-tests"],
auto_gen_config: true,
@@ -64,7 +64,7 @@
host_supported: true,
crate_name: "checked_tests",
cargo_env_compat: true,
- cargo_pkg_version: "1.20.0",
+ cargo_pkg_version: "1.21.0",
crate_root: "tests/checked_tests.rs",
test_suites: ["general-tests"],
auto_gen_config: true,
@@ -87,7 +87,7 @@
host_supported: true,
crate_name: "doc_tests",
cargo_env_compat: true,
- cargo_pkg_version: "1.20.0",
+ cargo_pkg_version: "1.21.0",
crate_root: "tests/doc_tests.rs",
test_suites: ["general-tests"],
auto_gen_config: true,
@@ -110,7 +110,7 @@
host_supported: true,
crate_name: "offset_of_tests",
cargo_env_compat: true,
- cargo_pkg_version: "1.20.0",
+ cargo_pkg_version: "1.21.0",
crate_root: "tests/offset_of_tests.rs",
test_suites: ["general-tests"],
auto_gen_config: true,
@@ -133,7 +133,7 @@
host_supported: true,
crate_name: "std_tests",
cargo_env_compat: true,
- cargo_pkg_version: "1.20.0",
+ cargo_pkg_version: "1.21.0",
crate_root: "tests/std_tests.rs",
test_suites: ["general-tests"],
auto_gen_config: true,
@@ -156,7 +156,7 @@
host_supported: true,
crate_name: "transparent",
cargo_env_compat: true,
- cargo_pkg_version: "1.20.0",
+ cargo_pkg_version: "1.21.0",
crate_root: "tests/transparent.rs",
test_suites: ["general-tests"],
auto_gen_config: true,
@@ -179,7 +179,7 @@
host_supported: true,
crate_name: "bytemuck",
cargo_env_compat: true,
- cargo_pkg_version: "1.20.0",
+ cargo_pkg_version: "1.21.0",
crate_root: "src/lib.rs",
edition: "2018",
features: [
@@ -202,7 +202,7 @@
name: "libbytemuck_nostd",
crate_name: "bytemuck",
cargo_env_compat: true,
- cargo_pkg_version: "1.20.0",
+ cargo_pkg_version: "1.21.0",
crate_root: "src/lib.rs",
edition: "2018",
features: [
diff --git a/crates/bytemuck/Cargo.toml b/crates/bytemuck/Cargo.toml
index 94bbf21..4f67c8d 100644
--- a/crates/bytemuck/Cargo.toml
+++ b/crates/bytemuck/Cargo.toml
@@ -12,7 +12,7 @@
[package]
edition = "2018"
name = "bytemuck"
-version = "1.20.0"
+version = "1.21.0"
authors = ["Lokathor <zefria@gmail.com>"]
build = false
exclude = ["/pedantic.bat"]
@@ -97,25 +97,30 @@
aarch64_simd = []
align_offset = []
alloc_uninit = []
+avx512_simd = []
const_zeroed = []
derive = ["bytemuck_derive"]
extern_crate_alloc = []
extern_crate_std = ["extern_crate_alloc"]
latest_stable_rust = [
"aarch64_simd",
+ "avx512_simd",
"align_offset",
"alloc_uninit",
"const_zeroed",
"derive",
"min_const_generics",
"must_cast",
+ "must_cast_extra",
"track_caller",
+ "transparentwrapper_extra",
"wasm_simd",
"zeroable_atomics",
"zeroable_maybe_uninit",
]
min_const_generics = []
must_cast = []
+must_cast_extra = ["must_cast"]
nightly_docs = []
nightly_float = []
nightly_portable_simd = []
diff --git a/crates/bytemuck/METADATA b/crates/bytemuck/METADATA
index d2c3394..b5d7f4a 100644
--- a/crates/bytemuck/METADATA
+++ b/crates/bytemuck/METADATA
@@ -1,17 +1,17 @@
name: "bytemuck"
description: "A crate for mucking around with piles of bytes."
third_party {
- version: "1.20.0"
+ version: "1.21.0"
license_type: NOTICE
last_upgrade_date {
- year: 2024
- month: 12
- day: 19
+ year: 2025
+ month: 1
+ day: 14
}
homepage: "https://crates.io/crates/bytemuck"
identifier {
type: "Archive"
- value: "https://static.crates.io/crates/bytemuck/bytemuck-1.20.0.crate"
- version: "1.20.0"
+ value: "https://static.crates.io/crates/bytemuck/bytemuck-1.21.0.crate"
+ version: "1.21.0"
}
}
diff --git a/crates/bytemuck/changelog.md b/crates/bytemuck/changelog.md
index 1e22f33..294647c 100644
--- a/crates/bytemuck/changelog.md
+++ b/crates/bytemuck/changelog.md
@@ -1,5 +1,14 @@
# `bytemuck` changelog
+## 1.21
+
+* Implement `Pod` and `Zeroable` for `core::arch::{x86, x86_64}::__m512`, `__m512d` and `__m512i` without nightly.
+ Requires Rust 1.72, and is gated through the `avx512_simd` cargo feature.
+* Allow the use of `must_cast_mut` and `must_cast_slice_mut` in const contexts.
+ Requires Rust 1.83, and is gated through the `must_cast_extra` cargo feature.
+* internal: introduced the `maybe_const_fn` macro that allows defining some function
+ to be const depending upon some `cfg` predicate.
+
## 1.20
* New functions to allocate zeroed `Arc` and `Rc`. Requires Rust 1.82
diff --git a/crates/bytemuck/src/checked.rs b/crates/bytemuck/src/checked.rs
index d0c92cb..c81b449 100644
--- a/crates/bytemuck/src/checked.rs
+++ b/crates/bytemuck/src/checked.rs
@@ -438,7 +438,7 @@
/// Reads the slice into a `T` value.
///
/// ## Panics
-/// * This is like `try_pod_read_unaligned` but will panic on failure.
+/// * This is like [`try_pod_read_unaligned`] but will panic on failure.
#[inline]
#[cfg_attr(feature = "track_caller", track_caller)]
pub fn pod_read_unaligned<T: CheckedBitPattern>(bytes: &[u8]) -> T {
diff --git a/crates/bytemuck/src/lib.rs b/crates/bytemuck/src/lib.rs
index 7679f74..f820762 100644
--- a/crates/bytemuck/src/lib.rs
+++ b/crates/bytemuck/src/lib.rs
@@ -1,5 +1,6 @@
#![no_std]
#![warn(missing_docs)]
+#![allow(unused_mut)]
#![allow(clippy::match_like_matches_macro)]
#![allow(clippy::uninlined_format_args)]
#![allow(clippy::result_unit_err)]
@@ -154,6 +155,25 @@
};
}
+/// A macro for conditionally const-ifying a function.
+/// #[allow(unused)] because currently it is only used with the `must_cast` feature.
+#[allow(unused)]
+macro_rules! maybe_const_fn {
+ (
+ #[cfg($cfg_predicate:meta)]
+ $(#[$attr:meta])*
+ $vis:vis $(unsafe $($unsafe:lifetime)?)? fn $name:ident $($rest:tt)*
+ ) => {
+ #[cfg($cfg_predicate)]
+ $(#[$attr])*
+ $vis const $(unsafe $($unsafe)?)? fn $name $($rest)*
+
+ #[cfg(not($cfg_predicate))]
+ $(#[$attr])*
+ $vis $(unsafe $($unsafe)?)? fn $name $($rest)*
+ };
+}
+
#[cfg(feature = "extern_crate_std")]
extern crate std;
diff --git a/crates/bytemuck/src/must.rs b/crates/bytemuck/src/must.rs
index 4753651..1bb5ccc 100644
--- a/crates/bytemuck/src/must.rs
+++ b/crates/bytemuck/src/must.rs
@@ -70,36 +70,39 @@
unsafe { &*(a as *const A as *const B) }
}
-/// Convert a `&mut A` into `&mut B` if infalliable, or fail to compile.
-///
-/// As [`must_cast_ref`], but `mut`.
-///
-/// ## Examples
-/// ```
-/// let mut i = 12_u16;
-/// // compiles:
-/// let bytes: &mut [u8; 2] = bytemuck::must_cast_mut(&mut i);
-/// ```
-/// ```compile_fail,E0080
-/// # let mut bytes: &mut [u8; 2] = &mut [1, 2];
-/// // fails to compile (alignment requirements increased):
-/// let i : &mut u16 = bytemuck::must_cast_mut(bytes);
-/// ```
-/// ```compile_fail,E0080
-/// # let mut i = 12_u16;
-/// // fails to compile (size mismatch):
-/// let bytes : &mut [u8; 3] = bytemuck::must_cast_mut(&mut i);
-/// ```
-#[inline]
-pub fn must_cast_mut<
- A: NoUninit + AnyBitPattern,
- B: NoUninit + AnyBitPattern,
->(
- a: &mut A,
-) -> &mut B {
- let _ = Cast::<A, B>::ASSERT_SIZE_EQUAL;
- let _ = Cast::<A, B>::ASSERT_ALIGN_GREATER_THAN_EQUAL;
- unsafe { &mut *(a as *mut A as *mut B) }
+maybe_const_fn! {
+ #[cfg(feature = "must_cast_extra")]
+ /// Convert a `&mut A` into `&mut B` if infalliable, or fail to compile.
+ ///
+ /// As [`must_cast_ref`], but `mut`.
+ ///
+ /// ## Examples
+ /// ```
+ /// let mut i = 12_u16;
+ /// // compiles:
+ /// let bytes: &mut [u8; 2] = bytemuck::must_cast_mut(&mut i);
+ /// ```
+ /// ```compile_fail,E0080
+ /// # let mut bytes: &mut [u8; 2] = &mut [1, 2];
+ /// // fails to compile (alignment requirements increased):
+ /// let i : &mut u16 = bytemuck::must_cast_mut(bytes);
+ /// ```
+ /// ```compile_fail,E0080
+ /// # let mut i = 12_u16;
+ /// // fails to compile (size mismatch):
+ /// let bytes : &mut [u8; 3] = bytemuck::must_cast_mut(&mut i);
+ /// ```
+ #[inline]
+ pub fn must_cast_mut<
+ A: NoUninit + AnyBitPattern,
+ B: NoUninit + AnyBitPattern,
+ >(
+ a: &mut A,
+ ) -> &mut B {
+ let _ = Cast::<A, B>::ASSERT_SIZE_EQUAL;
+ let _ = Cast::<A, B>::ASSERT_ALIGN_GREATER_THAN_EQUAL;
+ unsafe { &mut *(a as *mut A as *mut B) }
+ }
}
/// Convert `&[A]` into `&[B]` (possibly with a change in length) if
@@ -154,53 +157,56 @@
unsafe { core::slice::from_raw_parts(a.as_ptr() as *const B, new_len) }
}
-/// Convert `&mut [A]` into `&mut [B]` (possibly with a change in length) if
-/// infalliable, or fail to compile.
-///
-/// As [`must_cast_slice`], but `&mut`.
-///
-/// ## Examples
-/// ```
-/// let mut indicies = [1, 2, 3];
-/// let indicies: &mut [u16] = &mut indicies;
-/// // compiles:
-/// let bytes: &mut [u8] = bytemuck::must_cast_slice_mut(indicies);
-/// ```
-/// ```
-/// let zsts: &mut [()] = &mut [(), (), ()];
-/// // compiles:
-/// let bytes: &mut [u8] = bytemuck::must_cast_slice_mut(zsts);
-/// ```
-/// ```compile_fail,E0080
-/// # let mut bytes = [1, 0, 2, 0, 3, 0];
-/// # let bytes : &mut [u8] = &mut bytes[..];
-/// // fails to compile (bytes.len() might not be a multiple of 2):
-/// let byte_pairs : &mut [[u8; 2]] = bytemuck::must_cast_slice_mut(bytes);
-/// ```
-/// ```compile_fail,E0080
-/// # let mut byte_pairs = [[1, 0], [2, 0], [3, 0]];
-/// # let byte_pairs : &mut [[u8; 2]] = &mut byte_pairs[..];
-/// // fails to compile (alignment requirements increased):
-/// let indicies : &mut [u16] = bytemuck::must_cast_slice_mut(byte_pairs);
-/// ```
-/// ```compile_fail,E0080
-/// let bytes: &mut [u8] = &mut [];
-/// // fails to compile: (bytes.len() might not be 0)
-/// let zsts: &mut [()] = bytemuck::must_cast_slice_mut(bytes);
-/// ```
-#[inline]
-pub fn must_cast_slice_mut<
- A: NoUninit + AnyBitPattern,
- B: NoUninit + AnyBitPattern,
->(
- a: &mut [A],
-) -> &mut [B] {
- let _ = Cast::<A, B>::ASSERT_SIZE_MULTIPLE_OF_OR_INPUT_ZST;
- let _ = Cast::<A, B>::ASSERT_ALIGN_GREATER_THAN_EQUAL;
- let new_len = if size_of::<A>() == size_of::<B>() {
- a.len()
- } else {
- a.len() * (size_of::<A>() / size_of::<B>())
- };
- unsafe { core::slice::from_raw_parts_mut(a.as_mut_ptr() as *mut B, new_len) }
+maybe_const_fn! {
+ #[cfg(feature = "must_cast_extra")]
+ /// Convert `&mut [A]` into `&mut [B]` (possibly with a change in length) if
+ /// infalliable, or fail to compile.
+ ///
+ /// As [`must_cast_slice`], but `&mut`.
+ ///
+ /// ## Examples
+ /// ```
+ /// let mut indicies = [1, 2, 3];
+ /// let indicies: &mut [u16] = &mut indicies;
+ /// // compiles:
+ /// let bytes: &mut [u8] = bytemuck::must_cast_slice_mut(indicies);
+ /// ```
+ /// ```
+ /// let zsts: &mut [()] = &mut [(), (), ()];
+ /// // compiles:
+ /// let bytes: &mut [u8] = bytemuck::must_cast_slice_mut(zsts);
+ /// ```
+ /// ```compile_fail,E0080
+ /// # let mut bytes = [1, 0, 2, 0, 3, 0];
+ /// # let bytes : &mut [u8] = &mut bytes[..];
+ /// // fails to compile (bytes.len() might not be a multiple of 2):
+ /// let byte_pairs : &mut [[u8; 2]] = bytemuck::must_cast_slice_mut(bytes);
+ /// ```
+ /// ```compile_fail,E0080
+ /// # let mut byte_pairs = [[1, 0], [2, 0], [3, 0]];
+ /// # let byte_pairs : &mut [[u8; 2]] = &mut byte_pairs[..];
+ /// // fails to compile (alignment requirements increased):
+ /// let indicies : &mut [u16] = bytemuck::must_cast_slice_mut(byte_pairs);
+ /// ```
+ /// ```compile_fail,E0080
+ /// let bytes: &mut [u8] = &mut [];
+ /// // fails to compile: (bytes.len() might not be 0)
+ /// let zsts: &mut [()] = bytemuck::must_cast_slice_mut(bytes);
+ /// ```
+ #[inline]
+ pub fn must_cast_slice_mut<
+ A: NoUninit + AnyBitPattern,
+ B: NoUninit + AnyBitPattern,
+ >(
+ a: &mut [A],
+ ) -> &mut [B] {
+ let _ = Cast::<A, B>::ASSERT_SIZE_MULTIPLE_OF_OR_INPUT_ZST;
+ let _ = Cast::<A, B>::ASSERT_ALIGN_GREATER_THAN_EQUAL;
+ let new_len = if size_of::<A>() == size_of::<B>() {
+ a.len()
+ } else {
+ a.len() * (size_of::<A>() / size_of::<B>())
+ };
+ unsafe { core::slice::from_raw_parts_mut(a.as_mut_ptr() as *mut B, new_len) }
+ }
}
diff --git a/crates/bytemuck/src/pod.rs b/crates/bytemuck/src/pod.rs
index 7fdf5a6..7a60b08 100644
--- a/crates/bytemuck/src/pod.rs
+++ b/crates/bytemuck/src/pod.rs
@@ -153,17 +153,29 @@
}
impl_unsafe_marker_for_simd!(
+ #[cfg(all(target_arch = "x86", any(feature = "nightly_stdsimd", feature = "avx512_simd")))]
+ unsafe impl Pod for x86::{
+ __m512, __m512d, __m512i
+ }
+);
+
+impl_unsafe_marker_for_simd!(
+ #[cfg(all(target_arch = "x86_64", any(feature = "nightly_stdsimd", feature = "avx512_simd")))]
+ unsafe impl Pod for x86_64::{
+ __m512, __m512d, __m512i
+ }
+);
+
+impl_unsafe_marker_for_simd!(
#[cfg(all(target_arch = "x86", feature = "nightly_stdsimd"))]
unsafe impl Pod for x86::{
- __m128bh, __m256bh, __m512,
- __m512bh, __m512d, __m512i,
+ __m128bh, __m256bh, __m512bh
}
);
impl_unsafe_marker_for_simd!(
#[cfg(all(target_arch = "x86_64", feature = "nightly_stdsimd"))]
unsafe impl Pod for x86_64::{
- __m128bh, __m256bh, __m512,
- __m512bh, __m512d, __m512i,
+ __m128bh, __m256bh, __m512bh
}
);
diff --git a/crates/bytemuck/src/zeroable.rs b/crates/bytemuck/src/zeroable.rs
index 7eb476f..9d371a7 100644
--- a/crates/bytemuck/src/zeroable.rs
+++ b/crates/bytemuck/src/zeroable.rs
@@ -233,17 +233,29 @@
}
impl_unsafe_marker_for_simd!(
+ #[cfg(all(target_arch = "x86", any(feature = "nightly_stdsimd", feature = "avx512_simd")))]
+ unsafe impl Zeroable for x86::{
+ __m512, __m512d, __m512i
+ }
+);
+
+impl_unsafe_marker_for_simd!(
+ #[cfg(all(target_arch = "x86_64", any(feature = "nightly_stdsimd", feature = "avx512_simd")))]
+ unsafe impl Zeroable for x86_64::{
+ __m512, __m512d, __m512i
+ }
+);
+
+impl_unsafe_marker_for_simd!(
#[cfg(all(target_arch = "x86", feature = "nightly_stdsimd"))]
unsafe impl Zeroable for x86::{
- __m128bh, __m256bh, __m512,
- __m512bh, __m512d, __m512i,
+ __m128bh, __m256bh, __m512bh
}
);
impl_unsafe_marker_for_simd!(
#[cfg(all(target_arch = "x86_64", feature = "nightly_stdsimd"))]
unsafe impl Zeroable for x86_64::{
- __m128bh, __m256bh, __m512,
- __m512bh, __m512d, __m512i,
+ __m128bh, __m256bh, __m512bh
}
);
diff --git a/pseudo_crate/Cargo.lock b/pseudo_crate/Cargo.lock
index 39eaecd..e9892e4 100644
--- a/pseudo_crate/Cargo.lock
+++ b/pseudo_crate/Cargo.lock
@@ -991,9 +991,9 @@
[[package]]
name = "bytemuck"
-version = "1.20.0"
+version = "1.21.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8b37c88a63ffd85d15b406896cc343916d7cf57838a847b3a6f2ca5d39a5695a"
+checksum = "ef657dfab802224e671f5818e9a4935f9b1957ed18e58292690cc39e7a4092a3"
dependencies = [
"bytemuck_derive",
]
diff --git a/pseudo_crate/Cargo.toml b/pseudo_crate/Cargo.toml
index 419e9da..51c78c0 100644
--- a/pseudo_crate/Cargo.toml
+++ b/pseudo_crate/Cargo.toml
@@ -41,7 +41,7 @@
bitreader = "=0.3.11"
bstr = "=1.3.0"
buddy_system_allocator = "=0.11.0"
-bytemuck = "=1.20.0"
+bytemuck = "=1.21.0"
bytemuck_derive = "=1.8.0"
byteorder = "=1.5.0"
bytes = "=1.9.0"