Friday, February 20, 2009

Ironclad 0.8.1 Released

Following hot on the heels of the 0.8 release, William has managed another update to Ironclad. Ironclad is an open source project by Resolver Systems which reimplements the Python C API to allow you to use Python C extensions from IronPython.

He posted the following announcement:
I'm fairly pleased to announce the release of Ironclad v0.8.1; it's not an enormous technical leap above v0.8, but it does now enables you to import and use SciPy and Matplotlib with IronPython on Win32 (with some restrictions; see project page). Downloads of the source and binaries, plus more details, are available at the Ironclad Google Code Project Page -- please do play with it, and let me know if you have any problems.
It's a fairly momentous release; the reason that William is only fairly pleased maybe because the release has been eclipsed by him becoming a father! Congratulations William. The list of C extensions that have now been tried with Ironclad has now been extended to:
  • numpy 1.2 (over 900 tests pass; memory-mapped files, Unicode data, and numpy.distutils don't work).
  • scipy 0.7 (over 800 tests pass; some parts are extremely slow, while others are pretty fast)
  • matplotlib 0.98 (ps backend can produce simple plots; pdf/svg backends should work as well, given a compatible zlib)
  • bz2 from Python 2.5 (well tested)
  • _hashlib, _elementtree, _socket, _ssl, winsound from Python 2.5 (import cleanly; not otherwise tested to any degree of confidence
Ironclad works with IronPython 2 and targets CPython 2.5 on 32-bit Windows; efforts to support other platforms are underway. If you're keen to see Ironclad work with Mono or on 64bit systems then contributions are welcomed!

Ironclad was included in the 1.4 Beta release of Resolver One (our IronPython powered spreadsheet) where it provides the capability of using numpy in the spreadsheet grid and in your spreadsheet user code. We have a 5 minute screencast showing how this works: NumPy in Resolver.

Although a lot of Ironclad is written in C# and uses both the IronPython API and the .NET FFI (Foreign Function Interface - on .NET this is P/Invoke and is what allows you to call into C), there is a core that could be reusable. This is mainly the dll bootstrap (the part that pretends to be the Python C API - which includes some assembly!). Once Ironclad is stable the intention is to factor this out so that other implementations of Python, like Jython and PyPy, only have to reimplement parts of Ironclad to also be able to use Python C extensions.


  1. Michael:
    A have a question, ¿can Ironclad help to implement Django with Ironpython?

  2. I doubt it - I don't think it is missing C extensions that is the problem with Django on IronPython.

    Definitely worth a try though (and report back how you get on).


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