X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=web%2Fc-sharp;h=9d3499732e64f6a149864fee0e725613634228cc;hb=d8b88441d8696ed6fc52e4989314d6172332a64c;hp=b65be0db90c0e82c96a7b6d7f13e68122b7af469;hpb=78c33903018fb6c3693c4f94c8b481e2a0f3b808;p=mono.git diff --git a/web/c-sharp b/web/c-sharp index b65be0db90c..9d3499732e6 100644 --- a/web/c-sharp +++ b/web/c-sharp @@ -1,19 +1,49 @@ * MCS: The Ximian C# compiler - MCS is currently able to compile small C# programs (there is - a test suite included that you can use). + MCS is currently 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. - All type, field, method, delegates definitions are now emitted - and the body of constructors and methods is being generated - for a subset of the language. Although MCS can parse itself, - it cant not yet compile itself. Most statements are generated - correctly and about 80% of the C# expressions are supported. + 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 (security attributes), + you can also browse the MCS bugs from Bugzilla. - Work is progressing quickly on various fronts in the C# - compiler. + A test suite is maintained to track the progress of + the compiler and various programs are routinely compiled and + ran. - A test suite is being built currently to track the progress of - the compiler. +** 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 @@ -48,60 +78,42 @@ * Code generation: The code generation is done through the System.Reflection.Emit API. - - - - -** Current pending tasks - - Simple tasks: - - - Larger tasks: - - + 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. - Interesting and Fun hacks to the compiler: + 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. - + The Mono Runtime and the Mono execution engine were able to make + our compiler self hosting on March 12, 2002. ** Questions and Answers @@ -129,6 +141,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