Python for.Netが死から復活

.Netフレームワークの共通言語ランタイム(CLR)で実行されるPython実装であるIronPythonでの開発は、最近プロジェクトが新しい開発リーダーに変わったおかげで、注目を集めています。

元リードIronPython開発者であるJeffHardyは、今月初めにIronpython-usersメーリングリストで移行を確認しました。「多くの理由で、IronPythonにふさわしい注意を向ける時間が今のところありません。そのため、プロジェクトの管理を[プロジェクトの仲間] AlexEarlとBenediktEggersに任せています」とHardyは書いています。

.Net用のPython、およびその逆

C#で記述されたIronPythonは、ストックPythonプログラムを実行することだけを目的としたものではありません。Pythonプログラマーに、既存の.Netアプリケーションおよびオブジェクトへのブリッジを提供できます。何よりも、これらのオブジェクトは、ネイティブPythonオブジェクトと同じ構文とイディオムでインポートおよび処理できます。

IronPythonでの開発は、過去2年間で間違いなく遅くなっています。最後のメジャーリリースは、2014年末のPython 2.7.5用でした。Python3はIronPythonでサポートされていませんでした。これは、2020年以降Python 2がサポートされなくなり、Python3が確立された後継者であるための大きな欠点です。

開発者チャットサイトでの会議で、Gitter、Earl、Eggersなどは、プロジェクトが進むにつれて直面している最も緊急の問題をハッシュしました。CodePlexの未解決のIronPython問題をどうするか。実装するリリーススケジュールの種類。そして、IronPython3のためにどのようなロードマップを考案するか。

議論で浮かび上がったもう1つの問題は、C拡張機能を使用するPythonライブラリのサポートを実装する方法でした。IronPythonが可能な限り幅広いオーディエンスを持つ場合、これはオプションではありません。Numpyのような多くの主要なPythonライブラリは、速度を上げるためにC拡張機能を使用しており、理想的には、再コンパイルすることなく、IronPythonでそのまま動作するはずです。

幸いなことに、この分野ではすでにいくつかの作業が行われています。つまり、コンパイルされたCPython拡張機能をIronPythonでそのまま機能させるために考案されたプロジェクトであるIroncladです。悪いニュースは、プロジェクトが長い間あまり機能しておらず、最新のPythonで使用できるように大幅に修正する必要があることです。

ルビーとGILの

発生した別の問題は、同じチームによって処理される同様のプロジェクトをどのように処理するかでした。名前が示すように、Rubyの.Net実装であるIronRubyです。2つの言語は、動的言語ランタイムに関するMicrosoft内の同じ取り組みから生まれたため、共同開発されており、2010年にMicrosoftがコミュニティ主導の取り組みにスピンオフした後も、近接したままでした。

計画は、IronRubyを独自のプロジェクトにして、独自の開発者オーディエンスを引き付けることです。IronPython 2も、個別のプロジェクトとして引き続き開発されます。

将来のIronPython開発は、高速でマルチコアに適したPythonランタイムという長年の夢を実現する方法を提供することで実りあるものになる可能性があります。IronPythonにはグローバルインタープリターロック(GIL)がありません。これは、高性能への障壁であると非難されてきた多くのPython実装の機能です。

とはいえ、IronPythonにGILがないという事実は、自動的に高速化するわけではありません。一部のIronPythonベンチマークはCPythonよりも優れていますが、他のベンチマークは著しく劣っています。今のところ、Pythonの現在のブランチである2と3で、IronPythonを高速化するだけで、十分な使命を果たすことができます。