diff options
author | Miguel de Icaza <miguel@gnome.org> | 2001-06-20 03:08:44 +0400 |
---|---|---|
committer | Miguel de Icaza <miguel@gnome.org> | 2001-06-20 03:08:44 +0400 |
commit | 6049b85accef724f847767f3b0a9e9033b8c34bb (patch) | |
tree | 7ac962987263ba8805a235e78567ee62082196dd /doc/runtime | |
parent | 2df9c2fb52a216fe6bc82dc3d04b28ab6f55bc30 (diff) |
Add docs
svn path=/trunk/mono/; revision=15
Diffstat (limited to 'doc/runtime')
-rw-r--r-- | doc/runtime | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/doc/runtime b/doc/runtime new file mode 100644 index 00000000000..877d3435e51 --- /dev/null +++ b/doc/runtime @@ -0,0 +1,70 @@ +* The MonoNet runtime + + The MonoNet runtime will implement the JIT engine (and a byte + code interpreter for quickly porting to new systems), the + class loader, the garbage collector, threading system and + metadata access libraries. + + Currently the runtime contains the beginning of an image + loader and metadata access entry points. Since Beta2 has been + now released, it is possible to resume work using the ECMA + specs and testing with Beta2-generated executables. + + The runtime core will be implemented in C, in a library + "libMonoVES.so". + +** Executing MSIL/CIL images + + The code will load an executable and map the references to + external assemblies to our own version of the assemblies on + GNU/Linux. + + Our roadmap looks like this: + + * Milestone 1: Fully read and parse all CIL byte-codes + and metadata tokens (ie, a disassembler). + + * Milestone 2: Complete an interpreter for CIL byte + codes. This interpreter can be used temporarly to + run CIL byte code on a system where no JIT is + available. + + * Milestone 3: IA32 translating-JIT engine. + + * Milestone 4: non-Intel port of the JIT engine. + + * Milestone 5: Optimizing JIT engine port for IA32. + + * Milestone 6: non-Intel port of the Optimizing JIT + engine. + + A setup similar to the Kaffe JIT engine can be used to + layout the code to support non-IA32 architectures. Our work + will be focused on getting a IA32 version running first. + + The JIT engine should work on Linux and Win32, although you + might need to install the CygWin32 development tools to get a + Unix-like compilation environment which is what we know how to + use. + +** Garbage Collection + + We have decided to implement a tracing garbage collector, + which is very similar to the one being used by .NET. For an + introduction to the garbage collection system used by + Microsoft's CLR implementation, you can read this book on <a + href="http://www.amazon.com/exec/obidos/ASIN/0471941484/o/qid=992556433/sr=2-1/ref=aps_sr_b_1_1/103-5866388-0492603">Garbage + Collection.</a> + + Although using a conservative garbage collector like Bohem's + would work, all the type information is available at runtime, + so we can actually implement a better collector than a + conservative collector. + +** PInvoke + + PInvoke will be supported, and will be used to wrap Unix API + calls, these in turn are required for reusing some of the + GNOME libraries that will reduce the work we have to do to + deliver a complete class library + |