An Overview of the Flint/ml Compiler

The FLINT project at Yale aims to build a state-of-the-art systems environment for modern type-safe languages. One important component of the FLINT system is a high-performance type-directed compiler for SML'97 (extended with higher-order modules). The FLINT/ML compiler provides several new capabilities that are not available in other type-based compilers: type-directed compilation is carried over across the higher-order module boundaries; recursive and mutable data objects can use unboxed representations without incurring expensive runtime cost on heavily polymorphic code; parameterized modules (functors) can be selectively specialized, just as normal polymorphic functions; new type representations are used to reduce the cost of type manipulation thus the compilation time. This paper gives an overview of these novel aspects, and a preliminary report on the current status of the implementation.

[1]  J. Y. Girard,et al.  Interpretation fonctionelle et elimination des coupures dans l'aritmetique d'ordre superieur , 1972 .

[2]  John C. Reynolds,et al.  Towards a theory of type structure , 1974, Symposium on Programming.

[3]  de Ng Dick Bruijn,et al.  A survey of the project Automath , 1980 .

[4]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[5]  David B. MacQueen Using dependent types to express modular structure , 1986, POPL '86.

[6]  John C. Mitchell,et al.  Higher-order modules and the phase distinction , 1989, POPL '90.

[7]  Gopalan Nadathur,et al.  A representation of Lambda terms suitable for operations on their intensions , 1990, LISP and Functional Programming.

[8]  Andrew W. Appel,et al.  Standard ML of New Jersey , 1991, PLILP.

[9]  Andrew W. Appel,et al.  Compiling with Continuations , 1991 .

[10]  John H. Reppy,et al.  Abstract Value Constructors: Symbolic Constants for Standard ML , 1992 .

[11]  Xavier Leroy,et al.  Unboxed objects and polymorphic typing , 1992, POPL '92.

[12]  John C. Mitchell,et al.  On the type structure of standard ML , 1993, TOPL.

[13]  Xavier Leroy,et al.  Manifest types, modules, and separate compilation , 1994, POPL '94.

[14]  Andrew W. AppelDepartment Space-eecient Closure Representations , 1994 .

[15]  Gopalan Nadathur,et al.  A Notation for Lambda Terms Ii: Reenements and Applications a Notation for Lambda Terms Ii: Reenements and Applications , 2008 .

[16]  John H. Reppy,et al.  A Portable and Optimizing Back End for the SML/NJ Compiler , 1994, CC.

[17]  Mads Tofte,et al.  A Semantics for Higher-Order Functors , 1994, ESOP.

[18]  Zhong Shao,et al.  Space-E cient Closure Representations , 1994 .

[19]  Mark Lillibridge,et al.  A type-theoretic approach to higher-order modules with sharing , 1994, POPL '94.

[20]  Robert Harper,et al.  Compiling polymorphism using intensional type analysis , 1995, POPL '95.

[21]  Greg Morrisett,et al.  Compiling with Types , 1995 .

[22]  Xavier Leroy,et al.  Applicative functors and fully transparent higher-order modules , 1995, POPL '95.

[23]  Andrew W. Appel,et al.  A type-based compiler for standard ML , 1995, PLDI '95.

[24]  Robert Harper,et al.  A Type-Theoretic Account of Standard ML 1996 (Version 1). , 1996 .

[25]  Zhong Shao Flexible representation analysis , 1997, ICFP '97.

[26]  Zhong Shao Typed cross-module compilation , 1998, ICFP '98.