Hello Python Community,
We’re pleased to announce the final release of IronPython 2.6.1. This version of IronPython makes great strides in stability and compatibility, including a considerable number of targeted bugfixes. This is our largest servicing release to date, and with your help both before and during the RC phase, along with the simultaneous release of .NET 4.0, this has become a very exciting release for all of us.
IronPython 2.6.1 comes in two flavors – one that runs on top of .NET 4.0, and one that runs on earlier frameworks starting with .NET 2.0 SP1. We’d like to place a particular emphasis on the .NET 4.0 flavor of IronPython 2.6.1 and encourage all of you to try it out. It has a number of advantages over the 2.0 version, some of which Dave discusses on his blog
. These include faster startup time, compatibility with C#’s new dynamic keyword, and access to the numerous new features present in the updated Framework. The final release of Microsoft .NET Framework 4.0 is publically available as of today, and is required for this flavor of IronPython 2.6.1. Download .NET 4.0
The IronPython 2.6.1 RC included fixes for well over 50 bugs, large and small. Ctypes has had a number of significant updates, including union support, variant_bool, and wintypes. Another focus has been on sys.settrace, making debugging more reliable. For example, sys.settrace now returns the correct frame, supports tracing through modules, and no longer interferes with “import os”. Other notable fixes include thread-safe importing, and the missing error code in _winreg exception.
In addition, we’ve made a substantial improvement in import time. Not only does this reduce startup time, but it can speed up the importing of large, definition-heavy modules by up to 50%.
As you might imagine, the .NET 4.0 flavor of IronPython 2.6.1 RC has a few of its own changes designed for better interoperability with the framework. These include fixing some Func<> errors and better runtime isolation when similarly-named assemblies in different locations are loaded in multiple engines. In addition, both the .NET 2.0 and .NET 4.0 builds support the new .NET 4.0 IStructuralEquatable and IStructuralComparable interfaces and maps them to the appropriate operations (__eq__, __hash__, __gt__, etc.). In the case of .NET 4.0, this replaces IValueEquality as the gold standard for defining equality in an interop-friendly manner. In the .NET 2.0 build, these interfaces are copied so that their use can be phased in while retaining IValueEquality for backwards compatibility.
Since the RC, we have fixed numerous other issues, as well as adding CPython’s ssl.py to our distribution. We’ve also made some major unicode-related changes in response to your feedback on the mailing list, changes that improve compatibility with certain third-party applications including Django. In particular, invoking unicode() or using unicode string formatting will now call __unicode__() first if it is present on the object. Finally, we’ve included a new code sample that shows how to use __clrtype__ to create custom CLR classes from IronPython. This sample is a sneak preview of what we expect will become a fully supported IronPython module, so we encourage anyone who is so inclined to try it out and let us know how it goes.
Special thanks to Albert Szilvasy, amajorek, cendalc, clovery, egonw_, Eloff, essey, fabiofz, gjones, gpgemini, Haibo Luo, igalse, jazzcat, jdhardy, jlunder, JustinCle, klrohe, László de Almásy, laughingboy, lbaker, Lukas Cenovsky, marten_range, olav, paulfelix, pl6306, razam, roinet, russomf, sanxiyn, see_toronto <at> web <dot> de, Thomas Heller, variant77, vernondcole, William Reade, and Wolfram for reporting issues and making this a great release! Happy scripting!
- The IronPython Team