Welcome to the home page of

MetaOCaml (This page has moved to Rice University)

A compiled, type-safe, multi-stage programming language.
Download current (June 14th, 2002) (or archived distributions) of bytecode compiler
  and follow instructions in INSTALL-META
Download "Multi-stage programming:  Its theory and applications"
  and read first three chapters
Download Cygwin to use under Windows (you need only gcc and make).
Email or subscribe to the moderated MetaOCaml mailing list

Introduction

    In addition to having the usual constructs of a general-purpose language, multi-stage languages internalize the notions of runtime program generation and execution. Thus, multi-stage languages provide the programmer with the essence of partial evaluation and program specialization techniques, both of which have been shown to lead to dramatic resource-utilization gains in a wide range of applications, starting from implementations of domain-specific compilers, to high-performance operating systems. Multi-stage languages make it possible to write generic and highly-parameterized programs that do not pay unnecessary runtime overheads.

    MetaOCaml is a multi-stage extension of the OCaml programming language, and provides three basic constructs called Brackets, Escape, and Run for building, combining, and executing future-stage computations, respectively.  (Please read README-META file in distribution for MetaOCaml's syntax for these constructs).  MetaOCaml is a compiled dialect of MetaML

Multi-Stage Programming Papers

Related Systems

MetaML:  An interpreted, multi-stage ML Tempo:  A C partial evaluation system DyC:  A dynamic compilation framework
'C:  A compiled, two-level C Fabius:  An RTCG ML compiler

The MetaOCaml Team

Walid Taha Cristiano Calcagno Liwen Huang Xavier Leroy

Acknowledgments

This work was funded by NSF ITR on "Putting Multi-stage Annotations to Work"
This page was designed with the help of Molly Bigelow