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

> |フルパスでrequireしてしまうと、$"にもフルパスのままで入ってしま
> |い、普通にrequireしたものと二重に読んでしまうことになります。ま
> |た、マルチスレッドでの待ち合わせも、現在rubyレベルで利用できる
> |ような形にはなっていません。
>
> 上ではloadと書きました。requireとは別物にした方が良いのでは
> ないでしょうか。

どういうように別物になることを想定しているのでしょうか?

つまり、上記の $" についていえば仮称import は二重読み込み回避機構を持
たないのか、あるいはそういう機構自体は持つもののそのための情報としては
$" 以外を使うのか、ということですが。

test/ruby/ut_eof.rb を test/ruby/test_file.rb, test/ruby/test_pipe.rb,
test/stringio/test_stringio.rb の 3つが require しているという例を考え
ると、仮称import でもそういう機構は require と同様に欲しいケースがあり
そうです。

$" と別にするほうがいいかどうかという点に関しては今の所あまりはっきり
した考えはありません。分けなくてもいい気がするので単純にひとつで済まし
たほうがいいんじゃないかとも思いますが、相対ディレクトリで指定したくな
るのは単一のプロジェクト内のことが多そうなので、分かれていても大きな問
題もなさそうだとも思います。強いていえば、分けた場合には、仮称import
することによってそれは require すべきでないというメッセージを伝えられ
るかもしれなくて、それは悪くない話なのかもしれません。

あと require と load の違いとして思い当たるのは

* *.so の読み込み
* 拡張子の補完

というあたりですが、他にありましたっけ?

とまぁ、こういう機能的な話よりは想定される用法について論じるべきかもし
れませんが。

In article <200401291301.i0TD12gD023255 / sharui.nakada.kanuma.tochigi.jp>,
  nobu.nakada / nifty.ne.jp writes:

> フルパスでrequireしてしまうと、$"にもフルパスのままで入ってしま
> い、普通にrequireしたものと二重に読んでしまうことになります。ま

ふむ。require も $" にはフルパスで記録するというのはどうでしょう?

仮称import で $: のどれかからの相対パスで記録出来る時にはそうすること
も可能ですが、二重に読むのを防ぐという意味ではフルパスで記録するほうが
適切だと思います。

% ruby -e 'require "i686-linux/etc"; require "etc"; p $"'
["i686-linux/etc.so", "etc.so"]

というようなことも出来てしまいますし。
-- 
[田中 哲][たなか あきら][Tanaka Akira]