Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

IronPython

From Wikipedia, the free encyclopedia
Python programming language implementation
icon
This articlerelies excessively onreferences toprimary sources. Please improve this article by addingsecondary or tertiary sources.
Find sources: "IronPython" – news ·newspapers ·books ·scholar ·JSTOR
(January 2013) (Learn how and when to remove this message)
IronPython

Original authorsJim Hugunin,Microsoft
DevelopersDino Viehland,
.NET Foundation
Initial releaseSeptember 5, 2006; 19 years ago (2006-09-05)[1]
Stable release
3.4.2 / December 20, 2024; 11 months ago (2024-12-20)
Preview release
3.4.0-beta1 / April 30, 2022; 3 years ago (2022-04-30)
Repository
Written inC#
Operating systemWindows,Linux,macOS
Platform.NET Framework,.NET,Mono
TypePython programming language implementation
LicenseApache License 2.0
Websiteironpython.net Edit this on Wikidata

IronPython is an implementation of thePython programming language targeting the.NET andMono frameworks. The project is currently maintained by a group ofvolunteers atGitHub. It is free and open-source software, and can be implemented with Python Tools for Visual Studio, which is a free and open-source extension for Microsoft'sVisual Studio IDE.[2][3]

IronPython is written entirely inC#, although some of its code is automatically generated by acode generator written in Python.

IronPython is implemented on top of theDynamic Language Runtime (DLR), a library running on top of theCommon Language Infrastructure that provides dynamic typing and dynamic method dispatch, among other things, for dynamic languages.[4] The DLR is part of the .NET Framework 4.0 and is also a part of Mono since version 2.4 from 2009.[5] The DLR can also be used as a library on older CLI implementations.

Status and roadmap

[edit]

Jim Hugunin created the project and actively contributed to it up until Version 1.0 which was released on September 5, 2006.[6] IronPython 2.0 was released on December 10, 2008.[7] After version 1.0 it was maintained by a small team atMicrosoft until the 2.7 Beta 1 release. Microsoft abandoned IronPython (and its sister projectIronRuby) in late 2010, after which Hugunin left to work at Google.[8] The project is currently maintained by a group of volunteers atGitHub.

  • Release 2.0, released on December 10, 2008, and updated as 2.0.3 on October 23, 2009, targets CPython 2.5.[9] IronPython 2.0.3 is only compatible up to .NET Framework 3.5.
  • Release 2.6, released on December 11, 2009, and updated on April 12, 2010, targets CPython 2.6.[10] IronPython 2.6.1 versions is binary compatible only with .NET Framework 4.0. IronPython 2.6.1 must be compiled from sources to run on .NET Framework 3.5. IronPython 2.6.2, released on October 21, 2010, is binary compatible with both .NET Framework 4.0 and .NET Framework 3.5.
  • Release 2.7 was released on March 12, 2011 and it targets CPython 2.7.[11]
  • Release 2.7.1 was released on October 21, 2011 and it targets CPython 2.7.[12]
  • Release 2.7.2.1 was released on March 13, 2012. It enables support forZIP file format libraries,SQLite, and compiled executables.[13]
  • Release 2.7.4 was released on September 7, 2013.[14]
  • Release 2.7.5 was released on December 6, 2014 and mostly consists of bug fixes.[15]
  • Release 2.7.6 was released on August 21, 2016 and only consists of bug fixes.[16]
  • Release 2.7.7 was released on December 7, 2016 and only consists of bug fixes.[17]
  • Release 2.7.8 was released on February 16, 2018 and consists of bug fixes, reorganized code, and an updated test infrastructure (including significant testing onLinux underMono). It is also the first release to support.NET Core.[18]
  • Release 2.7.9 was released on October 9, 2018 and consists of bug fixes, reorganized code. It is intended to be the last release before IronPython 3.[19]
  • Release 2.7.10 was released on April 27, 2020 and adds .NET Core 3.1 support.[20]
  • Release 2.7.11 was released on November 17, 2020 and resolves issues when running on.NET 5.
  • Release 2.7.12 was released on January 21, 2022 and resolves issues with .NET 6 and removes support for .NET core 2.1[21]
  • Release 3.4.0 was released on December 12, 2022 and is the first release to support Python 3.x.[22]

