Mono 1.9 Release (2.0 Beta), March 2008

Release date: 10 Mar 2008

Mono 1.9 is our last release before Mono turns 2.0, it is a stable release and an update to Mono 1.2.6 in the Mono 1.2 series, it is a bug fix release for all the supported components, but also includes updates on the 2.0 and 3.5 stacks.

All of the changes since 1.2 are documented in the following release notes: 1.2.1, 1.2.2, 1.2.3, 1.2.4, 1.2.5 and 1.2.6.

Major Highlights

This is the last release before the 2.0 release of Mono, it is a stable release and at this point the generics and the VM are supported feature complete.

Between the release of 1.2.6 and 1.9 more than 400 bugs were fixed. 1.9 was branched on January 28th of 2008 and there were 6 Preview releases. More than 100 of those 400 bugs were fixed during the 1.9 preview cycle.

This version fixes a bug in reflection that affects existing Gtk# deployments; To install this release you should install the new version of Gtk# (released at the same time as Mono).

C# compiler now defaults to the C# 3.0 mode.

Silverlight support is now enabled by default.

Runtime Engine

Optimization: Generics code sharing [Mark].

AOT support for ARM processors [Zoltan].

Runtime bugs fixed/closed in this release

Continued the work on the Mono verifier and making the runtime more robust when coping with broken assemblies.

LINQ

Core LINQ (Linq to Objects) library support has been updated to the .NET 3.5 API [JB, MarekS]

System.Xml.Linq is now part of the standard distribution [Atsushi]

Tools

Gui-Compare

A new tool gui-compare can be used to compare API changes between different assemblies or descriptions of APIs. You can use this to track API changes in your libraries to ensure no regressions have occurred accidentally.

gui-compare comes with various presets that allow developers to explore the APIs that Mono ship against the Microsoft published APIs and profiles

Gendarme

For the first time Gendarme is available inside a Mono release. Gendarme is a tool to find problems in software. Gendarme inspects programs and libraries that contain code in ECMA CIL format (Mono and .NET) and looks for common problems with the code, problems that compiler do not typically check or have not historically checked.

Contributors: Sebastien Pouliot, Aaron Tomb, Russell Morris, Christian Birkl, Néstor Salceda, Nidhi Rawal, Lukasz Knop, JB Evain, Daniel Abramov, Andreas Noever, Adrian Tsai

C# Compiler

C# 3.0 is now the default mode of operation for the C# compiler. It is no longer necessary to specify the -langversion:linq command line option.

Due to this new default, the System.Core.dll assembly is now referenced and this might cause some type ambiguities, in particular with the “Action” type (System.Action from System.Core vs Gtk.Action for example). The fix is to either use fully qualified names for Gtk.Action, or to use namespace aliases.

There are a couple of known limitations: very complicated LINQ statements still fail to compile, and Expression trees are not completely supported in this release.

The mcs/gmcs parsers have also been unified, which will help reduce the maintenance burden on the compiler.

ASP.NET

New mapping feature. This feature makes it easier to make your cross-platform applications work on many platforms without changing the configuration settings. More information can be found on this page. [Marek]

Batch compilation of sites. Unlike previously, the 2.0 applications are now by default compiled in the batch mode. That means, the first time a request is made to a location, files from the location are compiled together into one assembly (separate assemblies are used for .aspx and .as[hmc]x files). It makes the requests to other files at the same location much faster and reduces clutter in the temporary directory. [Marek]

The XSP test suite has been given a facelift. Both 1.1 and 2.0 sets of tests now share the design and navigation. Many samples were fixed or completed. [Marek]

Speed optimization in the System.Web assembly [Mainsoft, Marek]

Windows.Forms

The OSX native backend has been vastly improved and is now the default for Windows.Forms applications on OSX. The X11 driver is still available, to use it you must set the MONO_MWF_MAC_FORCE_X11 environment variable [Geoff].

More support for WebBrowser events/DOM [Andreia].

Many fixes for RichTextBox and AutoScaling [Luke Page and James Purcell respectively].

