Implementations of ATS


  • ATS/Proto is the first implementation of ATS. In this implementation, the standard boxed data representation is used to support parametric polymorphism. At this moment, ATS/Proto is not actively maintained and its main purpose is to serve as an example for future reference.

  • ATS/Geizella is the current released implementation of ATS (written in Objective Caml and C). In this implementation, the native unboxed data representation (as is in C) is adopted, and this makes ATS/Geizella particularly well suited for direct interaction with C. As for parametric polymorphism, it is supported in ATS/Geizella through the use of templates.

  • ATS/Geizellats is currently being implemented in ATS. This effort to produce a compiler for ATS written in ATS is progressing well. So far ATS/Geizellats consists of more than 60K lines of code written in ATS, and it can already typecheck ATS programs. Compared to ATS/Geizella, ATS/Geizellats is significantly more efficient, and in general it issues more informative messages for identifying program errors.


  • This page is maintained by Hongwei Xi. As always, your comments are welcome.