# Changelog
All notable changes to weir are documented here. The format follows
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and the crate
versioning follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
### Added
- Crate-level doctest demonstrating `try_compute_dominators` on a diamond CFG.
- `fold_summary_partials` runnable example documenting the `(count, any, checksum)` triple-fold semantics (corrected: `any` is a boolean reachability flag, not a bit-OR).
- `benches/primitive_scale.rs` perf ladder at 1k/10k/100k/1M nodes for `stable_csr_layout_hash` (linear chain + fanout-2 tree), `try_compute_dominators` (linear chain), and `fold_summary_partials` (3-aligned bin lengths 513/3072/24576/196608).
- Cargo metadata for crates.io publish-readiness: `homepage`, `documentation`, `keywords`, `categories`.
- Proptest depth bumped from 256/512 to **10,000 cases** across 16 `tests/df_property_*.rs` files and the in-tree `andersen_monotonicity_proptest` (per CLAUDE.md gate-6).
### Fixed
- README mis-claim: prior text said the default feature set enabled `serde`. Cargo.toml has `default = []`. README now describes the actual minimal default and how to opt into `serde` + `cpu-parity`.
### Performance baselines captured 2026-05-22
| `stable_csr_layout_hash` (linear chain) | 9.1 µs | 94 µs | 928 µs | 9.15 ms |
| `stable_csr_layout_hash` (fanout-2 tree) | 9.2 µs | 88 µs | 886 µs | 8.87 ms |
| `try_compute_dominators` (linear chain) | 59 µs | 809 µs | 44 ms | n/a |
| `fold_summary_partials` | 59 ns @513 | 322 ns @3072 | 2.5 µs @24576 | 34 µs @196608 |
The `stable_csr_layout_hash` and `fold_summary_partials` paths scale linearly. The host-CPU `try_compute_dominators` shows super-linear growth between 10k and 100k blocks (55×) on the linear-chain worst case, downstream consumers needing dominator info at linux-subsystem scale should route through `vyre_primitives::graph::dominator_tree` (the GPU bitset path that surgec already uses).
## [0.1.0]. Unreleased
Initial dataflow primitives release covering SSA, reaching-defs, IFDS (with resident batch + reachability witness), points-to (Andersen), backward slicing, liveness, dominators, range checks, callgraph, control-dependence, cross-language edge fusion, escape, must-init / SCC / value-set queries, function and loop summaries, soundness contracts, and graph-layout hashing. See `INVENTORY.md` for the full module + bench surface inventory.