The ATS Programming Language
Unleashing the Potentials of Types and Templates!



ATS/Proto, written in OCaml, is the first complete implementation of ATS. In this implementation, the standard boxed data representation is chosen to implement parametric polymorphism. There is direct support in ATS/Proto for object-oriented programming (OOP), which is no longer available in later implementations of ATS. Also, there is support in ATS/Proto for typed meta-programming (MP), that is, constructing programs that can output well-typed programs, which is mostly abandoned in later implementations. As of now, ATS/Proto is no longer actively maintained and its main purpose is to serve as an example for future reference.


ATS/Geizella is a previously released implementation of ATS, which is also written in OCaml. In this implementation, the native unboxed data representation (as is in C) is adopted, making ATS/Geizella particularly well-suited for direct interaction with C (that incurs no run-time overhead). As for parametric polymorphism, it is supported in ATS/Geizella through the use of templates. ATS/Geizella is now largely out of active use as ATS/Anairiats, a compiler for ATS that is almost entirely written in ATS, has been bootstrapped successfully (with the help of ATS/Geizella).


ATS/Anairiats is the currently released implementation of ATS. It is nearly entirely written in ATS itself, consisting of 100,000+ lines of source code. When compared to ATS/Geizella, a previous implementation of ATS, ATS/Anairiats is significantly more efficient, and in general it issues more informative messages for identifying program errors.

Bootstrapping via gcc: In order to bootstrap ATS/Anairiats, one needs to first check out the following svn directory and name it as some local directory, say, "FOO":

svn checkout svn:// FOO

Note that this checkout puts the C code needed for bootstrapping in a directory of the name "FOO/bootstrap0". Please go into the directory "FOO" and then execute 'make all'. If the directory "FOO/bootstrap0" is not present, please check it out by executing the following command-line:

svn checkout svn:// FOO/bootstrap0

Bootstrapping via ocaml It is also possible to use the ATS/Geizella compiler (written in OCaml) for bootstrapping ATS/Anairiats. This can be done by checking out the following svn directory and name it as the local directory "FOO/bootstrap0":

svn checkout svn:// FOO/bootstrap0

After this is done, please go into the directory "FOO" and then execute 'make all-geizella'.


ATS/Postiats is the currently released implementation of ATS2. It is nearly entirely written in ATS1, consisting of 140,000+ lines of source code.
This page is created with ATS by Hongwei Xi and also maintained by Hongwei Xi. Logo