[#27919] 1.8.4 Preview2 検証 — "URABE Shyouhei aka. mput" <root@...>

卜部です。

33 messages 2005/12/01

[#27997] 1.8.4 documents? — "URABE Shyouhei aka. mput" <root@...>

卜部です。

22 messages 2005/12/12
[#28017] Re: 1.8.4 documents? — Koji Arai <jca02266@...> 2005/12/13

新井です。

[#28082] ruby_1_8 Segmentation fault on Cygwin — yanagi@...

柳田です。

13 messages 2005/12/21
[#28083] Re: ruby_1_8 Segmentation fault on Cygwin — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/12/21

山本です。

[#28140] ia64-hpux11.23/socket.sl: this executable file can't load extension libraries (LoadError) — Tanaka Akira <akr@...17n.org>

HP-UX で HP aC++/ANSI C を使って作った ruby で、openssl や drb のテストをすると、

34 messages 2005/12/27
[#28141] Re: ia64-hpux11.23/socket.sl: this executable file can't load extension libraries (LoadError) — WATANABE Tetsuya <Tetsuya.WATANABE@...> 2005/12/28

渡辺哲也です。

[#28142] Re: ia64-hpux11.23/socket.sl: this executable file can't load extension libraries (LoadError) — Tanaka Akira <akr@...17n.org> 2005/12/28

In article <200512280307.jBS37nnj005909@pbsg500.nifty.com>,

[#28147] Re: ia64-hpux11.23/socket.sl: this executable file can't load extension libraries (LoadError) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/12/28

山本です。

[#28149] Re: ia64-hpux11.23/socket.sl: this executable file can't load extension libraries (LoadError) — Tanaka Akira <akr@...17n.org> 2005/12/28

In article <20051228210640.13C71A10.ocean@m2.ccsnet.ne.jp>,

[#28151] Re: ia64-hpux11.23/socket.sl: this executable file can't load extension libraries (LoadError) — WATANABE Tetsuya <Tetsuya.WATANABE@...> 2005/12/29

渡辺哲也です。

[#28152] Re: ia64-hpux11.23/socket.sl: this executable file can't load extensionlibraries (LoadError) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/12/29

山本です。

[#28153] Re: ia64-hpux11.23/socket.sl: this executable file can't load extensionlibraries (LoadError) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/12/29

山本です。

[#28154] thread based generator.rb — Tanaka Akira <akr@...17n.org> 2005/12/29

In article <20051229114438.44D19F00.ocean@m2.ccsnet.ne.jp>,

[ruby-dev:27932] Re: FNM_CASEFOLD on case-sensitive system

From: "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
Date: 2005-12-02 08:16:15 UTC
List: ruby-dev #27932
山本です。

>かなり横道にそれてるというか、そもそもシステム側で全角文字の文
>字ケースをどうみなすかは関係なくて、rubyでどうみなすと定義する
>かの問題だと思います。別に、Windows版rubyで独自にシステムと同じ
>動作を実装しよう、といっているわけではありません。

なかださんの元々の要望は、Unix で FNM_CASEFOLD が使えないのは
不便だ、というものですよね。それは [ruby-dev:27751] でいいと
思います。そのあとになかださんが

>> >全角文字の文字ケースの区別って、Windowsのバージョンによって違う
>> >んじゃありませんでしたっけ。

とおっしゃったのですが、正直意図が読み取れませんでした。
たぶん「Win9x でも動いてないじゃないか」という話だと思って
追認したのですが・・・

///////////////////////////////////////////////////////

言葉足らずだったかもしれない部分を補足します。

Compare がシステムの挙動と一致している必要があるのは、Dir.glob の
挙動としてそれが望ましいというよりも、おかしな動作をしないように
するために「必要」だからです。

例えば、全角大文字・小文字を区別しない環境で、Compare がこれを区別
してしまう場合(CharLower を入れる前の WinNT での挙動)

Dir.glob("abc") が "ABC" にマッチするのに、都合でワイルドカード
に切り替えて Dir.glob("ab?") とした途端にマッチしなくなるとか、

Dir.glob("**/abc/ABC/**/foo") が abc/abc/abc/foo に
二回マッチしてしまうとか、そういったことが起こります。

こういったことを防ぐには Compare がシステムの挙動に一致している必要が
あるので、それをバイパスするようなコードは置きたくなかったのです。

なかださんの最初のパッチは、おそらくワイルドカードを含む要素にだけ
FNM_CASEFOLD を適用する意図だと思うのですが、そうすると上と同じ
問題が生じるはずです。

それは今の実装だろう。実装が悪いと言われそうなのですが、このあたりは
速度と挙動のトレードオフで、当時もかなり悩みました。ruby_1_8 のように
**/ を使うと同じディレクトリを何度も調べることがあるのは避けたかった
ですし、高速化のために stat(2) を呼ぶ回数を最小化したかったことや、
同じパスが二度現れるのも避けたかったということで、こういう実装になっています。

ruby_1_8 の仕様が、ワイルドカードを含まないものはそのまま stat(2) や
readdir(2) に渡し、ワイルドカードは fnmatch で処理して、フラグは
fnmatch にのみ影響するといったものだったので、それも考えましたが、
**/ が絡んで「ワイルドカードを含まないパターン」が同一ディレクトリに
複数現れた場合、両方 stat(2) に渡すと同じファイルが二度現れる可能性が
あるので、どうしても片方は fnmatch に渡す必要があり、やはり Compare
の問題に戻ってしまうのです。st_uid を比べるというのも、Windows の
ように常に 0 が入るような環境では「本来別のファイルなのに、同じに
扱われてしまう」という、より悪い状態になるので、避けました。

http://www.ccsnet.ne.jp/~ocean/22738/readme の simpler の実装なら
こうした問題は起こらないのですが、速度が気になりますし・・・
あるいはもっといい実装があるのかもしれませんが。


In This Thread