TimelyDataflow / timely-dataflow

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

Remove core #515

Closed antiguru closed 6 months ago

antiguru commented 1 year ago

Warning: breaking changes up ahead!

Fixes #510

This change removes the Core variants of types, traits, and functions that we introduced in #426. However, this means it introduces breaking changes, specifically where we used Data parameters in the past we now use Container. This is desirable because maintaining the old facade comes with a cognitive overhead. After this change, most places that previously specified individual elements now specify containers. All places that only apply to specific (mostly Vec<_>) containers are exepted.

The most notable breaking changes are in inputs, to_stream, and feedback, which now need to know the kind of container they produce. In the past, they were fixed to Vec<_>, but now the caller needs to be explicit about it.

The PR looks rather large, but most of the changes are purely mechanical. For wildly-used types, there is a commit that inlines the non-core variant, and a follow-up to rename the core-variant to the old name. This should make it explicit that each change has limited scope. Tests should pass after each individual change.

antiguru commented 1 year ago

TimelyDataflow/differential-dataflow#383 shows what changes we'd need to make in Differential to switch to the new interface.

antiguru commented 6 months ago

Superseded by various other changes.