This page provides technical instructions for setting up the Infino development environment, building the core Rust engine and its language bindings, and executing the validation suite.
Infino is built with Rust and targets high-performance retrieval using modern CPU features.
rust-toolchain.toml to pin the exact stable version. As of the current release, Rust 1.95 is the minimum required version due to dependencies on AVX-512 intrinsics and specific std APIs Cargo.toml5-8make miri, make asan). Install with rustup toolchain install nightly and, for miri, rustup +nightly component add miri CONTRIBUTING.md12-15cargo-llvm-cov: Required for local coverage reporting CONTRIBUTING.md16-17cargo-public-api: Required for validating public API surface stability Makefile28-29pre-commit: Recommended for local development to catch issues before CI CONTRIBUTING.md18-21Sources: Cargo.toml1-10 CONTRIBUTING.md6-21 Makefile22-30 rust-toolchain.toml1-2
The project uses pre-commit to enforce code quality. After installing the pre-commit tool, run:
The hooks execute rustfmt (with specific imports_granularity=Crate rules), cargo check, clippy, and various file hygiene checks CONTRIBUTING.md68-75 .pre-commit-config.yaml1-40 Makefile10-13
The core engine uses mimalloc as the #[global_allocator] by default for performance Cargo.toml65-73 However, when building language bindings (e.g., the Python extension module), this must be disabled (default-features = false) to avoid segmentation faults when loaded into a host process that has its own allocator Cargo.toml68-71
Sources: CONTRIBUTING.md23-29 .pre-commit-config.yaml1-40 Cargo.toml65-73
The Makefile serves as the central entry point for all development tasks, ensuring consistent tool invocations across local and CI environments.
| Target | Command / Description |
|---|---|
make check | Runs cargo fmt check, clippy with warnings denied, and parity/doc checks Makefile12-16 |
make fmt | Applies project-standard formatting, including import layout rules Makefile19-20 |
make test | Runs the full test suite with the test-helpers feature enabled Makefile54-55 |
make ci | Alias for check + coverage. The mandatory gate before merging CONTRIBUTING.md88-91 |
Infino employs advanced safety checks for its unsafe surface area (primarily in FTS and format parsing).
superfile::fts surface Makefile83-96std with instrumentation Makefile98-118public-api.txt to prevent accidental breaking changes Makefile29-32scripts/check_api_parity.py Makefile41-42| Target | Description |
|---|---|
make python-test | Builds PyO3 extension using maturin develop and runs pytest in a local venv Makefile139-144 |
make node-test | Builds napi-rs addon and runs smoke tests Makefile6 CONTRIBUTING.md58 |
make node-verify | Executes infino-node/scripts/verify-pack.sh to prove the installed package resolves its prebuilt binary infino-node/scripts/verify-pack.sh5-13 |
Sources: Makefile1-155 CONTRIBUTING.md83-106 infino-node/scripts/verify-pack.sh1-147 api-parity.txt1-27
The following diagrams illustrate how developers interact with the build system and how code entities are structured.
This diagram maps developer commands to the internal Rust tools and project-specific scripts.
Sources: Makefile12-62 CONTRIBUTING.md83-106 Cargo.toml74-84
This diagram maps the binding logic to the code entities that manage cross-language interop.
Sources: infino-python/python/infino/__init__.py11-19 infino-python/python/infino/_infino.pyi21-43 infino-node/scripts/verify-pack.sh126-142 api-parity.txt9-26
.unwrap(): The crate enforces #![deny(clippy::unwrap_used)]. Use ? for error propagation or .expect("invariant: ...") with a clear explanation CONTRIBUTING.md109-113make ci to verify that the overall project coverage remains above 90% CONTRIBUTING.md120-121 Makefile58-59public-api.txt) must be intentional and accompanied by a make public-api-update in the same commit Makefile22-35tests/license_audit.rs to ensure all dependencies are compatible with Apache-2.0 and cloud-friendly deployment tests/license_audit.rs4-20benches/utils but excludes infino-python and infino-node to keep toolchain requirements separate Cargo.toml51-57Sources: CONTRIBUTING.md107-134 Makefile22-35 Cargo.toml51-57 tests/license_audit.rs1-100
Refresh this wiki