| By Dennis Hayes | Article Rating: |
|
| September 27, 2006 03:30 PM EDT | Reads: |
10,948 |
Mono 1.1.16, the third beta of version 1.2, has been released. The time span between the release of versions 1.1.15 and 1.1.16 is one of the longest in several years and the number of changes included reflects that, again System.Windows.Forms (SWF) and System.Drawing got the most attention.
The biggest difference is that SWF now supports threading; multiple threads can now create their own forms and controls, and have their own message processing loops. Repaint logic has also been changed to improve performance and match the Microsoft implementation. In the past, Mono sent paint messages through the event queue. Now, these are generated by the GetMessage function when the queue is empty, and at that point any windows that have invalid regions are sent a paint message.
Support for DataGrid and MDIs has been greatly improved and the tree control has gotten a number of performance enhancements.
System.Drawing, GraphisPath, LinearGradiant, BeginContain, and GraphicsRegion all made big advances.
ASP.NET 2.0 has advanced enough to run the ASP.NET Personal Web Starter Kit, which required a lot of bug fixes in theme and skin support code. Mainsoft has also added a sophisticated ASP.NET 2.0 test suite to the Mono project, with a Web testing framework that includes hosting for testing of all System.Web functions, a package that converts HTML into XML and then compares the XML. Mainsoft also contributed new test fixtures for testing 23 of the System.Web.UI.WebControls classes.
The debugger got many bug fixes and can now debug xsp and WinForms applications. XBuild can now build VisualStudio projects that don't use resources or contain assemblies that aren't in the GAC, and it now supports simple conditions in the build project. Monodis and ilasm now support the 2.0 declarative attributes, custom modifiers and attributes, and it handles dependencies better. System.Drawing and SWF have been updated to use the latest version of Cairo, the graphics library they're based on. For testing, the NUnit Mocks framework has been integrated into the standard Mono distribution.
Coverity, a company that provides defect-scanning services and tools for verifying source code, has a contract with the U.S. Department of Homeland Security to scan key Open Source projects for defects, and they have just included Mono in the list of projects they scan. You can see how some popular Open Source projects, including Mono, fare at http://scan.coverity.com/. Mono has 123 open bugs listed in 316,875 lines of code for an error rate of 0.391 bugs per thousand lines of code. Respectable but not great. Compare it to Linux 2.6 (0.160), Free BSD (0.386), NetBSD (0.493), and WINE (0.298). The number generally accepted as average for commercially developed software is 0.500.
Mono Runtime
The Mono runtime has also seen some major updates. Version 1.1.16 includes an optional new, not yet supported, generational, compacting, garbage collector (GC) written by Paolo Molaro. When it's complete, this will be a major enhancement for Mono, improving reliability and performance in long-running programs. It's a compacting GC because when blocks of memory are released, memory above those blocks are moved down to fill in the space, so the memory is compacted. It's generational because when new blocks of memory are allocated, they're allocated in a block of memory called the nursery. They are then moved to one of several older "generation" memory blocks.
Paolo has written an excellent explanation of how compacting generational GCs work, along with details of how he implemented Mono's GC. It includes optimizations for large objects and pinned objects, and tricks for minimizing the amount of memory that must be scanned on each pass. This is a well-written piece that anyone can understand, and everyone can learn from. It can be found at www.mono-project.com/Compacting_GC.
The ability to unload assemblies and shut down are critical to many Web hosting applications and are much improved in this release. This was again driven by the needs of a commercial application using Mono. In this case it was scripting for the Unity game engine (http://unity3d.com/) made by OTEE for inclusion in its Unity Web plug-in.
In response to another commercial user, SecondLife (see DNDJ, vol. 3, issue 11), Mono has resumed work on code verification, and support for .NET 2.0 declarative security has been added to the runtime. The handling of missing and broken assembly references has also improved, with previous "crash" bugs now throwing a TypeLoadExecption. In response to a third commercial user, Imeem, a maker of social interaction software (www.imeem.com), some port leaks on the Mac were detected and fixed.
Mono's limited support for COM now includes marshaling of BSTR and VARIANT types on Windows platforms.
The IronPython beta 8 now works on Mono out-of-the-box. IronPython continues to add .NET 2.0 features, pushing Mono to add support for these features.
There were also some optimizations and improvements in the runtime and the C# compiler, along with the inclusion of more version 2.0 features.
Published September 27, 2006 Reads 10,948
Copyright © 2006 SYS-CON Media, Inc. — All Rights Reserved.
Syndicated stories and blog feeds, all rights reserved by the author.
About Dennis Hayes
Dennis Hayes is a programmer at Georgia Tech in Atlanta Georgia where he writes software for the Adult Cognition Lab in the Psychology Department. He has been involved with the Mono project for over six years, and has been writing the Monkey Business column for over five years.
![]() |
JDJ News Desk 09/27/06 02:47:00 PM EDT | |||
Mono 1.1.16, the third beta of version 1.2, has been released. The time span between the release of versions 1.1.15 and 1.1.16 is one of the longest in several years and the number of changes included reflects that, again System.Windows.Forms (SWF) and System.Drawing got the most attention. |
||||
- AJAX World RIA Conference & Expo Kicks Off in New York City
- Ulitzer’s Amazing First 30 Days in Public Beta
- SYS-CON Announces Government IT Conference & Expo
- RIAs for Web 3.0 Using the Microsoft Platform
- "Government IT Expo" to Highlight Cloud Computing and SOA
- Building a Composite Application Using Multiple Web Services
- Amazon, Google, Microsoft - Big Three Cloud Providers Examined
- Will Ulitzer Dominate News Content on The Web? -Gartner
- Windows 7 To Launch Publicly May 5
- Cisco Needs to Buy EMC to Own VMware
- AJAX World RIA Conference & Expo Kicks Off in New York City
- Ulitzer’s Amazing First 30 Days in Public Beta
- SYS-CON Announces Government IT Conference & Expo
- RIAs for Web 3.0 Using the Microsoft Platform
- How Did We Get to Windows 7?
- "Government IT Expo" to Highlight Cloud Computing and SOA
- Building a Composite Application Using Multiple Web Services
- Amazon, Google, Microsoft - Big Three Cloud Providers Examined
- Will Ulitzer Dominate News Content on The Web? -Gartner
- Micro Focus Offers Micro Focus COBOL for Eclipse
- Google Maps and ASP.NET
- Crystal Reports XI & How It Has Changed
- Creating Controls for.NET Compact Framework in Visual Studio 2005
- Converting VB6 to VB.NET, Part I
- How to Write High-Performance C# Code
- AJAX World RIA Conference & Expo Kicks Off in New York City
- Implementing Tab Navigation with ASP.NET 2.0
- i-Technology Photo Exclusive: Bill Gates & Steve Jobs In "Nerds"
- .NET Archives: Getting Reacquainted with the Father of C#
- i-Technology Viewpoint: "SOA Sucks"








































