Thursday, July 23, 2009

IronPython 2.6 Beta 2 Released (performance, ctypes, frames and more)

Hot on the heels of IronPython 2.0.2 is a new release - the second and hopefully final beta of IronPython 2.6.

The big new features in IronPython 2.6 are:
  • Python 2.6 compatibility
  • The __clrtype__ metaclass for data binding and attribute support
  • Implementation of the ctypes module
  • Support for Python stack frames and sys.settrace, which means the pdb debugger works
  • Better performance through adaptive compilation
  • Faster startup
In the announcement of the release Dave Fugate had this to say about the timetable for IronPython 2.6:
At this point we are essentially feature complete from a CPython 2.6 perspective, and look forward to making available IronPython 2.6 Release Candidate 1 within the next couple of months. As such, we’d very much like everyone to try out this release and report back any major problems you may encounter so we can fix them in time for the first release candidate. Any bugs that you find can be reported via Codeplex.
The release notes:
The primary focus of Beta 2 was bug fixing: a whopping 215 bugs were fixed in this release. The majority of these were fixes to standard CPython built-in modules with IronPython runtime fixes coming in at a close second. Some of the higher profile work items include:
  • The implementation of the sys module was improved so that you can now utilize CPython’s pdb module in basic scenarios to debug IronPython sessions provided you pass the –X:Frames or –X:FullFrames options to ipy.exe
  • 374 Implement _ctypes module
  • 20051 Re-raising exception causes loss of traceback
  • 18770 Support type inference on generic methods and improve function conversions - better LINQ support
  • 15399 'frame' object has no attribute 'f_back'
  • 17465 Implement rest of binascii module (package)
  • A bug was fixed in our build scripts that was leaving several working CPython standard modules out of our MSI installations. These included a few modules under the distutils package, two modules under encodings, code, codeop, and the io modules
A very visible new feature added to this release is that ipy.exe is now strictly a 32-bit only assembly. That is, it gets executed as a 32-bit CLR process on both x86 and x64 operating systems. ipy64.exe, despite what its name might imply, is a platform agnostic assembly matching the old behavior of ipy.exe in the sense that it gets executed as a 32-bit process on 32-bit OSes and 64-bit on 64-bit OSes. Why this change you ask? Quite simply put IronPython users with 64-bit OSes will see around a 33% improvement to IronPython startup time under ipy.exe!

Silverlight users: a new version of Silverlight, namely Silverlight 3.0, is required to build the “Silverlight Release” or “Silverlight Debug” configurations of IronPython.sln. Please update your Silverlight installation accordingly by visiting www.microsoft.com/silverlight if you intend to build IronPython from sources.

Thanks to everyone in the IronPython Community who reported bugs and provided valuable feedback. We really do appreciate your input which helps to make every release of IronPython better than the last.
In a rare blog entry Dino Veihland (core IronPython developer) comments on two releases in one week:
This was a good week for IronPython - we've released not one but two new versions!

The first release was IronPython 2.0.2 which just includes bug fixes for issues which have been particularly irritating to our users. This is a very minor release and doesn't include breaking changes. Probably the most significant fix is that we've fixed ngen on 64-bit platforms. Previously when you would install 2.0 and enable ngen it would only ngen the binaries for 32-bit assemblies. Now we'll ngen for 64-bit which should help users running on 64-bit see much faster startup times. I hope that this will make 2.0 much more usable until we get the really big improvements that 2.6 brings.

And speaking of 2.6 the other release this week was our 2nd and final beta. 2.6 is shaping up to be an exciting release. We've significantly improved the startup time of IronPython - this has been our number one requested change. We've implemented more standard modules and other missing functionality to be closer to CPython. This includes the new ctypes module, support for sys.settrace and pdb, as well other new functionality that 2.6 has introduced such as the underlying support for the io module. And finally we've added a bunch of new features to improve .NET interop as well - we've now got support for generic method type inference and added the core support that will enable using .NET attributes and in general working better w/ .NET when static types are expected. I'm pretty excited about this release and can't wait to get the final version out - so please try out this beta and let us know if you run into any issues.

No comments:

Post a Comment

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