Mono 1.1.4 Development Release

Mono 1.1.4 is the fourth release on the development series
of Mono. The Mono 1.1.x series will eventually lead to the next
stable milestone: Mono 1.2.

We consider Mono 1.1.4 stable enough to recommend it for all users.
Those upgrading from the 1.0.x series should note that these notes
only contain the differences between 1.1.3 and 1.1.4. All of the
changes since 1.0 are documented in the following release notes:
1.1.1,
1.1.2, and
1.1.3. Note that
some of the changes mentioned in these notes are also present in the
1.0.x series.

For users who can not make major changes to their environment, the 1.0.x series
will still be maintained.

Note: Although the CAS infrastructure is in place, the class
libraries have not yet been audited and properly tagged for CAS use,
this work is just starting. Some of this work will not be visible
until the audit is complete.

IsolatedStorage has been updated to use
assembly/appdomain evidences (but not the
permissions).

C# Compiler: Important Changes

Important Change: The compiler is now more strict in
the lookup rules. This might break code that compiled fine in
the past, as we are now closer to the specification
(Harinath). Programs affected are, typically, those that use
namespaces and types with the same name.

The warning level has been raised from 2 to 3, code that
compiled without warnings will likely produce more messages on
this new release (Marek).

We now do Decimal Constant folding (Marek).

Various bug fixes (From the triple M team: Miguel, Martin, Marek)

Cryptography

Many improvements were made in cryptographic performance, including 8% for
SHA1, 5% for SHA256 and 20% for TripleDES and MACTripleDES. As well, weak
key detection for DES is 16 times faster.

GDI+

GDI+ now ships with its own bundled version of Cairo. This
also should avoid interfering with the standard release and
distribution process of Cairo. (Paolo)

Tools

New:prj2make, a tool developed by Francisco
Martinez is now part of the standard Mono distribution. You
can use prj2make to produce Makefiles that will work on Unix
for projects that use Visual Studio solutions.

gacutil: No longer requires patches to work for RPM
systems.

dtd2xsd: A new tool to produce Xml Schema
Definitions from an XML document that contains a Document Type
Definition (DTD), by Atsushi.

ilasm: Added support to strongname assemblies (-key
flag).

certmgr: can now download and import certificates into the stores (e.g.
SSL, LDAPS), list existing certificate and remove them from a store.

XML World

System.XML 2.0 is completed, except for compiled XSLT
(Atsushi). New features include:

XmlSchemaValidator is implemented. As well, significant
refactoring on XML Schema validating reader has been done.

SchemaInfo on DOM is now provided.

There is new support for reading Binary content (Base64/BinHex).

RelaxNG now features a compact syntax writer.

RelaxNG has an experimental grammar inference engine.

System.Data World

A new test framework for connected behavior was developed
by Sudha.

Suresh fixed many bugs in connected and disconnected modes
in the System.Data stack. Appasamy has also contributed bug
fixes to the SqlClient and Odbc providers.

Many bug fixes were made for DataSet, including some from Ankit
Jain.

DataViews are much faster now (Atsushi).

Profiler

New: A new statistical profiler is included in the default Mono
profiler, to use do:

mono --profile=default:stat

Additions to the profiler API were made by Ben and Paolo. These
changes enable Ben's experimental heap profiler to work. The profiler
can be found in the `heap-prof' module of SVN. Beagle has reported
great success with this tool.

Mono Embedding

New: Using the special library name "__Internal" will resolve
symbols against the main executable. Particularly useful
for users embedding the Mono runtime.

New: Simplified threads for embedding: Starting with this release Mono will
no longer start a separate thread for running the main
application. Embedders take note about this change, see the
updated sample program for details.

We have now the beginnings of a framework to document the
complete Mono public API.

Ahead of Time Compilation

Position Independent Code (PIC) is generated for both x86 and x86-64.
Users with multiple mono processes will notice a memory
reduction if AOT is used.

Ahead-of-Time compilation can be done on demand by using
the MONO_AOT_CACHE environment variable which will toggle
auto-batch-compilation on demand (Zoltan).

Performance

Exception throwing is now a lot faster (Paolo, Zoltan).

SSA-based partial redundancy elimination has been updated. Work
on Alias Analysis is being done to enhance this optimization (Massi).

Arrray Bounds Check (ABC) Removal removes more checks (Massi).

Many System.Threading.Interlocked operations are implemented
using inline assembly for the x86 (Patrik).

Various peephole and Linear Scan improvements have been made
to increase code quality (Ben).

Throw blocks are now placed in an out-of-bound block to
improve locality and branch prediction (Zoltan).

Remoting for TCP and HTTP transport is vastly faster now
(few orders of magnitude) this change was done by Lluis.

Lluis also implemented a more scalable threadpool for
remoting for incomming connections.

Memory Usage

The VM went on a memory diet at various levels.

Many metadata structures are now delay-loaded, reducing memory
consumption, especially in long running GUI applications. (Ben)

Installing Mono 1.1.4

Important: Mono 1.1.4 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.4

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.