X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=doc%2Fc-sharp;h=ddf6844701f73790dda4c60efec685c56f340860;hb=1579736ef224c3a2969dddabff464e5c3fac1ede;hp=d90a01602f7d3761693961ddbfee17913ed1839e;hpb=8d1912017aabfb274d5a47d663b46dd4d0c12763;p=mono.git diff --git a/doc/c-sharp b/doc/c-sharp index d90a01602f7..ddf6844701f 100644 --- a/doc/c-sharp +++ b/doc/c-sharp @@ -1,23 +1,52 @@ * MCS: The Ximian C# compiler - MCS is currently able to compile many C# programs (there is - a test suite included that you can use). + The Mono C# compiler is considered feature complete at this + point and relatively mature. MCS is able to compile itself + and many more C# programs (there is a test suite included that + you can use). It is routinely used to compile Mono, roughly + half a million lines of C# code. - We are in feature completion mode right now. There are still - a couple of areas that are not covered by the Mono compiler, but - they are very very few at this point. +* Pending tasks - The compiler can compile itself, but the resulting image contains - a few errors that we are quickly fixing. + There are a few known bugs in the Mono C# compiler, but + they are very very few at this point, + you can also browse the MCS bugs from Bugzilla. - MCS was able to parse itself on April 2001, MCS compiled itself - for the first time on December 28 2001. We hope to have the compiler - self hosting on Linux by the end of January. - - A test suite is being built currently to track the progress of + A test suite is maintained to track the progress of the compiler and various programs are routinely compiled and ran. +** Slides + + Slides for the Mono C# Compiler presentation at .NET ONE are + available here + in StarOffice format. + +** Obtaining MCS + + The Mono C# compiler is part of the `mcs' module in the Mono CVS + you can get it from our Anonymous CVS server, + or you can get nightly download page. + +** Running MCS + + MCS is written in C# and uses heavily the .NET APIs. MCS runs + on Linux with the Mono runtime and on Windows with both the + .NET runtime and the Mono runtime. + +** Reporting Bugs in MCS + + When you report a bug, try to provide a small test case that would + show the error so we can include this as part of the Mono C# regression + test suite. + + If the bug is an error or a warning that we do not flag, write + a sample program called `csXXXX.cs' where XXXX is the code number + that is used by the Microsoft C# compiler that illustrates the + problem. That way we can also do regression tests on the invalid + input. + ** Phases of the compiler The compiler has a number of phases: @@ -51,46 +80,42 @@ * Code generation: The code generation is done through the System.Reflection.Emit API. - - -** Current pending tasks - - Simple tasks: +** CIL Optimizations. - + The compiler performs a number of simple optimizations on its input: + constant folding (this is required by the C# language spec) and + can perform dead code elimination. - Larger tasks: + Other more interesting optimizations like hoisting are not possible + at this point since the compiler output at this point does not + generate an intermediate representation that is suitable to + perform basic block computation. - + If this tool is further expanded to perform constant folding + (not needed for our C# compiler, as it is already in there) + and dead code elimination, other compiler authors might be + able to use this generic CIL optimizer in their projects + reducing their time to develop a production compiler. - Interesting and Fun hacks to the compiler: +** History - + The Mono Runtime and the Mono execution engine were able to make + our compiler self hosting on March 12, 2002. ** Questions and Answers