From 3912202faa4315802aff78658c0339db6d35cc8f Mon Sep 17 00:00:00 2001 From: tison Date: Tue, 25 Aug 2026 09:41:08 +0800 Subject: [PATCH] docs: update changelog guidance --- AGENTS.md | 2 ++ CHANGELOG.md | 17 +++++++++++++++++ CONTRIBUTING.md | 8 ++++++++ 3 files changed, 27 insertions(+) diff --git a/AGENTS.md b/AGENTS.md index c6b6b36d..1a53378a 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -3,3 +3,5 @@ Before planning or modifying this repository, read [CONTRIBUTING.md](CONTRIBUTING.md) in full and treat its build, test, integration-test layout, and serialization snapshot guidance as repository requirements. For test changes, pay particular attention to the "Integration test layout" and "Serialization snapshots" sections. Keep the documented workflow synchronized with structural changes, and run the applicable `cargo x check`, `cargo x test`, and `cargo x lint` commands before handing work back. + +Apply the changelog guidance in [CONTRIBUTING.md](CONTRIBUTING.md) to every change. Update the permanent `Unreleased` section in the same pull request for significant user-visible behavior, and do not add entries mechanically for excluded maintenance work. diff --git a/CHANGELOG.md b/CHANGELOG.md index ad6104c0..91629ca4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,23 @@ All significant changes to this project will be documented in this file. ## Unreleased +### Breaking changes + +* Change `ThetaIntersection::to_sketch` and `TupleIntersection::to_sketch` to return `Option`. Callers must handle `None` before the first successful update; after that, the methods return `Some` even when the intersection is empty. + +### New features + +* Add Relative Error Quantiles (REQ) sketches behind the `req` feature, including configurable high- or low-rank accuracy, rank, quantile, PMF, and CDF queries, merging and unions, and C++/Java-compatible serialization. + +### Performance improvements + +* Reduce T-Digest allocation overhead and retained memory across updates, compression, merges, serialization, deserialization, and freezing while preserving the serialized format. + +### Bug fixes + +* T-Digest compression now handles `k = u16::MAX` without overflowing the scale normalization input. +* T-Digest deserialization now validates declared payload lengths before allocating. Updating a deserialized digest whose unmerged buffer already exceeds the compression threshold now compresses it instead of allowing the buffer to grow without bound. + ## v0.4.0 (2026-08-18) ### Breaking changes diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 48acafab..dcbe46f0 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -72,6 +72,14 @@ cargo x bench - End summary sentences with punctuation, and format Rust identifiers, literals, and numeric ranges as inline code. - Put contract sections and compatibility notes before examples. When applicable, order sections as `# Errors`, `# Panics`, and `# Examples`. Include only sections that describe an actual contract. +## Changelog + +- Update `CHANGELOG.md` in the same pull request for significant user-visible changes. Compare the final behavior with the latest release tag rather than recording the sequence of commits that produced it. +- Include public API migrations, new capabilities, correctness or compatibility changes, and meaningful performance improvements. Exclude tests, internal refactors, documentation, CI, tooling, and dependency maintenance unless they change supported or observable behavior. +- Keep the permanent `## Unreleased` section at the top. Group entries under user-facing categories consistent with earlier releases, and add only categories that contain entries. +- Write one bullet for each coherent behavior. Combine related commits, describe the observable impact, and give the required migration for breaking changes. Do not include pull request numbers, issue numbers, discarded intermediate APIs, or implementation history. +- During release preparation, insert `## vX.Y.Z` without a date immediately below `## Unreleased` and move the accumulated entries into it. Add the actual UTC release date in `YYYY-MM-DD` format after the release; do not guess it in advance or remove `## Unreleased`. + ## Integration test layout Integration tests for the `datasketches` crate live under `datasketches/tests` and use two entry-point patterns.