Dynamo.NET Common Language Runtime
About this project
We are working on an alternative implementation of a virtual machine for Microsoft's .NET architecture. Our project is
written in C and runs on Linux, though it is platform independent. We started the whole
thing in summer 2002 and are currently continuing our work as independent research under
Professor Emin Gün Sirer.
Currently, our system includes:
- PE File Parser - reads portable executable files and extracts bytecodes, metadata, etc.
- Verifier - verifies the structure, safety and correctness of the underlying program
- MSIL Interpreter - our execution engine that interprets MSIL instructions one by one.
This is what this web server is running on!
- User-level Thread System - used for multithreading in .NET
- Garbage Collector - our own mark-and-sweep GC
- Runtime - alternate implementation of Microsoft's internal calls made in system libraries. We have many calls, but there are many more to go.
Authors
Comparison to other systems
- Microsoft released source code for its Shared Source CLI implementation.
- Available on Windows XP and FreeBSD
- Over 1,300,000 lines of source code, >800MB space after build, >14,000 files
- No interpreter (JIT compiler only)
- Written in C++
- Verifier size: 335Kb
- Open source implementation of the .NET Development Framework
- Available for Windows and Linux
- Written in C
- Has interpreter and JIT compiler.
- Uses pthreads for threading, uses Boehm GC.
- Verifier incomplete - only checks file structure, no typesafety.
- Interpreter size: 2.1MB
Dynamo VM
- Written in C, available for Linux
- Compact: ~20,000 total lines of code
- Interpreter size: 230KB
- Verifier size: 112KB
Last modified: Tue Feb 4 18:49:28 EST 2003