|
|
Advanced Compiler Technology
The Advanced Compiler Technology group studied
programming language implementation and design from 2001 to 2007.
The group is currently inactive. Juan Chen and Zhaozhong Ni remain at Microsoft Research
and continue to pursue their research.
Our goal was to help people build robust, secure, and
high-performance software economically by using better programming
languages in practice.
The group's research had the following themes:
- Implementation and optimization techniques for
modern object-oriented programming languages
We studied these issues using the Bartok research compiler and
runtime system. See the projects section below for more information
on Bartok.
- Compiler, language, and runtime support for systems programming
Most systems programming is done in
C and C++. We were investigating how to implement modern object-oriented languages,
such as C#, so that they are suitable for systems programming. We worked
with other researchers to build a prototype research OS kernel, called
Singularity, in managed code. Bartok is the compiler and runtime system
for this effort.
We were recently looking at how to do garbage collection in an OS kernel.
We also studied language extensions, leveraging our work
on typed intermediate languages and on incorporating regions into automatic
storage management.
- Increasing the reliability of compilers and systems
We were studying
typed intermediate languages for object-oriented languages, with
the goal of applying it in real-world systems. Juan Chen continues this work.
Most work on typed intermediate languages has concentrated on
functional languages, which are different from languages that are
widely used in practice. A
compiler that uses a typed intermediate language can typecheck
a program after each step of compilation.
A system can typecheck machine code programs, making certain kinds
of errors, such as executing arbitrary machine code, very unlikely.
- Techniques for programming highly parallel hardware
We looked at programming language support for future
hardware. VLSI technology is already being used to build
parallel hardware. This trend will accelerate as VLSI technology allows
billions of transistors to be put on a chip. The key problem is
programming highly-parallel hardware effectively. We studied data-parallel
languages as one possible approach.
Primary Contact: David Tarditi
| 
Mangus, Qunyan | 
Plesko, Mark | 
David | | Affiliate Members
| Photo Not Available Doug | 
Jeremy | 
Erik | 
Wolfram | 
Zhang, Ye | | | |
- Bartok Compiler and Runtime System
The Bartok Compiler and Runtime System is the compiler and
runtime system for
Singularity,
a research operating system being developed at Microsoft
Research. We used Bartok to study a variety of
topics, including:
- Compiler, language, and runtime support for systems
programming.
- Implementation and optimization techniques for managed
languages and object-oriented languages, such as C#.
- Software transactional memory
The compiler translates Common Intermediate Language (CIL) to
optimized native machine code. The runtime system
is a
small, modular
research runtime system that provides support for core managed language
features such as automatic storage management, threading, and marshalling of data to and from
native code. We say the runtime is modular because a
programmer can choose the base class library, the garbage collector,
and other supported features on a per-application basis.
The runtime system is used with different base class libraries in
Singularity, including a kernel BCL, a device-driver BCL, and an
application BCL.
The system is implemented entirely in C#, including the
garbage collectors. The system supports separate compilation
as well as compilation of unverifiable CIL. The design for Bartok builds upon previous work by
Microsoft Research
on an optimizing whole-program compiler for Java called Marmot.
Singularity is a prototype research operating system written using
managed code. The goal of Singularity is to explore issues of system
reliability. In this context, reliability is loosely defined as, "the system
never does anything unexpected or unanticipated by its designers,
developers, administrators, or users."
You can read about Singularity in this
technical
report:
Galen Hunt, James R. Larus, Martin Abadi, Mark Aiken, Paul Barham, Manuel
Fahndrich, Chris Hawblitzel, Orion Hodson. Steven Levi, Nick Murphy, Bjarne
Steensgaard, David Tarditi, Ted Wobber, and Brian D. Zill,
An
Overview of the Singularity Project, Technical Report
MSR-TR-2005-135, Microsoft Corporation, October 2005.
Phoenix is Microsoft's new compiler and programming tools infrastructure. We
helped start the project along with people from Microsoft's
VC++ team.
We continue to actively work with them on Phoenix. You can
find much more information on Phoenix
here.
You can now download the Phoenix Research Development Kit for
non-commercial use. You can find a link to the
download site here.
The Accelerator project is investigating the design and compilation of data-parallel languages.
We looked at compilation of data-parallel programs to graphics processor
units (GPUs) and multiprocessors. We
published a technical report on our work on compiling to GPUs:
David Tarditi, Sidd Puri, Jose Oglesby.
"Accelerator: simplified programming of graphics-processing units for
general-purpose uses via data-parallelism", Technical Report
MSR-TR-2004-184, Microsoft Corporation, December, 2005.
You can now download version 1.1 of the Microsoft Research Accelerator system for non-commercial use. The download is available here.
Here are some publications:
Recent publications
- A Study of Concurrent Real-time Garbage Collectors. Filip Pizlo, Erez Petrank, and Bjarne Steensgaard. To appear, PLDI 2008.
- Type-Preserving Compilation for Large-Scale Optimizing Object-Oriented Compilers Juan Chen, Chris Hawblitzel, Frances Perry, Mike Emmi, Jeremy Condit, Derrick Coetzee, and Polyvios Pratikakis. To appear, PLDI 2008.
Singularity
-
Sealing OS Processes to Improve Dependability and Security, Galen
Hunt, Mark Aiken, Paul Barham, Manuel Fähndrich, Orion Hodson, James Larus,
Steven Levi, Nick Murphy, Bjarne Steensgaard, David Tarditi, Ted Wobber,
Brian Zill. Microsoft Research Technical
Report MSR-TR-2005-51.
- An
Overview of the Singularity Project.
Galen Hunt, James R. Larus, Martin Abadi,
Mark Aiken, Paul Barham, Manuel Fahndrich, Chris Hawblitzel
Orion Hodson, Steven Levi, Nick Murphy, Bjarne Steensgaard,
David Tarditi, Ted Wobber, and Brian D. Zill.
Microsoft Research Technical Report MSR-TR-2005-135.
October 2005.
- Broad New OS Research: Challenges and Opportunities. Galen Hunt,
James Larus,
David Tarditi,
and Ted Wobber.
Proceedings
of the 10th Workshop
on Hot Topics in Operating Systems. Santa Fe, NM, June 2005.
USENIX.
Concurrency
Garbage collection
- Compiler Optimizations for Nondeferred Reference-Counting Garbage Collection. Pramod Joisha.
2006 International Symposium on Memory Management (ISMM '06). Ottawa, Ontario, Canada. June 2006. ACM.
Typed intermediate languages
Language design
Last updated: March 19, 2008
|