Mono 0.30, MonoDoc 0.10, XSP 0.9, mod_mono 0.7, libgdiplus 0.1

Hello everyone,

A new release of Mono has been released.
Mono is an open source implementation of the .NET Framework
for Unix, Linux and Windows systems.

This release includes four components at once: the Runtime
and Software Development Kit, the Documentation browser, and
the ASP.NET server with its Apache module. Packages for
various distributions are also available from our download
page.

This is mostly a fine tuning release: bug fixing and
performance improvements are the major benefits, but new
classes and new features are also included. See the rest of
the notes for details.

Stats

Since the last release, 2,655 individual commits were done to
our runtime and class libraries.

1,397 bugzilla bugs were closed, four times as much as in
the previous release cycle. So this is certainly a bug fixing
release ;-)

Thanks

A big thank goes again for Duncan Mak who worked steadily to
get every new dependency of Mono compiled and tested on our
Linux Platforms and to Dan Morgan who tested our Windows build
and produced packages for us.

Availability

Binary Packages:

Pre-compiled packages for SUSE 9, Red Hat 9 and Fedora Core
1 are available from our web site from the download
section.

Performance

Many improvements to the class libraries (Patrik, Ben), JIT
compiler (Paolo, Patrik, Zoltan) and C# compiler (Ben,
Benjamin and Miguel). The net results are that C#
compilation times are now 30% to 40% faster than in 0.29
(30% for plain, 40% for precompiled).

There are some nice low-level optimizations done in the
JIT, from inlining string-length, to optimizing the
object.GetType() call.

For instance the C# compiler will compile itself in 2.3
seconds on a 1.6GHz machine (20klines/second).

The whole system uses less memory now, and lots of pieces
have been better tuned: ArrayList enumerators now use less
memory; Patrik rewrote StringBuilder; FileStreams no longer
use locking (Ben); the BinaryReader and BinaryWriter handle
strings more efficiently (Ben) and Gonzalo reduced the use of
memory in Reflection.

MonoDevelop has been a source of inspiration for areas that
have not been optimal in the past.

PowerPC port

Most tests now work on both MacOS X and LinuxPPC. Neither
of them are ready for production use, but most simple programs
will run with the JIT.

On MacOS X 10.2 and 10.3, we know that ICU currently is
causing problems, and you will need to install the latest
alpha version of Boehm
GC.

C# Compiler

The code generated by the compiler is much better in the
presence of complex conditional expressions (thanks to Ben) and
code generation has been fixed in various new corner cases
that we mis-compiled before.

A large part of the performance of the compiler comes from
its more conservative use of memory. The compiler should
perform better as well on machines with limited amounts of
memory. In the bootstrapping case, the compiler is down to 50
megs of memory.

The file format for the symbol table is much smaller as
well (Martin).

Implicit method group conversions to Delegate types is
available if you run the compiler with the -2 option, so this
means that you can write less code:

VB Compiler and JScript

Rafael contributed many updates to the grammar, and Anirban
contributed many more tests to exercise the compiler now as
well as many bug reports as a result of all these tests based
on the published VB specification.

Cesar has got the basics of his compiler to generate IL for
some basic expressions now, with various tests as well.

Mono Runtime Changes.

Zoltan added support for unmanaged resources to the
runtime, reflection emit and the C# compiler (/win32res: and
/win32icon: are now supported).

Zoltan also added support for declarative security to our
Reflection.Emit implementation as well as debugging
information in Ahead-of-Time (AOT) compiled programs.

Patrik implemented Stack spilling of floating point support
in JIT for x86. This means that we now support complex
floating point operations on 86 via the new floating point
stack code.

FileSystemWatcher is here!

Gonzalo implemented the long-awaited FileSystemWatcher for
Mono. If your system support FAM, it will take
advantage of it, if not, it will create a thread and
periodically poll the underlying system for changes.

This means that our ASP.NET finally can recompile
applications when configuration or source code changes happen
without any delays.

Cryptography

Mono.Security.Win32 is working again thanks to Patrik
Torstensson(callingconv).

Runtime RNG now works under Windows
(using CryptoAPI) thanks to Mark Crichton.

Fixed MACTripleDES for 1.1 (which in some case has
different results than 1.0)- Fixed some cases for None and
Zeros padding modes in symmetric encryption (Sebastien).

Security

Many new unit tests for permissions and code groups which
resulted in lots of small patches in System.Security
namespace.

Web Services

Regarding web services, this is mainly a bug fixing
release. Many bugfixes in all areas: web services, xml
serialization, wsdl processing,document discovery, etc.
Thanks for all the bug reports! And thanks to Lluis for
promptly fixing them all.

Lluis has also deployed a new web service test suite that
will help ensure that Mono is interoperable with other web
service platforms. The test suite currently processes more
than 350 WSDL documents from various SOAP implementation which
it generates around 600 proxies.

Implemented support for Dynamic Discovery documents
(.vsdisco files).

The web service documentation page has been improved: now
it can render sample requests and responses for all of the
supported protocols.

This feature has also been added to the wsdl tool,
which means that you can print sample textual
requests/responses for all web services, not just Monoweb
services.

XML land

We have finally switched to managed XSLT as our XSLT
engine, this replaced the older libxslt based
implementation. Atsushi has implemented the missing features
and fixed all the remaining bugs. He added support for
msxsl:script as well as extensions objects.

This managed XSLT implementation is very robust. We have
integrated various XSLT test suites into the tree to verify
its conformance continuously.

XML Schema: David has been improving facet validation
support and it became much more close to MS.NET.

ASP.NET Ports

Jackson has been working on porting various open source
ASP.NET applications to run on Unix and Mono, you can find the
ongoing ports effort here.

Currently these include the PetShop, FlexiWiki and DasBlog.

System.Drawing

Pen, Brush, Matrix and GraphicsPath implementation and bug
fixes from Duncan and Ravindra.

Jordi fixed our BMP encoder, completed various C#-side
components of System.Drawing. He has started to move the font
handling code to the libgdiplus layer.

Our GDI+ implementation has been split from the MCS source
package, and has moved into its own package: libgdiplus

Remoting

Lluis Improved support for the SoapFormatter, including the implementation
of the SdlServerSink remoting sink, which renders the wsdl
document for a remote object published using http and the soap
formatter.

Lluis also did other improvements and bug fixes, such as
complete support for channel configuration properties, and
better interoperability with MS.NET remoting.

Npgsql: Postgres bindings.

Initial support for connection pooling. You can use the
connection pooling by specifying the MinPoolSize=value in the
connection string. The MaxPoolSize can also be specified, but
it is not implemented yet.

Note that some logs about connection not being closed will
be shown as a side effect of connection pool. The unmanaged
socket is closed, but server complains and logs about the
sundden close. Please, check this
post for more details about it.

bearm (bearm at mail dot it) and Marcus Better (marcus at
dactylis dot com) also helped with bug fixes in this release.

Tools

New Assembly Linker (al) from Zoltan Varga.

Lluis Implemented the soapsuds tool, which can
generate schemas and client proxies for remote classes.

Windows.Forms update

There has been some momentum on the Gtk# backend for
Windows.Forms in this release, you would need to compile
manually and install these assemblies.

The WineLib-based version of Windows.Forms is on hold,
while Peter Bartok is updating our patches for WineLib to the
latest version of Wine. Large internal changes in Wine
rendered our previous WineLib implementation obsolete.

As part of the renewed patch, Peter is merging the Cairo
and Xlib rendering paths to avoid the co-existence issues we
had between WineLib and Cairo.

The people behind this release

Roughly 60 developers following developers contributed to this
release: