My primary research interests are in the development and use of advanced programming languages. I am particularly interested in the use of high-level languages, such as Standard ML, for building systems software, including run-time systems, operating systems, and distributed systems. Lately, I have focused on implementation issues that have kept high-level, safe languages from being used in the construction of systems software. To this end, my research has concentrated on producing code that is faster, consumes less memory, and supports "hacking with the bits".
I am also interested in bringing powerful, semantics-based tools from programming language theory, such as type-directed compilation, partial evaluation, abstract interpretation, and run-time code generation, into the design, specification, and construction of real systems software.
My current research focuses on representation issues for languages that provide polymorphism, abstract data types, classes, modules, and garbage collection. In the past, compilers for such languages used a universal representation (usually a pointer to a tagged value) to support these features. This allowed the compiler to use the same code to manipulate all objects but required additional instructions to access the underlying value.
In conjunction with researchers from Carnegie Mellon, I have constructed a compiler for ML, called TIL, using new techniques to provide features such as polymorphism and garbage collection without forcing the compiler to use universal representations. As a result, TIL provides both better performance and better interoperability with legacy languages (i.e. C and FORTRAN) than existing ML compilers.
If you have questions or comments please contact: email@example.com.