Releases: TimelyDataflow/timely-dataflow
timely_logging-v0.29.0
chore: Release package timely_logging version 0.29.0
timely_container-v0.29.0
chore: Release package timely_container version 0.29.0
timely_communication-v0.29.0
chore: Release package timely_communication version 0.29.0
timely_bytes-v0.29.0
chore: Release package timely_bytes version 0.29.0
timely-v0.29.0
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.
Scopeis a concrete type, not a trait. TheChildtype is gone. Where you previously had a generic parameterG: ScopeorG: Scope<Timestamp = T>, you now useScope<'scope, T>directly. This means replacing a type-level generic with a lifetime and a concrete timestamp type — you may need to introduce'scopeandT: Timestampwhere they weren't needed before, and removeGfrom your generic parameter lists.ScopeimplementsCopy. It is passed by value to dataflow closures and operator constructors. TheFnOnce(&Scope<T>)pattern becomesFnOnce(Scope<T>).AsWorkerandSchedulertraits are removed. Their methods are now inherent onWorker. Access the worker from a scope viascope.worker().- All
Scopemethods take&self, not&mut self. Extension traits that took&mut selfonScope(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
timely_logging-v0.28.1
chore: Release package timely_logging version 0.28.1
timely_container-v0.28.1
chore: Release package timely_container version 0.28.1
timely_communication-v0.28.1
chore: Release package timely_communication version 0.28.1
timely_bytes-v0.28.1
chore: Release package timely_bytes version 0.28.1
timely-v0.28.1
Other
- Arc based event iterator (#772)