TimelyDataflow / TimelyDataflow/differential-dataflow
Description bounds could have type `Antichain`.
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 3k
- Forks
- 211
- Avg merge
- 10h 42m
- Merged PRs (30d)
- 34
Description
In several places we use Vec<T> and &[T] to indicate frontiers, with the implied contract that they should be antichains. We could actually use antichains through timely dataflow's Antichain<T> type.
Perhaps with some additional wrapping (e.g. Frontier<T>) we (or timely) could partially order these antichains too, using the rule that one comes before another if each element of the other comes after some element of the former.
fn le(a1: &Frontier<T>, a2: &Frontier<T>) -> bool {
a2.elements().iter().all(|t2| a1.elements().iter().any(|t1| t1.le(t2)))
}
This would clean up a bit of code (not lots) and make parts less error-prone / higher confidence.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
The issue names no files or tests. Start by locating uses of Vec and &[T] that represent frontiers, then compare those contracts with timely dataflow's Antichain. Determine whether a Frontier wrapper and the proposed partial ordering are appropriate, and verify that the affected code becomes less error-prone.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- distributed-systems
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100