PyPyのPyObjectの実装が謎い
C 拡張を書く立場からしたら PyIntObject から整数値とれないのはあんまり旨味がないような気もする。実際のところはどうなんだろう。
2012-02-23 18:42:45@shomah4a @kumagi PyIntObjectは2系だと使いまわしでob_refcntがすごいことになってたような。3系は正しいrefcntになってたはず。_PyObject_Dumpで見れる
2012-02-23 18:43:53@mopemope @shomah4a ん、使いまわしたらrefcntが凄いことになるのは正しいような気がするんですが、それを超えて正しいというのはどういうことでしょうか?
2012-02-23 18:45:49@cocoatomo @kumagi あくまでも Python のレイヤでの制約ですしね。 C レベルでは弄れるでしょうけど、推奨はされないでしょうし
2012-02-23 18:46:21@cocoatomo @shomah4a ええと、tupleの制約条件というのは「一度作ったらメンバを書き換える事ができない」というものでしょうか。C言語なら何でも出来る上、C++と違ってメンバにconstとかないので凄く自然な手順で書き換えできちゃいそうで危険ですね。
2012-02-23 18:49:17@kumagi @shomah4a http://t.co/JJV7m9gU ← これですね. サイズ変更です. あくまでライブラリの実装内部でのみ許されることですね. 言いたかったのは, 上位のレイヤーの仕様を実際の実装にまで反映させなくていいんじゃないかなー, ってことです.
2012-02-23 18:52:07@kumagi @cocoatomo @shomah4a Cだとbuiltin in typeに便利なメソッド生やし放題ですからねえ。http://t.co/sGNpC4fT
2012-02-23 18:51:53@cocoatomo @shomah4a 型チェック用のマクロというのはPyほげ_Checkという奴らでしょうか。PyPyのそれ見たらマクロの向こう側でdllimportってのに渡されてて何も見えなくなっちゃってますが、つまりそういうことなんでしょうね。
2012-02-23 18:51:53@kumagi @shomah4a お, dllimport は把握してないです. 教えてください, 先生!
2012-02-23 18:53:08@cocoatomo @shomah4a えっ、PyPyは全く知らないのですが、PyPyのPython.hからPyほげ_Checkのマクロがどういう実体になってるのか追いかけて言ったら__declspec(dllimport)という見たこと無いキーワードの向こうに…という。
2012-02-23 18:55:42@cocoatomo @shomah4a 型チェックマクロというの、Python2.6で追ってみたらtp_flagsが立っているかをチェックしているだけですね。キャストした後で事故った場合の分析にはちょっと使えそうにない感じ…。
2012-02-23 19:04:28あれー?3系のLongもsmall_intsはpreallocatedで使いまわしてるなー。参照カウントのやつ、俺の目が腐ってたんだろうか。。。。
2012-02-23 18:58:26@kumagi Python.h がどこにあるか教えてください. (そろそろ shoma さん抜いといた.)
2012-02-23 19:03:31@cocoatomo 例えば今公式サイトで配ってるPyPy1.8のバイナリtarなら、展開後のinclude/以下にズラズラと並んでいます。
2012-02-23 19:05:54@kumagi あぁ, ここにできるんですね. https://t.co/cADNIxBM 雰囲気からするとデフォルトの Python の dll かなんかを読んでそうですが. というのは(続く
2012-02-23 19:13:29