Mono 1.1.5 Development Release

Mono 1.1.5 is the fifth 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.5 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.4 and 1.1.5. All of the changes since 1.0 are documented in the following release notes: 1.1.1, 1.1.2, 1.1.3 and 1.1.4. Note that some of the changes mentioned in these notes are also present in the 1.0.x series.

293 bugs were fixed from the 1.1.4 release to the 1.1.5 release.

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

Changes since the last release

The following is a high-level description of the changes in the development release of Mono since the previous development release in February 11th.

Although this a development version, this release contains mostly bug fixes, speedups and tuning in every subsystem of Mono. Some key changes are:

x86-64

The x86-64 version of Mono now uses SSE2 for floating point arithmentic instead of the x87 stack instructions (Zoltan).

ADO.NET

Plenty of bug reports were closed in ADO.NET by Suresh, and he also implemented the provider factory configuration classes.

Dan Morgan and did various fixes to the Oracle provider, and Hubert FONGARNAND contributed connection pooling for it.

Npgsql

From Francisco: Added support for implicit parameter stored procedure call. Parameters are added in order they were added to NpgsqlCommand Parameters collection. This is the same style of calling stored procedures with SqlClient.

Added support for record return type functions. Thanks neri and Michel for heads up and tests.

Added Varchar support. Thanks Peter and Gustav for heads up.

Npgsql doesn’t depend on System.Drawing and System.Windows.Forms (a.k.a SWF) when compiled with Mono. This dependency is only necessary to add design time support for VS.NET and so only enabled when compiling with csc. Thanks Eno and Rafael Teixeira for help.

Added support for updating output parameters when calling ExecuteReader(). Thanks Mike Griffin (mike dot griffin at mygenerationsoftware dot com) for heads up.

VB.NET Compiler

Manjula and Sudha continued work on expressions and statements (MID, TO, IS, various concatenations, ANDALSO, ORELSE, LIKE, and a few others; See ChangeLog for details) and statements; Finalized the implicit and explicit conversions.

Windows.Forms

Windows.Forms continues to improve in every part of the toolkit. In addition to Jordi, Peter and Jackson’s ongoing contributions, Alexander Olk contributed various of the common dialogs code; Jonathan Chambers contributed the Property Grid widgets and Geoff Norton continued to maintain the OSX driver.

XML Stack

XSLT QA: Andrew Skiba and Konstantin Triger from Mainsoft fixed several bugs on XSLT, DOM and XmlReaders.

Significant XSLT memory usage reduction has done (and it’s still ongoing).

New: we now have ISO DSDL Part 4 NVDL support as part of Commons.Xml.Relaxng.dll, accompanying several bugfixes on RELAX NG support (Atsushi).

New CAS features

Most of this was done by Sebastien, with technical support from our JIT team Paolo and Zoltan:

LinkDemand (JIT time) and it’s special cases (icalls, P/Invoke and the [AllowPartiallyTrustedCallers] attribute);

InheritanceDemand (load time);

Demand for unmanaged code on P/Invoke, including support for the [SuppressUnmanagedCodeSecurity] attribute;

Support for new 2.0 security actions: DemandChoice, LinkDemandChoice and InheritanceDemandChoice (note: the Mono runtime doesn’t yet encode the in the new binary format).

Bundles

Bundles will now also include any .config file in the bundle as well, removing another external depedency (Paolo).

C# 2.0 extensions

This release includes: an implementation of Fixed Size Buffers by Marek Safar and Nullable Types by Martin Baulig.

For your developer correctness pleasure, many more warnings and errors are reported on this release, special thanks go to Marek Safar for the extra careful work that has gone into adding the new error checking, and special thanks go to Hari for his ongoing work on keeping the bug count of the compiler low.

Summary of C# 2.0 features supported

Today Mono 1.1.5’s C# compiler supports anonymous methods, iterators, partial classes, static classes, covariance and contravariance, property accessor accessibility, fixed size buffers and inline warning control from the 2.0 specification. Generics, Nullable Types are supported as well on the branched `gmcs’ compiler (included).

Still missing for full 2.0 support: namespace alias qualifier, external assembly alias and friend assemblies.

ASP.NET 2.0

The 2.0 ASP.NET stack now contains GridView (editing, paging, sorting are supported: server-side and client-side sorting).

GC Tuning

Various optimizations to remove locks from critical paths, also a cleaner separation between the GC interact is being introduced in preparation for having multiple pluggable GC engines in Mono.

The GC is more aggressive with finalization of objects, which has helped long-running applications (xsp) to keep the memory under control: in the past the heap would grow.

Installing Mono 1.1.5

Important: Mono 1.1.5 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.5

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.

Source code:

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

Optional Packages

Libgdiplus is an optional packages. You only need it if you intend to use System.Drawing or Windows.Forms.

libgdiplus:

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

Contributors

The following developers contributed to the Mono 1.1.5 release:
Adhamh Findlay, Alexandre Gomes, Alexander Olk, Alp Toker, Andrew Skiba, Anil Bhatia, Atsushi Enomoto, B Anirban, Ben Maurer, Bernie Solomon, Carlos Alberto, Carlos Guzmá, Cesar Octavio, Chris Toshok, Chris Lahey, Daniel Morgan, Dan Winship, David Hudson, Dennis Hayes, Dick Porter, Duncan Mak, Erik Dasque, Fawad Halim, Francisco Figueiredo, Francisco Martinez, Geoff Norton, Gonzalo Paniagua, Jackson Harper, Jambunathan Jambunathan, Jb Evain, Jeroen Zwartepoorte, John BouAntoun, John Luke, Jonathan Pryor, Jonathan Chambers, Jordi Mas, Joshua Tauberer, Jörg Rosenkranz, Juraj Skripsky, Kazuki Oikawa, Konstanti Triger, Larry Ewing, Lluis Sanchez, Manjula GHM, Marek Safar, Mark Crichton, Martin Baulig, Martin Willemoes, Massimiliano Mantione, Miguel de Icaza, Mike Kestner, Neale Ferguson, Nick Drochak, Paolo Molaro, Patrik Torstensson, Peter Bartok, Peter Williams, Rafael Teixeira, Raja R Harinath, Randy Ridge, Ravindra Kumar, Ritvik Mayank, Sebastien Pouliot, Shane Landrum, José Alexandre Antunes, Sudha Sathya, Suresh Kumar, Todd Berman, Urs Muff, Zac Bowling and Zoltan Varga.