About

REACTOR is a group project created by students at Imperial College's Department of Computing. The application is a groundbreaking method for testing and validating compilers, using automated test generation to cover large areas of grammar, as well as forcing interesting edge cases in a language. REACTOR is implemented to test Java compilers, and the final version of the group's work is due for release in early January 2009.

What Is A Compiler?

A compiler is a method for turning high-level computer code (written in a language such as Java) into a form that a computer can understand (which we often refer to as "machine code"). Compilers are a hugely important part of computing, and a lot of research goes into their creation and optimisation. Testing a compiler to verify that it is correct is a crucial part of compiler development, as any user will rely on the compiler to generate correct code for the machine to execute.

Why REACTOR?

At the moment, testing a compiler requires someone to write a series of tests by hand, that he or she expects to test most of the language rules and investigate important edge cases. If the compiler passes these tests, it is assumed to be correct.

However, these tests may not be enough to completely test a compiler. And unless everyone uses the same set of tests, there is no way of guaranteeing that two compilers comply with the same language rules.

REACTOR standardises testing by providing a suite of tests that can be run on any compiler, or run on two compilers at once, comparing the output to confirm that the compilers agree on the result of each test. More importantly, the tests that REACTOR generates cover a wider range of language features, testing interesting permutations that might be ignored, and assuming far less about the compiler than a human might do. By considering a wider range of tests, and automating their execution on a compiler, REACTOR greatly improves the process of testing and validating a compiler's correctness.

Where Can I Learn More?

Tristan Allwood has written a paper, Tickling Java With A Feather, in which he explains his attempts to write an automatic test generator for Featherweight Java, a subset of Java. This paper led directly to REACTOR, and both Tristan Allwood and Susan Eisenbach helped in its creation.

REACTOR was created as a third-year group project by Caroline Anjorin, Azalea Raad, Soroush Karimi, Andrew Lim and Michael Cook. The following project reports are available:

Inception

Progress