Skip to content

Releases: TimelyDataflow/timely-dataflow

timely_logging-v0.31.0

Choose a tag to compare

@github-actions github-actions released this 14 Jul 21:18
eba4ae5
chore: Release package timely_logging version 0.31.0

timely_container-v0.31.0

Choose a tag to compare

@github-actions github-actions released this 14 Jul 21:18
eba4ae5
chore: Release package timely_container version 0.31.0

timely_communication-v0.31.0

Choose a tag to compare

@github-actions github-actions released this 14 Jul 21:18
eba4ae5
chore: Release package timely_communication version 0.31.0

timely_bytes-v0.31.0

Choose a tag to compare

@github-actions github-actions released this 14 Jul 21:18
eba4ae5
chore: Release package timely_bytes version 0.31.0

timely-v0.31.0

Choose a tag to compare

@github-actions github-actions released this 14 Jul 21:19
eba4ae5

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

  • PortConnectivity splits into a builder and a frozen reader, and Operate::initialize now 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 BTreeMap and HashMap from the progress subsystem: is_acyclic uses dense per-location in-degree counts, and summarize_outputs iterates semi-naively over binary-sized sorted runs. bfs example: 254,560 → 231,310 LLVM lines. (#802)
  • Move rather than clone summaries in Tracker::allocate_from and Subgraph::initialize. (#804)
  • Removed several clones on progress hot paths: Capability::drop, FrontierNotificator delivery, capture, Progcaster::recv, builder_raw. (#805)
  • builder_rc trims the frontier/consumed/internal/produced bookkeeping vector capacities at build. (#806)

timely_logging-v0.30.0

Choose a tag to compare

@github-actions github-actions released this 29 May 20:46
75e73f3
chore: Release package timely_logging version 0.30.0

timely_container-v0.30.0

Choose a tag to compare

@github-actions github-actions released this 29 May 20:46
75e73f3
chore: Release package timely_container version 0.30.0

timely_communication-v0.30.0

Choose a tag to compare

@github-actions github-actions released this 29 May 20:46
75e73f3
chore: Release package timely_communication version 0.30.0

timely_bytes-v0.30.0

Choose a tag to compare

@github-actions github-actions released this 29 May 20:46
75e73f3
chore: Release package timely_bytes version 0.30.0

timely-v0.30.0

Choose a tag to compare

@github-actions github-actions released this 29 May 20:46
75e73f3

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

  • Bytes is now Sync, and byte buffers must be Send. timely_bytes::arc::Bytes now implements Sync in addition to Send. To make both impls sound, BytesMut::from now requires its payload to be Send. This is a breaking change to timely_communication: BytesRefill::logic now produces Box<dyn DerefMut<Target=[u8]> + Send> rather than Box<dyn DerefMut<Target=[u8]>>. Custom refills whose buffer type wraps a raw pointer (e.g. NonNull) must assert unsafe impl Send on that type. (#800)
  • ToStreamBuilder exposes the item type via the Item associated 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 form ToStreamBuilder::<CapacityContainerBuilder<_>>::to_stream_with_builder(0..3, scope). (#792)

Added

  • Spill-to-disk for the zero-copy allocator (timely_communication). A new allocator::zero_copy::spill module lets a MergeQueue shed resident bytes under memory pressure. It composes three pluggable traits: SpillPolicy (whether and how to reshape a queue on each extend), BytesSpill (where spilled bytes go — file, object store, mock, …), and BytesFetch (reads them back). The shipped threshold::Threshold policy spills the middle of a queue once resident bytes exceed configurable threshold/reserve/budget knobs. It is opt-in via the spill hook on the communication configuration and defaults to None, so existing deployments are unaffected. See the spill_stress and spill_compare examples. (#789, #791)
  • logging::Registry::names iterates the names of the currently bound loggers. (#795)

Other

  • Updated the columnar dependency to 0.13.
  • Hoisted the per-update rebuild check out of MutableAntichain::update_iter into a requires_rebuild helper generic only over the timestamp, reducing monomorphization sprawl (~1600 fewer LLVM lines on the event_driven example). (#797)