Skip to content

Releases: TimelyDataflow/differential-dataflow

differential-dogs3-v0.24.0

29 May 21:05
3f279da

Choose a tag to compare

Changed

  • Track differential-dataflow 0.24 and timely 0.30 / columnar 0.13.
  • Examples updated to use usize::MAX rather than the deprecated usize::max_value() (#724).

differential-dataflow-v0.24.0

29 May 21:05
3f279da

Choose a tag to compare

Added

  • 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)
  • Columnar serialization for trace transport: UpdatesView reader, UpdatesTyped writer, and a Stash-backed RecordedUpdates with a ContainerBytes impl. (#733)
  • 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)
  • 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)

Changed

  • Update to timely 0.30 and columnar 0.13. (bf9b36f)
  • 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)
  • Batcher::seal no longer takes a B: Builder type parameter; the builder is supplied at the call site. (#745)
  • Replace the Cursor generic argument with associated types (Key, Val, Time, Diff), simplifying trait bounds throughout. (#726)
  • Reduce moments of owned Time in join; improve use of join_assign; add the missing PointStamp::meet_assign. (#727)
  • 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)

Removed

  • InternalMerge* types and traits; VecMerger moves to its own independent module. (#740)
  • 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)

Other

  • 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)
  • New examples/scc.rs for comparative benchmarking; use meet_assign in ValueHistory::replay. (#731)

This is a heavily breaking release driven by tracking timely 0.30 and introducing the experimental columnar module.
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.
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.
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<_>>.

differential-dogs3-v0.23.0

13 Apr 21:30
1f348ab

Choose a tag to compare

Changed

  • Update to timely 0.29, tracking scope ownership and lifetime changes (#714, #718, #720)
  • PrefixExtender, half-join, and calculus traits now parameterized by 'scope lifetime and T: Timestamp instead of G: Scope (#714, #718)

differential-dataflow-v0.23.0

13 Apr 21:30
1f348ab

Choose a tag to compare

Changed

  • Update to timely 0.29 (#714, #718, #720)
  • Remove scope generic from Arranged (now Arranged<'scope, Tr> instead of Arranged<G, Tr> where G: Scope), simplifying trait bounds throughout (#714)
  • Add explicit 'scope lifetime parameter to VecCollection, Arranged, and related types (#718)
  • Scopes are now passed by value rather than by reference (enter(scope) instead of enter(&scope)) (#720)
  • reduce_abelian and reduce_core accept a container/builder parameter for output, removing the KeyOwn requirement from trace bounds (#710)

Removed

  • TimelyStack container and all dependent types: TStack layout, ColumnationChunker, ColInternalMerger, and Col* type aliases (ColValSpine, ColKeySpine, etc.) (#715)

Other

  • Substantial cleanup of reduce.rs: remove ~300 lines of dead code, simplify conditional logic, replace silent error swallowing with panics (#709)
  • Columnar support refinements (#704)

This is a heavily breaking release driven by tracking timely 0.29.
The Arranged type loses its scope generic and gains an explicit scope lifetime.
Scope parameters throughout the API shift from generic S: Scope to concrete types, and scopes are passed owned rather than borrowed.
Users of Col* type aliases should migrate to columnar-backed equivalents.
The reduce family of functions now takes an explicit output container parameter, which removes the need for KeyOwn bounds on traces.

differential-dogs3-v0.22.0

07 Apr 13:05
775967a

Choose a tag to compare

Other

  • Consolidate storage types to avoid double allocations
  • Re-order stages and improve session batching
  • Less quadratic half_join

differential-dataflow-v0.22.0

07 Apr 13:05
775967a

Choose a tag to compare

Other

  • Allow InternalMerger::extract to yield when full buffer (#711)

differential-dogs3-v0.21.2

02 Apr 13:00
04a69e4

Choose a tag to compare

Other

  • Consolidate storage types to avoid double allocations
  • Re-order stages and improve session batching
  • Less quadratic half_join

differential-dataflow-v0.21.2

02 Apr 13:00
04a69e4

Choose a tag to compare

Other

  • InternalMerger adopts tail chunks rather than copy them
  • Tidy up structure of logic
  • Dial in buffer sizing
  • Introduce VecMerger to efficiently merge owning vectors

differential-dogs3-v0.21.1

26 Mar 17:38
51cee56

Choose a tag to compare

Other

  • update Cargo.toml dependencies

differential-dataflow-v0.21.1

26 Mar 17:38
51cee56

Choose a tag to compare

Other

  • InternalMerger adopts tail chunks rather than copy them
  • Tidy up structure of logic
  • Dial in buffer sizing
  • Introduce VecMerger to efficiently merge owning vectors