IronPython
Developer(s) | Jim Hugunin |
---|---|
Stable release | 2.6 (Final) / December 11, 2009 |
Written in | C# |
Platform | .NET Framework, Mono |
Type | Python Programming Language Interpreter |
License | Microsoft Public License |
Website | http://ironpython.codeplex.com/ |
IronPython is an implementation of the Python programming language targeting the .NET Framework and Mono, created by Jim Hugunin. Version 1.0 was released on September 5, 2006.[1] Version 2.0 was released on December 10, 2008. [2]
IronPython is written entirely in C#, although some of its code is automatically generated by a code generator written in Python.
Status and roadmap
Release 2.0, released on December 10, 2008, targets CPython 2.5. IronPython 2.0 is built on top of the Dynamic Language Runtime (DLR) which contains a dynamic type system and dynamic language hosting environment abstracted out of IronPython 1. Because the DLR runs on top of the CoreCLR that ships with Silverlight 2, IronPython can be used for client-side browser scripting with Silverlight.
Release 2.6, released on December 11, 2009, targets CPython 2.6. The first alpha was released on March 26, 2009. IronPython 2.6 Alpha 1 release notes.
There are some differences between the Python reference implementation (CPython) and IronPython.[3] Some projects built on top of IronPython are known not to work under CPython.[4] Conversely, CPython applications that depend on extensions to the language that are implemented in C (e.g. NumPy) are not compatible with IronPython,[5] although a commercially-supported open source project to address this is underway.[6]
License
IronPython is released under the Microsoft Public License,[7] which the Open Source Initiative has confirmed complies with their definition of open source. Until version 0.6 IronPython was released under the Common Public License.[8] Following recruitment of the project lead in August 2004, IronPython was made available as part of Microsoft's Shared Source initiative. This license is not OSI approved but the authors claim it meets the Open Source Definition.[9] The license was changed to the Microsoft Public License with the 2.0 alpha release.
Interface extensibility
One of IronPython's key advantages is in its function as an extensibility layer to application frameworks written in a .NET language. It is relatively simple to integrate an IronPython interpreter into an existing .NET application framework. Once in place, downstream developers can use scripts written in IronPython that interact with .NET objects in the framework, thereby extending the functionality in the framework's interface, without having to change any of the framework's code base.[10]
IronPython makes extensive use of reflection. When passed in a reference to a .NET object, it will automatically import the types and methods available to that object. This results in a highly intuitive experience when working with .NET objects from within an IronPython script.
Example
The following IronPython script manipulates .NET Framework objects. This script can be supplied by a third-party client-side application developer and passed into the server-side framework through an interface. Note that neither the interface, nor the server-side code is modified to support the analytics required by the client application.
from BookService import BookDictionary
booksWrittenByBookerPrizeWinners =
[book.Title for book in BookDictionary.GetAllBooks()
if "Booker Prize" in book.Author.MajorAwards]
In this case, assume that the .NET Framework implements a class, BookDictionary, in a module called BookService, and publishes an interface into which IronPython scripts can be sent and executed.
This script, when sent to that interface, will iterate over the entire list of books maintained by the framework, and pick out those written by Booker Prize-winning authors.
What's interesting is that the responsibility for writing the actual analytics reside with the client-side developer. The demands on the server-side developer are minimal, essentially just providing access to the data maintained by the server. This design pattern greatly simplifies the deployment and maintenance of complex application frameworks.
Performance
The performance characteristics of IronPython compared to CPython, the reference implementation of Python, depends on the exact benchmark used. IronPython performs better than CPython on the PyStone benchmark but worse on other benchmarks.[11]
See also
- Boo, a language for the .NET Framework and Mono with Python-inspired syntax and features borrowed from C# and Ruby.
- IronLisp
- IronRuby
- IronScheme
- Jython - an implementation of Python for the Java Virtual Machine.
- Unladen Swallow - An optimization branch of CPython supported by Google and intended to be fully compatible and significantly faster.
References
- ↑ "Jim Hugunin's blog: IronPython 1.0 released today!". 2006-09-05. http://blogs.msdn.com/hugunin/archive/2006/09/05/741605.aspx. Retrieved 2006-12-14.
- ↑ "Release dates for ironpython". 2008-12-10. http://www.codeplex.com/IronPython/Release/ProjectReleases.aspx?ReleaseId=8365. Retrieved 2009-01-25.
- ↑ "Differences between IronPython 1.0 and CPython 2.4.3". Microsoft. 2007-12-18. http://www.codeplex.com/IronPython/Wiki/View.aspx?title=Differences&referringTitle=Home. Retrieved 2008-02-09.
- ↑ Foord, Michael. "New Project: Implementing .NET Libraries in Pure Python". http://lists.ironpython.com/pipermail/users-ironpython.com/2008-January/006297.html. Retrieved 2008-02-09.
- ↑ Eby, Phillip. "Children of a Lesser Python". http://dirtsimple.org/2005/10/children-of-lesser-python.html. Retrieved 2008-07-09.
- ↑ "Ironclad". http://www.resolversystems.com/documentation/index.php/Ironclad. Retrieved 2008-07-09.
- ↑ "Microsoft permissive license". April 28, 2007. http://www.codeplex.com/IronPython/Project/License.aspx?LicenseHistoryId=2866. Retrieved 2007-05-13.
- ↑ "Original IronPython homepage". July 28, 2004. http://www.ironpython.com/old.html. Retrieved 2007-05-13.
- ↑ "Shared Source License for IronPython". April 28, 2006. http://www.codeplex.com/IronPython/Project/License.aspx?LicenseHistoryId=129. Retrieved 2007-05-13.
- ↑ "Using .NET objects from IronPython in Resolver One". http://www.resolversystems.com/documentation/index.php/Dot_Net_Objects_in_the_Grid. Retrieved 2008-11-18.
- ↑ "IronPython Performance Report". http://ironpython.codeplex.com/Wiki/View.aspx?title=IP26RC1VsCPy26Perf&referringTitle=Home. Retrieved 2009-10-05.
External links
- CodePlex IronPython Workspace - IronPython Homepage
- IronPython in Action - first English book on IronPython with foreword by Jim Hugunin
Template:Python (programming language)
|
ar:آيرن بايثون cs:IronPython de:IronPython es:IronPython fr:IronPython ko:IronPython nl:IronPython ja:IronPython pl:IronPython pt:IronPython ru:IronPython fi:IronPython zh:IronPython
If you like SEOmastering Site, you can support it by - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 and more...