A Gentle Introduction to S-Net: Typed Stream Processing and Declarative Coordination of Asynchronous Components

We present the design of S-NET, a coordination language and component technology based on stream processing. S-NET achieves a near-complete separation between application code, written in a conventional programming language, and coordination code, written in S-NET itself. S-NET boxes integrate existing sequential code as stream-processing components into streaming networks, whose construction is based on algebraic formulae built out of four network combinators. Subtyping on the level of boxes and networks and a tailor-made inheritance mechanism achieve flexible software reuse.

[1]  Chris R. Jesshope,et al.  A Microthreaded Architecture and its Compiler , 2006 .

[2]  Pascal Raymond,et al.  The synchronous data flow programming language LUSTRE , 1991, Proc. IEEE.

[3]  Marc Pouzet,et al.  A Co-iterative Characterization of Synchronous Stream Functions , 1998, CMCS.

[4]  Robert Stephens,et al.  A survey of stream processing , 1997, Acta Informatica.

[5]  Farhad Arbab,et al.  Coordination Models and Languages , 1998, Adv. Comput..

[6]  Farhad Arbab,et al.  Reo: A Channel-based Coordination Model for Component Composition , 2005 .

[7]  C. Grelck,et al.  Implementing S-Net: A Typed Stream Processing Language Part I: Compilation, Code Generation and Deployment. , 2006 .

[8]  David C. Cann,et al.  A Report on the Sisal Language Project , 1990, J. Parallel Distributed Comput..

[9]  C. Grelck,et al.  Report on S-Net: A Typed Stream Processing Language. Part I: Foundations, Record Types and Networks. , 2006 .

[10]  Gert Florijn,et al.  ARIADNE and HOPLa: Flexible Coordination of Collaborative Processes , 1996, COORDINATION.

[11]  Rita Loogen,et al.  Under Consideration for Publication in J. Functional Programming Parallel Functional Programming in Eden , 2022 .

[12]  Manfred Broy,et al.  The algebra of stream processing functions , 2001, Theor. Comput. Sci..

[13]  Clemens Grelck,et al.  SAC—A Functional Array Language for Efficient Multi-threaded Execution , 2006, International Journal of Parallel Programming.

[14]  Greg J. Michaelson,et al.  The Design of Hume: A High-Level Language for the Real-Time Embedded Systems Domain , 2004, Domain-Specific Program Generation.

[15]  Henry Hoffmann,et al.  A stream compiler for communication-exposed architectures , 2002, ASPLOS X.

[16]  Marc Pouzet,et al.  Synchronous Kahn networks , 1996, ICFP '96.

[17]  Gérard Berry,et al.  The Esterel Synchronous Programming Language: Design, Semantics, Implementation , 1992, Sci. Comput. Program..

[18]  William W. Wadge,et al.  Lucid, a nonprocedural language with iteration , 1977, CACM.

[19]  Gheorghe Stefanescu,et al.  An Algebraic Theory of Flowchart Schemes , 1986, CAAP.

[20]  Clemens Grelck,et al.  Extending the S-Net Type System. , 2007 .

[21]  Gilles Kahn,et al.  The Semantics of a Simple Language for Parallel Programming , 1974, IFIP Congress.

[22]  Alexander V. Shafarenko,et al.  Coordinating Data Parallel SAC Programs with S-Net , 2007, 2007 IEEE International Parallel and Distributed Processing Symposium.