From 5386e299319e57a6fe3cd00d0b8799b6d539e827 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 15 Jul 2026 01:21:25 +0000 Subject: [PATCH 1/2] chore: release v0.25.0 --- Cargo.toml | 2 +- differential-dataflow/CHANGELOG.md | 23 +++++++++++++++++++++++ differential-dataflow/Cargo.toml | 2 +- dogsdogsdogs/CHANGELOG.md | 7 +++++++ dogsdogsdogs/Cargo.toml | 2 +- 5 files changed, 33 insertions(+), 3 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 3052ba940..4a65eae7d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,7 +22,7 @@ edition = "2021" rust-version = "1.86" [workspace.dependencies] -differential-dataflow = { path = "differential-dataflow", default-features = false, version = "0.24.0" } +differential-dataflow = { path = "differential-dataflow", default-features = false, version = "0.25.0" } timely = { version = "0.31", default-features = false } columnar = { version = "0.13", default-features = false } #timely = { git = "https://github.com/TimelyDataflow/timely-dataflow", default-features = false } diff --git a/differential-dataflow/CHANGELOG.md b/differential-dataflow/CHANGELOG.md index 08eba8ebe..b604595d5 100644 --- a/differential-dataflow/CHANGELOG.md +++ b/differential-dataflow/CHANGELOG.md @@ -7,6 +7,29 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.25.0](https://github.com/TimelyDataflow/differential-dataflow/compare/differential-dataflow-v0.24.0...differential-dataflow-v0.25.0) - 2026-07-15 + +### Other + +- name the shared key container to fix HRTB normalization ([#798](https://github.com/TimelyDataflow/differential-dataflow/pull/798)) +- name the shared key container to fix HRTB normalization ([#797](https://github.com/TimelyDataflow/differential-dataflow/pull/797)) +- Revert the extract-first seal; restore merge-then-extract ([#796](https://github.com/TimelyDataflow/differential-dataflow/pull/796)) +- :common — types and methods generally useful for differential computation ([#794](https://github.com/TimelyDataflow/differential-dataflow/pull/794)) +- extract-first seal ([#793](https://github.com/TimelyDataflow/differential-dataflow/pull/793)) +- Integer-proxy chunks: backend-agnostic join and reduce over (key_hash, value_id) ([#781](https://github.com/TimelyDataflow/differential-dataflow/pull/781)) +- Flip tactics from pub(crate) to pub ([#791](https://github.com/TimelyDataflow/differential-dataflow/pull/791)) +- reshape JoinTactic to an iterator of output containers ([#790](https://github.com/TimelyDataflow/differential-dataflow/pull/790)) +- document and assert the ReduceTactic / JoinTactic contracts ([#789](https://github.com/TimelyDataflow/differential-dataflow/pull/789)) +- add a model-derived `reference` tactic (differential oracle) ([#780](https://github.com/TimelyDataflow/differential-dataflow/pull/780)) +- Chunk navigation capability ([#778](https://github.com/TimelyDataflow/differential-dataflow/pull/778)) +- Add formal/: machine-checked coverage and compaction arguments in Lean ([#776](https://github.com/TimelyDataflow/differential-dataflow/pull/776)) +- Generalize join and reduce into navigation-free drivers over pluggable tactics ([#773](https://github.com/TimelyDataflow/differential-dataflow/pull/773)) +- Move layout onto the Cursor; make navigation an optional capability ([#772](https://github.com/TimelyDataflow/differential-dataflow/pull/772)) +- Remove `TraceReader::Cursor`; hard-wire `CursorList` ([#771](https://github.com/TimelyDataflow/differential-dataflow/pull/771)) +- Chunk columnar retarget ([#769](https://github.com/TimelyDataflow/differential-dataflow/pull/769)) +- `Chunk` abstraction for collections, merge batching, and batches. ([#744](https://github.com/TimelyDataflow/differential-dataflow/pull/744)) +- weigh the geometric ladder by updates; split Merger::account ([#767](https://github.com/TimelyDataflow/differential-dataflow/pull/767)) + ## [0.24.0](https://github.com/TimelyDataflow/differential-dataflow/compare/differential-dataflow-v0.23.0...differential-dataflow-v0.24.0) - 2026-05-29 ### Added diff --git a/differential-dataflow/Cargo.toml b/differential-dataflow/Cargo.toml index 3dbace3c7..4710a13ff 100644 --- a/differential-dataflow/Cargo.toml +++ b/differential-dataflow/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "differential-dataflow" -version = "0.24.0" +version = "0.25.0" authors = ["Frank McSherry "] description = "An incremental data-parallel dataflow platform" diff --git a/dogsdogsdogs/CHANGELOG.md b/dogsdogsdogs/CHANGELOG.md index c818f46d9..76b9e000b 100644 --- a/dogsdogsdogs/CHANGELOG.md +++ b/dogsdogsdogs/CHANGELOG.md @@ -7,6 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.25.0](https://github.com/TimelyDataflow/differential-dataflow/compare/differential-dogs3-v0.24.0...differential-dogs3-v0.25.0) - 2026-07-15 + +### Other + +- Fix off-by-one in lookup_map: key_con.index(1) -> index(0) ([#765](https://github.com/TimelyDataflow/differential-dataflow/pull/765)) +- Move layout onto the Cursor; make navigation an optional capability ([#772](https://github.com/TimelyDataflow/differential-dataflow/pull/772)) + ## [0.24.0](https://github.com/TimelyDataflow/differential-dataflow/compare/differential-dogs3-v0.23.0...differential-dogs3-v0.24.0) - 2026-05-29 ### Changed diff --git a/dogsdogsdogs/Cargo.toml b/dogsdogsdogs/Cargo.toml index 160dee1cd..2cea8e4e4 100644 --- a/dogsdogsdogs/Cargo.toml +++ b/dogsdogsdogs/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "differential-dogs3" -version = "0.24.0" +version = "0.25.0" authors = ["Frank McSherry "] license = "MIT" edition.workspace = true From 13be487071e6073d74f9338fb86f01dc5367b5d6 Mon Sep 17 00:00:00 2001 From: Frank McSherry Date: Tue, 14 Jul 2026 21:28:19 -0400 Subject: [PATCH 2/2] Curate v0.25.0 release notes Rewrite the release-plz-generated changelogs into the house style: categorized Added/Changed/Removed sections plus a closing summary of the breaking surface. Add the omitted timely 0.31 bump, drop the reverted extract-first seal pair (#793/#796), de-duplicate the HRTB entries, and flag the new Chunk and JoinTactic/ReduceTactic surface as experimental. Co-Authored-By: Claude Opus 4.8 (1M context) --- differential-dataflow/CHANGELOG.md | 51 +++++++++++++++++++----------- dogsdogsdogs/CHANGELOG.md | 9 ++++-- 2 files changed, 38 insertions(+), 22 deletions(-) diff --git a/differential-dataflow/CHANGELOG.md b/differential-dataflow/CHANGELOG.md index b604595d5..802a076a0 100644 --- a/differential-dataflow/CHANGELOG.md +++ b/differential-dataflow/CHANGELOG.md @@ -9,26 +9,39 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [0.25.0](https://github.com/TimelyDataflow/differential-dataflow/compare/differential-dataflow-v0.24.0...differential-dataflow-v0.25.0) - 2026-07-15 -### Other +### Added + +- `operators::common`: shared building blocks for differential operators — `TimeHistory`, `bilinear_wave`, `tile_descriptions`, `KeyView`, and `discover_times`. ([#794](https://github.com/TimelyDataflow/differential-dataflow/pull/794)) +- `TraceReader::batches_through`, exposing the batches up to a given frontier for the tactic-driven operators. ([#773](https://github.com/TimelyDataflow/differential-dataflow/pull/773)) +- `formal/`: machine-checked Lean models of differential's coverage and compaction arguments, plus a model-derived `reference` reduce tactic used as a differential oracle in tests. ([#776](https://github.com/TimelyDataflow/differential-dataflow/pull/776), [#780](https://github.com/TimelyDataflow/differential-dataflow/pull/780)) + +The following surface is new and **experimental**: it is public to enable experimentation, but the API is unstable and expected to change. + +- `Chunk` trait abstracting the container that backs collections, merge batching, and batches, with the `columnar` module retargeted onto it. ([#744](https://github.com/TimelyDataflow/differential-dataflow/pull/744), [#769](https://github.com/TimelyDataflow/differential-dataflow/pull/769), [#778](https://github.com/TimelyDataflow/differential-dataflow/pull/778)) +- Public `JoinTactic` and `ReduceTactic` traits, letting callers supply per-batch join and reduce strategies; documented with asserted contracts. ([#789](https://github.com/TimelyDataflow/differential-dataflow/pull/789), [#790](https://github.com/TimelyDataflow/differential-dataflow/pull/790), [#791](https://github.com/TimelyDataflow/differential-dataflow/pull/791)) +- Integer-proxy chunks: a backend-agnostic join and reduce over `(key_hash, value_id)` pairs. ([#781](https://github.com/TimelyDataflow/differential-dataflow/pull/781)) + +### Changed + +- Update to timely 0.31. ([f7c799c](https://github.com/TimelyDataflow/differential-dataflow/commit/f7c799c9)) +- Move layout onto the `Cursor`. Cursors now carry the key, value, time, and diff types and their containers as associated types; `BatchReader` and `TraceReader` retain only `Time`. Navigation becomes an optional cursor capability rather than a universal one. ([#771](https://github.com/TimelyDataflow/differential-dataflow/pull/771), [#772](https://github.com/TimelyDataflow/differential-dataflow/pull/772)) +- Generalize `join` and `reduce` into navigation-free drivers over pluggable tactics. `join_core`, `reduce_abelian`, and `reduce_core` gain type parameters for the tactic and output container. ([#773](https://github.com/TimelyDataflow/differential-dataflow/pull/773), [#790](https://github.com/TimelyDataflow/differential-dataflow/pull/790)) +- Rework `MergeBatcher` merge effort: weigh the geometric ladder by update counts, split `Merger::account`, and add `Merger::len`. ([#767](https://github.com/TimelyDataflow/differential-dataflow/pull/767)) +- Name the shared key container in `join` and `reduce` to fix HRTB normalization for non-reference key containers. ([#797](https://github.com/TimelyDataflow/differential-dataflow/pull/797), [#798](https://github.com/TimelyDataflow/differential-dataflow/pull/798)) +- Reorganize the experimental `columnar` module: the 0.24 `spill`, `batcher`, `builder`, `exchange`, and `arrangement` submodules give way to `layout`, `updates`, `trie_merger`, `collection`, and `trace`. Many 0.24 public types (`ValBuilder`, `ValPact`, `ValChunker`, `RecordedUpdates`, `Coltainer`, the `Spill` / `Fetch` / `SpillPolicy` traits) are removed or relocated. ([#769](https://github.com/TimelyDataflow/differential-dataflow/pull/769), [#781](https://github.com/TimelyDataflow/differential-dataflow/pull/781)) + +### Removed + +- The `LayoutExt` trait, and its supertrait bound on `BatchReader`, `TraceReader`, and `Cursor`. ([#772](https://github.com/TimelyDataflow/differential-dataflow/pull/772)) +- `TraceReader::Cursor`, `TraceReader::Storage`, and `BatchReader::Cursor` associated types, along with `BatchReader::cursor`; `CursorList` is hard-wired instead. ([#771](https://github.com/TimelyDataflow/differential-dataflow/pull/771)) -- name the shared key container to fix HRTB normalization ([#798](https://github.com/TimelyDataflow/differential-dataflow/pull/798)) -- name the shared key container to fix HRTB normalization ([#797](https://github.com/TimelyDataflow/differential-dataflow/pull/797)) -- Revert the extract-first seal; restore merge-then-extract ([#796](https://github.com/TimelyDataflow/differential-dataflow/pull/796)) -- :common — types and methods generally useful for differential computation ([#794](https://github.com/TimelyDataflow/differential-dataflow/pull/794)) -- extract-first seal ([#793](https://github.com/TimelyDataflow/differential-dataflow/pull/793)) -- Integer-proxy chunks: backend-agnostic join and reduce over (key_hash, value_id) ([#781](https://github.com/TimelyDataflow/differential-dataflow/pull/781)) -- Flip tactics from pub(crate) to pub ([#791](https://github.com/TimelyDataflow/differential-dataflow/pull/791)) -- reshape JoinTactic to an iterator of output containers ([#790](https://github.com/TimelyDataflow/differential-dataflow/pull/790)) -- document and assert the ReduceTactic / JoinTactic contracts ([#789](https://github.com/TimelyDataflow/differential-dataflow/pull/789)) -- add a model-derived `reference` tactic (differential oracle) ([#780](https://github.com/TimelyDataflow/differential-dataflow/pull/780)) -- Chunk navigation capability ([#778](https://github.com/TimelyDataflow/differential-dataflow/pull/778)) -- Add formal/: machine-checked coverage and compaction arguments in Lean ([#776](https://github.com/TimelyDataflow/differential-dataflow/pull/776)) -- Generalize join and reduce into navigation-free drivers over pluggable tactics ([#773](https://github.com/TimelyDataflow/differential-dataflow/pull/773)) -- Move layout onto the Cursor; make navigation an optional capability ([#772](https://github.com/TimelyDataflow/differential-dataflow/pull/772)) -- Remove `TraceReader::Cursor`; hard-wire `CursorList` ([#771](https://github.com/TimelyDataflow/differential-dataflow/pull/771)) -- Chunk columnar retarget ([#769](https://github.com/TimelyDataflow/differential-dataflow/pull/769)) -- `Chunk` abstraction for collections, merge batching, and batches. ([#744](https://github.com/TimelyDataflow/differential-dataflow/pull/744)) -- weigh the geometric ladder by updates; split Merger::account ([#767](https://github.com/TimelyDataflow/differential-dataflow/pull/767)) +This is a heavily breaking release. +Layout information moves off the trace and batch types onto the `Cursor`, which now carries the key, value, time, and diff types and their containers as associated types; `BatchReader` and `TraceReader` retain only `Time`. +Navigation becomes an optional cursor capability, and `join` and `reduce` are rebuilt as navigation-free drivers parameterized by the public `JoinTactic` / `ReduceTactic` traits, so `join_core`, `reduce_abelian`, and `reduce_core` gain tactic and container type parameters. +Downstream cursor, trace, and batch implementations must migrate to the associated-type form and drop the removed `LayoutExt` supertrait. +The experimental `columnar` module is reorganized and most of its 0.24 public surface relocated. +The `Chunk` trait, the `JoinTactic` / `ReduceTactic` traits, and the integer-proxy chunks are new and explicitly experimental: they are public to enable experimentation, but their APIs are unstable and expected to change. +Dependency tracking follows timely 0.31. ## [0.24.0](https://github.com/TimelyDataflow/differential-dataflow/compare/differential-dataflow-v0.23.0...differential-dataflow-v0.24.0) - 2026-05-29 diff --git a/dogsdogsdogs/CHANGELOG.md b/dogsdogsdogs/CHANGELOG.md index 76b9e000b..162ecb8b5 100644 --- a/dogsdogsdogs/CHANGELOG.md +++ b/dogsdogsdogs/CHANGELOG.md @@ -9,10 +9,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [0.25.0](https://github.com/TimelyDataflow/differential-dataflow/compare/differential-dogs3-v0.24.0...differential-dogs3-v0.25.0) - 2026-07-15 -### Other +### Changed + +- Track differential-dataflow 0.25: layout moves onto the `Cursor` and navigation becomes an optional capability. ([#772](https://github.com/TimelyDataflow/differential-dataflow/pull/772)) + +### Fixed -- Fix off-by-one in lookup_map: key_con.index(1) -> index(0) ([#765](https://github.com/TimelyDataflow/differential-dataflow/pull/765)) -- Move layout onto the Cursor; make navigation an optional capability ([#772](https://github.com/TimelyDataflow/differential-dataflow/pull/772)) +- `lookup_map`: correct an off-by-one in key-container indexing (`index(1)` -> `index(0)`). ([#765](https://github.com/TimelyDataflow/differential-dataflow/pull/765)) ## [0.24.0](https://github.com/TimelyDataflow/differential-dataflow/compare/differential-dogs3-v0.23.0...differential-dogs3-v0.24.0) - 2026-05-29