7 unstable releases (3 breaking)
Uses new Rust 2024
| new 0.4.2 | Mar 8, 2026 |
|---|---|
| 0.4.1 | Mar 8, 2026 |
| 0.3.0 | Jan 25, 2026 |
| 0.2.1 | Nov 22, 2025 |
| 0.1.0 | Oct 18, 2025 |
#222 in Caching
100 downloads per month
Used in 6 crates
(via minarrow)
64KB
1.5K
SLoC
Vec64
High-performance Rust vector type with automatic 64-byte SIMD alignment.
Summary
Vec64<T> is a drop-in replacement for Vec<T> that ensures the starting pointer is aligned to a 64-byte boundary.
This alignment is useful for optimal performance with SIMD instruction extensions like AVX-512, and helps avoid split loads/stores across cache lines.
Benefits will vary based on one's target architecture.
WASM Compatibility
Enable the wasm feature for Web Worker-based parallelism:
vec64 = { version = "0.3", features = ["wasm"] }
Required build configuration (.cargo/config.toml):
[target.wasm32-unknown-unknown]
rustflags = ["-C", "target-feature=+atomics,+bulk-memory"]
[unstable]
build-std = ["panic_abort", "std"]
Build with wasm-pack:
wasm-pack build --target web
Initialise the thread pool from JavaScript before using parallel methods:
import init, { initThreadPool } from './pkg/your_crate.js';
await init();
await initThreadPool(navigator.hardwareConcurrency);
Note: Requires nightly Rust with rust-src component for build-std. The browser
needs SharedArrayBuffer support (cross-origin isolation via COOP/COEP headers).
See wasm-test/ for a complete working example.
Vec64
High-performance Rust vector type with automatic 64-byte SIMD alignment.
Requires nightly Rust.
Overview
Vec64<T> is a drop-in replacement for Vec<T> that guarantees the starting pointer is aligned to a 64-byte boundary, enabling optimal performance with SIMD instruction extensions like AVX-512.
Vec64 is the foundational buffer type behind Minarrow - a typed, high-performance columnar data library for Rust. If you're building data-intensive applications and want aligned buffers, automatic padding, parallel processing, and Arrow-compatible columnar structures out of the box, Minarrow has it for you.
Quick Start
[dependencies]
vec64 = "0.4"
use vec64::{Vec64, vec64};
let mut v = Vec64::new();
v.push(42);
let v = vec64![1, 2, 3, 4, 5];
let v = Vec64::from_slice(&[1, 2, 3]);
All standard Vec operations work as expected.
License
Apache-2.0
Dependencies
~0–1.8MB
~34K SLoC