--- html_theme.sidebar_primary.remove: true --- # Development Guide ## Prerequisites - **Python**: 3.10–3.13 - **Rust**: Stable toolchain with `cargo` - **maturin**: `pip install maturin` - **Virtual environment**: `python -m venv .venv` (recommended) - **Platforms**: Windows, Linux, macOS ## Quickstart (Windows PowerShell) ```powershell .venv/Scripts/Activate.ps1 maturin develop -m crates/lacuna-py/Cargo.toml cargo test -q pytest -q python/tests ``` ## Quickstart (macOS/Linux) ```bash python -m venv .venv source .venv/bin/activate pip install maturin maturin develop -m crates/lacuna-py/Cargo.toml cargo test -q pytest -q python/tests ``` ## Development build - `maturin develop -m crates/lacuna-py/Cargo.toml` - Compiles Rust crates and installs the Python module into the active venv for iterative dev. ## Testing - **Rust tests**: `cargo test -q` - **Python tests**: `pytest -q python/tests` ## Formatting and linting - **Rust format**: `cargo fmt --all` - **Rust lint (Clippy)**: `cargo clippy -q --all-targets --all-features` ## Benchmarks - Run benchmark scripts directly, e.g.: - `python python/benchmarks/benchmark_spmv.py` - `python python/benchmarks/benchmark_spmm.py` ## Building wheels - Windows: `./scripts/build_wheels.ps1` - macOS/Linux: `bash ./scripts/build_wheels.sh` ## Repository layout (high level) - `crates/` Rust crates - `lacuna-core/` core data structures and reference kernels - `lacuna-kernels/` optimized parallel/SIMD kernels - `lacuna-io/` IO utilities - `lacuna-py/` PyO3 bindings - `python/` Python package `lacun/` and tests/benchmarks - `docs/` Sphinx docs (MyST Markdown) - `scripts/` helper scripts (wheels, release, datasets) ## Contribution workflow 1. Create a feature branch. 2. Develop with `maturin develop` and an active venv. 3. Run `cargo test -q` and `pytest -q python/tests`. 4. Ensure `cargo fmt` and `cargo clippy` pass. 5. Open a PR with a short description of changes and benchmarks if relevant.