Skip to content

Latest commit

 

History

History
91 lines (63 loc) · 2.99 KB

File metadata and controls

91 lines (63 loc) · 2.99 KB

Contributing to chelae

This document is for developers working on chelae itself. End-user documentation lives in README.md.

Pre-push checks

Before pushing, run the full verification suite:

bash ci/check.sh

This runs cargo fmt, cargo clippy --all-features --all-targets -- -D warnings, and cargo test. CI also runs a --locked version via src/scripts/precommit.sh.

For local development, cargo build --release uses target-cpu=native (see .cargo/config.toml) for fastest local runs.

Code organization

The project follows conventions documented in CLAUDE.md — section ordering within command modules, impl-block collocation, and callers-before-callees inside an impl. Please read CLAUDE.md before making structural changes.

Updating the README

The README contains a hand-curated Options table that summarizes every chelae trim flag. When adding, removing, or renaming an option (or materially changing its meaning or default), update that table in README.md so the public docs stay in step with the CLI. The full chelae trim --help output remains the authoritative reference — the README table is a short-form pointer to it.

Changelog

CHANGELOG.md follows the Keep a Changelog format and is promoted on release by cargo-release. As you make user-visible changes, add a bullet under the [Unreleased] section heading using the appropriate subsection (Added, Changed, Deprecated, Removed, Fixed, or Security).

Releasing a new version

Pre-requisites

Install cargo-release:

cargo install cargo-release

Dry run

Verify the release plan without publishing:

cargo release [major|minor|patch|release|rc] --no-publish

Dry-run is the default for cargo-release; add --execute once the output looks right.

release.toml in the repo root configures the tag format (vX.Y.Z), the CHANGELOG promotion ([Unreleased] → a versioned section), and disables crates.io publishing from cargo release itself — publishing is done from CI on tag.

See the cargo-release reference documentation for more.

Semantic versioning

chelae follows Semantic Versioning:

  • MAJOR when you make incompatible API changes,
  • MINOR when you add functionality in a backwards-compatible manner,
  • PATCH when you make backwards-compatible bug fixes.

Benchmark pipeline

The benchmark pipeline that produces the numbers in README.md and benchmark-pipeline/RESULTS.md is documented separately in benchmark-pipeline/README.md. That's where to look if you're modifying tool render scripts, adding a new tool to the comparison, changing the sample matrix, or re-running the benchmark suite.