Mono 1.1.14 Release

This is the first beta towards the release of Mono 1.2.

Mono was branched at version 1.1.13 to become the stable version of Mono that is distributed by Novell on its enterprise products. That series of releases are only getting bug fixes.

Before each release we run all of the regression tests on Mono, so we consider this release usable for deployment, but there will continue to be changes in various areas.

All of the changes since 1.0 are documented in the following release notes: 1.1.1, 1.1.2, 1.1.3, 1.1.4, 1.1.5, 1.1.6, 1.1.7, 1.1.8, 1.1.9, 1.1.10 and 1.1.13.

This release is mostly a bug-fix release, there are very few new developments.

What is new in Mono 1.1.14

Stack Traces

Sending the QUIT signal to a running Mono process will produce a stack trace of each thread. This is a long requested feature to assist folks debugging multi-threaded applications (Zoltan).

Garbage Collection

Paolo upgraded our Garbage Collection engine to the latest publicly available version from Hans Boehm.

This version also contains many changes to allow for moving and compacting Garbage Collectors.

IO-Layer

MONO_SHARED_HOSTNAME can now be set to to a name for a file in the \~/.wapi directory. This is used by applications which might change the hostname.

ASP.NET

Large file uploads are now supported. It is now possible to specify in the <httpRuntime> section a value for the requestLengthDiskThreshold. The default is 256k. Any POST data larger than this will be stored on disk instead of in memory. This is a feature found on ASP.NET 2.x that Mono exposes on both ASP.NET 1.0 and 2.0.

This allows people to do large posts of files without consuming large amounts of memory (Gonzalo).

ASP.NET 2

Chris Toshok fixed Master Pages, nested pages should work now. System.Configuration.

Build Providers.

XML Performance

Atsushi tuned the XML stack significantly using XMLMark, some graphs of the progress are available here.

Runtime

The runtime will no longer produce g_assertions with invalid metadata, or invalid code, instead it will raise an exception (Paolo Molaro).

Jim Pubrick contributed a large test suite for CIL verification based on the ECMA spec.

The runtime now has a –wapi command line option to control the contents of the \~/.wapi directory. –wapi=hps will show the currently active handles and –wapi=semdel will delete the semaphores used by Mono. These tools used to be part of a development install of Mono, but they have now been made available to everyone.

System.Query

Alejandro Serrano contributed an implementation of System.Query to Mono.

Atsushi updated System.Xml.XLinq to use the new System.Query code.

Language Support

Support for third party languages like IronPython and Boo has improved in this release. Users of those languages are strongly encouraged to upgrade to this release.

SSL/TLS

Added support for abbreviated handshakes, which will reuse a previous security parameters, to re-establish a secure connection (Sebastien).

Fixed some possible deadlocks while negotiating (Gonzalo and Sebastien).

Libgdiplus

Sebastien has upgraded libgdiplus in various fronts:

Region operations: Added GdipCombineRegionPath function to allow using binary operations (union, intersection, complement, exclude and xor) on non-rectangular regions;

Added GdipFlattenPath function (to convert curves into lines);

Added support for region serialization (i.e. GdipGetRegionData, GdipGetRegionDataSize and GdipCreateRegionRgnData functions);

Better, but still not perfect, clipping support;

TextureBrush is now working again;

Ports: OSX/x86

Mono now supports OSX on Intel boxes.

Geoff and Paolo completed the port of Mono to OSX on x86 processors.

System.Transactions

Ankit and Hari also worked on a basic implementation of System.Transactions. The implementation uses a Lightweight Transaction Manager (LTM) allowing multiple volatile and/or a single durable resource manager.

Tools

The assembler and disassembler have been upgraded to support generics and they are now able to roundtrip all of our 2.0 assemblies with generics (Ankit and Hari).

JIT Optimizations

Massimiliano’s work on the tree mover, an optimization used to reduce the number of temporaries has been incorporated.

The tree mover allowed us to activate a number of optimizations on. The new default optimizations now include inlining, dead code elimination, copy propagation and constant propagation.

For the release we did identify two small regressions related to inlining, so the code is not enabled by default as it regresses code that depends on GetCallingAssembly.

RelaxNG improvements

Significant RELAX NG improvements. There are a handful of bugfixes and performance improvements. Before those changes it is practically impossible to validate large XML documents. Now it can validate 5 megabytes of OpenDocument specification document within a few seconds (on Pentium M 1.1GHz box), Atsushi.

Tools 2

A tiny utility “mono-xmltool” is added. It supports validation for XML Schema, DTD, RELAX NG and NVDL, as well as pretty printing and XSL transformation.

This tool is just a frontend for the various XML validation classes in Mono.

Encodings

I18N: Bruno Haible tried several tests on mono’s Encoding support and it resulted in a bunch of bugfixes.

Also large amount of 2.0 profile support and optimization were done.

Installing Mono 1.1.14

./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.14

Source Code and Binary Packages:

Source code and pre-compiled packages for SUSE, SLES, Fedora Core 3, 4, RHEL, MacOS and Windows in a variety of platforms available from our web site from the download section.

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.14.tar.gz
cd mono-1.1.14
./configure
make
make install

Then compile libgdiplus:

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

Contributors to Mono 1.1.12 and Mono 1.1.14

A partial list of contributors to this release:

Hubert Fongarnand and Robert Jordan deserve special mention for their bug reports and the bug fixing they provided during this and past release cycles.