En la primera fase del proyecto MONO se está trabajando en tres áreas:
Esta ha sido la primera fase del proyecto. Solo existe un compilador completo de C# actualmente es el desarrollado por MS para Windows. El compilador de C# esta a un 50% y esta desarrollado en C#. La idea era hacerlo en C# para aprender a programar y conocer al 100% el lenguaje. Actualmente parsea el código y es capaz de verificar la sintaxis y generar el 95% de los arboles de código. La idea es que genere CLI y código C. Cuando este terminado se compilara con el compilador de C# y generara su propio código fuente en CLI y C haciéndolo transportable a otros sistemas.
Actualmente esta compilando programas sencillos estilo: impresión de "hello world", cálculo de series de fibonucci o creación de una ventana basada en las GTK. No solo compila estos códigos sino que además genera ejecutables que son correctamente interpretados por el JIT de MONO y el de MS.
Esta es la base fundamental del lenguaje C#. Realmente C# como lenguaje no es más que otro lenguaje. Lo que hace realmente potente a C# y todos los lenguajes que utilicen la arquitectura .NET son las bibliotecas de clases que pueden ser utilizadas por cualquier lenguajes. Dentro del proyecto MONO y solo en unos meses ya están implementadas el 50% de las clases.
La máquina virtual que ejecute CLI es la parte clave del proyecto. Si se consigue que funcione óptimamente y que cualquier lenguaje pueda generar CLI podemos estar ante la solución a los problemas de portabilidad e integración entre lenguajes.
En el diseño del CLR se esta teniendo en cuenta la portabilidad desde el comienzo del diseño. Esto nos permitirá que funcione bajo otros sistemas operativos sin demasiados esfuerzos.