2005-06-30:2 Rafael Teixeira <rafaelteixeirabr@hotmail.com>
[mono.git] / web / c-sharp
index fa4dad1d732fc629c355460e4055f62dd3ff55f6..ffa0b574bef43950ccb928ef65edad10ff7409fe 100644 (file)
@@ -1,22 +1,18 @@
 * MCS: The Ximian C# compiler
 
-       MCS is currently able to compile itself and many more C#
-       programs (there is a test suite included that you can use).
+       The Mono C# compiler is considered feature C# 1.0 complete at
+       this point and 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 1.7
+       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.
+       The compiler is also fairly fast.  On a IBM ThinkPad t40 it
+       compiles 18,000 lines of C# code per second.
 
-       MCS was able to parse itself on April 2001, MCS compiled itself
-       for the first time on December 28 2001.  MCS became self hosting
-       on January 3rd, 2002. 
-
-       The Mono Runtime and the Mono execution engine were able to make
-       our compiler self hosting on March 12, 2002.
-
-       A test suite is maintained to track the progress of
-       the compiler and various programs are routinely compiled and
-       ran.
+       Work on C# 2.0 has started: some pieces of it are available on
+       the standard compiler with the -2 switch (iterators, method
+       conversions) and some others are available on the `gmcs'
+       branch on CVS (generics)
 
 ** Obtaining MCS
 
@@ -27,8 +23,8 @@
 ** Running MCS
 
        MCS is written in C# and uses heavily the .NET APIs.  MCS runs
-       on Linux (with the Mono runtime) and Windows (with the .NET
-       framework runtime)
+       on Linux with the Mono runtime and on Windows with both the
+       .NET runtime and the Mono runtime.
 
 ** Reporting Bugs in MCS
 
        able to use this generic CIL optimizer in their projects
        reducing their time to develop a production compiler. 
 
-<a name="tasks">
-** Current pending tasks
+* Open bugs
 
-       Simple tasks:
+       See the <a href="bugs.html">bugs page</a> for more information.
 
-       <ul>
-               * Redo the way we deal with built-in operators.
-       </ul>
+       A test suite is maintained to track the progress of
+       the compiler and various programs are routinely compiled and
+       ran.
 
-       Larger tasks:
-       <ul>
+* Slides
 
-               * Jay does not work correctly with `error'
-                 productions, making parser errors hard to point.  It
-                 would be best to port the Bison-To-Java compiler to
-                 become Bison-to-C# compiler. 
-                 
-                 Nick Drochak has started a project on SourceForge for this.
-                 You can find the project at: <a href="http://sourceforge.net/projects/jb2csharp/">
-                 http://sourceforge.net/projects/jb2csharp/</a>
+       Slides for the Mono C# Compiler presentation at .NET ONE are
+       available <a
+       href="http://primates.ximian.com/~miguel/slides-europe-nov-2002/Mono_C_Sharp_Overview_1007.sxi">here</a>
+       in StarOffice format.
 
-               * Semantic Analysis: Return path coverage and
-                 initialization before use coverage are two great
-                 features of C# that help reduce the number of bugs
-                 in applications.  It is one interesting hack.
+** History
 
-       </ul>
+       MCS was able to parse itself on April 2001, MCS compiled itself
+       for the first time on December 28 2001.  MCS became self hosting
+       on January 3rd, 2002. 
+
+       The Mono Runtime and the Mono execution engine were able to make
+       our compiler self hosting on March 12, 2002.
 
 ** Questions and Answers
 
+Q: Does the Mono C# compiler support C# 2.0?
+
+A: At this point the Mono C# compiler supports some of the features of
+   C# 2.0, but the support has not been completed.   To enable 2.0 features
+   you must use the -2 flag to the compiler.
+
+Q: What features are available as of Feb 2004?
+
+A: Iterators have been implemented as well as method group implicit
+   conversion to delegates on the main compiler branch.
+
+   We have a branch of the compiler in the module `mcs/gmcs' which is
+   where we are developing the Generics support for the compiler.  Plenty
+   of tests work (see mcs/tests/gen-*.cs for a list of tests), but work
+   remains to be done.
+
+Q: Will the C# 2.0 features be part of the Mono 1.0 release?
+
+A: Only a few, the generic compiler will not be part of the 1.0
+   stable release, but a beta preview will be distributed.
+
 Q: Why not write a C# front-end for GCC?
 
 A: I wanted to learn about C#, and this was an exercise in this