PythonコンパイラCodonが公開されました

新興企業 Exaloop は、Python ランタイムに結びつかない純粋なマシンコードを出力として生成できる Python 言語用のコンパイラーを開発する Codon プロジェクトのコードを公開しました。 このコンパイラは、Python に似た言語 Seq の作者によって開発されており、その開発の継続として位置付けられています。 このプロジェクトは、実行可能ファイル用の独自のランタイムと、Python のライブラリ呼び出しを置き換える関数のライブラリも提供します。 コンパイラ、ランタイム、および標準ライブラリのソース コードは、C++ (LLVM からの開発を使用) および Python を使用して書かれており、BSL (ビジネス ソース ライセンス) に基づいて配布されます。

BSL ライセンスは、オープン コア モデルの代替として MySQL の共同創設者によって提案されました。 BSL の本質は、高度な機能のコードが最初は変更可能であることですが、追加の条件が満たされた場合に限り、しばらくの間は無料で使用できます。この条件を回避するには商用ライセンスの購入が必要です。 Codon プロジェクトの追加ライセンス条項では、2.0 年後 (3 年 1 月 2025 日) にコードを Apache XNUMX ライセンスに移行する必要があります。 この時点までは、非営利目的で使用する場合に限り、ライセンスによりコピー、配布、変更が許可されています。

出力された実行可能ファイルのパフォーマンスは、C 言語で書かれたプログラムに近いものとして表されます。 CPython を使用する場合と比較して、Codon を使用してコンパイルする場合のパフォーマンスの向上は、シングルスレッド実行で 10 ~ 100 倍と推定されます。 さらに、Python とは異なり、Codon はマルチスレッドを使用する機能を追加実装しているため、パフォーマンスがさらに向上します。 Codon を使用すると、個々の関数レベルでコンパイルして、コンパイルされた表現を既存の Python プロジェクトで使用することもできます。

Codon はモジュール式アーキテクチャを使用して構築されており、プラグインを使用して機能を拡張できます。プラグインを使用すると、新しいライブラリを追加したり、コンパイラで最適化を実装したり、追加の構文のサポートを提供したりすることができます。 たとえば、バイオインフォマティクスや金融数学で使用するために、いくつかのプラグインが並行して開発されています。 Boehm ガベージ コレクターはメモリの管理に使用されます。

コンパイラーはほとんどの Python 構文をサポートしますが、ネイティブ コードにコンパイルすると、CPython の透過的な代替として Codon を使用することを妨げる多くの制限が課せられます。 たとえば、Codon は整数に 64 ビット int 型を使用しますが、CPython は整数に無制限のサイズを使用します。 大規模なコードベースでは、コドンの互換性を実現するためにコードの変更が必要になる場合があります。 一般に、非互換性は、特定の Python モジュールの Codon が実装されていないこと、および言語の一部の動的機能が使用できないことが原因で発生します。 このような非互換性ごとに、コンパイラーは、問題を回避する方法に関する情報を含む詳細な診断メッセージを発行します。

PythonコンパイラCodonが公開されました


出所: オープンネット.ru

コメントを追加します