Skip to content

Releases: TimelyDataflow/timely-dataflow

Version 0.12 crates release

10 Mar 15:51
ac0a326
Compare
Choose a tag to compare
Pre-release

Consult the CHANGELOG.md file for recent additions!

Version 0.10 crates release

09 Jul 20:15
28430ee
Compare
Choose a tag to compare
Pre-release

Consult the CHANGELOG.md file for recent additions!

Version 0.9.0 crates release

31 Mar 15:58
ff3989a
Compare
Choose a tag to compare
Pre-release

Event-driven scheduling is the main change here. Details in CHANGELOG.md.

v0.8.0 crates.io release

03 Dec 15:19
Compare
Choose a tag to compare
Pre-release

This release made several breaking modifications to the types associated with scopes, and in particular the generic parameters for the Child<'a, G: ScopeParent, T: Timestamp> type. Where previously the T parameter would be the new coordinate to add to G's timestamp, it is now the new timestamp including G's timestamp as well. This was done to support a broader class of timestamps to be used, beyond always requiring product combinations with new timestamps.

Beneficial fallouts include our ability to remove RootTimestamp, as dataflows can now be timestamped by usize or other primitive timestamps. Yay!

Added

The communication crate now has a bincode feature flag which should swing serialization over to use serde's Serialize trait. While it seems to work the ergonomics are likely in flux, as the choice is crate-wide and doesn't allow you to pick and choose a la carte.

Timestamps may now implement a new Refines trait which allows one to describe one timestamp as a refinement of another. This is mainly used to describe which timestamps may be used for subscopes of an outer scope. The trait describes how to move between the timestamps (informally: "adding a zero" and "removing the inner coordinate") and how to summarize path summaries for the refining timestamp as those of the refined timestamp.

Changed

Many logging events have been rationalized. Operators and Channels should all have a worker-unique identifier that can be used to connect their metadata with events involving them. Previously this was a bit of a shambles.

The Scope method scoped now allows new scopes with non-Product timestamps. Instead, the new timestamp must implement Refines<_> of the parent timestamp. This is the case for Product timestamps, but each timestamp also refines itself (allowing logical regions w/o changing the timestamp), and other timestamp combinators (e.g. Lexicographic) can be used.

Root dataflow timestamps no longer need to be Product<RootTimestamp,_>. Instead, the _ can be used as the timestamp.

The loop_variable operator now takes a timestamp summary for the timestamp of its scope, not just the timestamp extending its parent scope. The old behavior can be recovered with Product::new(Default::default(), summary), but the change allows cycles in more general scopes and seemed worth it. The operator also no longer takes a limit, and if you need to impose a limit other than the summary returning None you should use the branch_when operator.

Removed

The RootTimestamp and RootSummary types have been excised. Where you previously used Product<RootTimestamp,T> you can now use Product<(),T>, or even better just T. The requirement of a worker's dataflow() method is that the timestamp type implement Refines<()>, which .. ideally would be true for all timestamps but we can't have a blanket implementation until specialization lands (I believe).

Several race conditions were "removed" from the communication library. These mostly involved rapid construction of dataflows (data received before a channel was constructed would be dropped) and clean shutdown (a timely computation could drop and fail to ack clean shutdown messages).

v0.7.0

16 Sep 07:32
Compare
Choose a tag to compare
v0.7.0 Pre-release
Pre-release

New changes largely related to the communication subsystem and logging. Consult CHANGELOG.md for more specific information on current and upcoming changes.

v0.6.0

29 Jun 09:33
Compare
Choose a tag to compare
v0.6.0 Pre-release
Pre-release

Main changes: Capabilities are now provided to operators as CapabilityRef which contains a lifetime, and which should not be stored without calling .retain(). They are probably hard to store without calling .retain(), and there are probably error messages to this effect.

Version 0.3.0 on crates.io

10 Sep 16:48
Compare
Choose a tag to compare
Pre-release

This release snapshots the state of affairs at the point that we needed to do a release and bump the major version number. It should correspond to the bits on crates.io for version 0.3.0.