Skip to content

Commit ebb6b24

Browse files
Merge branch 'master' into docs
2 parents 9d6b4ed + 9579b19 commit ebb6b24

File tree

152 files changed

+5490
-4238
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

152 files changed

+5490
-4238
lines changed

.github/dependabot.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
version: 2
2+
updates:
3+
- package-ecosystem: "github-actions"
4+
directory: "/"
5+
# Check for updates every Monday
6+
schedule:
7+
interval: "weekly"
8+

.github/workflows/deploy.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@ on:
77

88
jobs:
99
deploy:
10-
runs-on: ubuntu-22.04
10+
runs-on: ubuntu-24.04
1111
steps:
12-
- uses: actions/checkout@v3
13-
- run: cargo install mdbook --version 0.4.27
12+
- uses: actions/checkout@v4
13+
- run: cargo install mdbook --version 0.4.40
1414
- run: cd mdbook && mdbook build
1515
- uses: JamesIves/github-pages-deploy-action@v4
1616
with:

.github/workflows/miri.yml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
name: "Test Suite (miri)"
2+
on:
3+
push:
4+
branches:
5+
- master
6+
7+
jobs:
8+
test:
9+
name: cargo miri test on ubuntu, rust nightly
10+
runs-on: ubuntu-latest
11+
steps:
12+
- uses: actions/checkout@v4
13+
- uses: actions-rust-lang/setup-rust-toolchain@v1
14+
with:
15+
toolchain: nightly
16+
components: miri
17+
- name: Cargo test
18+
run: cargo miri test

.github/workflows/release-plz.yml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
name: Release-plz
2+
3+
permissions:
4+
pull-requests: write
5+
contents: write
6+
7+
on:
8+
push:
9+
branches:
10+
- master
11+
12+
jobs:
13+
release-plz:
14+
name: Release-plz
15+
runs-on: ubuntu-latest
16+
steps:
17+
- name: Checkout repository
18+
uses: actions/checkout@v4
19+
with:
20+
fetch-depth: 0
21+
- name: Install Rust toolchain
22+
uses: actions-rust-lang/setup-rust-toolchain@v1
23+
- name: Run release-plz
24+
uses: MarcoIeni/[email protected]
25+
env:
26+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
27+
CARGO_REGISTRY_TOKEN: ${{ secrets.RELEASE_PLZ_CARGO_TOKEN }}

.github/workflows/test.yml

Lines changed: 54 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,58 @@
1-
name: test
2-
3-
on: [push, pull_request]
1+
name: "Test Suite"
2+
on:
3+
push:
4+
branches:
5+
- master
6+
pull_request:
47

58
jobs:
69
test:
7-
runs-on: ubuntu-22.04
10+
strategy:
11+
matrix:
12+
os:
13+
- ubuntu
14+
- macos
15+
- windows
16+
toolchain:
17+
- stable
18+
- 1.78
19+
name: cargo test on ${{ matrix.os }}, rust ${{ matrix.toolchain }}
20+
runs-on: ${{ matrix.os }}-latest
21+
steps:
22+
- uses: actions/checkout@v4
23+
- uses: actions-rust-lang/setup-rust-toolchain@v1
24+
with:
25+
toolchain: ${{ matrix.toolchain }}
26+
components: clippy
27+
- name: Cargo test
28+
run: cargo test --workspace --all-targets
29+
30+
# Check for clippy warnings
31+
clippy:
32+
name: Cargo clippy
33+
runs-on: ubuntu-latest
34+
steps:
35+
- uses: actions/checkout@v4
36+
- uses: actions-rust-lang/setup-rust-toolchain@v1
37+
with:
38+
components: clippy
39+
- name: Cargo clippy
40+
run: cargo clippy --workspace --all-targets
41+
env:
42+
RUSTFLAGS: "" # Don't make test fail on clippy
43+
44+
# Check mdbook files for errors
45+
mdbook:
46+
name: test mdBook
47+
runs-on: ubuntu-latest
848
steps:
9-
- uses: actions/checkout@v3
10-
- run: rustup update 1.64 --no-self-update && rustup default 1.64
11-
- run: cargo build
12-
- name: test mdBook
13-
# rustdoc doesn't build dependencies, so it needs to run after `cargo build`,
14-
# but its dependency search gets confused if there are multiple copies of any
15-
# dependency in target/debug/deps, so it needs to run before `cargo test` et al.
16-
# clutter target/debug/deps with multiple copies of things.
17-
run: for file in $(find mdbook -name '*.md'); do rustdoc --test $file -L ./target/debug/deps; done
18-
- run: cargo test
49+
- uses: actions/checkout@v4
50+
- uses: actions-rust-lang/setup-rust-toolchain@v1
51+
# rustdoc doesn't build dependencies, so it needs to run after `cargo build`,
52+
# but its dependency search gets confused if there are multiple copies of any
53+
# dependency in target/debug/deps, so it needs to run before `cargo test` et al.
54+
# clutter target/debug/deps with multiple copies of things.
55+
- run: cargo clean
56+
- run: cargo build
57+
- name: test mdBook
58+
run: for file in $(find mdbook -name '*.md' | sort); do rustdoc --test $file -L ./target/debug/deps; done

