About a month after releasing the first beta, Mono released the second beta that includes a c# compiler which is CLI compliant and also supports the same PE system as .NET. What is more interesting is that there are two stacks of APIs one for the Unix and its variants and the other is of the .NET Framework (v 1.1) to support ASP.NET including WebForms, WebServices, among other things.
The beta2 includes:
- ECMA CLI-based virtual execution system.
- Java VM: allows Java and .NET code to run side-by-side. It contains the latest release of IKVM.
- Optimising compiler for x86, PowerPC, SPARC and S390 based architectures.
- Just-in-Time (JIT) and Ahead-of-Time (AOT) compilation modes supported.
- A new, faster interpreter for the above platforms and also for StrongARM and HPPA.
- Support for Linux, MacOS X, Windows, Solaris and HP-UX operating systems. C# 1.0 compiler.
- Development toolchain.
- API documentation browser, with Wiki-like capabilities.
- Embeddable runtime: make your application scriptable and extensible with C# or any other .NET language using our embedding API.
The following are in preview and not supported at this time, but from my interpretation of the read, should be out soon after Whidbey ships (for some of them):
- Preview C# 2.0 compiler with generics support (gmcs).
- Generics-enabled virtual machine.
- Mono Basic compiler.
It is important to note that some key pieces are also missing which one should keep in mind when deciding when to do pick a framework:
- COM support of any kind in Unix or Windows.
- EnterpriseServices is only a set of stub routines.
- Windows.Forms is only available as a preview, and it is not meant for production use.
- Code Access Security (CAS) is not supported: missing in the runtime and class libraries.
I personally would be interested in seeing what the implementation of Remoting, Web Services and the Garbage Collection would be. While we are on the topic, if you have not then check out Rotor implementation by Microsoft which runs on Windows XP, FreeBSD and Mac OS X 10.2. I used a very early implementation of Mono (more than a year ago) when there was not much one could do, I need to take out some time now to play with this now, but was curious to know what your experience has been or if you are thinking of using this, is so how?