archmage 0.4.0

Safely invoke your intrinsic power, using the tokens granted to you by the CPU. Cast primitive magics faster than any mage alive.
Documentation
[workspace]
members = [".", "archmage-macros", "magetypes", "xtask"]

[package]
name = "archmage"
version = "0.4.0"
edition = "2024"
rust-version = "1.89"
license = "MIT OR Apache-2.0"
description = "Safely invoke your intrinsic power, using the tokens granted to you by the CPU. Cast primitive magics faster than any mage alive."
repository = "https://github.com/imazen/archmage"
documentation = "https://docs.rs/archmage"
keywords = ["simd", "avx", "neon", "wasm", "safe"]
categories = ["development-tools", "hardware-support", "no-std"]

[features]
default = ["std", "macros", "bytemuck"]
std = []
macros = ["dep:archmage-macros"]
bytemuck = ["dep:bytemuck"]
# AVX-512 token support (Avx512Token, Avx512ModernToken, X64V4Token, etc.)
avx512 = []

[dependencies]
# Proc-macro crate for #[arcane] attribute
archmage-macros = { version = "0.4.0", path = "archmage-macros", optional = true }
# Zero-cost type casts (Pod, Zeroable)
bytemuck = { version = "1.24", optional = true }

# Dev dependencies that don't support WASM
[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies]
criterion = { version = "0.5", features = ["html_reports"] }
trybuild = "1.0"
safe_unaligned_simd = { version = "0.2.3", features = ["avx512"] }
# SIMD types for tests and examples
magetypes = { path = "magetypes", features = ["avx512"] }

[[bench]]
name = "tokens"
harness = false

[package.metadata.docs.rs]
features = ["std", "macros", "bytemuck", "avx512"]
rustdoc-args = ["--cfg", "docsrs"]
# Build docs for multiple targets to show all platform-specific tokens
targets = ["x86_64-unknown-linux-gnu", "aarch64-unknown-linux-gnu", "wasm32-unknown-unknown"]