Skip to content

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 test before submitting
  • If changing benchmark-visible code, run relevant benchmarks and update benchmark-results/
  • Keep commits focused — one logical change per commit