Uncovering Rotor -- A Shared Source CLIby Brian Jepson
On February 13, 2002, David Stutz and Stephe Walli hosted an informal, unannounced BOF at BSDCon 2002. The topic was Microsoft's Shared Source implementation of the ECMA Common Language Infrastructure (CLI). Although the source code for the Shared Source CLI (code named "Rotor") was not yet available, the BOF offered a preview of what is to come, a lively discussion about Microsoft's motivations behind Rotor, and details about its implementation.
The current targets are Windows and FreeBSD, but ports to other platforms are possible. Rotor relies on a Platform Adaptation Layer (PAL), which is similar to Apache's Portable Runtime (APR) in that it provides an abstraction layer between the runtime and the operating system. In theory, porting Rotor should involve nothing more than porting the PAL.
About the PAL
The PAL exposes a collection of interfaces that are based on Win32. In all, the PAL supports 242 APIs, effectively a subset of Win32. These APIs support:
- the startup and teardown of application context
- debugging and tool support
- threading, scheduling, memory management
- locales and exceptions
- synchronous file I/O
- asynchronous network I/O
- Win32-style critical sections, mutexes, semaphores, and events.
To compile Rotor, you must first build the PAL using the native tools (on Windows, Visual Studio; on FreeBSD, the GNU toolchain). Next, you link the Rotor build tools against the PAL and use the build tools to compile Rotor. Rotor is a gzipped tarball weighing in at about 18.5 megabytes (14,000 files and 1.3 million lines of code), so budget plenty of time for the build!
What's in the Package?
Once you've built Rotor, you'll end up with two compilers (C# and JScript), a set of tools (assembler, disassembler, linker, and global assembly cache management tool), and an executable that loads CLI executables (clix).
What Can You Do With It?
|What are your thoughts about this project from Microsoft?|
Rotor's main purpose in life is to support the ECMA CLI standard (which may soon become an ISO standard). Microsoft will use Rotor internally for language and runtime research, and hopes that third-party CLI implementers will use it to learn more about the standard.
Rotor is also there for hobbyists as well as university and commercial researchers. Academic users will be able to integrate it into courses and labs, since Rotor can be used as a foundation for other applications and tools. Additionally, since Rotor can run side-by-side with the commercial .NET Framework SDK, you can easily test the same bit of code on both.
When Will We See It?
Rotor is expected to be available in the first half of 2002 (perhaps sooner). When it's available, that 18MB tarball will be available to download, compile, test, and modify (for non-commercial use). For more details, see the Shared Source CLI FAQ.
One way to prepare for Rotor's release is to get up and running with FreeBSD. For O'Reilly Network articles about FreeBSD, visit the BSD DevCenter.