Contributing¶
Setup¶
# Clone the repo
git clone https://github.com/sophiaconsulting/fast-suffix-array.git
cd fast-suffix-array
# Rust (required for all targets)
rustup update stable
# Python bindings
cd bindings/python
uv run maturin develop --release
cd ../..
# WASM bindings
wasm-pack build bindings/wasm --target nodejs --release --out-dir ../../pkg
# Documentation site
pip install mkdocs-material
mkdocs serve # preview at http://localhost:8000
Running tests¶
just test # all tests (Rust + Python + JS)
just test-rust # Rust unit + corpus tests
just test-python # Python pytest suite
just test-js # JS/WASM compatibility tests
Running benchmarks¶
just bench-fm-all # all Python FM-index benchmarks
just bench-fm-js # JS FM-index benchmarks
just bench-readme # WASM vs mnemonist
Results are saved to benchmark-results/ as JSON. See Benchmarks for methodology.
Pull requests¶
- Run
just testbefore submitting - If changing benchmark-visible code, run relevant benchmarks and update
benchmark-results/ - Keep commits focused — one logical change per commit