Mono 1.1.15 Release

This is the second 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 are still a few 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, 1.1.13 and 1.1.14.

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

Changes since Mono 1.1.14

Windows.Forms

Windows.Forms continues to be a focus of bug fixing in this release. The bug fixes are too many to enumerate.

Peter Bartok, Mike Kestner and Jackson Harper continued to lead the effort to squash all the bugs being reported on the Mono beta.

Sebastien has joined the System.Drawing team since a few months ago to implement some complex components (non-rectangular regions) and fix some hard bugs (gradient brushes, matrixes, correctness, fonts, CAS support).

Winforms now supports X Input mechanisms, so its possible to enter international characters (Jackson).

Contributor Alexander Olk continues to improve various of the themes on his spare time.

Gonzalo (of ASP.NET fame) started helping the Windows.Forms team to run his favorite chess application on Mono (ImageListStreamer, Registry changes).

Assembly Unloading

Zoltan implemented assembly unloading when an appdomain is released.

ASP.NET

Chris implemented MembershipProviders (currently only MS SQL server is supported, support for other databases will come soon); Register directives in Skin files and the Theme compiler.

The ASP.NET 2.0 regressions are now fixed (In Mono 1.1.14 ASP.NET tests ran under the 2.0 server would crash).

Lluis updated the Tree controls to work again on our evolving ASP.NET 2.0 implementation.

C# Compiler Bug Fixes

Most of these fixes are from Marek Safar, which deserves some special thanks for relentlessly addressing these compiler bugs.

Bug fixes for bugs #78020, #77916, #77961 (bug in custom attribute handling); #78048 (crash during Gtk# compilation); Report errors when there a missing pairing of COM and GUID attributes are present; #77966 which allows for different components of a partial class to have explicitly stated accessibility vs none

Improved the CS0122 error reporting (instead of stating a type is not visible, it will now explain that the type is not accessible due to its visibility).

Improved the generated output for array initialization, saving a few KBs from for every assembly (Zoltan suggested this new approach).

Hari fixed #77958 (switch did not work with ulongs); #77929 (private fields in nested generic containers not being accessible); #77954 (resolved ambiguity between generic method definition and generic method instance in different assembly).

Jay

Debug tables are now initialized lazily, which reduces memory startup time for any JAY-produced binaries (including our own C# compiler).

XML NVDL and RNC

Atsushi added fixed various bugs in the NVDL and RNC parsers and validating readers and added tests for them (the tests come from http://www.ietf.org/rfc/rfc4287.txt).

Atsushi also fixed some assorted XPath bugs.

XmlSerialization

Lluis implemented both behaviors for XmlSchemas (1.1 and 2.0 differ in that 1.1 does not allow adding two schemas with the same namespace).

System assembly

HttpWebRequest tests: There have been a number of evolving tests, but we had not mentioned it in the past. To test HttpWebRequest we have created an abstract HttpServer class in the tests that emulates various behaviors from HTTP servers and simulate real life situations and problems. We continue to use this test suite in this release.

Atsushi implemented the new Async operations for WebRequest.

Tomi Valkeinen provided the nono-exception throwing overloads for Socket’s Send and Receive methods.

Thong Nguyen fixed a race condition in FAMWatcher (our FAM backend for monitoring changes to the file system).

Seo Sanghyeon provided DateTime.IsDaylightSavingTime.

Kazuki Oikawa implemented the Generic SortedDictionary and Atsushi provided the tests.

Corlib assembly

Updated to the Encoding classes from Atsushi and Kornel Pal.

2.0 Features

Atsushi implemented the StopWatch class.

Atsushi has been working on cleaning up our System public API to match the official 2.0 API.

Carlos continued work on the IO.Ports classes

Tests

Marek Safar improved the compiler tester and it will now print out the known issues along with the statistics.

New ASP.NET tests from Andrew Skiba, Konstantin Triger, Miguel de Icaza, Vladimir Krasnov,

New regular expression tests from Hari.

New Collections.Generic tests from Kazuki Oikawa and Atsushi Enomoto.

New tests from Roei Erez to validate the encoding of internal fields of Soap serialization against .NET.

New tests from Senganal for the System.Data changes.

Many new tests for System.Drawing from Sebastien.

Performance

Joshua and Gonzalo added an optimization that reuses arrays on the HttpWriter instead of allocating a new buffer on each write.

Kazuki Oikawa improved the performance of Int32.ToString() (bug #77792), it reduced memory allocations and improved performance:

    IntegerFormatter before refactoring (rev. 38559)
      c: 2297ms
      d: 1313ms
      f: 1343ms
      g: 1329ms
      e: 1843ms
      x: 797ms
      Total memory allocated: 663240 KB

    NumberFormatter after refactoring
      c: 1610ms
      d: 969ms
      f: 1110ms
      g: 1296ms
      e: 1344ms
      x: 1531ms
      Total memory allocated: 633026 KB

    NumberFormatter after refactoring + hex formatting patch
      c: 1609ms
      d: 984ms
      f: 1110ms
      g: 1312ms
      e: 1344ms
      x: 391ms
      Total memory allocated: 564775 KB

Important Bug Fixes

Senganal fixed #78010 (DataSet.EnforceConstraints throws incorrect constraint violation); #78027 (SqlCommandBuilder creates incorrect Update and Delete commands);

Boris Kirzner and Roei Erez fixed a SoapSerialization compatibility issues with .NET.

Many of the pending Regex bug fixes were fixed by Hari (#78007, #75345, #69269, #77487).

Zoltan fixed #77960 (Marshalling of fixed size char arrays in structs is unicode only); #78035 (make check fails due to errors in delegate1 and delegate2 tests); #78087 (Runtime produces invalid blob for array attributes); #77916 (unhandled type (array for object argument) in custom attr); #78024 (handle multiple leaves, this was exposed by some Winforms apps);

Mono.Posix time handling: Jon Pryor fixed #78033 to take daylight savings time into account.

Marshalling bug that affected Winfows.Forms applications from starting up on Windows was fixed (Zoltan).

Some well known registry nodes are now created on demand (“Software”) (Gonzalo).

Multiple fixes to ImageListStreamer for Windows.Forms apps (Gonzalo).

Gacutil will delete assemblies before copying over them (this should address updating libraries the GAC on live-systems, Miguel).

resgen2 will now be available (Hari).

Gonzalo fixed #77971 (monitoring files in subdirectories of monitored directories).

Atsushi fixed the Norwegian locale problems (#69652).

SPARC Port

Merge contributions from David Miller to support Linux/SPARC.

Zoltan Fixed 78088.

IO Layer

Debugger

Updated the debugger interface to support follow-fork, follow-exec and to debug multi-threaded and multi-appdomain applications (like xsp).

Security

FileIOPermissions now match the operating system path separators (from Sebastien).

XBuild

Continued work on XBuild from Marek Sieradzki

Crestez Leonard reorganized project loading and evaluation. We cleaned up our code to fit API from .NET 2.0.

New NUnit tests have been added.

Tools

resgen2, a resgen that will run against the 2.0 profile instead of the 1.0 profile is now available.

Installing Mono 1.1.15

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

Binary Packages and Source Code Downloads:

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

Then compile libgdiplus:

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