小松です。

In the message of "[ruby-dev:10620] Ruby stubs"
    on 2000/8/11 WATANABE Hirofumi <eban / os.rim.or.jp> wrote:

|ほんとになくしたいなら
|ruby_obsolete()
|{
|    rb_raise(rb_eNotImpError, "...");
|}
|みたいなのを用意しといてこのアドレスをいれとくとか.
|でも変数がなくなると非常に困るなあ.
|そもそも Tcl/Tk Stubs には外部変数はないし.

もりきゅうさんがApollo (spin) でやってらっしゃるように、
変数にすべてwrapperをかけるというのも考えられますね。

その場合に、パフォーマンスが問題になるのかな?
計測したことがないので、明確なことは言えませんが。

例としては、1.5系のrb_safe_level()のように、関数から変数を
直接を扱うマクロになったりという変更がありました。

|:そもそも、そういうことは許さないということかな?
|
|本格的に導入するならそうなると思います.
|tclDecls.h は番号まで振ってあるし.
|でもそれじゃ序数となんら変わりがないわけで, かなり矛盾も感じます.

最初に見たときに思った、
「序数をつけたwin32/ruby.defのメンテナンスと同程度の面倒さ」
という印象はほぼ正しいということですか。

1.5系は、まつもとさんが関数の追加・削除をされるのと同時に
win32/ruby.defの方へも反映もされていたので、本体が変更された
時点でmswin32でも利用可能でした。

これが「APIを明示的に利用可能にする」というイベントによって
利用可能になるということになるんでしょうね。

|あと, なにを export するかというのも猛烈に悩みます.
|今は *.h の prototype 宣言してる関数と EXTERN のついてる変数
|だけを拾って手直しして使ってます.

win32/ruby.defも最初はその方針でいいかなと思っていたんですが、
erubyやstrscanのために対応が必要だったんですよね。

難しいところです。

--
小松克行 / Katsuyuki Komatsu <komatsu / sarion.co.jp>