From 358b007678905b2dca260244baa21e5df8f75c52 Mon Sep 17 00:00:00 2001 From: Ragnar Groot Koerkamp Date: Fri, 21 Nov 2025 11:52:17 +0100 Subject: [PATCH 1/3] cargo update for `ensure_simd` --- Cargo.lock | 47 +++++++++++++++++++++++++++-------------------- 1 file changed, 27 insertions(+), 20 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3d7fa06..f1313ca 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -219,9 +219,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.46" +version = "1.2.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97463e1064cb1b1c1384ad0a0b9c8abd0988e2a91f52606c80ef14aadb63e36" +checksum = "cd405d82c84ff7f35739f175f67d8b9fb7687a0e84ccdc78bd3568839827cf07" dependencies = [ "find-msvc-tools", "jobserver", @@ -237,9 +237,9 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "clap" -version = "4.5.51" +version = "4.5.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c26d721170e0295f191a69bd9a1f93efcdb0aff38684b61ab5750468972e5f5" +checksum = "c9e340e012a1bf4935f5282ed1436d1489548e8f72308207ea5df0e23d2d03f8" dependencies = [ "clap_builder", "clap_derive", @@ -247,9 +247,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.51" +version = "4.5.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75835f0c7bf681bfd05abe44e965760fea999a5286c6eb2d59883634fd02011a" +checksum = "d76b5d13eaa18c901fd2f7fca939fefe3a0727a953561fefdf3b2922b8569d00" dependencies = [ "anstream", "anstyle", @@ -413,6 +413,12 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" +[[package]] +name = "ensure_simd" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c45a25613230d2ee8b1b68510f44ed8d765b6ef9a597d9ad5489e3d0ddfdc61d" + [[package]] name = "equivalent" version = "1.0.2" @@ -555,9 +561,9 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "gzp" -version = "2.0.1" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "355c63cde38919e6dfe222039e90ed032677bf47756e5ba02d0694044fb3bd09" +checksum = "7abe9930717197e0ea50d8c8a1106a38b5bee0536ed4cbf4b93ba1a953f97d04" dependencies = [ "byteorder", "bytes", @@ -571,9 +577,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" [[package]] name = "heck" @@ -589,9 +595,9 @@ checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" [[package]] name = "indexmap" -version = "2.12.0" +version = "2.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f" +checksum = "0ad4bb2b565bca0645f4d68c5c9af97fba094e9791da685bf83cb5f3ce74acf2" dependencies = [ "equivalent", "hashbrown", @@ -838,11 +844,12 @@ checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "packed-seq" -version = "4.2.0" +version = "4.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534d46109326ee0a3f0e157c305cf51b7ec73d1757f783a378e5821648f0357a" +checksum = "022341af41fb83294e35dd52ad308ee76f779740d2abeeb96d2864cb273dd600" dependencies = [ "cfg-if", + "ensure_simd", "mem_dbg", "rand", "wide", @@ -1488,9 +1495,9 @@ checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" [[package]] name = "unit-prefix" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "323402cff2dd658f39ca17c789b502021b3f18707c91cdf22e3838e1b4023817" +checksum = "81e544489bf3d8ef66c953931f56617f423cd4b5494be343d9b9d3dda037b9a3" [[package]] name = "untrusted" @@ -1732,18 +1739,18 @@ checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" [[package]] name = "zerocopy" -version = "0.8.27" +version = "0.8.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" +checksum = "43fa6694ed34d6e57407afbccdeecfa268c470a7d2a5b0cf49ce9fcc345afb90" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.27" +version = "0.8.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" +checksum = "c640b22cd9817fae95be82f0d2f90b11f7605f6c319d16705c459b27ac2cbc26" dependencies = [ "proc-macro2", "quote", From be925e26bd2cfacde7311a346c6b71eaeb866482 Mon Sep 17 00:00:00 2001 From: Ragnar Groot Koerkamp Date: Fri, 21 Nov 2025 11:54:41 +0100 Subject: [PATCH 2/3] Link to ensure_simd readme for `target-cpu=native` --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 54dfe28..42baa24 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,9 @@ RUSTFLAGS="-C target-cpu=native" cargo install deacon > [!IMPORTANT] > Cargo installation requires Rust 1.88 or newer. Update using `rustup update`. +See [here](https://github.com/ragnargrootkoerkamp/ensure_simd) for +details on `target-cpu=native`. + ### Docker [![Crates.io version](https://img.shields.io/badge/install%20with-docker-important.svg?style=flat-square&logo=docker)](https://biocontainers.pro/tools/deacon) ```bash From b72270e08301ad6ca0ec31c8dfba54778ba6ae32 Mon Sep 17 00:00:00 2001 From: Ragnar Groot Koerkamp Date: Fri, 21 Nov 2025 12:12:52 +0100 Subject: [PATCH 3/3] run-time check that AVX2 is supported when it was used during compilation --- Cargo.lock | 1 + Cargo.toml | 1 + src/main.rs | 3 +++ 3 files changed, 5 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index f1313ca..060ba76 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -372,6 +372,7 @@ dependencies = [ "assert_cmd", "bincode", "clap", + "ensure_simd", "flate2", "gzp", "indicatif", diff --git a/Cargo.toml b/Cargo.toml index 272e708..1f06e64 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -40,6 +40,7 @@ flate2 = { version = "1.1", features = ["zlib-rs"], optional = true } zstd = { version = "0.13", optional = true } gzp = { version = "2.0", default-features = false, features = ["deflate_rust"], optional = true } minreq = { version = "2", features = ["https-rustls-probe"], optional = true } +ensure_simd = "0.1.0" [lints.clippy] too_many_arguments = "allow" diff --git a/src/main.rs b/src/main.rs index 9e23555..cb3cc7b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -253,6 +253,9 @@ fn main() -> Result<()> { ); } + // If the binary was compiled with AVX2, check that the machine supports it at runtime. + ensure_simd::ensure_simd(); + let cli = Cli::parse(); if let Commands::Server { command } = &cli.command {