Python-to-C ++コンパイラはより高速な実行を約束します

言語の人気が高いほど、その実装は多様になります。Pythonは典型的な例であり、言語の実行を高速化するために作成されたデフォルトのインタープリターのほとんどが置き換えられています。最新で最も興味をそそるのはNuikaです。

Nuika(GitHubのオープンソース)はPythonをC ++コードにコンパイルします。このコードは、インプレースで実行するか、再配布用のスタンドアロンファイルとしてパッケージ化できます。既存のPythonインタープリターの他のいくつかの置き換えとは異なり、Python 2.6、2.7、3.2、および3.3のすべての言語構造との完全な互換性を主張します。

プロジェクトのリーダーによると、Nuitkaの最初のマイルストーンであるKay Hayen(言語と同等の機能)はすでに達成されています。HayenはEuroPython2012カンファレンスでNuitkaのディスカッションを発表し、その年の終わり頃に(GitHubのコミット履歴に基づいて)本格的に作業を開始しました。

Nuitkaを魔法のように機能させるには、現在のバージョンのPythonインタープリター(2.xまたは3.xブランチ)とC ++コンパイラーの両方が必要です。Microsoft Visual Studio、MinGW、およびClang / LLVMはすべて、32ビット版と64ビット版の両方で後者でサポートされています。ただし、クロスコンパイル(たとえば、LinuxからWindowsへ、またはその逆)はサポートされておらず、Windowsで64ビット実行可能ファイルをコンパイルするにはMicrosoftのコンパイラが必要です。

もう1つの欠点は、スタンドアロンの実行可能ファイルが作成されることです。これを行うために、Nuitkaは実行可能ファイルにCPythonの再配布可能ファイル(WindowsではDLLおよびその他のサポートファイルのコレクション)を含めます。その結果、スタンドアロンプ​​ログラムにはかなりのオーバーヘッドが伴います。Python2.7用の単純な「Hello、world」コマンドラインスクリプトは、2.6MBの32ビットWindows実行可能ファイルと7.4MBのサポートファイルを生成します。 (同じプログラムのGUIバージョンは、実行可能ファイルで10MB、合計20MBでした。)

それでも、Nuitkaがすでに達成できることは印象的であり、Hayenの将来の計画は野心的です。次のステップは、変数タイプの処理の改善や制御フローの最適化など、Nuitkaによって生成されたコードをより効率的にすることです。ロードマップのさらに先には、言語のctypes外部関数システムを介してPythonで使用されるCコードと直接Nuitkaインターフェースを使用するなど、さらに洗練された価値のある機能があります。