After having looked at each of these two projects, it seems that both are VERY similar. Both run on top of the CLI, both have python style syntax, both use .NET instead of t
The main difference, in my opinion, is that IronPython is an implementation of a mature language - while Boo is younger and less known.
Like Winston said, Boo is very extensible due to its open compiler architecture, take a look at these examples:
The main difference as I see it is that Boo is statically typed, meaning the type of a variable is inferred on its first assignment and is fixed from there - while IronPython has the "real" dynamic behaviour of normal Python code.
IronPython is officially maintained by Microsoft now and targets the new Dynamic Language Runtime in version 2.0. I suspect because of it's statically typed nature Boo might be faster. I don't have much "real" experience with that though ...
IronPython also reimplements lots of the python standard library so you can run lots of python software without change on IronPython (e.g. Django).
I agree with VolkA here. Being able to run Django is big. It's just such an amazing framework, that Boo will have a hard time redoing it. Today it's more a question of the frameworks that a language provides, than it is the construct that it provides. And Boo doesn't provide much improvements over Python in the constructs it support.
I have written applications in both Boo and IronPython. For me IronPython has been the more robust choice and much of what I've written in CPython ports without changes. All recent projects have been pure IronPython if targeted for .Net Framework.
Since Jim "defected" to Microsoft, IronPython has been elevated to a top tier language. There's even Visual Studio for it.
I haven't used IronPython yet, but here's what I know about Boo...
I've used Boo for things like: