[#38121] regex performace tuning and ABI compatibility — Yukihiro Matsumoto <matz@...>

まつもと ゆきひろです

13 messages 2009/03/03

[#38191] big time — Tanaka Akira <akr@...>

思い立って、time_t を越える範囲を Time で扱うことに挑戦して

31 messages 2009/03/27
[#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 <20090328.134401.209982445.tadf@dotrb.org>,

[#38202] Re: big time — Urabe Shyouhei <shyouhei@...> 2009/03/29

卜部です。

[#38205] Re: big time — Tanaka Akira <akr@...> 2009/03/29

In article <49CF6641.7010204@ruby-lang.org>,

[#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 <F01982B3-FBB5-497F-BA36-38FA250E7D69@mva.biglobe.ne.jp>,

[#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 <20090401095853.B00A.C613B076@garbagecollect.jp>,

[#38222] *BSD で fork できない理由 — "KISHIMOTO, Makoto" <ksmakoto@...4u.or.jp>

きしもとです

12 messages 2009/03/31

[ruby-dev:38202] Re: big time

From: Urabe Shyouhei <shyouhei@...>
Date: 2009-03-29 12:14:58 UTC
List: ruby-dev #38202
卜部です。

Tanaka Akira さんは書きました:
> 今、私が反論するなら「time_t が本当に必要になるまでは time_t
> な値を作らなくてもいいんじゃないの」ということになります。
> 
> たとえば、ファイルのタイムスタンプに設定するには time_t な値
> がどうしても必要ですが、以下でいうと Time.utc じゃなくて
> File.utime で例外にすればいいんじゃないのか、ということです。

このパッチが具体的にどうという話ではなく、もうちょっと一般的な方針として、どう
かなあという気がしています。不正な値が見つかるのは早ければ早い程よいと思うから
です。

たとえば、touch(1)のクローンを作っていたとしましょう。んで、コマンドライン引数
の解釈にバグがあって、紀元前3億世紀とか、なんでもいいですけど、ともかくファイル
更新時刻として不正なTimeオブジェクトを作ってしまったとしますね。そうすると、

1) 見つけたいバグがあるところ:
   コマンドライン引数解釈器
2) 実際に例外が上がるところ:
   File.utimeとか

という不一致が生じてしまうわけです。ここで、2)のほうもあなた自身が書いたコード
ならまだ追いかけられるかもしれませんが、えてして2)はライブラリの中だったりとか
するわけですよ。具体的にはFileUtilsとか。そうすると

* スクリプト作者はどこが悪いのか追いかけられない
* ライブラリ作者は自分のせいじゃないバグ報告でモチベーションが削がれる
  (だってユーザーが見るのは2のほうのバックトレースだし)

という問題がある。これはよくないと思います。

こういう話はべつにTimeに限った話じゃなくて、最近見かけた例としては1.9でERBに与
えるテンプレートと埋め込む文字列のencodingがcompatibleでない場合などは、同様に
ERBの中から例外が上がってくるんだけど、一体どのオブジェクトがいけなかったのかが
さっぱり分からん。とか、まあ、いろいろありそうな話じゃないですか。一般的に。

これまではTimeは「生成できれば、とりあえずOSとのやりとりには使える」という、逆
に言えばまずい時には生成する瞬間に例外になってくれていたわけで、これはよいイン
ターフェースだったと思うわけです。今回そのような特徴を排することになると、より
デバッグが難しい方向に倒れてしまう気がします。どんなもんでしょう。

In This Thread