ABSTRACT
We present an extension to Standard ML, called SMLSC, to support separate compilation. The system gives meaning to individual program fragments, called units. Units may depend on one another in a way specified by the programmer. A dependency may be mediated by an interface (the type of a unit); if so, the units can be compiled separately. Otherwise, they must be compiled in sequence. We also propose a methodology for programming in SMLSC that reflects code development practice and avoids syntactic repetition of interfaces. The language is given a formal semantics, and we argue that this semantics is implementable in a variety of compilers.
- Rolf Adams, Walter Tichy, and Annette Weinert. The cost of selective recompilation and environment processing. ACM Transactions on Software Engineering and Methodology, 3(1):3--28, January 1994. Google ScholarDigital Library
- Matthias Blume. Dependency analysis for Standard ML. ACM Transactions on Programming Languages and Systems, 21(4):790--812, 1999. Google ScholarDigital Library
- Matthias Blume. CM: The SML/NJ compilation and library manager (for SML/NJ version 110.40 and later) user manual, 2002. http://www.smlnj.org/doc/CM/new.pdf.Google Scholar
- Matthias Blume and Andrew W. Appel. Hierarchical modularity. ACM Transactions on Programming Languages and Systems, 21(4):813--847, 1999. Google ScholarDigital Library
- Luca Cardelli. Program fragments, linking, and modularization. In Proceedings of the ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 266--277. ACM Press, 1997. Google ScholarDigital Library
- Henry Cejtin, Matthew Fluet, Suresh Jagannathan, and Stephen Weeks. Formal specification of the ML Basis system, January 2005. http://mlton.org/MLBasis.Google Scholar
- Martin Elsman. Program Modules, Separate Compilation, and Intermodule Optimisation. PhD thesis, Department of Computer Science, University of Copenhagen, January 1999.Google Scholar
- Neal Glew and Greg Morrisett. Type-safe linking and modular assembly language. In Proceedings of the ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 250--261. ACM Press, 1999. Google ScholarDigital Library
- Robert Harper, Peter Lee, Frank Pfenning, and Eugene Rollins. Incremental recompilation for Standard ML of New Jersey. Technical Report CMU-CS-94-116, School of Computer Science, Carnegie Mellon University, February 1994. Google ScholarDigital Library
- Robert Harper and Mark Lillibridge. A type-theoretic approach to higher-order modules with sharing. In Proceedings of the ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 123--137. ACM Press, 1994. Google ScholarDigital Library
- Robert Harper and Benjamin C. Pierce. Design considerations for ML-style module systems. In Benjamin C. Pierce, editor, Advanced Topics in Types and Programming Languages, chapter 8, pages 293--346. MIT Press, 2005.Google Scholar
- Robert Harper and Christopher Stone. An interpretation of Standard ML in type theory. Technical Report CMU-CS-97-147, School of Computer Science, Carnegie Mellon University, June 1997.Google Scholar
- Robert Harper and Christopher Stone. A type-theoretic interpretation of Standard ML. In Gordon Plotkin, Colin Stirling, and Mads Tofte, editors, Proof, Language, and Interaction: Essays in Honour of Robin Milner. MIT Press, 2000. Google ScholarDigital Library
- Trevor Jim. What are principal typings and what are they good for? In Proceedings of the ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. ACM Press, 1996. Google ScholarDigital Library
- Xavier Leroy, Damien Doligez, Jacques Garrigue, Didier Rémy, and Jérôme Vouillon. The Objective Caml system release 3.09: Documentation and user's manual, 2005. http://caml.inria.fr/pub/docs/manual-ocaml/index.html.Google Scholar
- Robin Milner, Mads Tofte, Robert Harper, and David MacQueen. The Definition of Standard ML (Revised). MIT Press, 1997. Google ScholarDigital Library
- MLKit web site. http://www.itu.dk/research/mlkit/index.php/Main_Page.Google Scholar
- MLton web site. http://mlton.org/.Google Scholar
- Greg Morrisett, David Walker, Karl Crary, and Neal Glew. From system F to typed assembly language. ACM Transactions on Programming Languages and Systems, 21(3):527--568, 1999. Google ScholarDigital Library
- Sergei Romanenko, Claudio Russo, and Peter Sestoft. Moscow ML owner's manual version 2.00, June 2000. http://www.dina.kvl.dk/~sestoft/mosml/manual.pdf.Google Scholar
- David Swasey, Tom Murphy, VII, Karl Crary, and Robert Harper. A separate compilation extension to Standard ML (extended technical report). Technical Report CMU-CS-06-133, School of Computer Science, Carnegie Mellon University, 2006.Google ScholarCross Ref
Index Terms
- A separate compilation extension to standard ML
Recommendations
A simple separate compilation mechanism for block-structured languages
A very simple and efficient technique for the introduction of separate compilation facilities into compilers for block-structured languages is presented. Using this technique, programs may be compiled in parts while the compile-time checking advantages ...
Source-to-Source Compilation via Submodules
ELS2016: Proceedings of the 9th European Lisp Symposium on European Lisp SymposiumRacket's macro system enables language extension and definition primarily for programs that are run on the Racket virtual machine, but macro facilities are also useful for implementing languages and compilers that target different platforms. Even when ...
A Network Protocol Stack in Standard ML
The FoxNet is an implementation of the standard TCP/IP networking protocol stack using the Standard ML (SML) language. SML is a type-safe programming language with garbage collection, a unique and advanced module system, and machine-independent ...
Comments