volta 0.3.0

A PyTorch-like Machine Learning framework.
Documentation
[package]
name = "volta"
description = "A PyTorch-like Machine Learning framework."
version = "0.3.0"
edition = "2024"
rust-version = "1.89.0"
build = "build.rs"
license = "MIT"
readme = "README.md"
repository = "https://github.com/rlarson20/Volta"
keywords = ["ml", "machine-learning", "autodiff", "tensor"]
categories = ["science"]

[dependencies]
bincode = { version = "2.0.1", features = ["derive"] }
approx = "0.5.1"
cblas-sys = "0.3.0"
rand = "0.9.2"
rand_distr = "0.5.1"
matrixmultiply = "0.3.10"

# Dtype support
half = { version = "2.7.1", features = ["bytemuck"] }
bytemuck = { version = "1.24.0", features = ["derive"] }

# GPU support
wgpu = { version = "27.0.1", optional = true }
pollster = { version = "0.4.0", optional = true }
safetensors = "0.7.0"
serde_json = "1.0.149"

[[example]]
name = "gpu"
path = "examples/gpu.rs"

[[example]]
name = "showcase"
path = "examples/showcase.rs"


[[example]]
name = "readme1"
path = "examples/readme-1.rs"

[[example]]
name = "readme2"
path = "examples/readme-2.rs"

[[example]]
name = "load_external_mnist"
path = "examples/load_external_mnist.rs"

[target.'cfg(target_os = "macos")'.dependencies]
blas-src = { version = "0.14", features = ["accelerate"], optional = true }

[dev-dependencies]
criterion = "0.5"

[features]
default = ["gpu", "accelerate"]
accelerate = ["blas-src"]
gpu = ["wgpu", "pollster"]

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

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

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

# Defensive lints: Source: https://corrode.dev/blog/defensive-programming/
[lints.clippy]
indexing_slicing = "deny"          # Prevents direct indexing into slices and vectors
fallible_impl_from = "deny"        # Warns about `From` implementations that can panic and should be `TryFrom` instead.
wildcard_enum_match_arm = "deny"   # Disallows wildcard `_` patterns.
unneeded_field_pattern = "deny"    # Identifies when you’re ignoring too many struct fields with `..` unnecessarily.
fn_params_excessive_bools = "deny" # Warns when a function has too many boolean parameters (4 or more by default).
must_use_candidate = "deny"        # Suggests adding `#[must_use]` to types that are good candidates for it.
# Pedantic lints
similar_names = "allow"