Ironclad

Ironclad is an Open Source project started by Resolver Systems. Its aim is to make CPython C Extensions usable from IronPython.

The Challenge

IronPython is a great addition to the stable of Python interpreters:

  • It supports all of the Python syntax.
  • It interoperates cleanly with the Microsoft .NET environment.
  • It works with most of the Python standard libraries.

The challenge is set by the "most" in that last point.

IronPython handles any Python library that is written in pure Python. Unfortunately, some of the existing libraries—normally for performance reasons—have portions written in C. It is these libraries do not work with IronPython.

Most IronPython users don't care about this drawback—there's so much you can do with the pure Python parts of the standard APIs, and those that don't work often have perfectly good .NET equivalents.

However, it's a pain to have to port existing code from Python libraries to .NET ones. Worse, some of the best libraries, NumPy being a shining example, have no good, easily-available .NET alternatives.

The Solution

Ironclad enables IronPython users to use CPython C Extensions. It achieves this by acting as the glue between the IronPython interpreter and these extensions.

Ironclad is being developed by Resolver Systems, though anyone is welcome to join in. It's available under the MIT License, so you can use it for free with any IronPython project, and not just with ours.

Progress

Because NumPy is the most popular C extension, most of the work on Ironclad has been devoted to making it work. The current release, 0.8.1, supports most of it—the only exceptions being memory-mapped files (currently under development), Unicode data, and the numpy.distutils package.

Resolver One currently has alpha-level support for NumPy built-in: see here for details.

How to get it and how to join in

There are two useful resources:

  • The project page, where all of the source code is kept.
  • The mailing list, which is a low-volume forum for discussion of the project and its progress. For anti-spam reasons you need to state why you're interested in the project when you sign up to the list, but don't fret - that's just to prove you're human, or at least sentient!

If you've any questions about the project, please get in touch. The public mailing list is best, but if you want to post questions in a more private forum, feel free to contact us directly on support@resolversystems.com.

Comments