Skip to content

Releases: TimelyDataflow/timely-dataflow

timely_logging-v0.29.0

13 Apr 20:52
866d5c3

Choose a tag to compare

chore: Release package timely_logging version 0.29.0

timely_container-v0.29.0

13 Apr 20:52
866d5c3

Choose a tag to compare

chore: Release package timely_container version 0.29.0

timely_communication-v0.29.0

13 Apr 20:52
866d5c3

Choose a tag to compare

chore: Release package timely_communication version 0.29.0

timely_bytes-v0.29.0

13 Apr 20:52
866d5c3

Choose a tag to compare

chore: Release package timely_bytes version 0.29.0

timely-v0.29.0

13 Apr 20:53
866d5c3

Choose a tag to compare

The theme in this release is simplifying specialization by removing monomorphization sprawl.
The Scope trait that used to have numerous implementors is now a concrete type that only varies with lifetime and timestamp.
Operator closures are boxed by default.
These resulted in a ~25% reduction in LLVM lines in Materialize.

Some forms of specialization have vanished; reach out if you relied on them.
Also, check out the Scope::scoped_raw method for more flexibility in assembling scopes.

Scope is now a lightweight, Copy handle

Scope has been substantially simplified. It is now a concrete Copy type rather than a trait:

pub struct Scope<'scope, T: Timestamp> {
    subgraph: &'scope RefCell<SubgraphBuilder<T>>,
    worker:   &'scope Worker,
}

Previously, Scope was a trait (implemented by Child) and code was generic over G: Scope.
Now Scope is a concrete type parameterized by a lifetime and its timestamp, previously hidden in the G: Scope implementation, and now code uses Scope<'scope, T> directly.

  • Scope is a concrete type, not a trait. The Child type is gone. Where you previously had a generic parameter G: Scope or G: Scope<Timestamp = T>, you now use Scope<'scope, T> directly. This means replacing a type-level generic with a lifetime and a concrete timestamp type — you may need to introduce 'scope and T: Timestamp where they weren't needed before, and remove G from your generic parameter lists.
  • Scope implements Copy. It is passed by value to dataflow closures and operator constructors. The FnOnce(&Scope<T>) pattern becomes FnOnce(Scope<T>).
  • AsWorker and Scheduler traits are removed. Their methods are now inherent on Worker. Access the worker from a scope via scope.worker().
  • All Scope methods take &self, not &mut self. Extension traits that took &mut self on Scope (e.g., Input, Feedback, UnorderedInput) now take &self.

Migration guide

Before (0.28) After (0.29)
G: Scope or G: Scope<Timestamp = T> Scope<'scope, T>
Child<'scope, _, T> Scope<'scope, T>
AsWorker::logging(&scope) scope.worker().logging()
use timely::scheduling::Scheduler; (remove — methods are inherent on Worker)
FnOnce(&mut Scope<T>) FnOnce(Scope<T>)
scope: &Scope<'scope, T> in free functions scope: Scope<'scope, T>

Other

  • Box operator logic by default (#786)
  • Remove Allocate trait; replace with Allocator. (#778)
  • Checks for WASM compatibility (#777)

timely_logging-v0.28.1

03 Apr 15:31
62c18cb

Choose a tag to compare

chore: Release package timely_logging version 0.28.1

timely_container-v0.28.1

03 Apr 15:31
62c18cb

Choose a tag to compare

chore: Release package timely_container version 0.28.1

timely_communication-v0.28.1

03 Apr 15:31
62c18cb

Choose a tag to compare

chore: Release package timely_communication version 0.28.1

timely_bytes-v0.28.1

03 Apr 15:31
62c18cb

Choose a tag to compare

chore: Release package timely_bytes version 0.28.1

timely-v0.28.1

03 Apr 15:31
62c18cb

Choose a tag to compare

Other

  • Arc based event iterator (#772)