River: an intermediate language for stream processing

Robert Soulé, Martin Hirzel, Buğra Gedik, Robert Grimm

Research output: Contribution to journalArticlepeer-review


Summary This paper presents both a calculus for stream processing, named Brooklet, and its realization as an intermediate language, named River. Because River is based on Brooklet, it has a formal semantics that enables reasoning about the correctness of source translations and optimizations. River builds on Brooklet by addressing the real-world details that the calculus elides. We evaluated our system by implementing front-ends for three streaming languages, and three important optimizations, and a back-end for the System S distributed streaming runtime. Overall, we significantly lower the barrier to entry for new stream-processing languages and thus grow the ecosystem of this crucial style of programming.

Original languageEnglish (US)
Pages (from-to)891-929
Number of pages39
JournalSoftware - Practice and Experience
Issue number7
StatePublished - Jul 1 2016


  • optimizations
  • stream processing

ASJC Scopus subject areas

  • Software


Dive into the research topics of 'River: an intermediate language for stream processing'. Together they form a unique fingerprint.

Cite this