Abstract
Programs that process streams of information are commonly built by assembling reusable information-flow components. In some systems the components must be chosen from a pre-defined set of primitives; in others the programmer can create new custom components using a general-purpose programming language.
Neither approach is ideal: restricting programmers to a set of primitive components limits the expressivity of the system, while allowing programmers to define new components in a general-purpose language makes it difficult or impossible to reason about the composite system. We advocate defining information-flow components in a domain-specific language (DSL) that enables us to infer the properties of the components and of the composed system; this provides us with a good compromise between analysability and expressivity.
This paper presents DirectFlow, which comprises a DSL, a compiler and a runtime system. The language allows programmers to define objects that implement information-flow components without specifying how messages are sent and received. The compiler generates Java classes by inferring the message sends and methods, while the run-time library constructs information-flow networks by composition of DSL-defined components with standard components.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Kohler, E., Morris, R., Chen, B., Jannotti, J., Kaashoek, M.F.: The Click modular router. ACM Transactions on Computer Systems 18(3), 263–297 (2000)
Abadi, D.J., Carney, D., Çetintemel, U., Cherniack, M., Convey, C., Lee, S., Stonebraker, M., Tatbul, N., Zdonik, S.: Aurora: a new model and architecture for data stream management. International Journal on Very Large Data Bases 12(2), 120–139 (2003)
Krasic, C., Walpole, J., Feng, W.: Quality-adaptive media streaming by priority drop. In: Papadopoulos, C., Almeroth, K.C. (eds.) Network and Operating System Support for Digital Audio and Video, 13th International Workshop, NOSSDAV 2003, June 2003, pp. 112–121 (2003)
Murphy-Hill, E., Lin, C., Black, A.P., Walpole, J.: Can Infopipes facilitate reuse in a traffic application? In: Companion to the 20th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, October 2005, pp. 100–101. ACM Press, New York (2005)
Hart, J.K., Martinez, K.: Environmental sensor networks: A revolution in the earth system science? Earth-Science Reviews 78, 177–191 (2006)
Thies, W., Karczmarek, M., Amarasinghe, S.: StreamIt: a language for streaming applications. In: Horspool, R.N. (ed.) CC 2002 and ETAPS 2002. LNCS, vol. 2304, pp. 179–195. Springer, Heidelberg (2002)
Consel, C., Hamdi, H., Réveillère, L., Singaravelu, L., Yu, H., Pu, C.: Spidle: a DSL approach to specifying streaming applications. In: Pfenning, F., Smaragdakis, Y. (eds.) GPCE 2003. LNCS, vol. 2830, pp. 1–17. Springer, Heidelberg (2003)
Black, A.P., Huang, J., Koster, R., Walpole, J., Pu, C.: Infopipes: an abstraction for multimedia streaming. Multimedia Systems 8(5), 406–419 (2002)
Koster, R., Black, A.P., Huang, J., Walpole, J., Pu, C.: Thread transparency in information flow middleware. In: Guerraoui, R. (ed.) Middleware 2001. LNCS, vol. 2218, pp. 121–140. Springer, Heidelberg (2001)
Grand, M.: 6. In: Patterns in Java: a catalog of reusable design patterns illustrated in UML, vol. 1, pp. 155–163. John Wiley & Sons, Chichester (1998)
Shivers, O., Might, M.: Continuations and transducer composition. In: PLDI’06: Proceedings of the 2006 ACM SIGPLAN Conference on Programming Language Design and Implementation, June 2006, pp. 295–307. ACM Press, New York (2006)
Hoare, C.A.R.: Communicating Sequential Processes. In: Series in Computer Science, Prentice-Hall International, Upper Saddle River, NJ, USA (1985)
SGS-THOMSON Microelectronics Ltd.: occam 2.1 Reference Manual (1995)
Vlissides, J.: 3. In: Pattern Hatching: Design Patterns Applied, pp. 85–101. Addison-Wesley, Reading (1998)
Stoy, J.E., Strachey, C.: OS6 — an experimental operating system for a small computer. Part 2: input/output and filing system. Computer Journal 15(3), 195–203 (1972)
Ritchie, D.M.: A stream input-output system. AT&T Bell Laboratories Technical Journal 63(8), 1897–1910 (1984)
Papadopoulos, G.A., Arbab, F.: Coordination Models and Languages. In: The Engineering of Large Systems, September 1998. Advances in Computers, vol. 46, pp. 329–400. Academic Press, London (1998)
Welch, P.H.: Process oriented design for Java: concurrency for all. In: Arabnia, H.R. (ed.) Proceedings of the International Conference on Parallel and Distributed Processing Techniques and Applications (PDPTA 2000), June 2000, vol. 1, pp. 51–57. CSREA Press (2000)
Black, A.P.: An asymmetric stream communication system. In: Proceedings of the Ninth ACM Symposium on Operating System Principles, October 1983, pp. 4–10. ACM Press, New York (1983)
Nordlander, J., Carlsson, M.: Reactive objects in a functional language: an escape from the evil “I”. In: Proceedings of the Third Haskell Workshop (June 1997)
Nordlander, J., Jones, M.P., Carlsson, M., Kieburtz, R.B., Black, A.P.: Reactive objects. In: Proceedings of the Fifth IEEE International Symposium on Object-Oriented Real-Time Distributed Computing, April 2002, pp. 155–158. IEEE Computer Society Press, Los Alamitos (2002)
Feo, J.T., Cann, D.C., Oldehoeft, R.R.: A report on the Sisal language project. Journal of Parallel and Distributed Computing (Special issue: data-flow processing) 10(4), 349–366 (1990)
Jones, S.P. (ed.): Haskell 98 Language and Libraries: The Revised Report. Cambridge University Press, Cambridge, UK (2003)
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 2007 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Lin, Ck., Black, A.P. (2007). DirectFlow: A Domain-Specific Language for Information-Flow Systems. In: Ernst, E. (eds) ECOOP 2007 – Object-Oriented Programming. ECOOP 2007. Lecture Notes in Computer Science, vol 4609. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-73589-2_15
Download citation
DOI: https://doi.org/10.1007/978-3-540-73589-2_15
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-73588-5
Online ISBN: 978-3-540-73589-2
eBook Packages: Computer ScienceComputer Science (R0)