Releases: TimelyDataflow/differential-dataflow
differential-dogs3-v0.24.0
Changed
- Track differential-dataflow 0.24 and timely 0.30 / columnar 0.13.
- Examples updated to use
usize::MAXrather than the deprecatedusize::max_value()(#724).
differential-dataflow-v0.24.0
Added
- New experimental
columnarmodule 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:
UpdatesViewreader,UpdatesTypedwriter, and aStash-backedRecordedUpdateswith aContainerBytesimpl. (#733) - Columnar spilling merge batcher with pluggable
Spill/Fetch/SpillPolicytraits parameterized over a chunk type. Thecolumnar_spillexample demonstrates a disk-backed, lz4-compressed spill path. (#741) Cursor::populate_keyfor key-positioned bulk load into anEditList, with an optional timemeetto advance times before consolidation. Used byreduceandValueHistory. (#725)
Changed
- Update to timely 0.30 and columnar 0.13. (bf9b36f)
- Separate the chunker from the batcher. The
Batchertrait drops itsInputassociated type andpush_containermethod and now accepts pre-chunked input viaPushInto<Self::Output>.arrange_coregainsC(input container) andChu: 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 toarrange_coredirectly. (#625) Batcher::sealno longer takes aB: Buildertype parameter; the builder is supplied at the call site. (#745)- Replace the
Cursorgeneric argument with associated types (Key,Val,Time,Diff), simplifying trait bounds throughout. (#726) - Reduce moments of owned
Timeinjoin; improve use ofjoin_assign; add the missingPointStamp::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_keyretains the seek for callers (reduce,ValueHistory) that need it. (#732)
Removed
InternalMerge*types and traits;VecMergermoves to its own independent module. (#740)- Spring cleaning: remove
ShutdownDeadmans,TraceRcandtrace/wrappers/rc.rs,chainless_batcher.rs,RHH, the Huffman container, theCloneconstraint 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.rsis restored as akey/val/colarrangement bake-off using the newcolumnarmodule via an in-dataflowToRecordedrepacker. (#732) - New
examples/scc.rsfor comparative benchmarking; usemeet_assigninValueHistory::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
differential-dataflow-v0.23.0
Changed
- Update to timely 0.29 (#714, #718, #720)
- Remove scope generic from
Arranged(nowArranged<'scope, Tr>instead ofArranged<G, Tr>whereG: Scope), simplifying trait bounds throughout (#714) - Add explicit
'scopelifetime parameter toVecCollection,Arranged, and related types (#718) - Scopes are now passed by value rather than by reference (
enter(scope)instead ofenter(&scope)) (#720) reduce_abelianandreduce_coreaccept a container/builder parameter for output, removing theKeyOwnrequirement from trace bounds (#710)
Removed
TimelyStackcontainer and all dependent types:TStacklayout,ColumnationChunker,ColInternalMerger, andCol*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
Other
- Consolidate storage types to avoid double allocations
- Re-order stages and improve session batching
- Less quadratic half_join
differential-dataflow-v0.22.0
Other
- Allow
InternalMerger::extractto yield when full buffer (#711)
differential-dogs3-v0.21.2
Other
- Consolidate storage types to avoid double allocations
- Re-order stages and improve session batching
- Less quadratic half_join
differential-dataflow-v0.21.2
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
Other
- update Cargo.toml dependencies
differential-dataflow-v0.21.1
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