xtc

The xtc (eXTensible Compiler) project is exploring novel programming languages and tools to improve the expressiveness, safety, and efficiency of complex systems.

Features

Highlights of xtc’s features include:

Additionally, xtc includes support for common tool tasks, such as processing command line flags, managing file search paths, setting character encodings, and reporting program errors.

Discontinued components include:

These components are still accessible through version 1.15.0 of the source release (see below).

Publications

Select publications:

See Robert Grimm’s publications for a list of all papers and talks on xtc.

User guides:

xtc Distribution

xtc is mostly released under the GNU GPL version 2. The main exception are the Rats! and SuperC runtimes, which are released under the GNU LGPL version 2.1. See xtc’s sources and Javadoc documentation for a detailed list of these classes.

xtc’s current distribution is version 2.2.0, which was released 11/19/11. It includes the following files:

Note that the binary distribution xtc.jar contains all classes contained in the parser binary rats.jar and the parser runtime rats-runtime.jar.

Version 1.8.0 of the source distribution is still available to ensure the repeatability of the experimental results reported in the PLDI ’06 paper “Better Extensibility through Modular Syntax.” Version 1.15.0 is the last version to contain several discontinued tools. We preserve both source code and test suite.

The source distribution comes with extensive documentation, including installation instructions (step-by-step.html in xtc’s root directory), an overview of our setup (development.html), and Javadoc-generated class documentation (execute “make doc”).

This page provides an introduction to Rats!, our parser generator. It is part of xtc’s Javadoc documentation (hence the @link mark-up) and uses examples from Rats!’ own grammar as well as from our Java and C grammars (look in the src/xtc/parser and src/xtc/lang directories in the source distribution).

The binary distribution is invoked from the command line by typing:

java -cp xtc.jar tool-class-name

where valid tool class names include:

When invoked without additional arguments, each tool prints usage instructions including recognized command line arguments.

xtc’s dependencies include the following Java packages:

For the source release, the corresponding jar files should be placed into the bin directory of the distribution. The JUnit and JavaBDD jar files should also be added to the class path.

For your convience, dependencies.zip contains the jar files for JUnit 4.8.2, JavaNCSS 32.53, JFlex 1.4.3, and JavaBDD 1.0b2.

Mailing Lists

Acknowledgements

xtc is currently being developed by Paul Gazzillo, Robert Grimm, and Robert Soulé.

Major contributors are Marc Fiuczynski, Buğra Gedik, Laune Harris, Martin Hirzel, Anh Le, Byeongcheol Lee, Kathryn McKinley, Joe Pamer, Ben Wiedermann, and Marco Yuen.

Further contributors are Ken Britton, Chris Capel, Christopher Conway, Christine Flood, Hunter Freyer, Marek Gilbert, Ben Goldberg, Eric Hielscher, Thomas Huston, Chris Jones, Yonas Jongkind, Dejan Jovanović, Adam Kravetz, Stacey Kuznetsov, Petar Maymounkov, Thomas Moschny, William Moy, Janus Dam Nielsen, Karen Osmond, Robin Lee Powell, Matt Renzelmann, Sukyoung Ryu, Jacob Shufro, Uwe Simm, and Mengtao Sun.

xtc is used by:

This material is based in part upon work supported by the National Science Foundation under grants CNS-0448349, CNS-0615129, and CCF-1017849. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation.