IronPython 1.0 Brings Managed Code
Programming language developers are quite accustomed to using beta builds of their own work even in production environments; so for them, today's announcement from Microsoft that IronPython 1.0 is finally complete, may not be big news.
But to the broader world of system administrators and IT department staffers for whom rapid deployment and C# continue to be opposite concepts, the creation -- under Microsoft's stewardship -- of a dynamic language closely linked to the .NET Framework, and using Python constructs, is the opening of a new door for Windows.
Python rapidly gained popularity on how its tight, conservative command set could be so flexible as to deploy object-oriented functionality comparable to C++ and Microsoft's C#, but from the command line.
Its widespread use in Linux and UNIX environments almost single-handedly resurrected the dynamically interpreted language as an accepted tool for prototyping and rapid deployment. Although originally considered for quick-and-dirty use, Python became the language behind Zope, the leading open-source content management system.
A long-time Python proponent, Jim Hugunin was involved some years back with a successful project to make a Python interpreter (now called Jython, formerly JPython) run within a Java virtual machine.
After seeing Microsoft's initial permutation of the Common Language Runtime -- its competitor to the JVM, and the core component of the .NET Framework -- Hugunin wrote a response paper entitled, "Why the CLR is a Horrible Platform for Dynamic Languages." Before too long, Hugunin found himself working for Microsoft, with the opportunity to make corrections to the CLR first-hand, and also to transfer his Python knowledge to .NET.
The payoff is IronPython. While not one of the company's "Visual" languages and not available in an "Express" package like Visual C# or Visual Basic, IronPython's tight communication with .NET makes it accessible from Visual Studio, as Hugunin demonstrated for MSDN TV last November
IronPython is not the first Python for Windows, though it is the first to utilize .NET, and is therefore the first managed code implementation of Python for the Windows platform. As Microsoft acknowledges, IronPython is by no means 100% compatible with CPython, the currently accepted standard Python compiler, although the differences mainly concern how the underlying runtime interpreter handles data types. Similar differences were experienced with Jython.
One other huge difference between IronPython and its non-Microsoft brethren is how it quickly implements Windows foundations through .NET. As Hugunin demonstrated for many new converts in previous months, IronPython has direct access to the Windows Presentation Foundation ("Avalon"), through a link to its namespace. As a result, IronPython can create and manage graphic objects through Avalon dynamically, enabling developers to build or prototype entire consoles for applications in mere minutes.
Furthermore, using an Extensible Applications Markup Language (XAML) file -- an XML-based description of a graphical front-end -- a Python script can pop up a complete applications console, and assign managed code to respond to WPF-recognized events such as a button click or a drag-and-drop.
There's also the performance factor, which with version 1.0 has yet to be fully verified. But independent tests of earlier IronPython betas reported 80 percent faster performance than with CPython on Windows.
In the rapidly re-burgeoning world of dynamic languages, IronPython will find itself among some new and fast-growing company, even for the Microsoft realm. The Atlas project represents Microsoft's effort to embrace the ideals of Asynchronous JavaScript (AJAX), with "smart client" network applications like those deployed by Google, although utilizing the .NET Framework.
PowerShell (formerly Monad) represents Microsoft's home-grown effort to reinvent the administrator's scripting language, using entirely new constructs developed mainly by one of the company's most outspoken and dynamic personalities, Jeffrey Snover.
While Atlas targets network application developers and PowerShell targets sysadmins, IronPython will likely target old-school RAD developers eager to see their favorite, flexible, yet principled development platform in a managed code environment that takes full advantage of new safety and security features being integrated into Windows.
There will be some overlap, as new developers discover these three languages do many of the same things, albeit in different ways, and performance comparisons are inevitable. But after years of wrestling with the nearly impossible complexities of deploying Windows applications using constructs such as COM and MFC, developers may find IronPython to be the clincher that finally brings independent innovation back firmly into the Windows camp.