Abstract
We present the rationale and design of S-Net, a coordination language for asynchronous stream processing. The language achieves a near-complete separation between the application code, written in any conventional programming language, and the coordination/communication code written in S-Net. Our approach supports a component technology with flexible software reuse. No extension of the conventional language is required. The interface between S-Net and the application code is in terms of one additional library function. The application code is componentised and presented to S-Net as a set of components, called boxes, each encapsulating a single tuple-to-tuple function. Apart from the boxes defined using an external compute language, S-Net features two built-in boxes: one for network housekeeping and one for data-flow style synchronisation. Streaming network composition under S-Net is based on four network combinators, which have both deterministic and nondeterministic versions. Flexible software reuse is comprehensive, with the box interfaces and even the network structure being subject to subtyping. We propose an inheritance mechanism, named flow inheritance, that is specifically geared towards stream processing. The paper summarises the essential language constructs and type concepts and gives a short application example.
Article PDF
Similar content being viewed by others
Avoid common mistakes on your manuscript.
References
Broy M., Stefanescu G.: The algebra of stream processing functions. Theor. Comput. Sci. 258(1–2), 99–129 (2001)
Kahn, G.: The semantics of a simple language for parallel programming. In: Rosenfeld, L. (ed.) Information Processing 74, August 5–10, Stockholm, pp. 471–475 (1974)
Ashcroft E.A., Wadge W.W.: Lucid, a nonprocedural language with iteration. Commun. ACM 20, 519–526 (1977)
Halbwachs N., Caspi P., Raymond P., Pilaud D.: The synchronous data-flow programming language LUSTRE. Proc. IEEE 79, 1305–1320 (1991)
Berry G., Gonthier G.: The Esterel synchronous programming language: design, semantics, implementation. Sci. Comput. Program. 19, 87–152 (1992)
Binder J.: Safety-critical software for aerospace systems. Aerosp. Am. 2004(8), 26–27 (2004)
Caspi, P., Pouzet, M.: Synchronous Kahn networks. In: Wexelblat, R.L. (ed.) ICFP ’96: Proceedings of the First ACM SIGPLAN International Conference on Functional Programming, pp. 226–238 (1996)
Caspi, P., Pouzet, M.: A co-iterative characterization of synchronous stream functions. In: Bart Jacobs, Larry Moss, H.R., Rutten, J. (eds.) CMCS’98, First Workshop on Coalgebraic Methods in Computer Science Lisbon, Portugal, pp. 1–21, 28–29 March (1998)
Gordon, M.I., et al.: A stream compiler for communication-exposed architectures. In: Proceedings of the Tenth International Conference on Architectural Support for Programming Languages and Operating Systems. San Jose (2002)
Stephens R.: A survey of stream processing. Acta Inform. 34, 491–541 (1997)
Babcock, B., et al.: Models and issues in data stream systems (invited paper). In: Proceedings of the 21st ACM SIGACT-SIGMOD-SIGART Symposium on Principles of Database Systems (PODS 2002), Wisconsin, pp. 1–16 (2002)
Turner, D.A.: An approach to functional operating systems. In: Turner, D.A. (ed.) Research topics in Functional Programming. Addison-Wesley University of Texas At Austin Year of Programming Series. Addison-Wesley Publishing Company, pp. 199–217 (1990)
Stefanescu, G.: An algebraic theory of flowchart schemes. In: Franchi-Zannettacci, P. (ed.) Proceedings 11th Colloquium on Trees in Algebra and Programming. Nice, France, LNCS (214.), pp. 60–73. Springer, New York (1986)
Stefanescu G.: Network Algebra. Springer, New York (2000)
Shafarenko, A.: Stream processing on the grid: an array stream transforming language. In: SNPD, pp. 268–276 (2003)
Grelck, C., Shafarenko, A., Penczek, F., Grelck, C., Cai, H., Julku, J., Hölzenspies, P., Scholz, S.B., Shafarenko, A. (eds.) S-Net Language Report 1.0. Technical Report 487, University of Hertfordshire, School of Computer Science, Hatfield, England (2009)
Grelck, C., Scholz, S.B., Shafarenko, A.: Coordinating Data Parallel SAC Programs with S-Net. In: 21st IEEE International Parallel and Distributed Processing Symposium (IPDPS’07), Long Beach, California, USA, IEEE Computer Society Press, Los Alamitos, California (2007)
Papadopoulos, G.A., Arbab, F.: Coordination models and languages. In: Advances in Computers, vol. 46. Academic Press, London (1998)
Florijn, G., Bessamusca, T., Greefhorst, D.: Ariadne and HOPLa: flexible coordination of collaborative processes. In: Ciancarini, P., Hankin, C. (eds.) First International Conference on Coordination Models, Languages and Applications Coordination’96), pp. 197–214 . Cesena, Italy, 15–17 April 1996. LNCS 1061 (1996)
Feo J.T., Cann D.C., Oldehoeft R.R.: A report on the sisal language project. J. Parallel Distrib. Comput. 10, 349–366 (1990)
Loogen R., Ortega-Mallén Y., Peña-Marí R.: Parallel functional programming in Eden. J. Funct. Program. 15, 431–475 (2005)
Arbab F.: Reo: a channel-based coordination model for component composition. Math. Struct. Comput. Sci. 14, 329–366 (2004)
Cai, H., Eisenbach, S., Grelck, C., Penczek, F., Scholz, S.B., Shafarenko, A.: S-Net Type System and Operational Semantics. In: Proceedings of the Æther-Morpheus Workshop From Reconfigurable to Self-Adaptive Computing (AMWAS’08). Lugano, Switzerland (2008)
Grelck, C., Penczek, F.: Implementation Architecture and Multithreaded Runtime System of S-Net. In: Scholz, S., Chitil, O. (eds.) Implementation and Application of Functional Languages, 20th International Symposium, IFL’08, Hatfield, United Kingdom. Lecture Notes in Computer Science, Springer, New York (2009)
Grelck, C., Julku, J., Penczek, F.: Distributed S-Net. In: Morazan, M. (ed.) Implementation and Application of Functional Languages, 21st International Symposium, IFL’09, South Orange, NJ, USA, Seton Hall University (2009)
Grelck C., Scholz S.B.: SAC: a functional array language for efficient multithreaded execution. Int. J. Parallel Program. 34, 383–427 (2006)
Open Access
This article is distributed under the terms of the Creative Commons Attribution Noncommercial License which permits any noncommercial use, distribution, and reproduction in any medium, provided the original author(s) and source are credited.
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
Open Access This is an open access article distributed under the terms of the Creative Commons Attribution Noncommercial License (https://creativecommons.org/licenses/by-nc/2.0), which permits any noncommercial use, distribution, and reproduction in any medium, provided the original author(s) and source are credited.
About this article
Cite this article
Grelck, C., Scholz, SB. & Shafarenko, A. Asynchronous Stream Processing with S-Net. Int J Parallel Prog 38, 38–67 (2010). https://doi.org/10.1007/s10766-009-0121-x
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10766-009-0121-x