[#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:36882] Re: [Bug #650] Marshal.load raises RegexpError

From: Yukihiro Matsumoto <matz@...>
Date: 2008-10-23 08:39:34 UTC
List: ruby-dev #36882
まつもと ゆきひろです

In message "Re: [ruby-dev:36872] Re: [Bug #650] Marshal.load raises RegexpError"
    on Thu, 23 Oct 2008 03:26:00 +0900, keiju@ishitsuka.com (石塚圭樹) writes:

|例外オブジェクトのアクセサで取りあえずの変換結果が取り出せるイメージで
|した.

例外は実行を中断しちゃうんで、「とりあえずの変換結果」ではか
なり情報が失われるような気がします。

|入力が:
|
|  [1, 2, 3, <再生不能オブジェクト>, 5]
|
|だったら, 例外から取り出せるのは
|
|  [1, 2, 4, <markerオブジェクト>, 5]
|
|という感じです. ここから, markerオブジェクトを探して, 適当に処理するイ
|メージでした.

この例だと「5の再生に届かない」って感じでしょうか。
5を復元するためには例外が発生した情報だけはとっておいてとり
あえず最後まで復元して、改めて例外を発生し直すとかいうことに
なりそうですが、複数の例外が発生したらどうするかとか悩ましい
限りです。

|ただ, 今は, 前メイルの理由より, API的には
|
|  obj = Marshal.load(src, invalid: proc{|invalid_info| ...})
|
|の方がふさわしいと感じています. 

こちらならcallbackとして呼ばれますから、複数の例外などの問題
はありませんね。

|さらに, invalid_info は適当な(適当な情報を持った)例外がいいんじゃない
|かと思っています. つまり, invalid: が指定されなかったとき発生するもの
|と同じ例外です. procでは, 個々のオブジェクトの再生が失敗したという例外
|を引数として受け取ってそれなりに処理する感じです. 

例外が良いかもしれないことを頭から否定するわけではありません
が、たとえばmarshal_loadメソッドから発生した例外とかは事前に
予測困難ですから、統一的な対応はなかなか難しいかもしれません。

|この問題は, 松本さんの[ruby-dev:36784]にあった:
|
|> Marshalファイルフォーマットには、メジャーバージョンとマイナー
|> バージョンの情報が付加されており、マイナーバージョンの違いは
|> 「上位互換性がある」ので「古いmarshal formatのデータを読もう
|> とすると、警告が出るが処理自体はできる」、メジャーバージョン
|> の違いは「互換性はないので古いデータは読めない」とする仕組み
|> があります。
|
|でのメジャーバージョンを越えるための方法を考えることであり, 結構重要な
|問題だと思っています. 卜部さんもその辺りを気にしているのではと感じてい
|ます. Rubyも今となっては, メジャーバージョンが変わったので互換性がない
|からあきらめてね, とはいえない状態だと考えています.

まあ、そうなんですが、今さらメジャーバージョンが変わることは
ないと思います。とりあえず不足はないと思うし。

気になっている点は

  * ユーザ定義の_load,_dump,marshal_dump,marshal_loadが変化
    したらどうするのか
  * markerとなるオブジェクトはどんなオブジェクトでどんな属性
    を持つのか
  * callbackにするのか、markerを埋め込んだオブジェクトを返す
    のか

などがあります。

                                まつもと ゆきひろ /:|)

In This Thread