[#36672] [Bug #616] instance_eval and Module#to_s — Shyouhei Urabe <redmine@...>

Bug #616: instance_eval and Module#to_s

12 messages 2008/10/06

[#36750] [Bug #650] Marshal.load raises RegexpError — Shyouhei Urabe <redmine@...>

Bug #650: Marshal.load raises RegexpError

30 messages 2008/10/15
[#36769] Re: [Bug #650] Marshal.load raises RegexpError — Yukihiro Matsumoto <matz@...> 2008/10/17

まつもと ゆきひろです

[#36771] Re: [Bug #650] Marshal.load raises RegexpError — Urabe Shyouhei <shyouhei@...> 2008/10/17

卜部です。

[#36772] Re: [Bug #650] Marshal.load raises RegexpError — Yukihiro Matsumoto <matz@...> 2008/10/17

まつもと ゆきひろです

[#36773] Re: [Bug #650] Marshal.load raises RegexpError — Urabe Shyouhei <shyouhei@...> 2008/10/17

卜部です。

[#36784] Re: [Bug #650] Marshal.load raises RegexpError — Yukihiro Matsumoto <matz@...> 2008/10/18

まつもと ゆきひろです

[#36785] Re: [Bug #650] Marshal.load raises RegexpError — Urabe Shyouhei <shyouhei@...> 2008/10/18

卜部です。

[#36793] Re: [Bug #650] Marshal.load raises RegexpError — Yukihiro Matsumoto <matz@...> 2008/10/19

まつもと ゆきひろです

[#36794] Re: [Bug #650] Marshal.load raises RegexpError — Urabe Shyouhei <shyouhei@...> 2008/10/19

Yukihiro Matsumoto さんは書きました:

[#36823] Re: [Bug #650] Marshal.load raises RegexpError — Yukihiro Matsumoto <matz@...> 2008/10/21

まつもと ゆきひろです

[#36830] Re: [Bug #650] Marshal.load raises RegexpError — Urabe Shyouhei <shyouhei@...> 2008/10/21

もとの正規表現にバグがあるのは認めますが、それに巻き込まれてでかいPStore

[#36833] Re: [Bug #650] Marshal.load raises RegexpError — Yukihiro Matsumoto <matz@...> 2008/10/21

まつもと ゆきひろです

[#36764] Re: [ruby-cvs:27036] Ruby:r19818 (trunk): * transcode.c (str_transcode0): String#encode without argument now — Martin Duerst <duerst@...>

まつもとさん、こんばんは。

11 messages 2008/10/17
[#36767] Re: [ruby-cvs:27036] Ruby:r19818 (trunk): * transcode.c (str_transcode0): String#encode without argument now — Yukihiro Matsumoto <matz@...> 2008/10/17

まつもと ゆきひろです

[#36799] Re: [ruby-cvs:27036] Ruby:r19818 (trunk): * transcode.c (str_transcode0): String#encode without argument now — Martin Duerst <duerst@...> 2008/10/20

まつもとさん、こんにちは。

[#36774] ConverterNotFoundError while making Ruby in Windows(trunk) — Masaki Suketa <masaki.suketa@...>

助田です。

13 messages 2008/10/17
[#36797] Re: ConverterNotFoundError while making Ruby in Windows(trunk) — "U.Nakamura" <usa@...> 2008/10/20

こんにちは、なかむら(う)です。

[#36800] Re: ConverterNotFoundError while making Ruby in Windows(trunk) — "U.Nakamura" <usa@...> 2008/10/20

こんにちは、なかむら(う)です。

[#36789] [Bug #660] 数字を3桁ずつコンマで区切るsprintf書式指定 — "rubikitch ." <redmine@...>

Bug #660: 数字を3桁ずつコンマで区切るsprintf書式指定

13 messages 2008/10/19

[#37007] [Bug:1.9] 1+1+1+...+1 dumps core — "Yusuke ENDOH" <mame@...>

遠藤です。

13 messages 2008/10/31

[ruby-dev:36794] Re: [Bug #650] Marshal.load raises RegexpError

From: Urabe Shyouhei <shyouhei@...>
Date: 2008-10-19 16:50:06 UTC
List: ruby-dev #36794
Yukihiro Matsumoto さんは書きました:
> まつもと ゆきひろです
>
> In message "Re: [ruby-dev:36785] Re: [Bug #650] Marshal.load raises RegexpError"
>     on Sun, 19 Oct 2008 02:13:16 +0900, Urabe Shyouhei <shyouhei@ruby-lang.org> writes:
>
> |Yukihiro Matsumoto さんは書きました:
> |>  (1) 杓子定規に考えて、メジャーバージョンをあげる(1.8と1.9が
> |>      通信できなくなる、うれしくない)
> |>
> |>  (2) ささいな違いなので気にしない
> |>
> |>  (3) 1.8で正規化する(すでに書き込んだデータは救済できないし、
> |>      副作用もある)
> |>
> |>  (4) 1.9側に1.8正規表現かどうか判別して1.9正規表現に変換する
> |>      (おそらくは巨大な)ルーチンを追加する(苦労の割に得るもの
> |>      が少ない、うれしくない)
> |
> |(5) 1.9でRegexp#_dumpとRegexp#_loadを定義する
> |ってのはどうでしょうね。すると
> |* TYPE_REGEXPなデータは1.8のRegexp
> |* TYPE_USERDEFなデータ(でklass==rb_cRegexp)は1.9のRegexp
> |という割と簡単な判定でいけそうな気がするんですが。
>
> 判別はできますが、その後の対応はどうするんでしょうね。
> 1.9に1.8のregex.cを導入するのも、1.8に鬼車を導入するのも現実
> 的ではないと思いますから、判別できても完全な互換性を維持する
> のは困難ではないでしょうか。
>   

「1.8から来た正規表現に\uが含まれていたら1.9ではuのこととして扱う」でい
いんじゃないですかね。
1.8が1.9から来る正規表現を読めるようになることは期待してません。

> さらに言うと、この件についてなんらかの対応したとしても、救済
> できるのは、ドキュメントに掲載されていないし、サポートされて
> いると明言されたこともない\uのようなメタキャラクタでないアル
> ファベットの前にバックスラッシュがついた正規表現だけなので、
> コストの割に得るものが少ない気がします。
>
> 考えるほど、ここは(2)かなあ、という気がしてきました。という
> か、むしろundocumentedなので対応すべきでないような。
>   

undocumentedなのが理由になれるのはちゃんとドキュメントがあるときだけでに
しましょうね。
たとえば/\n/や/\t/あたりもドキュメントされてませんけど、まさか今後の動作
を保証しないとか言い出しますか?

ところでなんでこんなにしつこく対応すべきと主張しているかというと、今後同
様のことがまだ起こると思うからです。
どうせ1.9は1.8と互換性がないわけで、Marshalで非互換が見つかったり、あら
たに作られたりすることは今後も出てくることが強く予想されます。そのとき
に、毎回同様の判断を求められるでしょう。それを毎回「気にしない」とかいう
逃げかたをしていくと、どんどんMarshalでやりとりできる情報が少なくなって
いって用をなさなくなります。しかもPStoreの場合だと中のオブジェクトが一個
でも読めなくなると、DB全体を捨てないといけません。これはとても困ります。
今後「気にしない」をどんどん続けていくと、最終的には読めないDBしか残らな
くなるでしょう(さすがにそこまで到達する前になんか回避策は考えることにな
ると思いますが)。

せめて過去のバージョンで読めていたデータは取り出せるべきです。

In This Thread