In article <1014706989.247493.28278.nullmailer / ev.netlab.jp>,
  matz / ruby-lang.org (Yukihiro Matsumoto) writes:

> APIとしてはこれでよいのではないかと思います。順序だけは考慮
> の余地がありますが。順序関係なしに文字列ならモード、それ以外
> ならクラス(to_fdの対象)とみなすという(余計な)親切APIもありえ
> ますね。

なるほど。今はどっちかに決めうちでも、後から思い直しせば互換性を損ねる
ことなく両方を扱えるようにもできるわけですね。気が楽になりました。

とすると残りはとりあえずどちらの順序にするかですが、
「とりあえず rw にしたい」という用途と
「とりあえず TCPSocket にしたい」という用途のどっちが多いのかなぁ。

この機能の用途で私が聞いたことがあるのは「詳解 UNIX プログラミング」の
オープンサーバと、あとは HTTP サーバで accept したコネクションを他のプ
ロセスに渡して処理させるという話の二つしかないんですが、ほかの用途を知っ
ている人はいます?

あと、書くのを忘れてましたが、じつは fd の他に 1byte 送るんですよね。
Linux と Solaris ではデータを送らないと動かないからなんですが... まぁ
"\0" 固定のままでもいいかな。いつか(例えば Ruby 以外のものとの通信で使
うとかで)変えたいという要望が出たらそのときに API を拡張するか、
sendmsg, recvmsg を generic に扱える API を新設するかどちらかを考えま
しょう。

> |あるいは IO.for_fd は引数を二つとれるけれど、
> |BasicSocket.for_fd は引数が一つという違いが問題なのかも知れません。
> 
> やっぱりstdioが元凶のような気がしてきました。そのうち撲滅し
> ます。そしたら、妙な制約にしばられることはなくなるし。この辺
> はそれまで棚上げにしません?

それは構いません。

でも、API だけは後からは変えにくいので、merge する前に相談しておこうと
思いまして。
-- 
[田中 哲][たなか あきら][Tanaka Akira]
「ふえろ! わかめちゃん作戦です$(C⊇」(Little Worker, 桂遊生丸)