| 原作者 | ジム・ヒューガニン、マイクロソフト |
|---|---|
| 開発者 | Dino Viehland、 .NET Foundation |
| 初回リリース | 2006年9月5日[1] |
| 安定リリース | 3.4.1 / 2023年7月12日 |
| プレビューリリース | 3.4.0-beta1 / 2022年4月30日 |
| リポジトリ |
|
| 書かれた | C# |
| オペレーティング·システム | Windows、Linux、macOS |
| プラットフォーム | .NET フレームワーク、.NET、Mono |
| タイプ | Pythonプログラミング言語の実装 |
| ライセンス | Apache ライセンス 2.0 |
| Webサイト | アイアンパイソン |
IronPythonは、.NETおよびMonoフレームワークを対象としたPythonプログラミング言語の実装です。このプロジェクトは現在、 GitHubのボランティアグループによって管理されています。これは無料のオープンソースソフトウェアであり、MicrosoftのVisual Studio IDE用の無料のオープンソース拡張機能であるPython Tools for Visual Studioを使用して実装できます。[2] [3]
IronPython は完全にC#で書かれていますが、そのコードの一部は Python で書かれたコード ジェネレーターによって自動的に生成されます。
IronPythonは、動的言語ランタイム(DLR)上に実装されています。DLRは、共通言語インフラストラクチャ上で実行されるライブラリで、動的言語に動的な型付けや動的メソッドディスパッチなどを提供します。[4] DLRは.NET Framework 4.0の一部であり、2009年のバージョン2.4以降、Monoの一部でもあります。[5] DLRは、古いCLI実装のライブラリとしても使用できます。
現状とロードマップ
Jim Hugunin 氏がこのプロジェクトを作成し、2006年9月5日にリリースされたバージョン 1.0 まで積極的に貢献しました。 [6] IronPython 2.0 は、2008年12月10日にリリースされました。[7]バージョン 1.0 の後は、2.7 Beta 1 がリリースされるまでMicrosoftの小さなチームによって保守されていました。Microsoft は 2010 年後半に IronPython (および姉妹プロジェクトIronRuby ) を放棄し、その後 Hugunin 氏は Google で働くために去りました。[8]現在、このプロジェクトはGitHubのボランティアのグループによって保守されています。
- 2008年12月10日にリリースされ、2009年10月23日に2.0.3として更新されたリリース2.0は、CPython 2.5を対象としています。[9] IronPython 2.0.3は、.NET Framework 3.5までしか互換性がありません。
- 2009年12月11日にリリースされ、2010年4月12日に更新されたリリース2.6は、CPython 2.6を対象としています。[10] IronPython 2.6.1バージョンは、.NET Framework 4.0とのみバイナリ互換性があります。IronPython 2.6.1を.NET Framework 3.5で実行するには、ソースからコンパイルする必要があります。2010年10月21日にリリースされたIronPython 2.6.2は、.NET Framework 4.0と.NET Framework 3.5の両方とバイナリ互換性があります。
- リリース2.7は2011年3月12日にリリースされ、CPython 2.7を対象としています。[11]
- リリース2.7.1は2011年10月21日にリリースされ、CPython 2.7を対象としています。[12]
- リリース2.7.2.1は2012年3月13日にリリースされました。ZIPファイル形式のライブラリ、SQLite、コンパイルされた実行可能ファイルのサポートが有効になりました。 [13]
- リリース2.7.4は2013年9月7日にリリースされました。[14]
- リリース2.7.5は2014年12月6日にリリースされ、主にバグ修正で構成されています。[15]
- リリース2.7.6は2016年8月21日にリリースされ、バグ修正のみで構成されています。[16]
- リリース2.7.7は2016年12月7日にリリースされ、バグ修正のみで構成されています。[17]
- リリース2.7.8は2018年2月16日にリリースされ、バグ修正、コードの再編成、テストインフラストラクチャの更新(Mono上のLinuxでの重要なテストを含む)で構成されています。また、 .NET Coreをサポートする最初のリリースでもあります。[18]
- リリース2.7.9は2018年10月9日にリリースされ、バグ修正、コードの再編成で構成されています。これはIronPython 3の前の最後のリリースとなる予定です。[19]
- リリース2.7.10は2020年4月27日にリリースされ、.NET Core 3.1のサポートが追加されました。[20]
- リリース 2.7.11 は 2020 年 11 月 17 日にリリースされ、.NET 5で実行する場合の問題が解決されています。
- リリース2.7.12は2022年1月21日にリリースされ、.NET 6の問題が解決され、.NET core 2.1のサポートが削除されました[21]
- リリース3.4.0は2022年12月12日にリリースされ、Python 3.xをサポートする最初のリリースです。[22]
CPythonとの違い
Pythonのリファレンス実装であるCPythonとIronPythonにはいくつかの違いがあります。[23] IronPython上に構築されたプロジェクトの中には、CPythonでは動作しないことが知られています。[24]逆に、Cで実装された言語の拡張機能に依存するCPythonアプリケーションは、.NET相互運用性で実装されていない限り、IronPythonと互換性がありません。[ 25 ]たとえば、NumPyは2011年にMicrosoftによってラップされ、それに依存するコードとライブラリを.NET Frameworkから直接実行できるようになりました。[26]
シルバーライト
IronPythonはSilverlightでサポートされています(SilverlightはMicrosoftによって非推奨になっており、ほとんどのWebブラウザではすでにサポートされていません[27] )。 JavaScriptエンジンと同様に、ブラウザでスクリプトエンジンとして使用できます。[28] IronPythonスクリプトは、-タグ内の単純なクライアント側JavaScriptスクリプトのように渡されます。埋め込まれたXAML<script>マークアップを変更することもできます。
この背後にある技術はゲシュタルトと呼ばれています。[要出典]
// DLR 初期化スクリプト。
< script src = "http://gestalt.ironpython.net/dlr-latest.js" type = "text/javascript" ></ script >
// IronPython と Silverlight に渡されるクライアント側スクリプト。
< script type = "text/python" > window.Alert
( " Hello from Python" ) < / script >
IronRubyでも同じことが言えます。
ライセンス
バージョン 0.6 までは、IronPython はCommon Public Licenseの条件でリリースされていました。[29] 2004 年 8 月にプロジェクト リーダーが採用された後、IronPython は Microsoft のShared Source Initiative の一部として利用可能になりました。このライセンスはOSI承認ではありませんが、作者はオープン ソースの定義を満たしていると主張しています。[30] 2.0 アルファ リリースでは、ライセンスがMicrosoft Public Licenseに変更され、[31] OSI が承認しました。最新バージョンはApache License 2.0の条件でリリースされています。
インターフェースの拡張性
IronPython の主な利点の 1 つは、.NET 言語で記述されたアプリケーション フレームワークの拡張レイヤーとして機能することです。IronPython インタープリタを既存の .NET アプリケーション フレームワークに統合するのは比較的簡単です。いったん統合すると、下流の開発者はフレームワーク内の .NET オブジェクトと対話する IronPython で記述されたスクリプトを使用できるようになります。これにより、フレームワークのコード ベースを変更することなく、フレームワークのインターフェイスの機能を拡張できます。[32]
IronPython はリフレクションを多用します。.NET オブジェクトへの参照を渡すと、そのオブジェクトで使用可能な型とメソッドが自動的にインポートされます。これにより、IronPython スクリプト内から .NET オブジェクトを操作するときに、非常に直感的なエクスペリエンスが得られます。
例
次の IronPython スクリプトは、.NET Framework オブジェクトを操作します。このスクリプトは、サードパーティのクライアント側アプリケーション開発者によって提供され、インターフェイスを介してサーバー側フレームワークに渡されます。インターフェイスもサーバー側コードも、クライアント アプリケーションに必要な分析をサポートするために変更されていないことに注意してください。
BookService からBookDictionaryをインポートします
booksWrittenByBookerPrizeWinners = [ book . Title ( BookDictionary内の本のタイトル) 、GetAllBooks () 、 book . Author . MajorAwardsに「Booker Prize」がある場合]
この場合、.NET Framework がBookServiceというモジュールにBookDictionaryクラスを実装し、IronPython スクリプトを送信して実行できるインターフェイスを公開していると仮定します。
このスクリプトは、そのインターフェースに送信されると、フレームワークによって管理されている書籍のリスト全体を反復処理し、ブッカー賞を受賞した著者によって書かれた書籍を選択します。
興味深いのは、実際の分析を作成する責任がクライアント側の開発者にあることです。サーバー側の開発者に対する要求は最小限で、基本的にはサーバーによって維持されるデータへのアクセスを提供するだけです。この設計パターンにより、複雑なアプリケーション フレームワークの展開と保守が大幅に簡素化されます。
次のスクリプトは、.NET Framework を使用して単純な Hello World メッセージを作成します。
clr
をインポートしますclr . AddReference ( "System.Windows.Forms" )
System.Windows.Forms からMessageBoxをインポートし 、MessageBoxを表示します( "Hello World" )
パフォーマンス
Pythonのリファレンス実装であるCPythonと比較したIronPythonのパフォーマンス特性は、使用するベンチマークによって異なります。PyStoneスクリプトで取得したほとんどのベンチマークではIronPythonのパフォーマンスはCPythonよりも劣りますが、他のベンチマークでは優れています。[33] IronPythonはJITコンパイラを持ち、 Global Interpreter Lockも持っていないため、 スレッドや複数のコアを使用するPythonプログラムではより優れたパフォーマンスを発揮する可能性があります。[34] [35]
概要と主な特徴
- .NET との統合: IronPython を使用すると、.NET ライブラリとフレームワークを Python コードで直接使用できます。つまり、広範な .NET エコシステムを活用し、.NET 環境に固有の機能にアクセスできます。
- 動的言語ランタイム (DLR) : IronPython は、.NET 言語での動的な型付けと動的なメソッド呼び出しをサポートする一連のサービスである動的言語ランタイム上で実行されます。
- 相互運用性: IronPython から .NET コードを呼び出すことも、その逆も可能です。これにより、Python スクリプトを既存の .NET アプリケーションに統合したり、Python プロジェクト内で .NET コンポーネントを使用したりすることが可能になります。
- 構文とセマンティクス: IronPython は、基盤となる .NET プラットフォームにより若干の違いがあるかもしれませんが、標準の Python 言語 (CPython) に可能な限り近づくことを目指しています。
- パフォーマンス: IronPython は多くのアプリケーションで優れたパフォーマンスを提供しますが、特に Python のネイティブ ライブラリに大きく依存するタスクでは、CPython ほど高速ではない可能性があります。
- 互換性: IronPython は Python 2.x と互換性がありますが、Python 3.x の機能はサポートしていません。つまり、一部の新しい Python ライブラリや構文は利用できない可能性があります。
参照
- Boo – Python にインスパイアされた構文とC#およびRubyから借用した機能を備えた.NET Frameworkおよび Mono 用の言語
- コブラ
- アイアンスキーム
- Jython – Java仮想マシン用のPythonの実装
- シトン
- PyPy – Pythonプログラミング言語用のセルフホスティングインタープリタ
- タオフレームワーク
- Unladen Swallow – LLVMベースのジャストインタイムコンパイラを使用して優れたパフォーマンスを提供することを目的とした CPython の (現在は廃止された) ブランチ
参考文献
- ^ 「CodePlex アーカイブ」。2017 年 12 月 26 日時点のオリジナルよりアーカイブ。2014 年 5 月 30 日閲覧。
- ^ 「IronPython.net」。2013年7月3日閲覧。
- ^ 「Python Tools for Visual Studio - Home」。Python Tools for Visual Studio。2018年1月26日時点のオリジナルよりアーカイブ。2013年7月3日閲覧。
- ^ 「Dynamic Language Runtime の概要」。Microsoft。2014年 4 月 1 日閲覧。
- ^ “2009-07-02 Marek Safar・mono/Mono@340222f”. GitHub。
- ^ 「Jim Hugunin のブログ: IronPython 1.0 が本日リリースされました!」 2006 年 9 月 5 日. 2006 年 12 月 14 日閲覧。
- ^ 「IronPython のリリース日」 2008 年 12 月 10 日. 2009 年 1 月 25 日閲覧。
- ^ Clarke, Gavin (2010-10-22). 「Microsoft が Iron 言語を廃止」The Register . 2012-04-05閲覧。
- ^ “2.0.3”. ironpython.codeplex.com. 2017年12月26日時点のオリジナルよりアーカイブ。2010年10月16日閲覧。
- ^ “2.6”. ironpython.codeplex.com. 2018年1月13日時点のオリジナルよりアーカイブ。2010年10月16日閲覧。
- ^ “2.7”. ironpython.codeplex.com. 2018年1月2日時点のオリジナルよりアーカイブ。2011年3月12日閲覧。
- ^ “2.7.1”. ironpython.codeplex.com. 2017年12月26日時点のオリジナルよりアーカイブ。2011年12月30日閲覧。
- ^ "2.7.2.1". ironpython.codeplex.com. 2017年12月26日時点のオリジナルよりアーカイブ。2012年3月24日閲覧。
- ^ “2.7.4”. ironpython.codeplex.com. 2018年1月16日時点のオリジナルよりアーカイブ。2014年12月7日閲覧。
- ^ “2.7.5”. ironpython.codeplex.com. 2018年1月26日時点のオリジナルよりアーカイブ。2014年12月7日閲覧。
- ^ “2.7.6”. github.com . 2016年8月21日閲覧。
- ^ “2.7.7”. github.com . 2018年1月5日閲覧。
- ^ “2.7.8”. github.com . 2018年1月5日閲覧。
- ^ “2.7.9”. github.com . 2018年10月9日閲覧。
- ^ “IronLanguages/ironpython2”. GitHub . 2020年6月26日閲覧。
- ^ 「リリース · IronLanguages/ironpython2」。GitHub 。2022年8月8日閲覧。
- ^ 「リリース · IronLanguages/ironpython3」。GitHub 。2023年7月9日閲覧。
- ^ 「IronPython 1.0 と CPython 2.4.3 の違い」。Microsoft 2007-12-18 2008-02-09閲覧。
- ^ Foord, Michael. 「新しいプロジェクト: Pure Python での .NET ライブラリの実装」。2008 年 8 月 30 日時点のオリジナルよりアーカイブ。2008 年 2 月 9 日閲覧。
- ^ Eby, Phillip (2005年10月15日). 「Children of a Lesser Python」. 2008年7月9日閲覧。
- ^ 「NumPy と SciPy for .NET」。2019 年 4 月 5 日閲覧。
- ^ 「Silverlight 5 システム要件」www.microsoft.com 。 2019 年 11 月 16 日閲覧。
- ^ 「Python でブラウザ アプリケーションを作成する」。IronPython.net。2013年 3 月17日時点のオリジナルよりアーカイブ。
- ^ 「Original IronPython ホームページ」 2004-07-28. 2010年2月23日時点のオリジナルよりアーカイブ。 2007年5月13日閲覧。
- ^ 「IronPython の共有ソースライセンス」 2006 年 4 月 28 日. 2007 年 5 月 13 日閲覧。
- ^ 「Microsoft permissive license」 2007-04-28 . 2007-05-13閲覧。
- ^ 「Resolver One で IronPython の .NET オブジェクトを使用する」。2009 年 1 月 14 日にオリジナルからアーカイブ。2008年 11 月 18 日に取得。
- ^ 「IronPython パフォーマンス レポート」。2013 年 1 月 19 日時点のオリジナルよりアーカイブ。2009 年 10 月 5 日閲覧。
- ^ "IronPython at python.org". python.org . 2011-04-04取得。IronPython
には GIL がなく、マルチスレッド コードではマルチコア プロセッサを使用できます。
- ^ 「Python の最も難しい問題、再考」。2015 年 10 月 31 日時点のオリジナルよりアーカイブ。2015 年 7 月 15 日閲覧。
外部リンク
- 公式サイト
