@InProceedings{shao97:_typed_common_inter_format,
  author =	 {Zhong Shao},
  title =	 {Typed Common Intermediate Format},
  booktitle =	 {1997 {USENIX} Conference on Domain-Specific
                  Languages},
  year =	 1997,
  address =	 {Santa Barbara, CA},
  month =	 {Oct},
  abstract =	 {Application languages are very effective in solving
                  specific software problems. Unfortunately, they pose
                  great challenges to reliable and efficient
                  implementations. In fact, most existing application
                  languages are slow, interpreted, and have poor
                  interoperability with general-purpose languages.\par
                  This paper presents a framework for building a high
                  quality systems environment for multiple advanced
                  languages. Our key innovation is the use of a common
                  typed intermediate language, named FLINT, to model
                  the semantics and interactions of various
                  language-specific features. FLINT is based on a
                  predicative variant of the Girard-Reynolds
                  polymorphic calculus F-omega, extended with a very
                  rich set of primitive types and functions.\par FLINT
                  provides a common compiler infrastructure that can
                  be quickly adapted to generate compilers for new
                  general-purpose and domain-specific languages. With
                  its single unified type system, FLINT serves as a
                  great platform for reasoning about cross-language
                  inter-operations. FLINT types act as a glue to
                  connect language features that complicate
                  interoperability, such as mixed data
                  representations, multiple function calling
                  conventions, and different memory management
                  protocols. In addition, because all runtime
                  representations are determined by FLINT types,
                  languages compiled under FLINT can share the same
                  system-wide garbage collector and foreign function
                  call interface.\par }
}
