Skip to content

chore: release v0.30.0#790

Open
github-actions[bot] wants to merge 1 commit intomasterfrom
release-plz-2026-04-17T12-06-44Z
Open

chore: release v0.30.0#790
github-actions[bot] wants to merge 1 commit intomasterfrom
release-plz-2026-04-17T12-06-44Z

Conversation

@github-actions
Copy link
Copy Markdown
Contributor

🤖 New release

  • timely_bytes: 0.29.0 -> 0.30.0
  • timely_container: 0.29.0 -> 0.30.0
  • timely_logging: 0.29.0 -> 0.30.0
  • timely_communication: 0.29.0 -> 0.30.0 (⚠ API breaking changes)
  • timely: 0.29.0 -> 0.30.0

timely_communication breaking changes

--- failure auto_trait_impl_removed: auto trait no longer implemented ---

Description:
A public type has stopped implementing one or more auto traits. This can break downstream code that depends on the traits being implemented.
        ref: https://doc.rust-lang.org/reference/special-types-and-traits.html#auto-traits
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.46.0/src/lints/auto_trait_impl_removed.ron

Failed in:
  type MergeQueue is no longer Sync, in /tmp/.tmpgO9Wg7/timely-dataflow/communication/src/allocator/zero_copy/bytes_exchange.rs:33
  type MergeQueue is no longer UnwindSafe, in /tmp/.tmpgO9Wg7/timely-dataflow/communication/src/allocator/zero_copy/bytes_exchange.rs:33
  type MergeQueue is no longer RefUnwindSafe, in /tmp/.tmpgO9Wg7/timely-dataflow/communication/src/allocator/zero_copy/bytes_exchange.rs:33

--- failure derive_trait_impl_removed: built-in derived trait no longer implemented ---

Description:
A public type has stopped deriving one or more traits. This can break downstream code that depends on those types implementing those traits.
        ref: https://doc.rust-lang.org/reference/attributes/derive.html#derive
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.46.0/src/lints/derive_trait_impl_removed.ron

Failed in:
  type MergeQueue no longer derives Clone, in /tmp/.tmpgO9Wg7/timely-dataflow/communication/src/allocator/zero_copy/bytes_exchange.rs:33

--- failure enum_struct_variant_field_missing: pub enum struct variant's field removed or renamed ---

Description:
A publicly-visible enum has a struct variant whose field is no longer available under its prior name. It may have been renamed or removed entirely.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.46.0/src/lints/enum_struct_variant_field_missing.ron

Failed in:
  field log_fn of variant Config::Cluster, previously in file /tmp/.tmpV5fThF/timely_communication/src/initialize.rs:42
  field log_fn of variant Config::Cluster, previously in file /tmp/.tmpV5fThF/timely_communication/src/initialize.rs:42

--- failure function_parameter_count_changed: pub fn parameter count changed ---

Description:
A publicly-visible function now takes a different number of parameters.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#fn-change-arity
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.46.0/src/lints/function_parameter_count_changed.ron

Failed in:
  timely_communication::allocator::zero_copy::initialize::initialize_networking_from_sockets now takes 5 parameters instead of 6, in /tmp/.tmpgO9Wg7/timely-dataflow/communication/src/allocator/zero_copy/initialize.rs:62
  timely_communication::allocator::zero_copy::initialize::initialize_networking now takes 6 parameters instead of 7, in /tmp/.tmpgO9Wg7/timely-dataflow/communication/src/allocator/zero_copy/initialize.rs:41
  timely_communication::allocator::zero_copy::tcp::send_loop now takes 6 parameters instead of 5, in /tmp/.tmpgO9Wg7/timely-dataflow/communication/src/allocator/zero_copy/tcp.rs:137

--- failure method_parameter_count_changed: pub method parameter count changed ---

Description:
A publicly-visible method now takes a different number of parameters, not counting the receiver (self) parameter.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#fn-change-arity
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.46.0/src/lints/method_parameter_count_changed.ron

Failed in:
  timely_communication::allocator::ProcessBuilder::new_typed_vector now takes 3 parameters instead of 2, in /tmp/.tmpgO9Wg7/timely-dataflow/communication/src/allocator/mod.rs:155
  timely_communication::allocator::ProcessBuilder::new_bytes_vector now takes 3 parameters instead of 2, in /tmp/.tmpgO9Wg7/timely-dataflow/communication/src/allocator/mod.rs:163
Changelog

timely

0.29.0 - 2026-04-13

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)


This PR was generated with release-plz.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants