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

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.

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

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

[3]  Mark Grand Patterns in Java: A Catalog of Reusable Design Patterns Illustrated with UML , 2002 .

[4]  EDDIE KOHLER,et al.  The click modular router , 2000, TOCS.

[5]  Calton Pu,et al.  Spidle: A DSL Approach to Specifying Streaming Applications , 2003, GPCE.

[6]  William Thies,et al.  StreamIt: A Language for Streaming Applications , 2002, CC.

[7]  Andrew P. Black,et al.  An asymmetric stream communication system , 1983, SOSP '83.

[8]  Kirk Martinez,et al.  Environmental Sensor Networks: A revolution in the earth system science? , 2006 .

[9]  Jonathan Walpole,et al.  Can infopipes facilitate reuse in a traffic application? , 2005, OOPSLA '05.

[10]  Qiang Chen,et al.  Aurora : a new model and architecture for data stream management ) , 2006 .

[11]  D. M. Ritchie,et al.  The UNIX system: A stream input-output system , 1984, AT&T Bell Laboratories Technical Journal.

[12]  T FeoJohn,et al.  A report on the Sisal language project , 1990 .

[13]  Calton Pu,et al.  Thread transparency in information flow middleware , 2003, Softw. Pract. Exp..

[14]  John Vlissides,et al.  Pattern hatching: design patterns applied , 1998 .

[15]  T. Wassmer 6 , 1900, EXILE.

[16]  Christopher Strachey,et al.  OS6 - an experimental operating system for a small computer. Part 2: input/output and filing system , 1972, Comput. J..

[17]  Wu-chi Feng,et al.  Quality-adaptive media streaming by priority drop , 2003, NOSSDAV '03.

[18]  Calton Pu,et al.  Infopipes: an Abstraction for Multimedia Streaming , 2002 .

[19]  C. A. R. Hoare,et al.  Communicating sequential processes , 1978, CACM.

[20]  Magnus Carlsson,et al.  Reactive objects in a functional language : an escape from the Evil I , 1997, ICFP 1997.

[21]  Matthew Might,et al.  Continuations and transducer composition , 2006, PLDI '06.

[22]  Dennis M. Ritchie,et al.  A stream input-output system , 1990 .

[23]  Peyton Jones,et al.  Haskell 98 language and libraries : the revised report , 2003 .

[24]  Andrew P. Black,et al.  Reactive objects , 2002, Proceedings Fifth IEEE International Symposium on Object-Oriented Real-Time Distributed Computing. ISIRC 2002.

[25]  Peter H. Welch,et al.  Process Oriented Design for Java: Concurrency for All , 2002, International Conference on Computational Science.

[26]  Mark Grand,et al.  Patterns in Java, Volume 1, A Catalog of Reusable Design Patterns Illustrated with UML , 1998 .