Merge commit 'd803bfe2b1fe7f5e219e50ac20d6801a0a58ac75' as 'vendor/ruvector'

This commit is contained in:
ruv
2026-02-28 14:39:40 -05:00
7854 changed files with 3522914 additions and 0 deletions

View File

@@ -0,0 +1,376 @@
# EXO-AI 2025: Rust Libraries & Crates Catalog
## SPARC Research Phase: Implementation Building Blocks
This document catalogs Rust crates and libraries applicable to the EXO-AI cognitive substrate architecture.
---
## 1. Tensor & Neural Network Frameworks
### Primary Frameworks
| Crate | Description | WASM | no_std | Use Case |
|-------|-------------|------|--------|----------|
| **[burn](https://lib.rs/crates/burn)** | Next-gen DL framework with backend flexibility | ✅ | ✅ | Core tensor operations, model training |
| **[candle](https://github.com/huggingface/candle)** | HuggingFace minimalist ML framework | ✅ | ❌ | Transformer inference, production models |
| **[ndarray](https://lib.rs/crates/ndarray)** | N-dimensional arrays | ❌ | ❌ | General numerical computing |
| **[burn-candle](https://crates.io/crates/burn-candle)** | Burn backend using Candle | ✅ | ❌ | Unified interface over Candle |
| **[burn-ndarray](https://crates.io/crates/burn-ndarray)** | Burn backend using ndarray | ❌ | ✅ | CPU-only, embedded targets |
### Key Characteristics
**Burn Framework**:
```rust
// Burn's backend flexibility enables future hardware abstraction
use burn::backend::Wgpu; // GPU via WebGPU
use burn::backend::NdArray; // CPU via ndarray
use burn::backend::Candle; // HuggingFace models
// Example: Backend-agnostic tensor operation
fn matmul<B: Backend>(a: Tensor<B, 2>, b: Tensor<B, 2>) -> Tensor<B, 2> {
a.matmul(b)
}
```
**Candle Strengths**:
- Transformer-specific optimizations
- ONNX model loading
- Quantization support (INT8, BF16)
- ~429KB WASM binary for BERT-style models
### Tensor Train Decomposition
| Crate/Paper | Description | Status |
|-------------|-------------|--------|
| [Functional TT Library (Springer 2024)](https://link.springer.com/chapter/10.1007/978-3-031-56208-2_22) | Function-Train decomposition in Rust | Research |
**Note**: This appears to be the only Rust-specific Tensor Train implementation, focused on PDEs rather than neural network compression. Opportunity exists for TT decomposition crate targeting learned manifold storage.
---
## 2. Graph & Hypergraph Libraries
### Core Graph Libraries
| Crate | Description | Features | Use Case |
|-------|-------------|----------|----------|
| **[petgraph](https://github.com/petgraph/petgraph)** | Primary Rust graph library | Graph/StableGraph/GraphMap, algorithms | Base graph operations |
| **[simplicial_topology](https://lib.rs/crates/simplicial_topology)** | Simplicial complexes | Random generation (Linial-Meshulam), upward/downward closure | TDA primitives |
### petgraph Capabilities
```rust
use petgraph::Graph;
use petgraph::algo::{toposort, kosaraju_scc, tarjan_scc};
// Topological sort for dependency ordering
let sorted = toposort(&graph, None)?;
// Strongly connected components for hyperedge detection
let sccs = kosaraju_scc(&graph);
```
### Simplicial Complex Operations
```toml
[dependencies]
simplicial_topology = { version = "0.1.1", features = ["sc_plot"] }
```
**Supported Models**:
- Linial-Meshulam (random hypergraphs)
- Lower/Upper closure
- Pure simplicial complexes
### Gap Analysis
No dedicated Rust hypergraph crate exists. Current approach:
1. Use petgraph for base graph operations
2. Extend with simplicial_topology for TDA
3. Implement hyperedge layer consuming ruvector-graph
---
## 3. Topological Data Analysis
### Persistent Homology
| Crate | Description | Features |
|-------|-------------|----------|
| **[tda](https://crates.io/crates/tda)** | TDA for neuroscience | Persistence diagrams, Mapper algorithm |
| **[teia](https://crates.io/crates/teia)** | Persistent homology library | Column reduction, persistence pairing |
| **[annembed](https://lib.rs/crates/annembed)** | UMAP-style dimension reduction | Links to Julia Ripserer.jl for TDA |
### tda Crate Structure
```rust
use tda::simplicial_complex::SimplicialComplex;
use tda::persistence::PersistenceDiagram;
use tda::mapper::Mapper;
// Compute persistent homology
let complex = SimplicialComplex::from_point_cloud(&points, epsilon);
let diagram = complex.persistence_diagram();
```
### teia CLI
```bash
# Compute homology generators
teia homology complex.json
# Compute persistent homology
teia persistence complex.json
```
**Planned Features** (teia):
- Persistent cohomology
- Lower-star complex
- Vietoris-Rips complex
---
## 4. WASM & NAPI-RS Integration
### WASM Ecosystem
| Crate | Description | Use Case |
|-------|-------------|----------|
| **[wasm-bindgen](https://crates.io/crates/wasm-bindgen)** | JS/Rust interop | Browser deployment |
| **[wasm-bindgen-futures](https://crates.io/crates/wasm-bindgen-futures)** | Async WASM | Async vector operations |
| **[web-sys](https://crates.io/crates/web-sys)** | Web APIs | Worker threads, WebGPU |
| **[js-sys](https://crates.io/crates/js-sys)** | JS types | ArrayBuffer interop |
### NAPI-RS for Node.js
| Crate | Description | Use Case |
|-------|-------------|----------|
| **[napi](https://crates.io/crates/napi)** | Node.js bindings | Server-side deployment |
| **[napi-derive](https://crates.io/crates/napi-derive)** | Macro support | Ergonomic API generation |
### Integration Pattern (ruvector style)
```rust
// NAPI-RS binding example
#[napi]
pub struct VectorIndex {
inner: Arc<RwLock<HnswIndex>>,
}
#[napi]
impl VectorIndex {
#[napi(constructor)]
pub fn new(dimensions: u32) -> Result<Self> { ... }
#[napi]
pub async fn search(&self, query: Float32Array, k: u32) -> Result<SearchResults> { ... }
}
```
### WASM Neural Network Inference
| Tool | Description | Size |
|------|-------------|------|
| **WasmEdge WASI-NN** | TensorFlow/ONNX in WASM | Container: ~4MB |
| **Tract** | Native ONNX inference engine | Binary: ~500KB |
| **EdgeBERT** | Custom BERT inference | ~429KB WASM + 30MB model |
---
## 5. Post-Quantum Cryptography
### Primary Libraries
| Crate | Description | Algorithms |
|-------|-------------|------------|
| **[pqcrypto](https://github.com/rustpq/pqcrypto)** | Post-quantum crypto | Multiple NIST candidates |
| **[liboqs-rust](https://github.com/open-quantum-safe/liboqs-rust)** | OQS bindings | Full liboqs suite |
| **[kyberlib](https://kyberlib.com/)** | CRYSTALS-Kyber | ML-KEM (FIPS 203) |
### NIST Standardized Algorithms
```rust
// Kyber example (key encapsulation)
use kyberlib::{keypair, encapsulate, decapsulate};
let (public_key, secret_key) = keypair()?;
let (ciphertext, shared_secret_a) = encapsulate(&public_key)?;
let shared_secret_b = decapsulate(&ciphertext, &secret_key)?;
assert_eq!(shared_secret_a, shared_secret_b);
```
### Algorithm Support
- **ML-KEM** (Kyber): Key encapsulation
- **ML-DSA** (Dilithium): Digital signatures
- **FALCON**: Alternative signatures
- **SPHINCS+**: Hash-based signatures
---
## 6. Distributed Systems & Consensus
### Consensus Primitives
| Crate | Description | Use Case |
|-------|-------------|----------|
| **ruvector-raft** | Raft consensus | Leader election, log replication |
| **ruvector-cluster** | Cluster management | Node discovery, sharding |
| **ruvector-replication** | Data replication | Multi-region sync |
### CRDT Candidates
| Crate | Description | Status |
|-------|-------------|--------|
| **[crdts](https://crates.io/crates/crdts)** | CRDT implementations | Production-ready |
| **[automerge](https://crates.io/crates/automerge)** | JSON CRDT | Collaborative editing |
### ruvector Integration
```rust
// Existing ruvector-raft capabilities
use ruvector_raft::{RaftNode, RaftConfig};
use ruvector_cluster::{ClusterManager, NodeDiscovery};
let config = RaftConfig::default()
.with_election_timeout(Duration::from_millis(150))
.with_heartbeat_interval(Duration::from_millis(50));
let node = RaftNode::new(config, storage)?;
```
---
## 7. Performance & SIMD
### SIMD Libraries
| Crate | Description | Use Case |
|-------|-------------|----------|
| **[simsimd](https://crates.io/crates/simsimd)** | SIMD similarity functions | Distance metrics |
| **[packed_simd_2](https://crates.io/crates/packed_simd_2)** | Portable SIMD | General vectorization |
| **[wide](https://crates.io/crates/wide)** | Wide SIMD types | AVX-512 operations |
### ruvector Usage
```rust
// simsimd for distance calculations (already in ruvector-core)
use simsimd::{cosine, euclidean, dot};
let similarity = cosine(&vec_a, &vec_b);
let distance = euclidean(&vec_a, &vec_b);
```
### Parallelism
| Crate | Description | Use Case |
|-------|-------------|----------|
| **[rayon](https://crates.io/crates/rayon)** | Data parallelism | Parallel iterators |
| **[crossbeam](https://crates.io/crates/crossbeam)** | Concurrency primitives | Lock-free structures |
| **[tokio](https://crates.io/crates/tokio)** | Async runtime | Async I/O, networking |
---
## 8. Serialization & Storage
### Serialization
| Crate | Description | Speed | Size |
|-------|-------------|-------|------|
| **[rkyv](https://crates.io/crates/rkyv)** | Zero-copy deserialization | Fastest | Moderate |
| **[bincode](https://crates.io/crates/bincode)** | Binary serialization | Fast | Small |
| **[serde](https://crates.io/crates/serde)** | Serialization framework | Varies | Varies |
### Storage Backends
| Crate | Description | Use Case |
|-------|-------------|----------|
| **[redb](https://crates.io/crates/redb)** | Embedded ACID database | Persistent storage |
| **[memmap2](https://crates.io/crates/memmap2)** | Memory mapping | Large file access |
| **[hnsw_rs](https://crates.io/crates/hnsw_rs)** | HNSW index | Vector similarity |
---
## 9. Emerging Research Libraries
### Neuromorphic Simulation
| Status | Description | Gap |
|--------|-------------|-----|
| ⚠️ Limited | No mature Rust SNN library | Opportunity |
**Current Options**:
- Bind to C++ Brian2/NEST via FFI
- Port key algorithms from Python implementations
- Build minimal spike encoding layer
### Photonic Simulation
| Status | Description | Gap |
|--------|-------------|-----|
| ⚠️ None | No Rust photonic neural network library | Major gap |
**Approach**: Abstract optical matrix-multiply as backend trait
### Memristor Simulation
| Status | Description | Gap |
|--------|-------------|-----|
| ⚠️ None | No Rust memristor crossbar simulation | Research opportunity |
---
## 10. Recommended Stack for EXO-AI
### Core Foundation (ruvector SDK)
```toml
[dependencies]
ruvector-core = "0.1.16"
ruvector-graph = "0.1.16"
ruvector-gnn = "0.1.16"
ruvector-raft = "0.1.16"
ruvector-cluster = "0.1.16"
```
### ML/Tensor Operations
```toml
burn = { version = "0.14", features = ["wgpu", "ndarray"] }
candle-core = "0.6"
ndarray = { version = "0.16", features = ["serde"] }
```
### TDA/Topology
```toml
petgraph = "0.6"
simplicial_topology = "0.1"
teia = "0.1"
tda = "0.1"
```
### Post-Quantum Security
```toml
pqcrypto = "0.18"
kyberlib = "0.0.6"
```
### WASM/NAPI
```toml
wasm-bindgen = "0.2"
napi = { version = "2.16", features = ["napi9", "async", "tokio_rt"] }
napi-derive = "2.16"
```
### Distribution
```toml
tokio = { version = "1.41", features = ["full"] }
rayon = "1.10"
crossbeam = "0.8"
```
---
## Library Maturity Assessment
| Category | Maturity | Notes |
|----------|----------|-------|
| Tensors/ML | 🟢 High | Burn, Candle production-ready |
| Graphs | 🟢 High | petgraph is mature |
| Hypergraphs | 🟡 Medium | Need to build on simplicial_topology |
| TDA | 🟡 Medium | tda/teia usable, feature-incomplete |
| PQ Crypto | 🟢 High | Multiple options, NIST standardized |
| WASM | 🟢 High | wasm-bindgen ecosystem mature |
| NAPI-RS | 🟢 High | ruvector already uses successfully |
| Neuromorphic | 🔴 Low | Major gap, build or bind |
| Photonic | 🔴 Low | No existing libraries |
| Memristor | 🔴 Low | Research prototype needed |