AuroraBorealis Software


Upcoming Tutorial Information:
April 6, 2003
ETAPS 03 Full Day Tutorial
Warsaw, Poland
ETAPS 03 ROTOR TUTORIAL

Title
"A Language Designer's View of Rotor:
Microsoft's "Shared Source" Implementation
of the Common Language Infrastructure"


Speaker
Yahya H. Mirza
Aurora Borealis Software
yahya_mirza@hotmail.com


Keywords
Common Language Infrastructure, Rotor, compilers, JIT compilers, garbage collection, language design, component software infrastructures, runtime systems, release-to-release binary compatibility, meta-level frameworks, language extensions, intermediate language extensions, system software, JIT compilers.

Abstract
With .NET, Microsoft has introduced a major evolution in their computing platform. At the core of .NET is a language agnostic runtime, which is being standardized by ECMA. This effort is called the Common Language Infrastructure, or the CLI. The multi-vendor adoption of the CLI provides a great opportunity for language researchers. Language researchers can now innovate in their particular domain, while interoperating with existing commercial and research oriented language based solutions.

In early 2002, Microsoft released a “Shared Source” implementation of the CLI, available on BSD UNIX, Linux, Mac OSX, and the Windows platform codenamed “Rotor”. For language designers, Rotor can serve as an effective runtime core for experimentation at the language feature level. For compiler and virtual machine researchers, Rotor provides a context for applied research into alternative object representations, method dispatch, garbage collectors, JIT compilers, etc. My goal is to provide an in depth exploration into Rotor.

Tutorial Objectives
The objective of this full day tutorial is to enable the language or virtual machine researcher to use the Rotor implementation as a host environment for their research. Not only will the attendees learn about the inner workings of the Rotor implementation; they will also learn about alternative design options and their ramifications which led to the current architecture of the CLI. The approach to describing Rotor will be based on identifying the patterns and idioms embodied within Rotor, as well as describing their implementation details. Additionally, we plan to illustrate similarities and differences with other runtime systems, including the Squeak and Java virtual machines.

Another key objective of this tutorial will be to illustrate approaches to extending and modifying Rotor into new directions. These approaches to language feature extensions will include the description of language features based on runtime or meta-level frameworks, as well as approaches to extending the underlying intermediate language. To illustrate the issues involved in research extensions to the intermediate language, Microsoft Cambridge’s ILX extensions will be dissected and explained in detail. Finally, language interoperability issues in the context of language feature design will be enumerated. As a working example, how C# layers over the Common Language Subset or the CLI object model, will be explained in detail.

Duration
Due to the technical nature of the subject matter, and my goal to present an in depth tutorial, I will require a full day to adequately cover all of my presentation material.

Level
The expertise level is geared toward an Intermediate or Advanced audience.

Required Experience
An understanding of dynamic languages and their implementation, as well as basic understanding of Microsoft’s .NET technologies would be useful.

Expected Audience
This tutorial is aimed at language implementation professionals wanting a deeper understanding of Microsoft’s CLI and how it works compared to other runtime systems. Graduate students interested in language design, compiler implementation, or virtual machine research, as well as individuals looking for a host environment to construct a domain specific language would be ideal candidates. This tutorial will not be an introduction to the C# language, although how the SSCLI C# compiler is implemented will be covered in depth.