From 120dbe6580d9a61ed8be913fa00d16e4257c999a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 14 Jul 2026 20:15:29 +0000 Subject: [PATCH 1/2] chore: release v0.31.0 --- CHANGELOG.md | 9 +++++++++ bytes/Cargo.toml | 2 +- communication/Cargo.toml | 8 ++++---- container/Cargo.toml | 2 +- logging/Cargo.toml | 4 ++-- timely/Cargo.toml | 10 +++++----- 6 files changed, 22 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6d786a218..c66d2b38b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.31.0](https://github.com/TimelyDataflow/timely-dataflow/compare/timely-v0.30.0...timely-v0.31.0) - 2026-07-14 + +### Other + +- trim bookkeeping vector capacities at build ([#806](https://github.com/TimelyDataflow/timely-dataflow/pull/806)) +- Several instances of `.clone()` removed. ([#805](https://github.com/TimelyDataflow/timely-dataflow/pull/805)) +- Add a consuming iterator for PortConnectivity; move summaries rather than clone ([#804](https://github.com/TimelyDataflow/timely-dataflow/pull/804)) +- Replace `BTreeMap` in `PortConnectivity` with a sorted `Vec`; semi-naive iteration replacing in-place updates ([#802](https://github.com/TimelyDataflow/timely-dataflow/pull/802)) + ## [0.30.0](https://github.com/TimelyDataflow/timely-dataflow/compare/timely-v0.29.0...timely-v0.30.0) - 2026-05-28 This release adds opt-in spill-to-disk support for the zero-copy network allocator, makes `Bytes` `Sync` (a soundness fix), and continues trimming compile-time monomorphization sprawl. diff --git a/bytes/Cargo.toml b/bytes/Cargo.toml index e22004c7f..5d59dca64 100644 --- a/bytes/Cargo.toml +++ b/bytes/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "timely_bytes" -version = "0.30.0" +version = "0.31.0" authors = ["Frank McSherry "] edition.workspace = true rust-version.workspace = true diff --git a/communication/Cargo.toml b/communication/Cargo.toml index 8d803a46e..9ca729304 100644 --- a/communication/Cargo.toml +++ b/communication/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "timely_communication" -version = "0.30.0" +version = "0.31.0" authors = ["Frank McSherry "] description = "Communication layer for timely dataflow" edition.workspace = true @@ -25,9 +25,9 @@ columnar = { workspace = true } getopts = { version = "0.2.24", optional = true } byteorder = "1.5" serde = { version = "1.0", features = ["derive"] } -timely_bytes = { path = "../bytes", version = "0.30" } -timely_container = { path = "../container", version = "0.30.0" } -timely_logging = { path = "../logging", version = "0.30" } +timely_bytes = { path = "../bytes", version = "0.31" } +timely_container = { path = "../container", version = "0.31.0" } +timely_logging = { path = "../logging", version = "0.31" } [dev-dependencies] tempfile = "3" diff --git a/container/Cargo.toml b/container/Cargo.toml index c5bd12b75..feb8330f0 100644 --- a/container/Cargo.toml +++ b/container/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "timely_container" -version = "0.30.0" +version = "0.31.0" description = "Container abstractions for Timely" license = "MIT" edition.workspace = true diff --git a/logging/Cargo.toml b/logging/Cargo.toml index b10414e63..8e0e7ee4f 100644 --- a/logging/Cargo.toml +++ b/logging/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "timely_logging" -version = "0.30.0" +version = "0.31.0" authors = ["Frank McSherry "] description = "Common timely logging infrastructure" edition.workspace = true @@ -16,4 +16,4 @@ license = "MIT" workspace = true [dependencies] -timely_container = { version = "0.30.0", path = "../container" } +timely_container = { version = "0.31.0", path = "../container" } diff --git a/timely/Cargo.toml b/timely/Cargo.toml index 4f8cf81f8..d856f0ae9 100644 --- a/timely/Cargo.toml +++ b/timely/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "timely" -version = "0.30.0" +version = "0.31.0" authors = ["Frank McSherry "] readme = "../README.md" edition.workspace = true @@ -30,10 +30,10 @@ bincode = { version = "1.3" } byteorder = "1.5" itertools = "0.14.0" serde = { version = "1.0", features = ["derive"] } -timely_bytes = { path = "../bytes", version = "0.30" } -timely_logging = { path = "../logging", version = "0.30" } -timely_communication = { path = "../communication", version = "0.30", default-features = false } -timely_container = { path = "../container", version = "0.30" } +timely_bytes = { path = "../bytes", version = "0.31" } +timely_logging = { path = "../logging", version = "0.31" } +timely_communication = { path = "../communication", version = "0.31", default-features = false } +timely_container = { path = "../container", version = "0.31" } smallvec = { version = "1.15.1", features = ["serde", "const_generics"] } [dev-dependencies] From 6ab2cddb8913ae85377ec8377c7a23805d5e453f Mon Sep 17 00:00:00 2001 From: Frank McSherry Date: Tue, 14 Jul 2026 17:06:10 -0400 Subject: [PATCH 2/2] Expand 0.31.0 release notes Replace the auto-generated four-bullet 0.31.0 entry with a themed summary, a breaking-changes note plus API delta table for the PortConnectivity builder/frozen split, and grouped Other entries. Co-Authored-By: Claude Opus 4.8 (1M context) --- CHANGELOG.md | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c66d2b38b..196b5d534 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,12 +9,28 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [0.31.0](https://github.com/TimelyDataflow/timely-dataflow/compare/timely-v0.30.0...timely-v0.31.0) - 2026-07-14 +This release continues excising monomorphization sprawl from the progress subsystem: `PortConnectivity`'s map becomes a sorted `Vec`, removing the last `BTreeMap` and `HashMap` from progress tracking (9.1% fewer LLVM lines on the `bfs` example), alongside clone and allocation trimming on hot paths. + +### Breaking changes + +- **`PortConnectivity` splits into a builder and a frozen reader**, and `Operate::initialize` now returns the frozen form. This type is largely internal; the surface change is below. ([#802](https://github.com/TimelyDataflow/timely-dataflow/pull/802), [#804](https://github.com/TimelyDataflow/timely-dataflow/pull/804)) + +| 0.30 | 0.31 | +| --- | --- | +| `PortConnectivity::insert(i, e) -> bool` | `PortConnectivityBuilder::insert(i, e)` (no return) | +| `PortConnectivity::insert_ref(i, &e) -> bool` | removed; build an `Antichain` and use `add_port` | +| `PortConnectivity::add_port` (panics on duplicate port) | `PortConnectivityBuilder::add_port` (merges duplicate) | +| `tree: BTreeMap` field | gone; construct via `PortConnectivityBuilder::freeze()` | +| `impl FromIterator for PortConnectivity` | `impl FromIterator for PortConnectivityBuilder` | +| `get`, `iter_ports` | unchanged, on the frozen `PortConnectivity` | +| — | `impl IntoIterator for PortConnectivity` (new, consuming) | + ### Other -- trim bookkeeping vector capacities at build ([#806](https://github.com/TimelyDataflow/timely-dataflow/pull/806)) -- Several instances of `.clone()` removed. ([#805](https://github.com/TimelyDataflow/timely-dataflow/pull/805)) -- Add a consuming iterator for PortConnectivity; move summaries rather than clone ([#804](https://github.com/TimelyDataflow/timely-dataflow/pull/804)) -- Replace `BTreeMap` in `PortConnectivity` with a sorted `Vec`; semi-naive iteration replacing in-place updates ([#802](https://github.com/TimelyDataflow/timely-dataflow/pull/802)) +- Removed all `BTreeMap` and `HashMap` from the progress subsystem: `is_acyclic` uses dense per-location in-degree counts, and `summarize_outputs` iterates semi-naively over binary-sized sorted runs. `bfs` example: 254,560 → 231,310 LLVM lines. ([#802](https://github.com/TimelyDataflow/timely-dataflow/pull/802)) +- Move rather than clone summaries in `Tracker::allocate_from` and `Subgraph::initialize`. ([#804](https://github.com/TimelyDataflow/timely-dataflow/pull/804)) +- Removed several clones on progress hot paths: `Capability::drop`, `FrontierNotificator` delivery, capture, `Progcaster::recv`, `builder_raw`. ([#805](https://github.com/TimelyDataflow/timely-dataflow/pull/805)) +- `builder_rc` trims the frontier/consumed/internal/produced bookkeeping vector capacities at build. ([#806](https://github.com/TimelyDataflow/timely-dataflow/pull/806)) ## [0.30.0](https://github.com/TimelyDataflow/timely-dataflow/compare/timely-v0.29.0...timely-v0.30.0) - 2026-05-28