Abstract
One of the appreciated features of the synchronous dataflow approach is that a program defines a perfectly deterministic behavior. But the use of the delay primitive leads to undefined values at the first cycle; thus a dataflow program is really deterministic only if it can be shown that such undefined values do not affect the behavior of the system.
This paper presents an initialization analysis that guarantees the deterministic behavior of programs. This property being undecidable in general, the paper proposes a safe approximation of the property, precise enough for most dataflow programs. This analysis is a one-bit analysis – expressions are either initialized or uninitialized – and is defined as an inference-type system with subtyping constraints. This analysis has been implemented in the Lucid Synchrone compiler and in a new Scade-Lustre prototype compiler at Esterel Technologies. The analysis gives very good results in practice.
Similar content being viewed by others
References
Aiken A, Wimmers E (1993) Type inclusion constraints and type inference. In: 7th conference on functional programming and computer architecture, Copenhagen. ACM Press, June 1993, pp 31–41
Aiken A, Wimmers E, Palsberg J (1997) Optimal representations of polymorphic types with subtyping. In: Theoretical Aspects of Computer Software (TACS), September 1997
Ashcroft EA, Wadge WW (1985) Lucid, the data-flow programming language. In: APIC studies in data processing, vol 22. Academic
Caspi P, Pouzet M (1996) Synchronous Kahn networks. In: ACM SIGPLAN international conference on functional programming, Philadelphia, May 1996
Caspi P, Pouzet M (2001) Lucid Synchrone, a functional extension of Lustre. Available at: www-spi.lip6.fr/∼pouzet
Colaço J-L, Pouzet M (2002) Type-based initialization of a synchronous data-flow language. In: Synchronous languages, applications, and programming, vol 65. Electronic notes in theoretical computer science
Cuoq P, Pouzet M (2001) Modular causality in a synchronous stream language. In: European symposium on programming (ESOP’01), Genova, Italy, April 2001
Halbwachs N, Caspi P, Raymond P, Pilaud D (1991) The synchronous dataflow programming language lustre. Proc IEEE 79(9):1305–1320
Kahn G (1974) The semantics of a simple language for parallel programming. In: IFIP 74 Congress. North Holland, Amsterdam
Mitchell JC (1996) Foundations for programming languages. MIT Press, Cambridge, MA
Pottier F (1996) Simplifying subtyping constraints. In: Proceedings of the ACM SIGPLAN international conference on functional programming (ICFP’96), May 1996, pp 122–133
Pottier F (2001) Simplifying subtyping constraints: a theory. Inf Comput 170(2):153–183
Pouzet M (2001) Lucid Synchrone, version 2. Tutorial and reference manual. Université Pierre et Marie Curie, LIP6, May 2001. Available at: www-spi.lip6.fr/lucid-synchrone
SCADE (2004) http://www.esterel-technologies.com/scade/
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
Colaço, JL., Pouzet, M. Type-based initialization analysis of a synchronous dataflow language. Int J Softw Tools Technol Transfer 6, 245–255 (2004). https://doi.org/10.1007/s10009-004-0160-y
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10009-004-0160-y