wide
Portable SIMD data types for Rust, a near drop-in replacement for std::simd
Repository Health
Technical Analysis
wide is a Rust crate that provides portable “wide” data types that do their best to compile down to SIMD instructions whenever possible. It is designed as a near drop-in replacement for the still-unstable std::simd, letting stable-Rust code process multiple values in parallel with a single instruction.
On x86, x86_64, wasm32, and aarch64 NEON, wide uses explicit intrinsics via the safe_arch crate; on other architectures it carefully structures its functions so LLVM auto-vectorizes them. It exposes fixed-width vector types such as f32x4, f32x8, i32x8, and u8x16 with arithmetic, comparison, and math operations, all under the permissive Zlib license.
What You Get
- Fixed-width SIMD types such as
f32x4,f32x8,i32x8, andu8x16 - Arithmetic, comparison, bitwise, and common math operations on vectors
- Explicit intrinsics on x86/x86_64, aarch64 NEON, and wasm32
- Automatic scalar fallback on architectures without explicit support
Common Use Cases
- Accelerating numeric loops by processing several lanes at once
- Speeding up graphics, audio, and physics math in games and engines
- Writing portable SIMD code that runs on stable Rust
- Optimizing hot paths without hand-writing per-architecture intrinsics
Under The Hood
Architecture - wide defines each vector type as a wrapper over a platform-specific representation selected at compile time via cfg gates; operations dispatch to safe_arch intrinsics on supported targets and to portable scalar implementations that LLVM is expected to vectorize elsewhere. Trait impls provide operator overloading so the types behave like scalars.
Tech Stack - Pure Rust built on the safe_arch and bytemuck crates, requiring a recent stable rustc (1.89+), and published as the wide crate on crates.io under the Zlib license.
Code Quality - Actively developed (over 10 commits/month) with 48 contributors, docs.rs documentation, and a track record of ~60M downloads; the code is carefully structured to keep the safe-fallback path vectorizable.
API Design - The API mirrors std::simd closely with familiar lane-count type names and natural operator syntax, making it an easy migration for code that wants portable SIMD without nightly features.