Mono 2.0 has been released. Though still behind Microsoft's .NET in some areas, in others it has leaped ahead. For those seeking to write cross-platform applications, the first list of features in the release notes is the Microsoft-compatible APIs.
- ADO.NET 2.0 API for accessing databases.
- ASP.NET 2.0 API for developing Web-based applications.
- Windows.Forms 2.0 API to create desktop applications.
- System.XML 2.0: An API to manipulate XML documents.
- System.Core: Provides support for the Language Integrated Query (LINQ).
- System.Xml.Linq: Provides a LINQ provider for XML.
- System.Drawing 2.0 API: A portable graphics rendering API.
For cross-platform graphics, Mono also offers Mono.Cairo, a binding to the Cairo Graphics library. "Currently supported output targets include the X Window System, Quartz, Win32, image buffers, PostScript, PDF, and SVG file output. Experimental backends include OpenGL (through glitz), XCB, BeOS, OS/2, and DirectFB."
For applications that behave more natively on Linux, Gtk# 2.12 is available as an alternative to Windows.Forms. These provide access to Gtk+ and Gnome, and are also usable on Windows and OSX. Also useful to Linux developers is Mono.Posix, which offers both low level and high level interfaces to Linux and Unix-specific functionality.
If you are looking to manipulate compiled assemblies, Mono.Cecil does just that. This can be used for experimentation, patching code after the source was lost, or for building AOP-style frameworks and tools.
For database access, Mono provides bindings to SQLite. Other databases supported by third-party libraries include PostgresSQL, DB2, Oracle, Sybase, SQL server, and Firebird.
On the compiler front, C# 3 is supported with full LINQ support. Very large arrays using 64-bt indexes are supported on 64-bit machines, a part of the ECMA specification that Microsoft has not implemented yet. Visual Basic is a version behind, only supporting VB 8.
On MacOS and Solaris, DTrace is supported.