An Ml-like module system for the synchronous language Signal
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.
Unable to display preview. Download preview PDF.
- 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.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.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.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.D. Harel and A. Naamad. The Statemate semantics of Statecharts. I-Logix, 1995.Google Scholar
- 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.D. Nowak, Talpin, J.-P., and Gautier, T. Un systeme de modules avancé pour Signal. Rapport de recherche n. ??, 1997. (To appear, available from firstname.lastname@example.org).Google Scholar
- 8.R. Milner, M. Tofte, R. Harper. The definition of Standard Ml. MIT Press, 1990.Google Scholar
- 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.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.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.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