cch 0.3.0

Pure-Rust Customizable Contraction Hierarchies (CCH): build, customize in parallel, and serve fast shortest-path distance, many-to-many matrix, and path queries on road networks
Documentation
# Changelog

All notable changes to this crate are documented here.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.3.0] - 2026-07-14

### Added

- `distance` — point-to-point shortest-path distance convenience wrapper.
- `distances_from` — one-to-many shortest-path distances convenience wrapper.
- Env-gated real-corpus benchmark (`benches/real_corpus.rs`, `CCH_CORPUS` /
  `CCH_CORPUS_METRIC`) measuring customize parallel scaling and query latency on
  a genuine road network.

## [0.2.0] - 2026-07-09

### Added

- `Customizer` (via `Cch::customizer`) — a reusable customizer that derives the
  elimination-tree level partition once and reuses output buffers across many
  metrics through `Customizer::customize_into`, avoiding per-call allocation on
  the hot re-customization path.

### Changed

- Customization now runs in parallel. Phase-1 reset parallelizes over
  independent arcs; the phase-2 lower-triangle relaxation runs level by level
  (barrier between levels, nodes parallel within a level). Output remains
  **bit-identical** to the previous serial implementation and to the C++
  RoutingKit oracle.
- `rayon` is now a dependency. It is pure Rust, so the crate remains free of any
  C++ or FFI.
- `Cch::customize` is unchanged in signature and output (byte-for-byte); it is
  now a thin wrapper over `Customizer`.

### Notes

- The parallel relaxation's data-race-freedom is contracted to a well-formed
  (chordal) CCH as produced by `Cch::build` or a faithful `load_struct`
  round-trip; a one-time bounds validation additionally guards against
  out-of-bounds access for any bounds-valid structure.

## [0.1.1] - 2026-06-25

### Changed

- Query paths reach parity with the C++ RoutingKit oracle by eliding per-arc
  bounds checks in the hot relaxation loops.

## [0.1.0] - 2026-06-25

### Added

- Initial release: the complete CCH pipeline in pure, safe Rust — contraction
  order (`degree_order`, `inertial_order`), structure build (`Cch::build`),
  per-metric customization, memory-mappable bundle read/write, and
  distance / distance-matrix / shortest-path queries — validated bit-for-bit
  against RoutingKit.

[0.3.0]: https://github.com/Rodeapps/cch/compare/v0.2.0...v0.3.0
[0.2.0]: https://github.com/Rodeapps/cch/compare/v0.1.1...v0.2.0
[0.1.1]: https://github.com/Rodeapps/cch/compare/v0.1.0...v0.1.1
[0.1.0]: https://github.com/Rodeapps/cch/releases/tag/v0.1.0