DirectFlow: A Domain-Specific Language for Information-Flow Systems

  • Chuan-kai Lin
  • Andrew P. Black
Part of the Lecture Notes in Computer Science book series (LNCS, volume 4609)


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.


Data Packet Context Condition Runtime System Custom Component Internal Pipe 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    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)CrossRefGoogle Scholar
  2. 2.
    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)CrossRefGoogle Scholar
  3. 3.
    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)Google Scholar
  4. 4.
    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)CrossRefGoogle Scholar
  5. 5.
    Hart, J.K., Martinez, K.: Environmental sensor networks: A revolution in the earth system science? Earth-Science Reviews 78, 177–191 (2006)CrossRefGoogle Scholar
  6. 6.
    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)CrossRefGoogle Scholar
  7. 7.
    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)Google Scholar
  8. 8.
    Black, A.P., Huang, J., Koster, R., Walpole, J., Pu, C.: Infopipes: an abstraction for multimedia streaming. Multimedia Systems 8(5), 406–419 (2002)CrossRefGoogle Scholar
  9. 9.
    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)CrossRefGoogle Scholar
  10. 10.
    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)Google Scholar
  11. 11.
    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)CrossRefGoogle Scholar
  12. 12.
    Hoare, C.A.R.: Communicating Sequential Processes. In: Series in Computer Science, Prentice-Hall International, Upper Saddle River, NJ, USA (1985)Google Scholar
  13. 13.
    SGS-THOMSON Microelectronics Ltd.: occam 2.1 Reference Manual (1995)Google Scholar
  14. 14.
    Vlissides, J.: 3. In: Pattern Hatching: Design Patterns Applied, pp. 85–101. Addison-Wesley, Reading (1998)Google Scholar
  15. 15.
    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)CrossRefGoogle Scholar
  16. 16.
    Ritchie, D.M.: A stream input-output system. AT&T Bell Laboratories Technical Journal 63(8), 1897–1910 (1984)Google Scholar
  17. 17.
    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)Google Scholar
  18. 18.
    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)Google Scholar
  19. 19.
    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)CrossRefGoogle Scholar
  20. 20.
    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)Google Scholar
  21. 21.
    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)CrossRefGoogle Scholar
  22. 22.
    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)Google Scholar
  23. 23.
    Jones, S.P. (ed.): Haskell 98 Language and Libraries: The Revised Report. Cambridge University Press, Cambridge, UK (2003)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2007

Authors and Affiliations

  • Chuan-kai Lin
    • 1
  • Andrew P. Black
    • 1
  1. 1.Department of Computer Science, Portland State University 

Personalised recommendations