Mono 1.9 Release (2.0 Beta), March 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.
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.
Optimization: Generics code sharing [Mark].
AOT support for ARM processors [Zoltan].
Continued the work on the Mono verifier and making the runtime more robust when coping with broken assemblies.
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]
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
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# 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.
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]
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].
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.
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.
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.
Mono.Unix.UnixSignalclass permits instances to represents the signal itself, supporting polling to see if the signal has been generated via the
UnixSignal.IsSetinstance property, or blocking the current thread until the signal has been generated with
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]
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”.
SSL/TLS now support X.509 server certificate using wildcards (e.g. *.novell.com) [Sebastien]
Installing Mono 1.9
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.
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