Differences with CPython

[edit]
[icon]
This sectionneeds expansion. You can help byadding to it.(July 2012)

There are some differences between the Python reference implementation CPython and IronPython.[23] Some projects built on top of IronPython are known not to work under CPython.[24] Conversely, CPython applications that depend on extensions to the language that are implemented in C are not compatible with IronPython,[25] unless they are implemented in a .NET interop. For example,NumPy was wrapped by Microsoft in 2011, allowing code and libraries dependent on it to be run directly from .NET Framework.[26]

Silverlight

[edit]

IronPython is supported onSilverlight (which is deprecated by Microsoft and already has lost support in most web browsers[27]). It can be used as a scripting engine in the browser just like theJavaScript engine.[28] IronPython scripts are passed like simple client-side JavaScript scripts in<script>-tags. It is then also possible to modify embeddedXAML markup.

The technology behind this is called Gestalt.[citation needed]

// DLR initialization script.<scriptsrc="http://gestalt.ironpython.net/dlr-latest.js"type="text/javascript"></script>// Client-side script passed to IronPython and Silverlight.<scripttype="text/python">window.Alert("Hello from Python")</script>

The same works forIronRuby.

License

[edit]

Until version 0.6, IronPython was released under the terms ofCommon Public License.[29] Following recruitment of the project lead in August 2004, IronPython was made available as part of Microsoft'sShared Source initiative. This license is notOSI-approved but the authors claim it meets the open-source definition.[30] With the 2.0 alpha release, the license was changed to theMicrosoft Public License,[31] which the OSI has approved. The latest versions are released under the terms of theApache License 2.0.

Interface extensibility

[edit]

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.[32]

IronPython makes extensive use ofreflection. 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.

Examples

[edit]

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.

fromBookServiceimportBookDictionarybooksWrittenByBookerPrizeWinners=[book.TitleforbookinBookDictionary.GetAllBooks()if"Booker Prize"inbook.Author.MajorAwards]

In this case, assume that the .NET Framework implements a class,BookDictionary, in a module calledBookService, 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.

The following script uses the .NET Framework to create a simple Hello World message.

importclrclr.AddReference("System.Windows.Forms")fromSystem.Windows.FormsimportMessageBoxMessageBox.Show("Hello World")

Performance

[edit]

The performance characteristics of IronPython compared toCPython, the reference implementation of Python, depends on the exact benchmark used. IronPython performs worse than CPython on most benchmarks taken with thePyStone script but better on other benchmarks.[33]IronPython may perform better in Python programs that use threads or multiple cores, as it has aJIT compiler, and also because it doesn't have theGlobal Interpreter Lock.[34][35]

Overview and key features

[edit]
  1. Integration with .NET: IronPython allows you to use.NET libraries and frameworks directly in your Python code. This means you can leverage the extensive .NET ecosystem and access features that are specific to .NET environments.
  2. Dynamic Language Runtime (DLR): IronPython runs on the Dynamic Language Runtime, which is a set of services that support dynamic typing and dynamic method invocation in .NET languages.
  3. Interoperability: You can call .NET code from IronPython and vice versa. This makes it possible to integrate Python scripts with existing .NET applications or use .NET components within Python projects.
  4. Syntax and Semantics: IronPython aims to be as close as possible to the standard Python language (CPython), though there might be minor differences due to the underlying .NET platform.
  5. Performance: While IronPython provides good performance for many applications, it might not be as fast as CPython for some tasks, particularly those that rely heavily on Python's native libraries.
  6. Compatibility: IronPython is compatible with Python 2.x, but it does not support Python 3.x features. This means that some newer Python libraries or syntax may not be available.

See also

[edit]

References

