TY - JOUR
T1 - Flo
T2 - A Semantic Foundation for Progressive Stream Processing
AU - Laddad, Shadaj
AU - Cheung, Alvin
AU - Hellerstein, Joseph M.
AU - Milano, Mae
N1 - Publisher Copyright:
© 2025 Copyright held by the owner/author(s).
PY - 2025/1/7
Y1 - 2025/1/7
N2 - Streaming systems are present throughout modern applications, processing continuous data in real-time. Existing streaming languages have a variety of semantic models and guarantees that are often incompatible. Yet all these languages are considered "streaming"- -what do they have in common? In this paper, we identify two general yet precise semantic properties: streaming progress and eager execution. Together, they ensure that streaming outputs are deterministic and kept fresh with respect to streaming inputs. We formally define these properties in the context of Flo, a parameterized streaming language that abstracts over dataflow operators and the underlying structure of streams. It leverages a lightweight type system to distinguish bounded streams, which allow operators to block on termination, from unbounded ones. Furthermore, Flo provides constructs for dataflow composition and nested graphs with cycles. To demonstrate the generality of our properties, we show how key ideas from representative streaming and incremental computation systems - -Flink, LVars, and DBSP - -have semantics that can be modeled in Flo and guarantees that map to our properties.
AB - Streaming systems are present throughout modern applications, processing continuous data in real-time. Existing streaming languages have a variety of semantic models and guarantees that are often incompatible. Yet all these languages are considered "streaming"- -what do they have in common? In this paper, we identify two general yet precise semantic properties: streaming progress and eager execution. Together, they ensure that streaming outputs are deterministic and kept fresh with respect to streaming inputs. We formally define these properties in the context of Flo, a parameterized streaming language that abstracts over dataflow operators and the underlying structure of streams. It leverages a lightweight type system to distinguish bounded streams, which allow operators to block on termination, from unbounded ones. Furthermore, Flo provides constructs for dataflow composition and nested graphs with cycles. To demonstrate the generality of our properties, we show how key ideas from representative streaming and incremental computation systems - -Flink, LVars, and DBSP - -have semantics that can be modeled in Flo and guarantees that map to our properties.
KW - dataflow languages
KW - incremental computation
KW - stream processing
UR - http://www.scopus.com/inward/record.url?scp=85216424294&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=85216424294&partnerID=8YFLogxK
U2 - 10.1145/3704845
DO - 10.1145/3704845
M3 - Article
AN - SCOPUS:85216424294
SN - 2475-1421
VL - 9
JO - Proceedings of the ACM on Programming Languages
JF - Proceedings of the ACM on Programming Languages
M1 - 3704845
ER -