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 |
| Resource | Description |
|---|---|
| apr-cookbook | 50+ idiomatic Rust examples for .apr format, WASM deployment, and SIMD acceleration |
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