16 releases
| new 0.1.15 | Feb 15, 2026 |
|---|---|
| 0.1.14 | Jan 30, 2026 |
| 0.1.4 | Dec 16, 2025 |
| 0.1.2 | Nov 30, 2025 |
#2130 in Database interfaces
2,663 downloads per month
Used in 17 crates
(7 directly)
220KB
4K
SLoC
Call graphs, dependencies, AST traversals with 10-250x GPU acceleration.
Features
- CSR Storage: Compressed Sparse Row for O(1) neighbor queries
- GPU Acceleration: BFS (250x), PageRank (100x) via WGSL shaders
- Parquet Persistence: DuckDB-inspired columnar storage
- Louvain Clustering: Community detection for code modules
- Anti-Pattern Detection: God Class, Circular Dependencies, Dead Code
- VRAM Paging: Morsel-based tiling for large graphs
Installation
[dependencies]
trueno-graph = "0.1"
# Optional: GPU acceleration
trueno-graph = { version = "0.1", features = ["gpu"] }
Quick Start
use trueno_graph::{CsrGraph, NodeId, pagerank, bfs};
let mut graph = CsrGraph::new();
graph.add_edge(NodeId(0), NodeId(1), 1.0)?;
graph.add_edge(NodeId(0), NodeId(2), 1.0)?;
// Graph algorithms
let reachable = bfs(&graph, NodeId(0))?;
let scores = pagerank(&graph, 20, 1e-6)?;
// Persistence
graph.write_parquet("graph").await?;
GPU Usage
use trueno_graph::gpu::{GpuDevice, GpuCsrBuffers, gpu_bfs};
let device = GpuDevice::new().await?;
let buffers = GpuCsrBuffers::from_csr_graph(&device, &graph)?;
let result = gpu_bfs(&device, &buffers, NodeId(0)).await?;
Performance
| Operation | Graph Size | CPU | GPU | Speedup |
|---|---|---|---|---|
| BFS | 5K nodes | 6ms | 200µs | 30x |
| PageRank | 1K nodes | 15ms | 500µs | 30x |
Development
make test # Run tests
make coverage # ≥95% coverage
make bench # Benchmarks
License
MIT
Dependencies
~56–96MB
~1.5M SLoC