Major improvements to the PropertyGrid control some of which are listed below [Ivan N. Zlatev].

  • Merged properties support.
  • Full support of Structures, Arrays and other Value Types.
  • Full support of TypeConverters and UITypeEditors and their features. Also many fixes and improvements to our TypeConverters and UITypeEditors.
  • ICustomTypeDescriptor support.
  • Support for attributes that can be applied to properties and influence their behavior in the PropertyGrid (e.g PasswordPropertyTextAttribute).
  • Graceful error handling and reporting.
  • Over 50 bugs have been fixed in the PropertyGrid. Special credits go to [Andy Hume] for his extensive testing.

Over 100 reported bugs fixed for this release. [Winforms team and contributors].

System.Design

Implementation of the .NET 1.1 and 2.0 Design-Time framework [Ivan N. Zlatev].

  • Hosting: DesignSurface, DesignSurfaceManager.
  • Loaders: BasicDesignerLoader, CodeDomDesignerLoader.
  • Serialization: DesignerSerializationManager, CodeDomSerializerBase, CodeDomSerializer, MemberCodeDomSerializer, RootContext, ExpressionContext, StatementContext, etc.
    Out of the box support for serializing and deserializing Components, WinForms Controls, Properties, Events, Primitives, Enums, Collections, etc is provided.
  • WinForms Designers: ComponentDesigner, ControlDesigner, ScrollableControlDesigner, ParentControlDesigner, DocumentDesigner, FormDocumentDesigner, PanelDesigner, SplitContainerDesigner, etc.
  • Services implementations provided: UndoEngine, EventBindingService, MenuCommandsService, ISelectionService, IReferenceService, IExtenderProviderService, IExtenderListService, ITypeDescriptorFilterService, IDesignerHost, IComponentChangeService, etc.

The implementation should be sufficient to implement at least a Windows Forms designer. An example can be found in the mwf-designer module in our git repository. One major missing bit is the BehaviorService to aid the designer interaction.

Class Libraries

Many fixes to support the Dynamic Language Runtime are available as part of this release. It is now possible to build and use the DLR with Mono.

System.Core: A HashSet implementation is now available on System.Core and we have updated the TimeZoneInfo class.

Mono.Posix Improvements

Stdlib.signal() has been deprecated, as its use was inherently usafe. Stdlib.signal()’s functionality has been replaced with a pair of members: [Jonathan Pryor]

  • Mono.Unix.Native.Stdlib.SetSignalAction (Mono.Unix.Native.Signum, Mono.Unix.Native.SignalAction) permits specifying whether to perform the default action (SignalAction.Default), ignore the signal (SignalAction.Ignore), or generate an error (SignalAction.Error) when the specified signal is generated.
  • The Mono.Unix.UnixSignal class permits instances to represents the signal itself, supporting polling to see if the signal has been generated via the UnixSignal.IsSet instance property, or blocking the current thread until the signal has been generated with UnixSignal.WaitOne().

mono-service

The mono-service and mono-service2 programs no longer poll every 500ms to pause, continue, or stop a service. They will instead sleep until the signal is generated. [Jonathan Pryor]

Visual Basic Runtime

More support in the IO classes for Visual Basic [Rolf]

mod_mono, xsp

New support for controlling the number of requests that are passed to the mod-mono-server process. If you have not changed the number of threads in the Mono thread pool, this can help you prevent deadlocks caused to the Mono ThreadPool getting exhausted by incoming HTTP connections ([Joshua]).

This is controlled with two new Apache directives: “MonoMaxActiveRequests” and “MonoMaxWaitingRequests”.

Security

SSL/TLS now support X.509 server certificate using wildcards (e.g. *.novell.com) [Sebastien]

Installing Mono 1.9

./configure --prefix=/devel

Binary Packages and Source Code Downloads:

Source code and pre-compiled packages for Linux, Solaris, MacOS X and Windows is 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.9.tar.gz
cd mono-1.9
./configure
make
make install

Then compile libgdiplus:

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