From: keiju@... (=?ISO-2022-JP?B?GyRCQFBETTc9PHkbKEI=?=) Date: 2012-03-19T20:14:45+09:00 Subject: [ruby-dev:45408] Re: Marshal.dumpにおけるインスタンス変数の取り扱いについて けいじゅ@いしつかです. In [ruby-dev:45407] the message: "[ruby-dev:45407] Re: Marshal.dumpに おけるインスタンス変数の取り扱いについて", on Mar/19 18:01(JST) Tanaka Akira writes: >そうした場合、以前の Ruby における Range オブジェクトの marshal フォーマットと >異なるものになったりはしないでしょうか。 異なってきます. ですので, ``marshal_compat_t に関わる全ての処理ですが, 昔の互換性のた めにあるのしょうか?'' とお聞きしたかったのです. いまは, marshal_dump/load とか _dump_data/_dump_load の仕組みがあるので, Range 以外のクラスでわざわざmarshal_compat_tの仕組みを使う必要はないわけです よね? >たとえば、そのようにした Ruby で marshal した Range オブジェクトを >以前の Ruby で unmarshal することは可能でしょうか。 Marshalってそこまで要求されているんでしたっけ? >そうした場合、32bit 環境と 64bit 環境の Ruby で marshal フォーマットが >異なるものになったりはしないでしょうか。 >たとえば、そのようにした 64bit Ruby で marshal した 2**48 を >32bit Ruby で unmarshal することは可能でしょうか。 おー. なるほど, そこまで思いつきませんでした. marshalフォーマット的には互換性があると思いますが, 32bit ruby では, r_objectでTYPE_FIXNUMでもfixnumになるとは限らず Bignumになることがある ことがあるので, r_object側でそれなりの処理をしなくてはいけなくなってし まいますね. __ ---------------------------------------------------->> 石塚 圭樹 <<--- ---------------------------------->> e-mail: keiju@ishitsuka.com <<---