2002-08-12 Tim Coleman <tim@timcoleman.com>
[mono.git] / web / c-sharp
index 8faf5f83b1335925c0e1518baeabcaeae73a19f8..fa4dad1d732fc629c355460e4055f62dd3ff55f6 100644 (file)
@@ -9,7 +9,10 @@
 
        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, 2001. 
+       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
 
 ** Running MCS
 
-       MCS is written in C# and uses heavily the .NET APIs.  At this point
-       MCS only runs on Windows with the .NET Framework SDK installed.  Work
-       is progressing rapidly in our JIT engine and our class libraries to
-       allow MCS to be ran in non-Windows systems. 
+       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)
 
 ** Reporting Bugs in MCS
 
 
                * Code generation: The code generation is done through
                  the System.Reflection.Emit API.
-
        </ul>
 
+** 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.
+
+       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.  
+
+       Adding an intermediate layer to enable the basic block
+       computation to the compiler should be a simple task, but we
+       are considering having a generic CIL optimizer.  Since all the
+       information that is required to perform basic block-based
+       optimizations is available at the CIL level, we might just skip
+       this step altogether and have just a generic IL optimizer that
+       would perform hoisting on arbitrary CIL programs, not only
+       those produced by MCS.  
+
+       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. 
+
 <a name="tasks">
 ** Current pending tasks