X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=web%2Fc-sharp;h=ddf6844701f73790dda4c60efec685c56f340860;hb=9d93ddc5daf9a96e7fcd5d9ef7fac0ddba68feb9;hp=c11225d07e9129597848f351efaa9d20d1d823ab;hpb=2231eaa24780a6cfcf70abf5273e7d2920cc409c;p=mono.git diff --git a/web/c-sharp b/web/c-sharp index c11225d07e9..ddf6844701f 100644 --- a/web/c-sharp +++ b/web/c-sharp @@ -1,15 +1,51 @@ * MCS: The Ximian C# compiler - MCS began as an experiment to learn the features of C# by - writing a large C# program. MCS is currently able to parse C# - programs and create an internal tree representation of the - program. MCS can parse itself. + 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. - Work is progressing quickly on various fronts in the C# - compiler. Recently I started using the System.Reflection API - to load system type definitions and avoid self-population of - types in the compiler and dropped my internal Type - representation in favor of using the CLI's System.Type. +* Pending tasks + + 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. + + 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 @@ -42,60 +78,44 @@ have to postpone this decision until the above steps are finished. - * Code generation: nothing done so far, but I do not - expect this to be hard, as I will just use - System.Reflection.Emit to generate the code. - - - - -** Current pending tasks - - Simple tasks: - - - Interesting and Fun hacks to the compiler: +** CIL Optimizations. - + The Mono Runtime and the Mono execution engine were able to make + our compiler self hosting on March 12, 2002. ** Questions and Answers @@ -123,6 +143,10 @@ Q: If your C# compiler is written in C#, how do you plan on getting We will do this through an implementation of the CLI Virtual Execution System for Unix (our JIT engine). + Our JIT engine is working for the purposes of using the compiler. + The supporting class libraries are being worked on to fully support + the compiler. + Q: Do you use Bison? A: No, currently I am using Jay which is a port of Berkeley Yacc to @@ -181,6 +205,5 @@ Q: Why are you writing a JIT engine instead of a front-end to GCC? A: The JIT engine and runtime engine will be able to execute CIL executables generated on Windows. - You might also want to look at the GCC section on the main FAQ