A production-ready machine learning library written in pure Rust.
Aprender provides implementations of classical machine learning algorithms optimized for performance and safety. The library requires no external dependencies beyond the Rust standard library and offers seamless compilation to WebAssembly.
- Pure Rust — Zero C/C++ dependencies, memory-safe, thread-safe by default
- SIMD Acceleration — Vectorized operations via trueno backend
- WebAssembly Ready — Compile to WASM for browser and edge deployment
- Native Model Format —
.aprformat with encryption, signatures, and zero-copy loading - Interoperability — Export to SafeTensors and GGUF formats
Add aprender to your Cargo.toml:
[dependencies]
aprender = "0.13"[dependencies]
aprender = { version = "0.13", features = ["format-encryption", "hf-hub-integration"] }| Feature | Description |
|---|---|
format-encryption |
AES-256-GCM encryption for model files |
format-signing |
Ed25519 digital signatures |
format-compression |
Zstd compression |
hf-hub-integration |
Hugging Face Hub push/pull support |
gpu |
GPU acceleration via wgpu |
use aprender::prelude::*;
fn main() -> Result<(), Box<dyn std::error::Error>> {
// Training data
let x = Matrix::from_vec(4, 2, vec![
1.0, 2.0,
2.0, 3.0,
3.0, 4.0,
4.0, 5.0,
])?;
let y = Vector::from_slice(&[3.0, 5.0, 7.0, 9.0]);
// Train model
let mut model = LinearRegression::new();
model.fit(&x, &y)?;
// Evaluate
println!("R² = {:.4}", model.score(&x, &y));
Ok(())
}| Algorithm | Description |
|---|---|
LinearRegression |
Ordinary least squares regression |
LogisticRegression |
Binary and multiclass classification |
DecisionTreeClassifier |
GINI-based decision trees |
RandomForestClassifier |
Bootstrap aggregating ensemble |
GradientBoostingClassifier |
Adaptive boosting with residual learning |
NaiveBayes |
Gaussian naive Bayes classifier |
KNeighborsClassifier |
k-nearest neighbors |
LinearSVM |
Support vector machine with hinge loss |
| Algorithm | Description |
|---|---|
KMeans |
k-means++ initialization with Lloyd's algorithm |
DBSCAN |
Density-based spatial clustering |
PCA |
Principal component analysis |
IsolationForest |
Anomaly detection |
- Graph Analysis — PageRank, betweenness centrality, community detection
- Time Series — ARIMA forecasting
- Text Processing — Tokenization, TF-IDF, stemming
- Neural Networks — Sequential models, transformers, mixture of experts
- Metaheuristics — ACO, Tabu Search, DE, PSO, GA, CMA-ES
| Crate | Description |
|---|---|
aprender-tsp |
TSP solver with CLI and .apr model persistence |
aprender-shell |
AI-powered shell completion trained on your history |
The .apr format provides secure, efficient model serialization:
use aprender::format::{save, load, ModelType, SaveOptions};
// Save with encryption
save(&model, ModelType::LinearRegression, "model.apr",
SaveOptions::default()
.with_encryption("password")
.with_compression(true))?;
// Load
let model: LinearRegression = load("model.apr", ModelType::LinearRegression)?;- Security — AES-256-GCM encryption, Ed25519 signatures, X25519 key exchange
- Performance — Memory-mapped loading, 600x faster than standard deserialization
- Integrity — CRC32 checksums with automatic corruption detection
- Commercial — License blocks, watermarking, buyer-specific encryption
| Resource | Link |
|---|---|
| API Reference | docs.rs/aprender |
| User Guide | paiml.github.io/aprender |
| Examples | examples/ |
| Model Format Spec | docs/specifications/model-format-spec.md |
We welcome contributions. Please ensure your changes pass the test suite:
cargo test --all-features
cargo clippy --all-targets -- -D warnings
cargo fmt --checkSee CONTRIBUTING.md for guidelines.
Aprender is distributed under the MIT License. See LICENSE for details.
Built by Paiml