まつもと ゆきひろです

In message "[ruby-dev:20583] Re: Marshal upgrade"
    on 03/07/10, Yukihiro Matsumoto <matz / ruby-lang.org> writes:

|現時点では変更の確認を取りたいのが主目的で、変更される仕様は
|固まっていません。
|
|最初に考えていたのは
|
| _dumpが文字列を返す
|        今まで通り、フォーマットも同じ。
|        _loadには文字列が渡る
|
| _dumpが文字列以外を返す
|        w_objectの対象にする。
|        フォーマットは違う(新しいTYPEを導入する)
|        _loadにはオブジェクトが渡る
|
|というので、これだとAPI的な変更が最小限で済むのですが、循環
|問題が解決しないので、再考を余儀なくされています。
|
|まあ、現時点では咳さんの変更の承諾が得られたことが重要と。

というわけで、preview5以後に突っ込んでしまいました。仕様は

  * まったく独立なmarshal_dumpメソッド、marshal_loadメソッド
    を使う。両方ともインスタンスメソッド。

  * marshal_dumpメソッドは引数を取らない。任意のオブジェクト
    を返す。Marshal.dumpは返されたオブジェクトをdumpする。

  * marshal_loadメソッドはmarshal_dumpが返したオブジェクトの
    コピーを受け取り、元の状態を復元する。marshal_loadのレシー
    バはallocateされたばかり(initializeが呼ばれていない)オブ
    ジェクト。

です。現時点ではmarshal_dumpを定義しているオブジェクトが存在
しないので、Marshal結果はは同じものになるはずです。フォーマッ
トのマイナーバージョンは変化させません(4.8のまま)。

ということで、よろしく。preview5以後の変更が意外と大きいので、
preview6が必要な気がしてきました。

明日あたり出すかな。

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