Mono 1.1.3 Development Release

Mono 1.1.3 is the third release on the development series of Mono and it is not intended to be used for production as it is undergoing internal changes. Those interested in a stable release should use the Mono 1.0.xx series.

The Mono 1.1.xx series will eventually lead to the next stable milestone: Mono 1.2.

Changes since the last release

The following is a high-level description of the changes in the development release of Mono since the previous development release in October 29nd.

There have been plenty of bug fixes: 63 on the core runtime, 235 in all the components of Mono.

Although this a development version, this release contains mostly bug fixes, speedups and tuning in every subsystem of Mono. In addition to that, some key new changes are:

New Build System

Hari has completed the new build system for Mono, you will notice that a single tarball is now shipped that contains the source code for the Mono C runtime and the Mono C# libraries. We finally have a single `make’ command to build the entire Mono source code.

The new unified system allows distributors to easily apply patches to the C# code base, something that before was hard to do.

.exe files that were installed into $prefix/bin are now gone into a different place.

Optimizations

Massimiliano completed the work on the SSA-based partial redundancy elimination (SSAPRE).

SSAPRE is an optimization that performs Common Subexpression Elimination (CSE), loop invariant code motion and elimination of other redundancies in a unified way.

Needless to say, this gives very nice speed improvements. To turn this on, you must use the -O=ssapre flag when running Mono or pre-compiling your applications with AOT.

The AMD64 branch has a prototype of our code-sharing code generator by Zoltan, when this matures we will investigate bringing this to every other platform.

Lluis improved the remoting performance for the cross application domain channel. Calls across application domains are now faster (up to 10 times in some cases).

C# Compiler

Our generics compiler implementation has reached beta status: it is now feature complete and will compile and run the entire C5 regression test suite (Martin).

Documentation: the compiler now supports the -doc: command line option to extract inline documentation into XML documents (Atsushi).

C# 2.0: Support for covariance and contravariance in delegates(Carlos Alberto).

C# 2.0: Support for property accessor accessibility (Carlos Alberto).

Parser verbosity on errors has been reduced.

Plenty of bug fixing, as well as reportinjg new errors and warnings reported (Atsushi, Ben, Hari, Marek, Martin, Miguel).

Summary of C# 2.0 features supported

Today Mono 1.1.3’s C# compiler supports anonymous methods, iterators, partial classes, static classes, covariance and contravariance, property accessor accessibility and inline warning control from the 2.0 specification. Generics are supported as well on the branched `gmcs’ compiler (included).

Still missing for full 2.0 support: nullable types, namespace alias qualifier, external assembly alias, fixed size buffers and friend assemblies.

Bundles

Bundles are a mechanism to bundle in a single binary the Mono runtime, its dependencies and your application to produce a standalone application.

Creating bundles with Mono 1.1.3 is a lot simpler than it was in the past, we have now introduced the `mkbundle’ program that will assist developers in creating self-contained applications built with Mono.

See the mkbundle(1) man page for details.

Mono.Posix

Jonathan Pryor lead the development of a new namespace which rationalizes the old Mono.Posix namespace, and also adds integration classes between the Posix world and the .NET world (the old libraries merely exposed the syscall interface).

The new namespace is called Mono.Unix namespace, and it contains the new Syscall class which exports 64-bit APIs. This should now be portable across 32-bit and 64-bit platforms.

Added higher-level wrapper classes, all prefixed with Unix, to present a .NET-like API over the Syscall functionality.

The existing Mono.Posix namespace should be considered deprecated (or at least unmaintained), in preference to the Mono.Unix namespace.

JScript

Cesar continues work on Javascript, the focus has now been on the runtime, executing the applications that the JavaScript compiler has produced.

ASP.NET 2.0

Lluis implemented the System.Configuration namespace from ASP.NET.

Lluis implemented the TreeView control.

Lluis added support for client callbacks.

S390, PowerPC

Supports Varargs now (Neale, Geoff).

All tests for generics and non-generics pass on the S390, PowerPC (Neale, Geoff).

System.XML

Atsushi did some fixes to the DataSet class generator.

Xml performance improvements: XmlTextReader got couple of fixes each of them improves 5-15% for various scenario.

XPathNavigator over XmlDocument got significant memory cost reduction, and we also reduced some extraneous clone cost in XPath iterators (Atsushi).

System.XML 2.0 implementation: XmlSchemaInference. Entity resolution support on XmlTextReader.

RelaxNG support

From Atsushi; Performance improvements and bugfixes.

Experimental element/attribute name collector API.

Postgres provider: Npgsql

Large Object support: Npgsql now supports large object operations. Thanks Emiliano Necciari (e dot necciari at blogic dot it) for the patch!

Added support for ParameterDirection.Output and ParameterDirection.InputOutput parameters. Now you can use these types of parameters to get results. Thanks Ivan (ivan-sun1 at mail dot ru) and (teste at aslls dot ss) for heads up.

Plus many new bug fixes.

Windows.Forms and System.Drawing

Work on the new managed implementation of Windows.Forms continues, we hope that by the next release the new implementation completely replaces the existing version during the build process.

There are many new controls and a native driver to the MacOSX is in progress. New controls: tab container, treeview, listview, listbox, menus, popups, tooltips, NumericUpDown.

Although there is a lot of progress in this area, Windows.Forms is not yet ready for most people testing it.

Folks interested in helping with the implementation might want to go to the #mono-winforms channel on the irc network at irc.gnome.org.

Installing Mono 1.1.3

Important: Mono 1.1.3 can not be installed in parallel with Mono 1.0.x series on the same prefix. To work around this issue, you must use a different prefix at configure time, for example:

./configure --prefix=/devel

You can then setup your PATH to include /devel/bin to access the Mono 1.1. Alternatively you can replace your Mono installation with 1.1.3

Binary Packages:

Pre-compiled packages for SUSE 9, SUSE 9.1, Red Hat 9, SLES 8, Fedora Core 1, Fedora Core 2 and MacOS X are available from our web site from the download section. A Red Carpet Mono channel is also available on these platforms.

Source code:

Dependencies

If you are installing from source code, there are a few optional dependencies that you will want to consider installing.

  • icu 2.6.1 or later Optional: for supporting string collation.
  • Cairo 0.1.23 Required to install libgdiplus.

Quick source code installation:

If we have no packages for your platform, installing from source code is very simple.

mono:

tar xzf mono-1.1.3.tar.gz
cd mono-1.1.3
./configure
make
make install

Optional Packages

Libgdiplus is an optional packages, you only need those if you intent to use System.Drawing or Windows.Forms.

libgdiplus:

tar xzf libgdiplus-1.1.3.tar.gz
cd libgdiplus-1.1.3
./configure
make install