組み込み方面向け?の Micro Python という実装があるらしい。 http://t.co/6cCc1QvIf6 一体Pythonにはいくつ処理系があるのか? #python
というわけで、知ってるだけリストアップしてみました。
言語処理系(インタープリタ)
CPython
- オリジナルのPython処理系です。単にPythonと言ったらCPythonのことです。
- C言語で実装されています。
- 1991年に登場
- 現バージョンは2.7/3.4
Jython(旧JPython)
- Javaで実装されたPython処理系です。
- JavaのクラスをPythonで使えます。
- 1997年に登場
- 開発は止まっているようです。
- 最新バージョンは2.7
Stackless Python
- CPythonを拡張し、並行プログラミング機能を追加した処理系です。
- 並行プログラミングは、ErlangやGolangでサポートされているプログラミングスタイルです。
- 基本的にはCPythonと互換性があります。
- 2000年に登場
- 最新バージョンは2.7/3.3
IronPython
- .NET Frameworkで動作するC#で実装された処理系です。
- .NETのクラスをPythonで使えます。
- 2004年に登場
- 最新バージョンは2.7
Unladen Swallow
- CPythonを、LLVMを使って高速化しようとした処理系です。
- 名前の元ネタはモンティ・パイソン
- 2009年に登場
- 現在は開発されていないようです。Unladen Swallow 回顧録 - YAMAGUCHI::weblog
- バージョンは2.6
PyPy
- LLVMを使って再実装した処理系です。
- 名前はPythonのサブセット(RPython)で書かれていることから来ています。
- したがってCPythonの上でPyPyを動かすこともできます。
- 実際にはRPythonをバイナリにコンパイルして使います。
- Javaや.NETのバイトコードにコンパイルすることもできます。
- 強力な処理系です。
- JIT機能を持っておりCPythonより6倍ぐらい速いようです
- Stackless Python同様に、並行プログラミング機能を持っています。
- スクリプトを隔離環境で実行するサンドボックス機能を持っています。
- CPython用のC拡張ライブラリもある程度使えるようです。
- 男子の興味を引きがちなネーミングです。
- 2008年に登場
- 最新バージョンは2.7/3.2
Pyston
- LLVMとJIT技術を使って高速化した処理系です。
- まだ開発中で、リリースはされていません。
- 現在はCPython以上PyPy未満程度のパフォーマンスです。
- 2014年に登場
- ターゲットとしているバージョンは2.7
Micro Python
- マイクロコントローラ用(組込み用)の処理系です。
- ANSI Cで実装されています。
- まだ開発中で、Kickstarterで資金を募りながら開発しているようです。
- 2014年に登場
- ターゲットとしているバージョンは3.x系
処理系以外
Cython/Pyrex
- CythonはPythonのC拡張を、Python構文で書くためのツールです。
- Pythonに型を追加した独自言語をC言語にコンパイルします。
- Pythonなので、C言語より可読性が高くなります。
- リファレンスカウントなどの泥臭い部分も自動生成してくれます。
- Pyrexは2002年ごろ登場しましたが現在では開発がストップしています。
- Cythonは2007年にPyrexからフォークして現在も開発されています。
- フォークした理由としては、Pyrexの開発者はあくまで1つの言語としてPyrexをデザインしていましたが、Cythonの開発者はもっと実務的な問題解決ツールとしての機能を追加したかった、という方向性の違いがあったようです。
- 最新版ではCythonは2.6/2.7/3.2/3.3/3.4 をサポートしています。
Psyco
- CPython用にJITを追加するライブラリです。
- スクリプトの先頭に数行追加するだけで、高速化することが出来ました、
- PyPyはPsycoの後継として開発されました。
- 2002年ごろ登場
- 現在は開発は終了しています。
- サポートされた最新バージョンは2.6
JavaScriptへのトランスレーター
PythonをJavaScriptに変換してブラウザ上で動かそうとするプロジェクトはあまりにたくさんある(そしてほとんどが失敗とみられる)ので、名前だけ列挙します。
- Pyjamas
- Pyjs
- py2js
- PyCow
- Pyjaco
- PyvaScript
- RapydScript
- Skulpt
- PythonJS
- PythonScript
- Brython
他にもPython処理系をご存知の方はtwitterなりコメント欄なりで教えてください。