Releases: TimelyDataflow/timely-dataflow
Releases · TimelyDataflow/timely-dataflow
Release list
timely_logging-v0.31.0
chore: Release package timely_logging version 0.31.0
timely_container-v0.31.0
chore: Release package timely_container version 0.31.0
timely_communication-v0.31.0
chore: Release package timely_communication version 0.31.0
timely_bytes-v0.31.0
chore: Release package timely_bytes version 0.31.0
timely-v0.31.0
This release continues excising monomorphization sprawl from the progress subsystem: PortConnectivity's map becomes a sorted Vec, removing the last BTreeMap and HashMap from progress tracking (9.1% fewer LLVM lines on the bfs example), alongside clone and allocation trimming on hot paths.
Breaking changes
PortConnectivitysplits into a builder and a frozen reader, andOperate::initializenow returns the frozen form. This type is largely internal; the surface change is below. (#802, #804)
| 0.30 | 0.31 |
|---|---|
PortConnectivity::insert(i, e) -> bool |
PortConnectivityBuilder::insert(i, e) (no return) |
PortConnectivity::insert_ref(i, &e) -> bool |
removed; build an Antichain and use add_port |
PortConnectivity::add_port (panics on duplicate port) |
PortConnectivityBuilder::add_port (merges duplicate) |
tree: BTreeMap<usize, Antichain> field |
gone; construct via PortConnectivityBuilder::freeze() |
impl FromIterator for PortConnectivity |
impl FromIterator for PortConnectivityBuilder |
get, iter_ports |
unchanged, on the frozen PortConnectivity |
| — | impl IntoIterator for PortConnectivity (new, consuming) |
Other
- Removed all
BTreeMapandHashMapfrom the progress subsystem:is_acyclicuses dense per-location in-degree counts, andsummarize_outputsiterates semi-naively over binary-sized sorted runs.bfsexample: 254,560 → 231,310 LLVM lines. (#802) - Move rather than clone summaries in
Tracker::allocate_fromandSubgraph::initialize. (#804) - Removed several clones on progress hot paths:
Capability::drop,FrontierNotificatordelivery, capture,Progcaster::recv,builder_raw. (#805) builder_rctrims the frontier/consumed/internal/produced bookkeeping vector capacities at build. (#806)
timely_logging-v0.30.0
chore: Release package timely_logging version 0.30.0
timely_container-v0.30.0
chore: Release package timely_container version 0.30.0
timely_communication-v0.30.0
chore: Release package timely_communication version 0.30.0
timely_bytes-v0.30.0
chore: Release package timely_bytes version 0.30.0
timely-v0.30.0
This release adds opt-in spill-to-disk support for the zero-copy network allocator, makes Bytes Sync (a soundness fix), and continues trimming compile-time monomorphization sprawl.
Breaking changes
Bytesis nowSync, and byte buffers must beSend.timely_bytes::arc::Bytesnow implementsSyncin addition toSend. To make both impls sound,BytesMut::fromnow requires its payload to beSend. This is a breaking change totimely_communication:BytesRefill::logicnow producesBox<dyn DerefMut<Target=[u8]> + Send>rather thanBox<dyn DerefMut<Target=[u8]>>. Custom refills whose buffer type wraps a raw pointer (e.g.NonNull) must assertunsafe impl Sendon that type. (#800)ToStreamBuilderexposes the item type via theItemassociated type instead of a trait-level generic, and the container builder moves to a method-level generic. This enables method-call syntax:(0..3).to_stream_with_builder::<_, CapacityContainerBuilder<_>>(scope)instead of the UFCS formToStreamBuilder::<CapacityContainerBuilder<_>>::to_stream_with_builder(0..3, scope). (#792)
Added
- Spill-to-disk for the zero-copy allocator (
timely_communication). A newallocator::zero_copy::spillmodule lets aMergeQueueshed resident bytes under memory pressure. It composes three pluggable traits:SpillPolicy(whether and how to reshape a queue on eachextend),BytesSpill(where spilled bytes go — file, object store, mock, …), andBytesFetch(reads them back). The shippedthreshold::Thresholdpolicy spills the middle of a queue once resident bytes exceed configurable threshold/reserve/budget knobs. It is opt-in via thespillhook on the communication configuration and defaults toNone, so existing deployments are unaffected. See thespill_stressandspill_compareexamples. (#789, #791) logging::Registry::namesiterates the names of the currently bound loggers. (#795)
Other
- Updated the
columnardependency to 0.13. - Hoisted the per-update rebuild check out of
MutableAntichain::update_iterinto arequires_rebuildhelper generic only over the timestamp, reducing monomorphization sprawl (~1600 fewer LLVM lines on theevent_drivenexample). (#797)