PyPyのPyObjectの実装が謎い

全部同じ実装しててどういう事かと追いかけたら続きはRPythonで!かと思いきやPython2.7との互換性のためごにょごにょ
9
しょーま @shomah4a

C 拡張を書く立場からしたら PyIntObject から整数値とれないのはあんまり旨味がないような気もする。実際のところはどうなんだろう。

2012-02-23 18:42:45
Yutaka Matsubara @mopemope

@shomah4a @kumagi PyIntObjectは2系だと使いまわしでob_refcntがすごいことになってたような。3系は正しいrefcntになってたはず。_PyObject_Dumpで見れる

2012-02-23 18:43:53
くまぎ @kumagi

@mopemope @shomah4a ん、使いまわしたらrefcntが凄いことになるのは正しいような気がするんですが、それを超えて正しいというのはどういうことでしょうか?

2012-02-23 18:45:49
Yutaka Matsubara @mopemope

@kumagi @shomah4a 3系は使いまわしてるように見えないって事です。なんでだったかな。。。

2012-02-23 18:48:53
しょーま @shomah4a

PyPy に関しては内部実装を隠したいという部分もあるんじゃないかなーと思ったりするけど全部憶測

2012-02-23 18:44:04
しょーま @shomah4a

@cocoatomo @kumagi あくまでも Python のレイヤでの制約ですしね。 C レベルでは弄れるでしょうけど、推奨はされないでしょうし

2012-02-23 18:46:21
くまぎ @kumagi

@cocoatomo @shomah4a ええと、tupleの制約条件というのは「一度作ったらメンバを書き換える事ができない」というものでしょうか。C言語なら何でも出来る上、C++と違ってメンバにconstとかないので凄く自然な手順で書き換えできちゃいそうで危険ですね。

2012-02-23 18:49:17
tomo🐧@learning @cocoatomo

@kumagi @shomah4a http://t.co/JJV7m9gU ← これですね. サイズ変更です. あくまでライブラリの実装内部でのみ許されることですね. 言いたかったのは, 上位のレイヤーの仕様を実際の実装にまで反映させなくていいんじゃないかなー, ってことです.

2012-02-23 18:52:07
Yutaka Matsubara @mopemope

@kumagi @cocoatomo @shomah4a Cだとbuiltin in typeに便利なメソッド生やし放題ですからねえ。http://t.co/sGNpC4fT

2012-02-23 18:51:53
くまぎ @kumagi

@cocoatomo @shomah4a 型チェック用のマクロというのはPyほげ_Checkという奴らでしょうか。PyPyのそれ見たらマクロの向こう側でdllimportってのに渡されてて何も見えなくなっちゃってますが、つまりそういうことなんでしょうね。

2012-02-23 18:51:53
tomo🐧@learning @cocoatomo

@kumagi @shomah4a お, dllimport は把握してないです. 教えてください, 先生!

2012-02-23 18:53:08
くまぎ @kumagi

@cocoatomo @shomah4a えっ、PyPyは全く知らないのですが、PyPyのPython.hからPyほげ_Checkのマクロがどういう実体になってるのか追いかけて言ったら__declspec(dllimport)という見たこと無いキーワードの向こうに…という。

2012-02-23 18:55:42
くまぎ @kumagi

@cocoatomo @shomah4a 型チェックマクロというの、Python2.6で追ってみたらtp_flagsが立っているかをチェックしているだけですね。キャストした後で事故った場合の分析にはちょっと使えそうにない感じ…。

2012-02-23 19:04:28
Yutaka Matsubara @mopemope

_PythonXXX関数って基本使ったらあかんのだけどみんな使ってるっていう

2012-02-23 18:54:35
しょーま @shomah4a

きっと誰かがとぅぎゃってくれる

2012-02-23 18:55:39
Kenji YANO @yanolab

PyPyのC言語レイヤーの話のレベルが高いで。

2012-02-23 18:53:28
tomo🐧@learning @cocoatomo

@yanolab いや, 俺は CPython の方しか知らないですし.

2012-02-23 18:56:52
Kenji YANO @yanolab

@cocoatomo どっちもわかってない俺なんて・・・orz

2012-02-23 18:58:00
Yutaka Matsubara @mopemope

あれー?3系のLongもsmall_intsはpreallocatedで使いまわしてるなー。参照カウントのやつ、俺の目が腐ってたんだろうか。。。。

2012-02-23 18:58:26
tomo🐧@learning @cocoatomo

@kumagi Python.h がどこにあるか教えてください. (そろそろ shoma さん抜いといた.)

2012-02-23 19:03:31
しょーま @shomah4a

python.h はビルドしたら生成されるとか?さっきは見当たらなかった

2012-02-23 19:05:10
くまぎ @kumagi

@cocoatomo 例えば今公式サイトで配ってるPyPy1.8のバイナリtarなら、展開後のinclude/以下にズラズラと並んでいます。

2012-02-23 19:05:54
tomo🐧@learning @cocoatomo

@kumagi あぁ, ここにできるんですね. https://t.co/cADNIxBM 雰囲気からするとデフォルトの Python の dll かなんかを読んでそうですが. というのは(続く

2012-02-23 19:13:29