An Ml-like module system for the synchronous language Signal

  • David Nowak
  • Jean-Pierre Talpin
  • Thierry Gautier
  • Paul Le Guernic
Workshop 20: Real-Time Systems and Constraints
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1300)

Abstract

Synchronous languages, such as Signal, are best suited for the design of dependable real-time systems. Synchronous languages enable a very high-level specification and an extremely modular implementation of complex systems by structurally decomposing them into elementary synchronous processes. Separate compilation in reactive languages is however made a difficult issue by global safety requirements. To enable separate compilation of the functional components of reactive systems while preserving their global integrity, we introduce a module system for Signal. Just as data-types describe the invariants of program modules in functional languages, temporal and data-flow invariants interface Signal processes to their environment. In conventional languages, typing is the medium allowing the separate compilation of functions in a program. In Signal, the notion of conditional data-flow graph can similarly be used for separately compiling reactive processes and for assembling them in complex systems. Following this principle, we present the first design and implementation of a polymorphic type system and of a module system for the synchronous language Signal.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    T. P. Amagbegnon, L. Besnard and P. Le Guernic. Implementation of the data-flow synchronous language Signal. In Proceedings of the 1995's ACM Conference on Programming Language Design and Implementation, p. 163–173. ACM, 1995.Google Scholar
  2. 2.
    A. Benveniste, P. Le Guernic and C. Jacquemot. Synchronous programming with events and relations: the Signal language and its semantics. In Science of Computer Programming, v. 16, p. 103–149, 1991.Google Scholar
  3. 3.
    G. Berry and G. Gonthier. The Esterel synchronous programming language: design, semantics, implementation. In Science of Computer Programming, v. 19, p. 87–152, 1992.Google Scholar
  4. 4.
    N. Halbwachs, P. Caspi, P. Raymond and D. Pilaud. The synchronous data-flow programming language Lustre. In Proceedings of the IEEE, v. 79(9). IEEE Press, 1991.Google Scholar
  5. 5.
    D. Harel and A. Naamad. The Statemate semantics of Statecharts. I-Logix, 1995.Google Scholar
  6. 6.
    Thierry Gautier, Paul Le Guernic, and François Dupont. Signal v4: manuel de référence. Technical report n. 832. IRISA, 1994.Google Scholar
  7. 7.
    D. Nowak, Talpin, J.-P., and Gautier, T. Un systeme de modules avancé pour Signal. Rapport de recherche n. ??, 1997. (To appear, available from nowak@irisa.fr).Google Scholar
  8. 8.
    R. Milner, M. Tofte, R. Harper. The definition of Standard Ml. MIT Press, 1990.Google Scholar
  9. 9.
    M. Tofte. Principal signatures for higher-order program modules. In Proceedings of the 1992's ACM Symposium Principles of Programming Languages, p. 189–199. ACM, 1992.Google Scholar
  10. 10.
    X. Leroy. Applicative functors and fully transparent higher-order modules. In Proceedings of the 1995's ACM Symposium Principles of Programming Languages. ACM, 1995.Google Scholar
  11. 11.
    O. Maffeïs and P. Le Guernic. Distributed implementation of Signal: scheduling and graph clustering. In Symposium on Formal Techniques in Real-Time and Fault-Tolerant Systems. Lecture Notes in Computer Science n. 863. Springer Verlag, 1994.Google Scholar
  12. 12.
    J.-P. Talpin. Reactive Types. In Conference on the Theory and Practice of Software Development (TAPSOFT'97). Lecture Notes in Computer Science. Springer Verlag, 1997.Google Scholar

Copyright information

© Springer-Verlag 1997

Authors and Affiliations

  • David Nowak
    • 1
  • Jean-Pierre Talpin
    • 1
  • Thierry Gautier
    • 1
  • Paul Le Guernic
    • 1
  1. 1.IRISA (IRRIA-Rennes & CNRS) Campus de BeaulieuRennes

Personalised recommendations