wide

Portable SIMD data types for Rust, a near drop-in replacement for std::simd

Library
Cargo
v1.6.1
539stars
Zlib

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum.How we score it →
77/100Good
Development Activity100
Maintenance52
Community68
Maturity60
Momentum28

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation.How we score it →
80/100Excellent
Architecture86
Code Quality84
Innovation80
Learning Curve72

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, and u8x16
  • 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.

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers

Search