From: "NARUSE, Yui" Date: 2008-09-02T22:06:55+09:00 Subject: [ruby-dev:36107] Re: [ANN] Ruby 1.9.1仕様凍結 成瀬です。 Yugui (Yuki Sonoda) wrote: > * CレベルのAPIはruby-core/ruby-devでの事前相談なしに変更不可 > * include/ruby/*.hにあるすべての構造体、データ型、変数、関数、マクロ > はCレベルAPIと見なします。 > * 公開したくないものはinclude/ruby/*.hから移動させてください。 コミッタ側に向けての事前相談義務はよいと思うのですが、 公開 C API と宣言してしまうのは微妙かもしれません。 例えば oniguruma.h は encoding.h が依存しているためにそこにあるのであって、 拡張ライブラリの開発者のためにそこにおいてあるのとは少々違います。 そして、Ruby の encoding まわりをいじるために、 rb_encoding の実体である OnigEncoding をいじられても困ります。 また別の例ですと、RString 構造体のメンバを直接いじられても困ります。 これをいじる時は RSTRING_PTR や RSTRING_LEN 等のマクロを使うものであって、 RSTRING(str)->as.heap.len 等は非公開だと考えるべきでしょう。 つまるところ、公開 C API のリストというかドキュメントというかが必要というか、 README.EXT がそれな気がするので、拡張ライブラリを作る方はそのようにご留意ください。 -- NARUSE, Yui