Wednesday, August 06, 2008

The IronPython team has just announced the release of IronPython 2.0 Beta 4. IronPython 2 is the version of IronPython built on top of the Dynamic Language Runtime.

This is an important release, not just because of the number of new features and bugfixes, but because with it come changes to the way IronPython is packaged and what it is packaged with...

As well as the normal binary / source releases, IronPython 2b4 comes with an msi installer that also includes the Python 2.5 standard library. This is something the community has wanted for a long time, and opens the way for the Microsoft Dynamic Languages team to officially support some of the patches needed to enable some standard library modules to work with IronPython. It also makes IronPython a more 'complete' (and installable) version of Python.

IronPython 2 now requires .NET 2 Service Pack 1. If this isn't installed, the msi will prompt you. Unfortunately there is a bug with the currently released installer that will cause it to think that a machine with .NET 3 / 3.5 installed does not meet the requirements (even where .NET 2 SP1 is explicitly installed). Hopefully that will be fixed soon...

UPDATE: The msi bug has now been fixed.

Significant new features in this release include:

Static compilation of python files is now supported again and the pyc.py sample has been updated to use the newer version.

IDispatch-based cominterop is now the default mode as opposed to generating interop assemblies for interacting with COM components. This is a change that might break some existing scripts. One can switch back to the old behavior by setting the environment variable COREDLR_PreferComInteropAssembly. Read this blog for more details on this feature.

Apart from the Silverlight binaries and Chiron, the templates and tools to create a barebones app are included as well. This is in the Silverlight\Script folder.

Performance degrades that were reported in Beta 3 have been fixed.

Bugs fixed (45 on codeplex plus 5 reported internally):

nt.popen(...) breaks where ... consists of cmd.exe commands

globals().fromkeys(...) broken

globals().Values enumerator broken

Trivial: nt.tempnam("", None) broken

Trivial: Remove exceptions.OverflowWarning

New-style class dicts (dictproxy) cannot be used for C# methods with IDictionary parameters

Actually - although the new sample has been written, it wasn't included in the release. The samples have their own release cycle - but now that they have 'announced' this one (a mistake) they will push out a new release quickly...