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.
['David Nowak', 'Jean-Pierre Talpin', 'Thierry Gautier', 'Paul Le Guernic']
An ML-Like Module System for the Synchronous Language SIGNAL