| By Dennis Hayes | Article Rating: |
|
| September 27, 2006 03:30 PM EDT | Reads: |
14,124 |
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 14,124
Copyright © 2006 SYS-CON Media, Inc. — All Rights Reserved.
Syndicated stories and blog feeds, all rights reserved by the author.
More Stories By 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. |
||||
- Cloud People: A Who's Who of Cloud Computing
- Windows Azure IaaS Reaches General Availability
- AMD and Adobe Collaborate on Upcoming Version of Adobe Premiere Pro Software to Enable Breakthrough Video Editing Performance Through Open Standards
- State and Local Governments Adopt Microsoft Dynamics CRM to Improve Citizen Service Delivery
- New Relic Q1 2013 Blazes Past Growth Targets and Reaches 40,000 Active Customer Accounts
- Cloud Expo New York: Deploying Hybrid Cloud for Performance and Uptime
- Predixion Software Announces General Availability of the Latest Version of its Predictive Analytics Platform
- Symphony EYC Appoints New Account Manager to Drive Global Opportunities
- Cloud Computing Is Simplifying Things
- Cloud Expo New York: Developing the World’s First IaaS Marketplace
- Session Topics: 12th Cloud Expo / Cloud Expo New York
- Cimtrek announces the general release of its Lotus Notes migrator for Microsoft’s SharePoint platform
- Cloud People: A Who's Who of Cloud Computing
- Cloud Expo New York: Best CIO Practices Shared from SHI’s Customers
- Windows Azure IaaS Reaches General Availability
- AMD and Adobe Collaborate on Upcoming Version of Adobe Premiere Pro Software to Enable Breakthrough Video Editing Performance Through Open Standards
- State and Local Governments Adopt Microsoft Dynamics CRM to Improve Citizen Service Delivery
- New Relic Q1 2013 Blazes Past Growth Targets and Reaches 40,000 Active Customer Accounts
- The PostOpen Event – Why It Is So Important
- The Cover and the Epilogue of the Upcoming Book
- Cloud Expo New York: Deploying Hybrid Cloud for Performance and Uptime
- Predixion Software Announces General Availability of the Latest Version of its Predictive Analytics Platform
- Small Cancers, Big Data, and a Life Examined
- Basho Announces Open Source Riak CS and General Availability of Riak CS Enterprise v1.3
- Google Maps and ASP.NET
- Converting VB6 to VB.NET, Part I
- How to Write High-Performance C# Code
- Crystal Reports XI & How It Has Changed
- Where Are RIA Technologies Headed in 2008?
- Creating Controls for.NET Compact Framework in Visual Studio 2005
- Programmatically Posting Data to ASP .NET Web Applications
- Implementing Tab Navigation with ASP.NET 2.0
- AJAX World RIA Conference & Expo Kicks Off in New York City
- i-Technology Viewpoint: "SOA Sucks"
- .NET Archives: Getting Reacquainted with the Father of C#
- i-Technology Photo Exclusive: Bill Gates & Steve Jobs In "Nerds"




