[edit]
  1. ^"CodePlex Archive". Archived fromthe original on 2017-12-26. Retrieved2014-05-30.
  2. ^"IronPython.net". Retrieved2013-07-03.
  3. ^"Python Tools for Visual Studio- Home".Python Tools for Visual Studio. Archived fromthe original on 2018-01-26. Retrieved2013-07-03.
  4. ^"Dynamic Language Runtime Overview".Microsoft. Retrieved2014-04-01.
  5. ^"2009-07-02 Marek Safar · mono/Mono@340222f".GitHub.
  6. ^"Jim Hugunin's blog: IronPython 1.0 released today!". 2006-09-05. Retrieved2006-12-14.
  7. ^"Release dates for ironpython". 2008-12-10. Retrieved2009-01-25.
  8. ^Clarke, Gavin (2010-10-22)."Microsoft cuts loose Iron languages".The Register. Retrieved2012-04-05.
  9. ^"2.0.3". ironpython.codeplex.com. Archived fromthe original on 2017-12-26. Retrieved2010-10-16.
  10. ^"2.6". ironpython.codeplex.com. Archived fromthe original on 2018-01-13. Retrieved2010-10-16.
  11. ^"2.7". ironpython.codeplex.com. Archived fromthe original on 2018-01-02. Retrieved2011-03-12.
  12. ^"2.7.1". ironpython.codeplex.com. Archived fromthe original on 2017-12-26. Retrieved2011-12-30.
  13. ^"2.7.2.1". ironpython.codeplex.com. Archived fromthe original on 2017-12-26. Retrieved2012-03-24.
  14. ^"2.7.4". ironpython.codeplex.com. Archived fromthe original on 2018-01-16. Retrieved2014-12-07.
  15. ^"2.7.5". ironpython.codeplex.com. Archived fromthe original on 2018-01-26. Retrieved2014-12-07.
  16. ^"2.7.6". github.com. Retrieved2016-08-21.
  17. ^"2.7.7". github.com. Retrieved2018-01-05.
  18. ^"2.7.8". github.com. Retrieved2018-01-05.
  19. ^"2.7.9". github.com. Retrieved2018-10-09.
  20. ^"IronLanguages/ironpython2".GitHub. Retrieved2020-06-26.
  21. ^"Releases · IronLanguages/ironpython2".GitHub. Retrieved2022-08-08.
  22. ^"Releases · IronLanguages/ironpython3".GitHub. Retrieved2023-07-09.
  23. ^"Differences between IronPython 1.0 and CPython 2.4.3".Microsoft. 2007-12-18. Retrieved2008-02-09.
  24. ^Foord, Michael."New Project: Implementing .NET Libraries in Pure Python". Archived fromthe original on 2008-08-30. Retrieved2008-02-09.
  25. ^Eby, Phillip (15 October 2005)."Children of a Lesser Python". Retrieved2008-07-09.
  26. ^"NumPy and SciPy for .NET". Retrieved2019-04-05.
  27. ^"Silverlight 5 System Requirements".www.microsoft.com. Retrieved2019-11-16.
  28. ^"Write browser applications in Python".IronPython.net. Archived fromthe original on 2013-03-17.
  29. ^"Original IronPython homepage". 2004-07-28. Archived fromthe original on February 23, 2010. Retrieved2007-05-13.
  30. ^"Shared Source License for IronPython". 2006-04-28. Retrieved2007-05-13.
  31. ^"Microsoft permissive license". 2007-04-28. Retrieved2007-05-13.
  32. ^"Using .NET objects from IronPython in Resolver One". Archived fromthe original on 2009-01-14. Retrieved2008-11-18.
  33. ^"IronPython Performance Report". Archived fromthe original on January 19, 2013. Retrieved2009-10-05.
  34. ^"IronPython at python.org". python.org. Retrieved2011-04-04.IronPython has no GIL and multi-threaded code can use multi core processors.
  35. ^"Python's Hardest Problem, Revisited". Archived from the original on 2015-10-31. Retrieved2015-07-15.

External links

[edit]
Implementations
IDEs
Topics
Designer
Architecture
Components
Implementations
Microsoft
Other
Languages
Major
Other
Comparison
Overview
Software
Applications
Video games
Programming
languages
Frameworks,
development tools
Operating systems
Other
Licenses
Forges
Related
Microsoft development tools
Development
environments
Visual Studio
Others
Languages
APIs and
frameworks
Native
.NET
Device drivers
Database
SQL Server
SQL services
Other
Source control
Testing and
debugging
Delivery
Retrieved from "https://en.wikipedia.org/w/index.php?title=IronPython&oldid=1316384940"
Categories:
Hidden categories:

[8]ページ先頭

©2009-2025 Movatter.jp