Whirlwind is an advanced optimizing compiler framework. It is a successor to our Vortex compiler. Like Vortex, Whirlwind defines an intermediate language (WIL) into which other languages (e.g. Diesel and Java bytecode) are first translated. Unlike Vortex's IL, WIL is an explicitly typed language, and typechecking of WIL throughout compilation and optimization helps to catch bugs. Also, WIL is explicitly designed from the ground up to be a natural target for a wide range of object-oriented source languages.
Whirlwind includes a dataflow analysis engine that supports automatically composing multiple analyses and their transformations. Moreover, Whirlwind is the host for the Rhodium system, which allows optimizations to be specified in a high-level language and then automatically verified for correctness. Rhodium optimizations can be executed directly, via the Whirlwind dataflow analysis engine.
Whirlwind outputs either C or C--, a portable assembly language.
Whirlwind is a key platform for future language implementation research, including research into the following:
Whirlwind's C-- back-end also allows us to research advanced run-time system facilities, e.g. accurate garbage collection, lightweight source-level debugging of optimized code, and lightweight source-level execution profiling, without requiring Whirlwind to produce machine code.
Whirlwind is implemented in Diesel, and represents a major source of feedback and language design ideas.