CHANGELOG.md

Lines changed: 130 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,135 @@
22

33
All notable changes to this project will be documented in this file.
44

5+
## [0.20.0](https://github.com/TimelyDataflow/timely-dataflow/compare/timely-v0.19.0...timely-v0.20.0) - 2025-03-28
6+
7+
### Other
8+
9+
- Update timely/src/progress/operate.rs
10+
- Add scaling test
11+
- Switch builder API to port-identified iterators
12+
- Adjust reachability logic to be more linear
13+
- Swap PortConnectivity implementation from Vec to BTreeMap
14+
- Support optional path summaries for disconnected ports
15+
- Make PortConnectivity API more explicit
16+
- Make PortConnectivity a struct, with sufficient methods
17+
- Introduce Connectivity and PortConnectivity type aliases
18+
- Add clippy lints ([#659](https://github.com/TimelyDataflow/timely-dataflow/pull/659))
19+
- Add miri test ([#655](https://github.com/TimelyDataflow/timely-dataflow/pull/655))
20+
21+
## [0.19.0](https://github.com/TimelyDataflow/timely-dataflow/compare/timely-v0.18.1...timely-v0.19.0) - 2025-02-28
22+
23+
### Other
24+
25+
- Use `dep` syntax with `getopts` ([#591](https://github.com/TimelyDataflow/timely-dataflow/pull/591))
26+
- Make Buffer::push_into private ([#649](https://github.com/TimelyDataflow/timely-dataflow/pull/649))
27+
- Remove columnation and flatcontainer deps ([#647](https://github.com/TimelyDataflow/timely-dataflow/pull/647))
28+
29+
## [0.18.1](https://github.com/TimelyDataflow/timely-dataflow/compare/timely-v0.18.0...timely-v0.18.1) - 2025-02-12
30+
31+
### Other
32+
33+
- Update columnar to 0.3, make workspace dependency ([#639](https://github.com/TimelyDataflow/timely-dataflow/pull/639))
34+
35+
## [0.18.0](https://github.com/TimelyDataflow/timely-dataflow/compare/timely-v0.17.1...timely-v0.18.0) - 2025-02-12
36+
37+
### Other
38+
39+
- Update columnar to 0.3, and columnar example ([#635](https://github.com/TimelyDataflow/timely-dataflow/pull/635))
40+
- Convert Write::write to Write::write_all ([#636](https://github.com/TimelyDataflow/timely-dataflow/pull/636))
41+
- Introduce foundation for broadcast channel ([#633](https://github.com/TimelyDataflow/timely-dataflow/pull/633))
42+
43+
## [0.17.1](https://github.com/TimelyDataflow/timely-dataflow/compare/timely-v0.17.0...timely-v0.17.1) - 2025-01-24
44+
45+
### Other
46+
47+
- Derive ord/eq traits for Product's columnar variant ([#630](https://github.com/TimelyDataflow/timely-dataflow/pull/630))
48+
49+
## [0.17.0](https://github.com/TimelyDataflow/timely-dataflow/compare/timely-v0.16.1...timely-v0.17.0) - 2025-01-23
50+
51+
### Other
52+
53+
- Move opinions about reachability logging into TrackerLogger ([#629](https://github.com/TimelyDataflow/timely-dataflow/pull/629))
54+
- Align `Bytesable` messages to `u64` ([#614](https://github.com/TimelyDataflow/timely-dataflow/pull/614))
55+
- Flatten reachability logging, log identifier ([#628](https://github.com/TimelyDataflow/timely-dataflow/pull/628))
56+
- Log operator summaries using clever approach ([#626](https://github.com/TimelyDataflow/timely-dataflow/pull/626))
57+
- Allow event iterators to surface owned data ([#627](https://github.com/TimelyDataflow/timely-dataflow/pull/627))
58+
- Typed logging ([#624](https://github.com/TimelyDataflow/timely-dataflow/pull/624))
59+
60+
## [0.16.1](https://github.com/TimelyDataflow/timely-dataflow/compare/timely-v0.16.0...timely-v0.16.1) - 2025-01-16
61+
62+
### Other
63+
64+
- Avoid allocation in progcaster ([#622](https://github.com/TimelyDataflow/timely-dataflow/pull/622))
65+
- Log action can distinguish data from flush ([#619](https://github.com/TimelyDataflow/timely-dataflow/pull/619))
66+
- give_container for arbitrary container builders ([#621](https://github.com/TimelyDataflow/timely-dataflow/pull/621))
67+
- Add an is_empty check before retrieving elapsed time. ([#620](https://github.com/TimelyDataflow/timely-dataflow/pull/620))
68+
- Correct documentation for execute_from_args ([#617](https://github.com/TimelyDataflow/timely-dataflow/pull/617))
69+
70+
## [0.16.0](https://github.com/TimelyDataflow/timely-dataflow/compare/timely-v0.15.1...timely-v0.16.0) - 2025-01-09
71+
72+
### Other
73+
74+
- Define loggers in terms of container builders ([#615](https://github.com/TimelyDataflow/timely-dataflow/pull/615))
75+
- Remove SizableContainer requirement from partition ([#612](https://github.com/TimelyDataflow/timely-dataflow/pull/612))
76+
77+
## [0.15.1](https://github.com/TimelyDataflow/timely-dataflow/compare/timely-v0.15.0...timely-v0.15.1) - 2024-12-18
78+
79+
### Other
80+
81+
- Remove worker identifier from logging ([#533](https://github.com/TimelyDataflow/timely-dataflow/pull/533))
82+
- add `.partition()` for `StreamCore` (#610)
83+
- Update columnar ([#611](https://github.com/TimelyDataflow/timely-dataflow/pull/611))
84+
- Introduce columnar and derive extensively ([#608](https://github.com/TimelyDataflow/timely-dataflow/pull/608))
85+
86+
## [0.15.0](https://github.com/TimelyDataflow/timely-dataflow/compare/timely-v0.14.1...timely-v0.15.0) - 2024-12-05
87+
88+
### Other
89+
90+
- Prefer byteorder in place of bincode ([#607](https://github.com/TimelyDataflow/timely-dataflow/pull/607))
91+
- Use help from columnar 0.1.1 ([#606](https://github.com/TimelyDataflow/timely-dataflow/pull/606))
92+
- Reorganize `Container` traits ([#605](https://github.com/TimelyDataflow/timely-dataflow/pull/605))
93+
- Robustify potential Bytes alignment
94+
- Correct bincode call to use and update reader
95+
- Demonstrate `columnar` stuff ([#586](https://github.com/TimelyDataflow/timely-dataflow/pull/586))
96+
- Allow containers to specify their own serialization ([#604](https://github.com/TimelyDataflow/timely-dataflow/pull/604))
97+
- Remove Container: Clone + 'static ([#540](https://github.com/TimelyDataflow/timely-dataflow/pull/540))
98+
- Apply various Clippy recommendations ([#603](https://github.com/TimelyDataflow/timely-dataflow/pull/603))
99+
- Several improvements around `Bytesable` and `Message`. ([#601](https://github.com/TimelyDataflow/timely-dataflow/pull/601))
100+
101+
## [0.14.1](https://github.com/TimelyDataflow/timely-dataflow/compare/timely-v0.14.0...timely-v0.14.1) - 2024-11-12
102+
103+
### Added
104+
105+
The type `timely::Message` is now publicly re-exported.
106+
107+
### Other
108+
109+
- Public Message type ([#599](https://github.com/TimelyDataflow/timely-dataflow/pull/599))
110+
111+
## [0.14.0](https://github.com/TimelyDataflow/timely-dataflow/compare/timely-v0.13.0...timely-v0.14.0) - 2024-11-11
112+
113+
### Added
114+
115+
The trait `communication::Bytesable`, for types that must be serialized into or from a `Bytes`, and stands in for "timely appropriate serialization".
116+
The trait `communication::Exchangeable`, a composite trait bringing together the requirements on a type for it to be sent along a general purpose communication channel.
117+
118+
### Removed
119+
120+
The communication `Message` and `RefOrMut` types have been removed.
121+
The `RefOrMut` type wrapped either a `&T` or a `&mut T`, but with the removal of `abomonation` it is always a `&mut T`.
122+
The `Message` type was used to indicate the serialization / deserialization behavior, and these opinions (e.g. "use `bincode`") have been migrated to the core `timely` crate.
123+
124+
### Other
125+
126+
- Move opinions about encoding from `communication` to `timely`. ([#597](https://github.com/TimelyDataflow/timely-dataflow/pull/597))
127+
- Rust updates, better doc testing ([#598](https://github.com/TimelyDataflow/timely-dataflow/pull/598))
128+
- Simplify communication `Message` type ([#596](https://github.com/TimelyDataflow/timely-dataflow/pull/596))
129+
130+
## 0.13.0 - 2024-10-29
131+
132+
Changelog bankruptcy declared.
133+
5134
## 0.12.0
6135

7136
The `Timestamp` trait has a new method `minimim()` that replaces Timely's use of `Default::default()` for default capabilities. The most pressing reason for this is the use of signed integers for timestamps, where Timely would effectively prevent the use of negative numbers by providing the default value of zero for capabilities. This should not have reduced any functionality, but might provide surprising output for programs that use integer timestamps and do not first advance timestamps (the tidy `0` will be replaced with `_::min_value()`).
@@ -50,7 +179,7 @@ The address associated with each operator, a `[usize]` used to start with the id
50179

51180
The `Worker` and the `Subgraph` operator no longer schedules all of their child dataflows and scopes by default. Instead, they track "active" children and schedule only those. Operators become active by receiving a message, a progress update, or by explicit activation. Some operators, source as `source`, have no inputs and will require explicit activation to run more than once. Operators that yield before completing all of their work (good for you!) should explicitly re-activate themselves to ensure they are re-scheduled even if they receive no further messages or progress updates. Documentation examples for the `source` method demonstrate this.
52181

53-
The `dataflow_using` method has been generalized to support arbitrary dataflow names, loggers, and additional resources the dataflow should keep alive. Its name has been chaged to `dataflow_core`.
182+
The `dataflow_using` method has been generalized to support arbitrary dataflow names, loggers, and additional resources the dataflow should keep alive. Its name has been changed to `dataflow_core`.
54183

55184
You can now construct `feedback` operators with a `Default::default()` path summary, which has the ability to not increment timestamps. Instead of panicking, Timely's reachability module will inform you if a non-incrementing cycle is detected, at which point you should probably double check your code. It is not 100% known what the system will do in this case (e.g., the progress tracker may enter a non-terminating loop; this is on you, not us ;)).
56185

Cargo.toml

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,78 @@ members = [
77
"timely",
88
]
99

10+
resolver = "2"
11+
12+
[workspace.package]
13+
edition = "2021"
14+
15+
[workspace.dependencies]
16+
columnar = "0.4.1"
17+
18+
[workspace.lints.clippy]
19+
type_complexity = "allow"
20+
option_map_unit_fn = "allow"
21+
wrong_self_convention = "allow"
22+
should_implement_trait = "allow"
23+
module_inception = "allow"
24+
25+
#as_conversions = "warn"
26+
bool_comparison = "warn"
27+
borrow_interior_mutable_const = "warn"
28+
borrowed_box = "warn"
29+
builtin_type_shadow = "warn"
30+
clone_on_ref_ptr = "warn"
31+
crosspointer_transmute = "warn"
32+
dbg_macro = "warn"
33+
deref_addrof = "warn"
34+
disallowed_macros = "warn"
35+
disallowed_methods = "warn"
36+
disallowed_types = "warn"
37+
double_must_use = "warn"
38+
double_neg = "warn"
39+
double_parens = "warn"
40+
duplicate_underscore_argument = "warn"
41+
excessive_precision = "warn"
42+
extra_unused_lifetimes = "warn"
43+
from_over_into = "warn"
44+
match_overlapping_arm = "warn"
45+
must_use_unit = "warn"
46+
mut_mutex_lock = "warn"
47+
needless_borrow = "warn"
48+
needless_pass_by_ref_mut = "warn"
49+
needless_question_mark = "warn"
50+
needless_return = "warn"
51+
no_effect = "warn"
52+
panicking_overflow_checks = "warn"
53+
partialeq_ne_impl = "warn"
54+
print_literal = "warn"
55+
redundant_closure = "warn"
56+
redundant_closure_call = "warn"
57+
redundant_field_names = "warn"
58+
redundant_pattern = "warn"
59+
redundant_slicing = "warn"
60+
redundant_static_lifetimes = "warn"
61+
same_item_push = "warn"
62+
shadow_unrelated = "warn"
63+
single_component_path_imports = "warn"
64+
suspicious_assignment_formatting = "warn"
65+
suspicious_else_formatting = "warn"
66+
suspicious_unary_op_formatting = "warn"
67+
todo = "warn"
68+
transmutes_expressible_as_ptr_casts = "warn"
69+
unnecessary_cast = "warn"
70+
unnecessary_lazy_evaluations = "warn"
71+
unnecessary_mut_passed = "warn"
72+
unnecessary_unwrap = "warn"
73+
unused_async = "warn"
74+
useless_asref = "warn"
75+
useless_conversion = "warn"
76+
useless_format = "warn"
77+
wildcard_in_or_patterns = "warn"
78+
write_literal = "warn"
79+
zero_divided_by_zero = "warn"
80+
zero_prefixed_literal = "warn"
81+
1082
[profile.release]
1183
opt-level = 3
1284
debug = true

0 commit comments

Comments
 (0)