So-net無料ブログ作成
検索選択

PyPy をコンパイルしてみる [Python]

OS を Yosemite にして Xcode の新しいのをインストールしたので、ふと思い立って pypy.org のソースをリポジトリから取得して、コンパイルしてみた

やり方は、これ↓
http://doc.pypy.org/en/latest/build.html
Linux ディストリビューションによって、違うけど、事前にいろいろライブラリーをインストールしとけと書いてある。

Mac OS X の場合
xcode-select --install
だけしとけばよさげ。

んでもって、以下の手順でソースを取ってきてコンパイル。
(pypy3 のリリースされたバージョンをコンパイルしてみる)

$ hg clone http://hg@bitbucket.org/pypy/pypy
cd pypy
hg up pypy3-release-2.4.0
python2.7 rpython/bin/rpython --opt=jit pypy/goal/targetpypystandalone.py

半日くらいかかってpypy-c っていうのができる。
パスが通っているところに pypy-c っていうやつへのシンボリックリンクを貼る

ln -s pypy-c $SOMEWHERE/pypy

$ pypy
Python 3.2.5 (b2091e973da6, Aug 24 2015, 14:34:46)
[PyPy 2.4.0 with GCC 4.2.1 Compatible Apple LLVM 6.1.0 (clang-602.0.53)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>>

となる。これでできたっぽい

ちなみに、この pypy でコンパイルしようとすると
pypy rpython/bin/rpython --opt=jit pypy/goal/targetpypystandalone.py
File "rpython/bin/rpython", line 17
print __doc__
^
SyntaxError: invalid syntax

となって、コンパイルに失敗する。
Python2 互換のバージョンの pypy じゃないとブートストラップ作れないようだ
じゃあ、default ブランチはどうなってんの?って思って

$ hg up default
$ python2.7 rpython/bin/rpython --opt=jit pypy/goal/targetpypystandalone.py

ってしてコンパイルしてできたバイナリを実行してみると

$ pypy
Python 2.7.10 (f5e65d929e0e, Aug 24 2015, 23:49:08)
[PyPy 2.7.0-alpha0 with GCC 4.2.1 Compatible Apple LLVM 6.1.0 (clang-602.0.53)] on darwin

と、いまのところ python2.7 互換バージョンが開発のメインになっているっぽい。
コンパイルのツールが 2.7ベースだと PyPy3 ベースに変更するの大変そうだな。
きっと、PyPy の開発の人たちには Python3 互換にすることにモチベーションあんまないんだろうなぁ

Python3 系互換の開発版の最新は py3k か py3.3 というブランチを update して使うのがよさげな感じ
コメント(0)  トラックバック(0) 

コメント 0

コメントの受付は締め切りました

Facebook コメント

トラックバック 0