differential-dataflow-v0.25.0
Added
operators::common: shared building blocks for differential operators —TimeHistory,bilinear_wave,tile_descriptions,KeyView, anddiscover_times. (#794)TraceReader::batches_through, exposing the batches up to a given frontier for the tactic-driven operators. (#773)formal/: machine-checked Lean models of differential's coverage and compaction arguments, plus a model-derivedreferencereduce tactic used as a differential oracle in tests. (#776, #780)
The following surface is new and experimental: it is public to enable experimentation, but the API is unstable and expected to change.
Chunktrait abstracting the container that backs collections, merge batching, and batches, with thecolumnarmodule retargeted onto it. (#744, #769, #778)- Public
JoinTacticandReduceTactictraits, letting callers supply per-batch join and reduce strategies; documented with asserted contracts. (#789, #790, #791) - Integer-proxy chunks: a backend-agnostic join and reduce over
(key_hash, value_id)pairs. (#781)
Changed
- Update to timely 0.31. (f7c799c)
- Move layout onto the
Cursor. Cursors now carry the key, value, time, and diff types and their containers as associated types;BatchReaderandTraceReaderretain onlyTime. Navigation becomes an optional cursor capability rather than a universal one. (#771, #772) - Generalize
joinandreduceinto navigation-free drivers over pluggable tactics.join_core,reduce_abelian, andreduce_coregain type parameters for the tactic and output container. (#773, #790) - Rework
MergeBatchermerge effort: weigh the geometric ladder by update counts, splitMerger::account, and addMerger::len. (#767) - Name the shared key container in
joinandreduceto fix HRTB normalization for non-reference key containers. (#797, #798) - Reorganize the experimental
columnarmodule: the 0.24spill,batcher,builder,exchange, andarrangementsubmodules give way tolayout,updates,trie_merger,collection, andtrace. Many 0.24 public types (ValBuilder,ValPact,ValChunker,RecordedUpdates,Coltainer, theSpill/Fetch/SpillPolicytraits) are removed or relocated. (#769, #781)
Removed
- The
LayoutExttrait, and its supertrait bound onBatchReader,TraceReader, andCursor. (#772) TraceReader::Cursor,TraceReader::Storage, andBatchReader::Cursorassociated types, along withBatchReader::cursor;CursorList<Batch::Cursor>is hard-wired instead. (#771)
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.