Skip to content

Releases: TimelyDataflow/timely-dataflow

timely_logging-v0.27.0

05 Mar 18:10
270f515

Choose a tag to compare

chore: Release package timely_logging version 0.27.0

timely_container-v0.27.0

05 Mar 18:10
270f515

Choose a tag to compare

chore: Release package timely_container version 0.27.0

timely_communication-v0.27.0

05 Mar 18:11
270f515

Choose a tag to compare

chore: Release package timely_communication version 0.27.0

timely_bytes-v0.27.0

05 Mar 18:10
270f515

Choose a tag to compare

chore: Release package timely_bytes version 0.27.0

timely-v0.27.0

05 Mar 18:11
270f515

Choose a tag to compare

Other

  • Return input stream (#747)
  • MRSV 1.86 (#748)
  • Avoid allocations when sorting (#751)
  • Assert if a second pusher is added without upgrading (#750)
  • Reorganize types and traits to deprioritize Vec streams (#746)
  • Replace seeded rand datagen with hash functions (#745)
  • Tee implementation without Clone requirement (#744)
  • Bump oldest Rust version from 1.79 to 1.85 (#743)
  • Delay/retain input capabilities for specific outputs (#738)

Streams are not backed by vectors by default

Timely streams are now container-oriented by default, rather than vector-oriented.
Timely has historically had the Stream type mean "A stream that transports vectors of items".
This was a helpful opinion early days when the goal was to make the first programs easy to type.
Since, we've learned that vectors and Rust ownership can be a performance anti-pattern:
exchanging owned data and e.g. deallocation obligations among workers is effectively an allocator microbenchmark.

Instead, we've renamed Stream to StreamVec and moved the associated operators to a operators::vec module.
The previous StreamCore that works with general containers has been promoted to Stream, and is the recommended type.
Many/most of the timely operators work over arbitrary containers, and are defined on the new Stream.
The Stream::container<C>() method has proven useful for "hinting" at the container type you intend.

Streams are not Clone by default

Timely streams are now non-clone by default.
Streams do implement clone when their containers can be cloned.
This allows the use of non-clone containers, and for users to ensure (by not advertising Clone) that their streams are not unintentionally cloned.
A low-friction migration is to require Clone for transmitted types, and call .clone() on the stream when you would use it.
Idiomatically, most operations now take a Stream rather than a &Stream, and we've found that adopting this migration helps as well.
There is a low cost to cloning a stream that you only use once: one additional virtual call will occur for each container shipped along it.

timely_logging-v0.26.1

04 Feb 00:04
f984ff1

Choose a tag to compare

chore: Release package timely_logging version 0.26.1

timely_container-v0.26.1

04 Feb 00:04
f984ff1

Choose a tag to compare

chore: Release package timely_container version 0.26.1

timely_communication-v0.26.1

04 Feb 00:05
f984ff1

Choose a tag to compare

chore: Release package timely_communication version 0.26.1

timely_bytes-v0.26.1

04 Feb 00:03
f984ff1

Choose a tag to compare

chore: Release package timely_bytes version 0.26.1

timely-v0.26.1

04 Feb 00:05
f984ff1

Choose a tag to compare

Other

  • Streaming columnar.rs example (#732)
  • Correct _notify docs (#731)
  • Remove InputSession (#729)
  • Remove push counter's give (#723)