TimelyDataflow / timely-dataflow

A modular implementation of timely dataflow in Rust
MIT License
3.25k stars 272 forks source link

Back `MutableAntichain` by `ChangeBatch` #505

Closed frankmcsherry closed 1 year ago

frankmcsherry commented 1 year ago

This PR removes the Vec<(T, i64)> from MutableAntichain and replaces it with a ChangeBatch<T>. There is a regression here in that several "unsafe" methods involving dirty bits are removed. Their justification was around progress tracking, and that justification no longer exists. This removes several ways in which one could write incorrect code (by dirtying things up and then reading data without first cleaning). These are now prevented.

Some potential for performance regressions in that certain loops are not exited as early as they are elsewhere, and the eager compaction work may not be helpful in all cases.

cc: @teskje

fixes #504