This document is intended for the core maintainers of the webarkit/purecv repository. It outlines the responsibilities, architectural mandates to enforce during code reviews, and the exact steps required to publish a new release.
- Walter Perdan (@kalwalt) - Creator & Lead Maintainer
When reviewing Pull Requests, maintainers must ensure that the following core principles of the purecv project are strictly upheld:
- Zero-FFI Policy: Absolutely no C++ linking,
bindgen, orccis allowed. Every algorithm must be written in pure, idiomatic Rust. - Memory Safety: Ensure Rust's ownership model is respected. Verify that buffers rely on
Vec<T>orBox<[T]>and that there are no unnecessary memory allocations inside hot loops. - Internal Data Layout: Algorithms must expect and maintain Row-Major contiguous memory within the
Matrix<T>struct. - Feature Gating: * Concurrency (
parallelfeature via Rayon) must have a sequential fallback.- Vectorization (
simdfeature via Pulp) must be optional and gracefully degrade to standard iterators or auto-vectorization when disabled. - WebAssembly (
wasmfeature) compatibility must be preserved.
- Vectorization (
- Language: All comments, docstrings, and commit messages must be in English.
- Conventional Commits: PR titles and commit messages must follow the Conventional Commits specification. PRs should be strictly squashed and merged.
Publishing a new version requires a mix of manual changelog curation and automated CI/CD deployment. Follow these steps sequentially:
- Ensure you are on the
devbranch and it is up to date. - Verify that all CI checks (Formatting, Clippy, Tests for
parallelandsimd) are passing on the latest commit.
Update the version number in the Cargo.toml file of the workspace.
We use git-cliff to parse the conventional commits and update the historical changelog. Run the following command in the root directory:
npx git-cliff -u --prepend CHANGELOG.md