One of the most significant changes in this release is the removal of Microsoft.Scripting.Vestigial. Previously this DLL was a combination of both IronPython support code as well as portions of the DLR. With Alpha 2 Microsoft.Scripting.dll contains all portions of the DLR and IronPython.dll contains the IronPython implementation which builds upon the DLR. This should help consumers of the DLR to better understand the public surface area. Being early in the product cycle this surface area may still change significantly but there are now bright lines between what DLR code is and what IronPython code is.
IronPython also continues to use the underlying concepts of the DLR more and more. In the Alpha 1 release there were numerous locations where IronPython would use DynamicSites but fallback to runtime lookups because the site couldn’t perform optimally. In this release we’ve continued to flush out these corner cases and improve IronPython’s support for generating proper rules when using DynamicSites. We’ve also improved the shared infrastructure the DLR provides for creating rules and moved IronPython to this shared infrastructure.
Significant changes in the DLR include the removal of Microsoft.Scripting.Vestigial, continued refinement of the AST and dynamic site support, and replacement of the old IDynamicObject with the new IDynamicObject. IronPython has also been updated to use more of the DLR concepts.
The DLR also continues to be expanded and improved. The DLR AST has been improved with support for more static constructs such as simple exception handling constructors and better variable support. The DLR AST factory methods have also been moved to a static Ast class to enable easier construction of ASTs. There have also been some additional convenience methods added to various nodes to make construction even easier still. Finally the DLR also has been improved to support an arbitrary number of arguments inside a DynamicSite which helps to enable calling all functions in an optimized manner.
One of the most significant (although fairly small) improvements is the introduction of the IDynamicObject interface under its proper name. In the Alpha 1 release this interface was temporarily named IActionable because IronPython had previously shipped with an IDynamicObject interface. In this new release the old interface has been completely removed and the DLR now provides the correct IDynamicObject interface. This interface lives at the heart of the DLR so it’s noteworthy that it’s now found its final home.
Note: Due to dependencies upon APIs that are not present in Silverlight 1.1 Alpha (released at MIX) you won’t be able to re-build this release for use with Silverlight. As both products stabilize more we expect better compatibility between releases.