Mono 1.1.7 Development Release
Mono 1.1.7 is the seventh 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.7 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.6 and 1.1.7. 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 and 1.1.6.
Mono 1.1.7 overview
The Mono core is pretty much complete for the 1.2 release, at this point we are only waiting for Windows.Forms to be completed before we can ship it. At this point we are scheduled to release Mono 1.2 in September.
In the meantime, Mono development has fallen into two categories:
- New code: Windows.Forms, libraries from the 2.x profile (ASP.NET 2, ADO.NET 2), new compilers (JScript, Basic, C# 2.0).
ie, non-core components.
- New VM features: cross-platform register allocator, new string collation framework, precise garbage collector.
These are being developed on either branches or on separate trees and do not affect trunk.
The above setup allows us to continue development without interfering with the stability of Mono 1.1.x.
New I/O Layer
In Mono 1.1.7 we are including Dick Porter’s new IO-Layer, which is daemon-less. Before 1.1.7 Mono would always launch an auxiliary process that would be used by multiple Mono programs to share information like: global mutexes (named mutexes), file sharing status per-file, process and thread status.
Mono no longer requires a separate shared process to provide the previous features, this has significantly improved Mono’s I/O performance. Beagle is three times as fast indexing files and xsp tripled its speed.
Http Client Interactions
In the past the HttpWebRequest could starve the ThreadPool and it would lead to deadlocks as documented on our web site.
Gonzalo deployed a new implementation that does not have these problems and can take advantage of Linux epoll or kqueue.
This code not only eliminated the potential deadlocks, but also improved the client http throughput by avoiding unnecessary context switches.
Also ReadWriteTimeout is supported and Abort works properly now.
Thanks to Bill Middleton support for i386 FreeBSD (tested against 5.4 and 6.x-CURRENT) is now available.
Extensive progress on the Windows.Forms support code since the March 18th release. Jackson wrote a new double-buffering framework to bring our implementation in line with the expected behavior.
Databinding is now supported on this release (simple and complex data binding), not all controls are ready though, controls that support it: ListBox, CheckedListBox and ComboBox (Jackson and Jordi).
Alexander Olk implemented the file dialogs and did various touch-ups to other dialogs and widgets.
Complete widgets: ImageListStreamer (Jackson),
Prototype widgets: DataGrid widget and data container widgets (Jordi) and RichTextBox (Peter)
New ASP.NET 2.0 controls completed: ButtonField, DetailsView, FormView, GridView, CheckBoxField, HyperlinkField, ImageField, TemplateField by Lluis.
Implemented support for two-way bindings in ASP.NET, ObjectDataSource and various improvements to the Menu control.
Gonzalo added support for code render syntax inside non-server tags, ie., <span <%= (firefox) ? class=”cool” : “” %>>
Hari and Marek continue the work on making the compiler comply more strictly to the C# specification. In some areas the compiler is faster, and consumes less memory, but it also provides better error messages and includes many new warnings that before were ignored.
Martin synchronized the generics compiler codebase with our main compiler codebase. Also all bug reported on the generics compiler (except two parsing errors) have now been fixed and the generics class libraries have been modified to match the Beta2 libraries.
Marek implemented C# 2.0 conditional attributes and DefaultCharSet attribute.
Many important fixes from Sebastien:
- Fixed asynchronous operations;
- Fixed support for client-side certificates;
- Performance enhancements;
Continued work on the CAS from Sebastien (–security flag).
Exposed more of the Mono.Security libraries as the .NET 2.x framework includes more features.
The following assemblies are now functional:
System.Configuration.Install Written by Muthu Kannan and Harinath Raja.
System.ServiceProcess: Joerg Rosenkranz Completed the support and implemented the service host daemon.
Cesar’s effort on JScript continue, not the compiler implements:
- Strict-Equality operators
- For-in statement
- Custom constructors
- Increment/Decrement operators
- First-class functions
Plus bug fixing.
The JScript’s runtime support now supports:
- ArrayConstructor’s CreateInstance function
- ArrayPrototype’s join method
- JSFieldInfo’s GetValue and SetValue functions
- JScriptException’s constructor
- Initial implementation of LateBinding’s CallValue and
Manjula, Sudha and Ankit continued working on the Basic compiler and the Basic runtime:
- Implemented “End statement”
- Support “Exit Function”
- Support declaration of decimal numbers.
- Support ‘Or’ argument of AttributeTargets in AttributeUsage
- Conditional Constant Directives
- Support expressions for directives
- Support Reference Parameter when parameters and arguments are different
The runtime now features late binding: it is 75% complete. It works with sub, functions, properties and fields, arrays. Late binding fit in well with simple expressions (like in conditional expressions and arithmatic expressions).
Finally, there is support for default values using an attribute by round-tripping and patching the runtime.
SQLServer: Added support for Asynchronous command execution (Ankit and Suresh).
Various disconnected mode improvements: loading datatables.
There is a new UnixListener and UnixClient classes in the Mono.Unix namespace.
Users will have to do make at least once in Mono before they can do make in any directory.
Installing Mono 1.1.7
Important: Mono 1.1.7 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:
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.7
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.
- Mono Source Code: mono-1.1.7.tar.gz
Quick source code installation:
If we have no packages for your platform, installing from source code is very simple.
tar xzf mono-1.1.7.tar.gz cd mono-1.1.7 ./configure make make install
The following list is a partial list of contributors to this release:
Alexander Olk, Alp Toker, Andrew Skiba, Ankit Jain, Atsushi Enomoto, Ben Maurer, Bernie Solomon, Bill Middleton, Boris Kirzner, Brian Ritchie, Carlos Alberto Cortes, Cesar Octavio Lopez Nataren, Christian Hergert, Chris Toshok, Daniel Drake, Daniel Morgan, David Hudson, Daniel Rodriguez, David Waite, Dick Porter, Eyal Alaluf, Geoff Norton, Gonzalo Paniagua, Hiroyuki Ishimine, Hubert FONGARNAND, Hye-Shik Chang, Ilya Kharmatsky, Jackson Harper, Jambunathan K, James Wilcox, Jb Evain, Joe Shaw, John BouAntoun, John Luke, Jonathan Pryor, Jonathan S. Chambers, Jon Larimer, Jordi Mas, Joshua Tauberer, Jörg Rosenkranz, Konstantin Triger, Lluis Sanchez, Luke Ravitch, Manjula, Marek Safar, Martin Baulig, Martin Willemoes Hansen, Massimiliano Mantione, Miguel de Icaza, Mike Kestner, Mike Tindal, Neale Ferguson, Nick Drochak, Paolo Molaro, Pedro Kiefer, Peter Bartok, Peter Johanson, Rob Lyon, Rafael Teixeira, Raja R Harinath, Randy Ridge, Ritvik Mayank, Rob Lyon, Sebastien Pouliot, firstname.lastname@example.org, Sudha, Sudharsan V, Suresh, Toby Miller, Urs Muff, Zac Bowling and Zoltan Varga