[#38121] regex performace tuning and ABI compatibility — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
13 messages
2009/03/03
[#38125] Request for plans to break compatibility; Was: Re: regex performace tuning and ABI compatibility
— "Yugui (Yuki Sonoda)" <yugui@...>
2009/03/03
Yuguiです。
[#38129] Re: Request for plans to break compatibility; Was: Re: regex performace tuning and ABI compatibility
— Nobuyoshi Nakada <nobu@...>
2009/03/04
なかだです。
[#38128] Re: regex performace tuning and ABI compatibility
— Nobuyoshi Nakada <nobu@...>
2009/03/04
なかだです。
[#38131] Bug when daemonizing — rubikitch@...
るびきちです。
6 messages
2009/03/04
[#38145] MSの方との相談に先立って — masayoshi takahashi <maki@...>
高橋征義です。どこに投げるのがベストか判断つかなかったので、
7 messages
2009/03/11
[#38153] [feature:trunk] warning when Kernel#p is used — Yusuke ENDOH <mame@...>
遠藤です。
7 messages
2009/03/11
[#38191] big time — Tanaka Akira <akr@...>
思い立って、time_t を越える範囲を Time で扱うことに挑戦して
31 messages
2009/03/27
[#38198] Re: big time
— Yukihiro Matsumoto <matz@...>
2009/03/28
まつもと ゆきひろです
[#38194] Re: big time
— Tadayoshi Funaba <tadf@...>
2009/03/28
> 思い立って、time_t を越える範囲を Time で扱うことに挑戦して
[#38196] Re: big time
— Tanaka Akira <akr@...>
2009/03/28
In article <[email protected]>,
[#38202] Re: big time
— Urabe Shyouhei <shyouhei@...>
2009/03/29
卜部です。
[#38205] Re: big time
— Tanaka Akira <akr@...>
2009/03/29
In article <[email protected]>,
[#38214] Re: big time
— Urabe Shyouhei <shyouhei@...>
2009/03/30
Tanaka Akira さんは書きました:
[#38215] Re: big time
— Tanaka Akira <akr@...>
2009/03/30
In article <[email protected]>,
[#38216] Re: big time
— Urabe Shyouhei <shyouhei@...>
2009/03/30
卜部です。
[#38227] Re: big time
— Tanaka Akira <akr@...>
2009/03/31
In article <[email protected]>,
[#38234] Re: big time
— Urabe Shyouhei <shyouhei@...>
2009/04/01
Tanaka Akira さんは書きました:
[#38242] Re: big time
— Tanaka Akira <akr@...>
2009/04/01
In article <[email protected]>,
[#38245] Re: big time
— Urabe Shyouhei <shyouhei@...>
2009/04/01
卜部です。
[#38267] Re: big time
— Tanaka Akira <akr@...>
2009/04/03
In article <[email protected]>,
[#38218] rinda/eval.rb — Masatoshi SEKI <m_seki@...>
咳といいます。
20 messages
2009/03/30
[#38219] Re: rinda/eval.rb
— Tanaka Akira <akr@...>
2009/03/31
In article <[email protected]>,
[#38223] Re: rinda/eval.rb
— Masatoshi SEKI <m_seki@...>
2009/03/31
咳といいます。
[#38229] Re: rinda/eval.rb
— "U.Nakamura" <usa@...>
2009/04/01
こんにちは、なかむら(う)です。
[#38233] Re: rinda/eval.rb
— Tanaka Akira <akr@...>
2009/04/01
In article <[email protected]>,
[#38259] Re: rinda/eval.rb
— Yukihiro Matsumoto <matz@...>
2009/04/03
まつもと ゆきひろです
[#38222] *BSD で fork できない理由 — "KISHIMOTO, Makoto" <[email protected]>
きしもとです
12 messages
2009/03/31
[#38230] Re: *BSD で fork できない理由
— "Akinori MUSHA" <knu@...>
2009/04/01
At Tue, 31 Mar 2009 18:48:46 +0900,
[#38232] Re: *BSD で fork できない理由
— Urabe Shyouhei <shyouhei@...>
2009/04/01
卜部です。
[#38235] Re: *BSD で fork できない理由
— Tanaka Akira <akr@...>
2009/04/01
In article <[email protected]>,
[#38236] Re: *BSD で fork できない理由
— Urabe Shyouhei <shyouhei@...>
2009/04/01
Tanaka Akira さんは書きました:
[#38238] Re: *BSD で fork できない理由
— "KISHIMOTO, Makoto" <[email protected]>
2009/04/01
きしもとです
[ruby-dev:38227] Re: big time
From:
Tanaka Akira <akr@...>
Date:
2009-03-31 17:07:35 UTC
List:
ruby-dev #38227
In article <[email protected]>, Urabe Shyouhei <[email protected]> writes: > すると現状ひょっとしてバグってますか? > > zsh % ruby -rzlib -e' > > Zlib::GzipWriter.open("/dev/null") {|gz| > gz.mtime = Time.at(1<<32 - 1) > }' > ruby 1.9.2dev (2009-03-11 trunk 22881) [x86_64-linux] > -e:2:in `mtime=': integer 2147483648 too big to convert to `int' (RangeError) > from -e:2:in `block in <main>' > from -e:2:in `open' > from -e:2:in `<main>' > zsh: exit 1 ruby -rzlib これがどうなるべきだという話でしょうか。 RFC 1952 に MTIME は singed か unsigned か書いてない (と思う) ので、2147483648 に対しどういう挙動が正しいのかはよくわかり ません。 > むしろtime_tの用法を包含した仕様にすべきで、切り捨てるべきではない、という(そこ > まで強くは言いませんが)意図でした。time_tを切り捨てない方策としてサブクラス化を > 提案したつもりです。実現性はともかく。 あぁ、そういう現実的な話であれば、[ruby-dev:38205] に書きま したが検査するメソッドのほうがサブクラスよりいいんじゃないで しょうか。 ダウンキャストするかわりにそのメソッドを呼べば同じことができ るでしょう。 そのメソッドを呼ぶのを忘れたときには、File.utime にたどり着 くまで検出できませんが、その場合に検出するのは難しいんじゃな いでしょうか。静的型や型推論を導入しない限り。 > それ以外の場合にも興味があります。型がない他の言語では不正な値がどこからやって > きたかをどのようにデバッグするんでしょう。だれか知りませんかね。 printf デバッグなんじゃないですか。 あぁ、そういえば OCaml のデバッガは逆方向に動かせますね。こ れは理想的な解決策かもしれません。OCaml が型のない言語だとは いいませんが。 > BignumとFixnumの例がありますので、time_tよりもさらに小さいクラスがあっても驚き > ません。 世の中には unsigned な 32 bit time_t を採用した OS もあるよ うです。(OpenVMS とか OS/2 EMX という話を聞きます。) 冒頭に述べたように、gzip の MTIME は signed か unsigned か不 明ですが、仮に (多くの Unix にあわせて) signed であるとする と、一方がもう一方の部分集合になっているとは限らないかもしれ ません。 あと、gzip の MTIME で 0 は 1970-01-01 00:00:00 UTC ではなく、 timestamp が存在しないことを示しているので、この部分も意味が 違うと考えるのが適切かもしれません。 数値の範囲を型で扱おうというチャレンジは新しいものではないと 思いますが、そんなに簡単にいくものでもないような気がします。 少なくとも静的な推論については。 例えば、time + 1000 のクラスはなんでしょう? 1000秒を加えたことにより、time のクラスが表現可能な範囲を外 れてしまうかもしれません。そのときにどのクラスを選ぶんでしょ う? それとも失敗するんでしょうか? 失敗しない場合、Bignum と Fixnum のように、包含関係であれば クラスを選ぶのに悩まなくて済むかもしれませんが、32bit unsigned と 32bit signed とか、そこから 0 を除いた集合、包含 関係とは限らない関係の集合がいくつかあったら、自明とは言いが たい挙動にならざるを得ないのではないでしょうか。 >> かなりあきらかに Ruby っぽくないというレベルに達していると思 >> います。 > > そうかなあ。デバッグしやすいプログラムが書けるのは(特にPerlと比べた)Rubyの大き > な特徴の一つだと思うんだけどなあ。 上記の Ruby っぽくないというのは静的型の導入を指しています。 デバッグしやすいプログラムを書くことにはもちろん賛成です。 そして、もし、time_t の範囲におさまるべきであるとプログラマ が知っている文脈で、そのことをプログラム上で表現したいとした ら、その検査をするメソッドを作るというのが適当でしょう。 いままでは暗黙のうちにその検査が行われたと考えられますから、 陽に呼び出さなければならないというのはたしかに手間がかかりま す。 ですが、File.utime のために使われる Time オブジェクトは割合 としては少なく、大きな問題ではないのではないでしょうか。 また、そういう文脈は本当に安定しているのか、という問題があり ます。ある時点でそれが正しいとしても、プログラムが変化してい くうちに変わってしまうかもしれません。 また、utime システムコールが時刻を time_t で受け付けるとして も、実際のファイルシステムがその範囲をすべて受け付けるかとい うとそうとは限りません。たとえば、NFS version 3 [RFC 1813] の struct nfstime3 では uint32 seconds ということですから、 64bit time_t の環境ではうまくいかないかもしれません。試して ませんけれど。なお、NFS version 4 [RFC 3530] の struct nfstime4 では int64_t seconds のようです。 そうすると、どうせ確実な検査は File.utime までできないのだか ら放っておけばいい、という見方もあると思います。 -- [田中 哲][たなか あきら][Tanaka Akira]