はろーえぶりわん
pypyをはじめようとしてそのまま日がたち、アドベントカレンダーで一念発起してpypyをいじっているaodagです。
さて、アドベントカレンダーが回ってきましたが、ほかのみんなのようなpypyで処理系を!ということはあんまり考えてないわけです。
pypyがcpythonよりも速いと聞いてきました!
さてpypyはpyramidですでに公式サポートしているので、まあpypy使えますよねというところですが、ZODBが動かないわけです。
動かないので、動かすためにあがいてみました。(まだちゃんと動かせていません。)
まずはこちらのmlポストを見て欲しい
https://mail.zope.org/pipermail/zodb-dev/2011-September/014364.html
手順が書いてあります。
ということでそのままやってみます。
>>>> storage = FileStorage('data1.fs')
>>>> from ZODB.DB import DB
>>>> db = DB(storage)
>>>> conn = db.open()
>>>> root = conn.root()
>>>> root
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/home/aodag/Envs/pypypy/lib-python/modified-2.7/UserDict.py", line 15, in __repr__
    def __repr__(self): return repr(self.data)
  File "/home/aodag/Envs/pypypy/site-packages/persistent/mapping.py", line 30, in __get__
    return self.func(inst)
  File "/home/aodag/Envs/pypypy/site-packages/persistent/mapping.py", line 99, in data
    data = self.__dict__.pop('_container')
KeyError: '_container'だめでした(´・ω・`)
でもこれってpypyだからだめなの?
ひょっとして、このブランチがだめなんじゃないの?
ということで、このブランチをcpythonで試してみました。
まずはパッチなしの場合。
python2.6では動きます。
python2.7でも動きました。
さて、パッチ適用後です。
python2.7で動きました。
pypyのバージョンが関係しているかもしれませんが、このあたりで心折れたので(日付変わっちゃってるし(´・ω・`) )ZODB動かす夢はまた情報が入ったら試すことにします。
残念な結果になりましたが、ひとまずアデュー。