Cython に関係のあるソフトウェア

Pyrex [Pyrex] は、Cython の基となったコンパイラプロジェクトです。 Cython の多くの機能と、主な設計上の決定は、 Greg Ewing がこのプロジェ クトで開発したものです。今では、 Cython は機能面で Pyrex を凌駕してお り、 Python のコードやセマンティクスの面できわめて高い互換性を実現して います。また、より優れた最適化機能や、 NumPy のような科学技術計算向け の拡張モジュールとの統合を果たしています。

ctypes [ctypes] は、Python 用の外部機能インタフェース (foreign function interface, FFI) です。 ctypes は C 互換のデータ型を提供してい て、DLL や共有ライブラリ内の関数を呼び出せるようになっています。そのた め、ライブラリを pure Python コードでラップするのに使えます。ctypes は、 Cython と比べて、標準ライブラリである点や、特に依存関係のあるファイル もなく Python コードから直接使えるという点で優れています。一方、 ctypes の弱点はパフォーマンスです。ctypes は Python の関数呼び出しのオー バヘッドの影響から逃れられず、操作を全て Python コードから行わねばなり ません。 Cython はコンパイル型言語なので、機能の大半や、時間のかかるルー プ処理を高速な C のコードに移行して、こうしたオーバヘッドのほとんどを 回避できます。

SWIG [SWIG] はラッパコードジェネレータです。 SWIG を使うと、C や C++ のヘッダファイルに定義された膨大な API 定義を簡単に解析し、様々なプロ グラミング言語むけに使いやすいラッパコードを生成します。 ただし、 SWIG はそれ自体がプログラミング言語ではありません。薄いラッ パは簡単に作れますが、機能的なラッパを作る必要にせまられると、SWIG を 使った実装は難しくなっていきます。一方、 Cython は Python に特化して、 非常によく作りこまれたラッパコードを簡単に作成でき、ラップのレベルは 必要に応じて好きなだけ薄くも厚くもできます。また、サードパーティのコー ドの中には、 C のヘッダファイルを解析して、 Cython 用の定義とモジュー ルのスケルトンを生成するものがあります。

ShedSkin [ShedSkin] は実験的な Python-to-C++ コンパイラです。 ShedSkin はとても協力なインタフェースエンジンを使って、(制約付きで書か れた) Python のソースコードから C++ のプログラムを生成します。 ShedSkin の短所は、ネイティブでサポートされていない操作を行いたいとき に Python/C API を呼び出す機能がなく、 Python の標準モジュールをわずか しかサポートしていないことです。

[ctypes]http://docs.python.org/library/ctypes.html.
[Pyrex]G. Ewing, Pyrex: C-Extensions for Python, http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/
[ShedSkin]M. Dufour, J. Coughlan, ShedSkin, http://code.google.com/p/shedskin/
[SWIG]David M. Beazley et al., SWIG: An Easy to Use Tool for Integrating Scripting Languages with C and C++, http://www.swig.org.

Previous topic

さらに詳しく知りたい人のために

Next topic

付録: Windows への MinGW のインストール手順

This Page