Mono 1.2.6 Release, 2007

Mono 1.2.6 is an update to Mono 1.2.5 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 stack.

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 and 1.2.5.

Major highlights:

  • Native Windows.Forms driver for MacOS X allows Winforms-based applications to run without an X server.
  • Support for the ASP.NET AJAX APIs and controls.
  • Support for FastCGI deployments: ASP.NET can now be deployed on a multitude of servers that implement the FastCGI protocol (lighttpd for example) in addition to Apache.
  • Windows.Forms now supports the WebControl on Windows and Linux using Mozilla.
  • Runtime will now consume much less memory for 2.0-based applications due to various optimizations in generics support as well as including many new performance improvements and an updated verifier and an implementation of CoreCLR security.
  • C# compiler is quickly approaching full 3.0 support, most of the basics work right now (except support for System.Query.Expression AST generation).
  • The QA team ran 910 test cases during 11 test runs.
  • Over 50 bugs were fixed / backported to the Mono 1.2.6 branch.
  • Mono 1.2.6 can now be used as an SDK for creating Silverlight 1.1 applications on all platforms. This allows developers to create applications that target Silverlight without requiring a Windows installation.

New in Mono 1.2.6

ASP.NET AJAX Implementation

This release includes the engine developed by Mainsoft in the last few months that provides the ASP.NET AJAX stack on the server side. This is the System.Web.Extensions assembly.

The ASP.NET AJAX engine is able to run the open source ASP.NET AJAX Toolkit.

On the client side, we are now bundling Microsoft’s ASP.NET AJAX Client Library (which is released under the Microsoft Permissive License).

FastCGI

This version of Mono ships with support for servers that speak FastCGI (like lighttpd). This was developed by Brian Nickel during the summer as part of the Summer of Code.

Documentation for setting up sites with FastCGI and Mono is available here.

Robert integrated the work into the main distribution.

Windows.Forms

The Web browser control is introduced in this release. It has support for basic browsing, but support for manipulating the DOM is not yet supported. This feature requires Mozilla and currently only works on Windows and Linux [Andreia].

OSX support debuts with a native Quartz backend. This means that there is no need to run your applications inside X11, although you still need X11 installed as we use FreeType and font-config that are part of the X11 distribution on OSX) [Geoff, Will Johannson, Attacom ]. This is at this point a preview and not yet fully supported, but many applications now work.

To use Windows.Forms on MacOS, you should use the macpack tool to “wrap” your Windows.Forms application properly (so that users can double-click on it).

WindowsFormsSynchronizationContext has been implemented, this allows callbacks from BackgroundWorker to run on UI thread.

Approximately 100 reported bugs fixed in this cycle (too many to go into the details).

Runtime Engine

Hazard pointers, to be used by lock-free parallel algorithms (Mark Probst). This improves stability with Thread.Abort-happy workloads.

Support for the PE32+ assembly file format [Paolo].

Support for Managed allocations: the runtime can now perform some allocations completely in managed code without the penalty of trasitioning to unmanaged code [Paolo].

Signifiantly reduced the runtime and memory overhead of providing all the additional interfaces of 2.0 vectors [Paolo].

Implemented lazy loading of the interface dispatch tables, improving memory usage. This feature is available on x86, x86-64 and ARM systems [Paolo].

Support for the CoreCLR security system (used by Silverlight sandboxes) [Mark].

Reduced the size consumed by trampolines, in MonoDevelop’s case this saves 160k of memory on startup (Paolo).

New Timer implementation, this version s much faster, uses the ThreadPool and provides the proper semantics that people have been requesting [Paolo].

Generic code sharing: early components for the generics code sharing are now part of this release. Currently you can control the level of code sharing done with the MONO_GENERIC_SHARING environment variable. See the man page for details [Mark].

Silverlight Support

Silverlight 2.1 libraries are now part of the build (JB Evain).

To compile code that targets Silverlight, use the smcs command line compiler. This preloads all the Silverlight assemblies and also enables the LINQ language version (-langversion:linq) by default.

ASP.NET

New mod_mono directives for controlling the life span of mod-mono-server (Marek Habersack).

Startup of mod_mono backends synchronized across all the child apache processes (via a shared memory dashboard).

A new tool mconfig can be used to easily extend your Web.config settings to include new features (like turning an existing ASP.NET app into an AJAX ASP.NET app).

The new mono-asp-apps script is a tool that can be used by RPM-based distributions to install and remove ASP.NET applications from a system. [FIXME: link to the ASP.NET application guidelines deployment]

Some key fixes allow ASP.NET with IronPython to work now [Lluis, Marek and Marek].

System

SslStream has been implemented (Atsushi).

System.Net.Mail has been vastly improved (Atsushi).

System.Net.NetworkInformation (Windows-only for now, Atsushi).

Fixed a number of serial problems in 81967 by Lukasz Byczynski

The Cecil-based permview tool is now part of Mono, replacing an older reflection based (and incomplete) version [Sebastien]

SSL/TLS thread-synchronization has been fixed. This fixed LDAPS support over multiple threads [Sebastien]

System.Drawing / Libgdiplus

Libgdiplus has been updated to use Cairo 1.4.10 [Sebastien]

Special case for handling path/region excludes from infinity [Yves Bastide]

Added GdipCloneFontFamily function [Dmitriy Lukinov, Sebastien]

TextureBrush now supports transparent bitmaps [Sebastien]

LDAP support

The Mono’s library Novell.Directory.Ldap has been synchronized with the Novell’s CSHARP LDAP SDK (version 2.1.8). All the changes have been commited together. [N Palaniappan]

Infrastructure

Assembly Tuner and Assembly Linker (available as a preview in 1.2.5) (JB Evain).

System.Core updates: Marek Safar, Federico Di Gregorio

The new mono-test-install script can be used to check a Mono installation for common errors.

C# Compiler

Support for partial methods has been implemeted [Marek].

To enable this and other LINQ features from the language, you must use -langversion:linq in the command line.

The Silverlight compiler (smcs) has that enabled by default.

Other

Work is underwary to complete the 2.0 API at least to keep the metadata in sync with the framework. We would much rather have methods documented with TODO items or throwing exceptions that not having the methods defined.

Contributors

Lukasz Byczynski, Federico Di Gregorio, Kevin Fitzgerald