Mono 1.1.8 Development Release

Mono 1.1.8 is the eighth 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.8 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.7 and 1.1.8. All of the changes since 1.0 are documented in the following release notes: 1.1.1, 1.1.2, 1.1.3, 1.1.4, 1.1.5, 1.1.6 and 1.1.7.

Building with Visual Studio

Visual Studio solution to build Mono runtime natively on Windows. This is useful if you are embedding the Mono runtime into your application and want to debug and single step inside Mono.

Debugger

The Mono Debugger is being released in sync for the first time with the Mono runtime. We need testers to try it out (the command line debugger is called `mdb’).

Windows.Forms

Here a toplevel list of all things new for 1.1.8 MWF:

  • DomainUpDown and NumericUpDown implemented
  • First version with DataGrid support (still incomplete)
  • First version with MDI support (still incomplete)
  • Drag & Drop implemented for X11 and Win32
  • Clipboard implemented for X11 and Win32
  • HelpProvider implemented
  • ErrorProvider implemented
  • Cursor class completed
  • ResXWriter and ResXReader completed
  • SWF.Timers now working properly
  • A bunch of compatibility fixes
  • Image I/O now working on Win32 (this is actually in System.Drawing)

Scaling, Performance

Harinath has been fine tuning our Regular Expressions class library to reduce allocations which translate into an increase in performance (about 10% on the output match). Regexp.Replace will now be O(number of $s in the replacement string) instead of O(length of replacement string). The

The 1024 limit on Socket.Select is gone, Mono will now use poll when available.

System.Web will consume less memory as well (Gonzalo).

Code Access Security

Sebastien’s progress in this release:

  • AppDomain based sandboxes are supported (limited by #74411);
  • Stack propagation for async code, threads and SWF;
  • Default policies (like LocalIntranet, Internet…) are now supported;

The new features allows NRobot 0.20 (http://home.gna.org/nrobot/) to “work” (as much as the permissions are currently present in the class libraries) on Mono 1.1.8 with a single modification (change the imperative assert in NRobot/Engine/GameArena.cs to a declarative assert).

ASP.NET 2.x controls

Lluis completed various new controls for ASP.NET 2.x: ImageMap, Wizard, SiteMapDataSource and SiteMapPath.

Reflection

Lluis added support for producing debugging information from Reflection.Emit. This means that all the Reflection-based compilers and VMs will be able to produce debugging information and have the Mono debugger step through the code.

Packaging

mono-ikvm has been merged into mono-core. Should make it easier for people to get ikvm

mono-nunit is back with the nunit stuff. Needed for mono-tools

Mono-shlib-cop

Jonathan Pryor has contributed this tool to assist developers that use P/Invoke.

mono-shlib-cop is a tool that inspects a managed assembly looking for erroneous or suspecious behavior of shared libraries.

The tool takes one or more assembly filenames, and inspects each assembly specified.

The errors checked for include:

  • Does the shared library exist?
  • Does the requested symbol exist within the shared library?
    It also checks if a program uses shared libraries that are part of a -devel package.

VB.NET

New on this release: late binding, decimal, named arguments, optiona byrefs,

Mono.Unix

The Mono.Unix namespace will be replacing the old Mono.Posix in Mono 1.2 and is still under development. In this release cleanups continued and a few new features are present.

Changes since the last release: Removed types: MapAttribute, IncludeAttribute, ErrorMarshal, ErrorMarshal.ErrorTranslator

Removed UnixMarshal.IsErrorDescriptionThreadSafe property

Renamed LockFlags enum to LockfCommand

Removed StdioFileStream.FilePosition property and replaced with RestoreFilePosition() and SaveFilePosition() methods

Renamed UnixConvert.ToFilePermissions(string) to UnixConvert.FromOctalPermissionString(string)

Additions

  • Syscall.execv(), Syscall.execve(), Syscall.execvp(), Syscall.fexecve()
  • Syscall.fcntl (int, FcntlCommand, DirectoryNotifyFlags)
  • Syscall.mmap, Syscall.munmap, Syscall.msync, Syscall.mlock, Syscall.munlock, Syscall.mlockall, Syscall.munlockall, Syscall.mremap, Syscall.mincore, Syscall.remap_file_pages
  • Syscall.mkstemp
  • Thread safety for “obvious” exports from Stdlib, Syscall
  • UnixConvert.ToOctalPermissionString, UnixConvert.FromUnixPermissionString, UnixConvert.ToUnixPermissionString
  • UnixFileInfo uses stat(2) now, not lstat(2), so a UnixFileInfo created on a symlink will give information about the target, not the link.

Lots of documentation added

JScript

Cesar implemented access to local variables in nested functions in JScript.

Bug fixes, scalability

There are plenty of bug fixes, performance and scalability improvements that are too detailed to list on the release notes.

Installing Mono 1.1.8

Important: Mono 1.1.8 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:

Fedora Core 4 users: packages will work out of the box, but the source code will be misscompiled by gcc4.

./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.8

Binary Packages:

Pre-compiled packages for SUSE, SLES, Fedora Core, RHEL are available from our web site from the download section.

MacOS and Windows packages will be uploaded soon.

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

Contributors

The following list is a partial list of contributors to this release:

Jakub Bogusz, Mart Roosmaa, Alexander Olk, Jonathan Chambers, Matthias Felgner, Jonathan Gilbert, Geoff Norton, Kornél Pál, Jackson Harper, Jordi Mas, Peter Bartok, Ankit Jain, Michael Meeks, Gert Driesen, David Waite, Michal Moskal, Bill Middleton, Nigel Benns, Paolo Molaro, Peter Johanson, Peter Williams, Rafael Teixeira, Raja R Harinath, Ritvik Mayank, Sebastien Pouliot, Sudha, S Umadevi, suresh, Todd Berman, Vladimir Vukicevic, Wade Berrier, Zoltan Varga, Lluis Sanchez, Manjula, Marek Safar, Mark Crichton, Martin Baulig, Martin Willemoes Hansen, Massimiliano Mantione, Miguel de Icaza, Mike Kestner, Konstantin Triger, Kazuki Oikawa, Juraj Skripsky, Joergr Rosenkranz, Joshua Tauberer, Joseph Hill, Jonathan S. Chambers, Jonathan Pryor, John Luke, John BouAntoun, Jeroen Zwartepoorte, Jb Evain, James Wilcox, Jacob Ils, Gonzalo Paniagua, Gert Driesen, Geoff Norton, Francisco Figueiredo Jr., Eyal Alaluf, Duncan Mak, Dick Porter, David Hudson, Dan Winship, Chris Toshok, Christian Hergert, Cesar Octavio Lopez Nataren, Carlos Alberto Cortes¸ Boris Kirzner, Ben Maurer, Atsushi Enomoto, Andrew Skiba, Alp Toker, Alexandre Gomes and Adhamh Findlay.