You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* chore: release v0.24.0
* Beautify v0.24.0 CHANGELOG entries
Rewrite the release-plz autogenerated 0.24.0 sections in the style of
0.23.0: split into Added / Changed / Removed / Other, expand each bullet
into a prose explanation of what actually changed, fix the garbled #725
entry (`:populate_key`), and add the timely 0.30 / columnar 0.13 bump
(bf9b36f) that release-plz missed because it landed outside a PR.
Adds a closing summary of the breaking changes downstream consumers
need to migrate.
For dogsdogsdogs, surface what Spring cleaning actually changed in its
examples (`usize::max_value()` -> `usize::MAX`) and note the timely 0.30
tracking.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Frank McSherry <fmcsherry@me.com>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- New experimental `columnar` module exposing public (but explicitly unstable) columnar arrangement and container infrastructure: `UpdatesTyped`, `RecordedUpdates`, `ValPact`, `ValBatcher`, `ValBuilder`, `ValChunker`, `ValSpine`, plus dynamic-scope helpers (`DynTime`, `leave_dynamic`). See the module docs for the current rough edges. ([#730](https://github.com/TimelyDataflow/differential-dataflow/pull/730))
15
+
- Columnar serialization for trace transport: `UpdatesView` reader, `UpdatesTyped` writer, and a `Stash`-backed `RecordedUpdates` with a `ContainerBytes` impl. ([#733](https://github.com/TimelyDataflow/differential-dataflow/pull/733))
16
+
- Columnar spilling merge batcher with pluggable `Spill` / `Fetch` / `SpillPolicy` traits parameterized over a chunk type. The `columnar_spill` example demonstrates a disk-backed, lz4-compressed spill path. ([#741](https://github.com/TimelyDataflow/differential-dataflow/pull/741))
17
+
-`Cursor::populate_key` for key-positioned bulk load into an `EditList`, with an optional time `meet` to advance times before consolidation. Used by `reduce` and `ValueHistory`. ([#725](https://github.com/TimelyDataflow/differential-dataflow/pull/725))
18
+
19
+
### Changed
20
+
21
+
- Update to timely 0.30 and columnar 0.13. (bf9b36f)
22
+
- Separate the chunker from the batcher. The `Batcher` trait drops its `Input` associated type and `push_container` method and now accepts pre-chunked input via `PushInto<Self::Output>`. `arrange_core` gains `C` (input container) and `Chu: ContainerBuilder` (chunker) type parameters so chunking lives in the operator. The high-level `.arrange::<Ba, Bu, Tr>()` callsite is unchanged; cross-container callers (columnar, interactive, spill) drop to `arrange_core` directly. ([#625](https://github.com/TimelyDataflow/differential-dataflow/pull/625))
23
+
-`Batcher::seal` no longer takes a `B: Builder` type parameter; the builder is supplied at the call site. ([#745](https://github.com/TimelyDataflow/differential-dataflow/pull/745))
24
+
- Replace the `Cursor` generic argument with associated types (`Key`, `Val`, `Time`, `Diff`), simplifying trait bounds throughout. ([#726](https://github.com/TimelyDataflow/differential-dataflow/pull/726))
25
+
- Reduce moments of owned `Time` in `join`; improve use of `join_assign`; add the missing `PointStamp::meet_assign`. ([#727](https://github.com/TimelyDataflow/differential-dataflow/pull/727))
26
+
- Restore the pre-#725 division of labor in `EditList::load`: the join inner loop again walks vals inline from the cursor's current position rather than re-seeking on every key, recovering a ~3s regression in the spines benchmark. `Cursor::populate_key` retains the seek for callers (`reduce`, `ValueHistory`) that need it. ([#732](https://github.com/TimelyDataflow/differential-dataflow/pull/732))
27
+
28
+
### Removed
29
+
30
+
-`InternalMerge*` types and traits; `VecMerger` moves to its own independent module. ([#740](https://github.com/TimelyDataflow/differential-dataflow/pull/740))
31
+
- Spring cleaning: remove `ShutdownDeadmans`, `TraceRc` and `trace/wrappers/rc.rs`, `chainless_batcher.rs`, `RHH`, the Huffman container, the `Clone` constraint on traces, redundant trait bounds, dead and commented code, and needless borrows; convert `::max_value()` to `::MAX`. ([#724](https://github.com/TimelyDataflow/differential-dataflow/pull/724))
32
+
33
+
### Other
34
+
35
+
- Spine benchmark example improvements. `examples/spines.rs` is restored as a `key` / `val` / `col` arrangement bake-off using the new `columnar` module via an in-dataflow `ToRecorded` repacker. ([#732](https://github.com/TimelyDataflow/differential-dataflow/pull/732))
36
+
- New `examples/scc.rs` for comparative benchmarking; use `meet_assign` in `ValueHistory::replay`. ([#731](https://github.com/TimelyDataflow/differential-dataflow/pull/731))
37
+
38
+
This is a heavily breaking release driven by tracking timely 0.30 and introducing the experimental `columnar` module.
39
+
The `Batcher` trait no longer knows about input containers; chunking moves into `arrange_core`, which gains two new type parameters. Direct callers of `arrange_core` need to supply a chunker; users of `.arrange::<Ba, Bu, Tr>()` are unaffected.
40
+
The `Cursor` trait swaps its generic argument for associated types — downstream cursor implementations need to migrate from `impl<K, V, T, D> Cursor for ...` to associated-type form.
41
+
`TraceRc`, `RHH`, `HuffmanContainer`, and the `InternalMerge*` family are gone; consumers should move to the columnar-backed equivalents (when applicable) or hold their own `Rc<TraceBox<_>>`.
- Track differential-dataflow 0.24 and timely 0.30 / columnar 0.13.
15
+
- Examples updated to use `usize::MAX` rather than the deprecated `usize::max_value()` ([#724](https://github.com/TimelyDataflow/differential-dataflow/pull/724)).
0 commit comments