Thursday, November 27, 2008

IronPython 2.0 RC 2 and DLR 0.9 Released

IronPython 2.0 Release Candidate 2 has just been released. This fixes several bugs identified in RC1 (several of these reported by Resolver Systems as we port Resolver One to run on IronPython 2).
Barring the discovery of any major new bugs, the intention is for IronPython 2 final to be released within 2 weeks!

Bugs fixed in this release include:
  • 19350: Missing restrictions on index operation against user defined type
  • 11733: time.timezone has different semantic than in cpython
  • 19675: subclasses of float have trouble with __int__ and __str__
  • 19656: Module Name Lookup Broken
  • 19678: in operator calls __getitem__ on class that has __len__ and __iter__ defined
  • 19665: operator.isSequenceType(NewStyleClass) broken
  • 19130: One hour error in IPY implementation of time.mktime and time.gmtime
Along with this release, the Dynamic Language Runtime has a new home - and a separate release (version 0.9) has been made. The example DLR language 'ToyScript' is now bundled with the DLR rather than being included in IronPython releases.
In the announcement on the IronPython mailing list, Bill Chiles (DLR program manager) had this to say about the Dynamic Language Runtime:

The DLR project provides one-stop shopping for folks who want to:

  • implement a language on .NET using the DLR
  • add dynamic features to their existing language like C#’s ‘dynamic’
  • add scripting to their applications.
  • create .NET libraries with dynamic objects

This Codeplex project includes the DLR sources as well as sources for IronPython, IronRuby, and samples (such as ToyScript). This is a classic open source version 0.9 release with high quality code through much of the system. We’re shipping some of this in the .NET 4.0 release coming up. Some parts are still open to design changes as we solidify those parts for post .NET 4.0, and we’ll continue to add more docs and samples. We will have coordinated releases or sync points across IronPython and IronRuby sites for major releases so that if you’re not pulling from the DLR project, you can still see which sources or releases are consistent across our projects.
Jim Hugunin did a great talk at PDC 08 on DLR architecture, concepts, and coding with the .NET 4.0 functionality ( ). In his talk, he also outlines what’s in .NET 4.0:

  • fast dynamic dispatch with polymorphic inline caching
  • dynamic object interoperability across languages and libraries (including C# ‘dynamic’ consuming IronPython and IronRuby objects naturally, including any language whose objects participate in the DLR’s dynamic object protocol)
  • support for library authors to easily make their model objects consumable with nice looking and lightweight code in languages that support the DLR dynamic object protocol (for example, with C#’s ‘dynamic’, you can write xml.Customer.Name instead of xml.GetChild(“Customer”).GetChild(“Name”)
  • ability to mix binding logic from various languages and library objects in a single dynamic call site cache
  • Expression Trees v2 with support for control flow, assignments, etc.
  • COM IDispatch binding as DLR dynamic objects

The following highlights the support shipping only on Codeplex until a future .NET release:

  • common hosting model for languages built on or supporting the DLR hosting model
  • helpers such as a default .NET binder, complex numbers, tuples
  • more Expression Tree support, such as globals access in hosted scenarios and iterator/generator functions.
All the code is available for what the DLR Team is shipping in .NET 4.0. Furthermore, we’re releasing all the code for LINQ Expression Trees v1 since the DLR merged its ASTs with LINQ trees. Some of you have noticed this code has been on the IronPython site for a couple of months now. We will continue indefinitely shipping all of our code open source through .NET 4.0 shipping and future releases of .NET as we move more and more of the DLR into .NET (for example, the common hosting APIs and language implementer APIs). We have no plan in place at this time for source take back from the community.
It is worth noting that the sources and binaries in the .zip files are circa mid-October, and the daily source tree pushes have several small but pervasive cleanups to the API (name changes), perf improvements, and so on. We’re busy here solidifying final design changes for the DLR parts going into .NET 4.0. We wanted to have our release match IronPython 2.0, and they had to lock down sources before we did. The documents in the release speak to the latest sources. Some of the documents are our internal working specs, but in general we prefer you know where we’re planning to end up with the code. There are no significant cognitive changes in the APIs, so you’ll easily map from the docs to the actual code.
For a consistent IronPython release, go to and get their v2.0 RC2. We won’t normally have consistent release across all projects for RCs, betas, etc., and we don’t have one for IronRuby today. When we RTW IPy v2 and DLR v0.9 shortly, we’ll have consistent releases for all three projects.
If you want to read some documents without downloading sources or bits, go to :

  • dlr-overview.doc
  • sites-binders-dyn-objs-spec.doc
  • expr-tree-spec.doc
  • dlr-spec-hosting.doc
There is a discussion list at (click on the “get email notifications” link). All mail there goes to which has all the folks working on the DLR and our languages on it.

IronPython Program Manager is excited about the release, and describes it as Early Christmas from Iron Languages and DLR :

Tomorrow may be Thanksgiving, but the Microsoft DevDiv dynamic language teams are trying to make it feel like Christmas with three separate pre-holiday releases.

So there you go, new versions of IronPython and IronRuby plus a whole new DLR CodePlex project to boot. Enjoy.

He notes that along with the IronPython and DLR releases, there has also been a new release of IronRuby:

IronRuby 1.0 Alpha 2
There’s been zero blog traffic on this, just a notice on the IronRuby mailing list. As per said notice, “Notable features” include “the inclusion of iirb.bat, igem.bat, irails.bat, irake.bat”.

Seshadri (one of the DLR testers) promises regular binaries and weekly source drops in his blog entry on the DLR release.

No comments:

Post a Comment

Note: only a member of this blog may post a comment.