bloom-lib 1.0.0

Probabilistic data structure library: Bloom filters, Cuckoo filters, Count-Min Sketch, HyperLogLog, MinHash, and Top-K. Tunable false-positive rates, serializable state, merge support, and streaming-safe updates.
Documentation
# Changelog

All notable changes to `bloom-lib` will be documented in this file.

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

---

## [Unreleased]

### Added

### Changed

### Fixed

### Security

---

## [1.0.0] - 2026-05-29

First stable release. The public API is frozen and follows SemVer from here; see
[`docs/API.md#compatibility`](docs/API.md#compatibility). No functional changes
since v0.9.0.

### Changed

- Documented the API freeze and SemVer promise in `README.md` (Stability) and
  `docs/API.md` (Compatibility).

---

## [0.9.0] - 2026-05-28

Feature freeze and pre-1.0 audit. No new functionality; hardening and
verification only. The full audit report is in `docs/release/v0.9.0.md`.

### Added

- Unit tests for every `Error` variant's `Display` output and the
  `std::error::Error` implementation.
- `deny.toml` supply-chain policy for `cargo deny check` (advisories, bans,
  licenses, sources).

### Changed

- Marked `BloomFilter::contains` and `CuckooFilter::contains` `#[must_use]`;
  ignoring a membership check is almost always a bug.
- Declared `required-features` on every example so `--no-default-features`
  builds skip them cleanly.

---

## [0.5.0] - 2026-05-28

### Added

- `CuckooFilter<T, S>` — approximate set membership with deletion support
  (`insert`, `contains`, `remove`, `len`, `capacity`, `load_factor`, `clear`),
  using 16-bit fingerprints, 4-slot buckets, and a victim cache for correctness
  at the load limit.
- `CountMinSketch<T, S>` — saturating frequency estimation (`add`, `increment`,
  `estimate`, `total_count`, `width`, `depth`, `merge`, `clear`).
- `HyperLogLog<T, S>` — distinct-count estimation with bias correction and
  linear counting (`insert`, `count`, `merge`, `clear`, `precision`,
  `with_error_rate`).
- `MinHash<T, S>` — Jaccard similarity estimation (`insert`, `similarity`,
  `merge`, `num_hashes`, `clear`).
- `TopK<T, S>` — heavy-hitter tracking over a Count-Min Sketch (`insert`,
  `estimate`, `top`, `k`, `len`, `clear`).
- Property-test suite (`tests/proptests.rs`) covering the no-false-negative,
  never-undercount, cardinality-envelope, and similarity-bound invariants.
- Criterion benchmark harness (`benches/probabilistic.rs`) for every hot path.
- Five new examples: `membership_with_deletion`, `frequency`, `cardinality`,
  `similarity`, `top_words`.
- Internal `hash::mix64` avalanche helper for low-entropy inputs.

### Changed

- `docs/API.md` and `README.md` document the full structure set with parameters,
  examples, and measured benchmark figures.

---

## [0.2.0] - 2026-05-28

### Added

- `BloomFilter<T, S>` — a classic Bloom filter with a tunable false-positive
  rate, generic over the item type and `BuildHasher`. Supports `new`,
  `with_dimensions`, `with_hasher`, `with_dimensions_and_hasher`, `insert`
  (with a novelty flag), `contains`, `clear`, `merge`, `count_ones`, `is_empty`,
  `num_bits`, `num_hashes`, `estimated_len`, and `estimated_false_positive_rate`.
- `Error` — the crate-wide, `#[non_exhaustive]`, allocation-free error type with
  `InvalidParameter`, `IncompatibleParameters`, and `CapacityExceeded` variants;
  implements `Display` and (under `std`) `std::error::Error`.
- `hash` module — `DefaultHasher`, a fast deterministic 64-bit hasher, and
  `DefaultHashBuilder`, the zero-sized default `BuildHasher`.
- `prelude` module re-exporting the common types.
- `alloc` and `serde` Cargo features. `serde` derives `Serialize`/`Deserialize`
  for every structure; `alloc` enables the structures on heap-capable `no_std`
  targets.
- `docs/API.md` reference covering the complete public surface, and a
  `bloom_dedup` example.

### Changed

- Replaced the placeholder `REPS.md` with the canonical standards (REPS v0.2.0).
- `std` now implies `alloc`.

### Fixed

- Added `.gitattributes` to normalize line endings to LF, preventing the
  Windows CI runner from failing `cargo fmt --check` under `autocrlf`.

---

## [0.1.0] - 2026-05-18

### Added

- Initial scaffold and repository bootstrap.
- REPS compliance baseline.
- CI for Linux/macOS/Windows on stable and MSRV (1.75).

[Unreleased]: https://github.com/jamesgober/bloom-lib/compare/v1.0.0...HEAD
[1.0.0]: https://github.com/jamesgober/bloom-lib/releases/tag/v1.0.0