ruby-dev (Japanese) list archive (unofficial mirror)
 help / color / mirror / Atom feed
* [ruby-dev:45372] Marshal.dumpにおけるインスタンス変数の取り扱いについて
@ 2012-03-16 12:58 Keiju ISHITSUKA
  2012-03-17  1:27 ` [ruby-dev:45376] Marshal.dumpにおけるインスタンス変数の取り扱いについて Yukihiro Matsumoto
  0 siblings, 1 reply; 14+ messages in thread
From: Keiju ISHITSUKA @ 2012-03-16 12:58 UTC (permalink / raw
  To: ruby developers list

けいじゅ@いしつかです.

nil, true, Symbol, Fixnum, Class, Module でインスタンス変数が定義され
ていても, Marshal.dump では, その情報がダンプされないようです.

また, Bignum, Floatはインスタンス変数をダンプしているんですよね. 

これは, 仕様なんでしょうか? こうなっている理由がイマイチ理解できない感
じなんですよねぇ.

__
---------------------------------------------------->> 石塚 圭樹 <<---
---------------------------------->> e-mail: keiju@ishitsuka•com <<---

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [ruby-dev:45376] Re: Marshal.dumpにおけるインスタンス変数の取り扱いについて
  2012-03-16 12:58 [ruby-dev:45372] Marshal.dumpにおけるインスタンス変数の取り扱いについて Keiju ISHITSUKA
@ 2012-03-17  1:27 ` Yukihiro Matsumoto
  2012-03-17  6:06   ` [ruby-dev:45377] " 石塚圭樹
  0 siblings, 1 reply; 14+ messages in thread
From: Yukihiro Matsumoto @ 2012-03-17  1:27 UTC (permalink / raw
  To: ruby developers list

まつもと ゆきひろです

In message "Re: [ruby-dev:45372] Marshal.dumpにおけるインスタンス変数の取り扱いについて"
    on Fri, 16 Mar 2012 21:58:23 +0900, keiju@ishitsuka•com (Keiju ISHITSUKA) writes:

|nil, true, Symbol, Fixnum, Class, Module でインスタンス変数が定義され
|ていても, Marshal.dump では, その情報がダンプされないようです.
|
|また, Bignum, Floatはインスタンス変数をダンプしているんですよね. 
|
|これは, 仕様なんでしょうか? こうなっている理由がイマイチ理解できない感
|じなんですよねぇ.

ClassとModuleは「先方の同名ものを使う」ので、手元でインスタン
ス変数があろうと無視します。いずれにしてもこちらの定義を持っ
ていくことはできないので。

nil, true, symbol, fixnumはimmediateなのでインスタンス変数を
持ち歩きたくない(インスタンス変数を追加しちゃうと、グローバル
に影響を与えてしまう)というのがその理由です。ClassやModuleと
違って、そうであってはいけないというわけではないのですが、導
入には慎重でありたいです。あと、むしろNumericのサブクラスであ
るBignumとFloatでインスタンス変数を無視するようにしたいくらい
ですね。

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

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [ruby-dev:45377] Re: Marshal.dumpにおけるインスタンス変数の取り扱いについて
  2012-03-17  1:27 ` [ruby-dev:45376] Marshal.dumpにおけるインスタンス変数の取り扱いについて Yukihiro Matsumoto
@ 2012-03-17  6:06   ` 石塚圭樹
  2012-03-17 15:26     ` [ruby-dev:45381] " Yukihiro Matsumoto
  0 siblings, 1 reply; 14+ messages in thread
From: 石塚圭樹 @ 2012-03-17  6:06 UTC (permalink / raw
  To: ruby developers list

けいじゅ@いしつかです.

In [ruby-dev:45376] the message: "[ruby-dev:45376] Re: Marshal.dumpに
おけるインスタンス変数の取り扱いについて", on Mar/17 10:27(JST)
Yukihiro Matsumoto writes:

>まつもと ゆきひろです

>ClassとModuleは「先方の同名ものを使う」ので、手元でインスタン
>ス変数があろうと無視します。いずれにしてもこちらの定義を持っ
>ていくことはできないので。

それはそうですね. 同名のインスタンス変数が先方にあった場合なんかもどう
するか悩みますしね.

>nil, true, symbol, fixnumはimmediateなのでインスタンス変数を
>持ち歩きたくない(インスタンス変数を追加しちゃうと、グローバル
>に影響を与えてしまう)というのがその理由です。ClassやModuleと
>違って、そうであってはいけないというわけではないのですが、導
>入には慎重でありたいです。

上記のような問題もありますので, やはり, コピーしない方が無難なきがしま
した.

>あと、むしろNumericのサブクラスであるBignumとFloatでインスタンス変数
>を無視するようにしたいくらいですね。

私も後者だろうと思ったのですが, BignumとかFloatでもインスタンス変数を
持つ実装やサブクラスがあってもおかしくはないので, やはり現行が無難な気
がしてきました.

ところで, すごーく細かい話なのですが,

rb_marshal_define_compat() で

    :
    compat = ALLOC(marshal_compat_t);
    compat->newclass = Qnil;
    compat->oldclass = Qnil;
    compat->newclass = newclass;
    compat->oldclass = oldclass;
    :

と一度Qnilを代入しているのですが, これはなぜでしょうか?


__
---------------------------------------------------->> 石塚 圭樹 <<---
---------------------------------->> e-mail: keiju@ishitsuka•com <<---

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [ruby-dev:45381] Re: Marshal.dumpにおけるインスタンス変数の取り扱いについて
  2012-03-17  6:06   ` [ruby-dev:45377] " 石塚圭樹
@ 2012-03-17 15:26     ` Yukihiro Matsumoto
  2012-03-17 17:15       ` [ruby-dev:45382] " Tanaka Akira
  2012-03-18 20:54       ` [ruby-dev:45399] " 石塚圭樹
  0 siblings, 2 replies; 14+ messages in thread
From: Yukihiro Matsumoto @ 2012-03-17 15:26 UTC (permalink / raw
  To: ruby developers list

まつもと ゆきひろです

In message "Re: [ruby-dev:45377] Re: Marshal.dumpにおけるインスタンス変数の取り扱いについて"
    on Sat, 17 Mar 2012 15:06:10 +0900, keiju@ishitsuka•com (石塚圭樹) writes:

|>あと、むしろNumericのサブクラスであるBignumとFloatでインスタンス変数
|>を無視するようにしたいくらいですね。
|
|私も後者だろうと思ったのですが, BignumとかFloatでもインスタンス変数を
|持つ実装やサブクラスがあってもおかしくはないので, やはり現行が無難な気
|がしてきました.

まあ、以前はComplexとか通常のオブジェクトでしたからね。
Numericの下だからという理由でインスタンス変数を全部削られた
らそれはそれで困るでしょうが。ただ、T_OBJECTでないFloatや
Bignumはやっぱり無視してもいいような気がします。

|ところで, すごーく細かい話なのですが,
|
|rb_marshal_define_compat() で
|
|    :
|    compat = ALLOC(marshal_compat_t);
|    compat->newclass = Qnil;
|    compat->oldclass = Qnil;
|    compat->newclass = newclass;
|    compat->oldclass = oldclass;
|    :
|
|と一度Qnilを代入しているのですが, これはなぜでしょうか?

なんでなんでしょうねえ。akrさんのr13413からそうみたいなんで、
彼に聞いてみないと。

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [ruby-dev:45382] Re: Marshal.dumpにおけるインスタンス変数の取り扱いについて
  2012-03-17 15:26     ` [ruby-dev:45381] " Yukihiro Matsumoto
@ 2012-03-17 17:15       ` Tanaka Akira
  2012-03-18 20:54       ` [ruby-dev:45399] " 石塚圭樹
  1 sibling, 0 replies; 14+ messages in thread
From: Tanaka Akira @ 2012-03-17 17:15 UTC (permalink / raw
  To: ruby developers list

2012年3月18日0:26 Yukihiro Matsumoto <matz@ruby-lang.org>:

> |ところで, すごーく細かい話なのですが,
> |
> |rb_marshal_define_compat() で
> |
> |    :
> |    compat = ALLOC(marshal_compat_t);
> |    compat->newclass = Qnil;
> |    compat->oldclass = Qnil;
> |    compat->newclass = newclass;
> |    compat->oldclass = oldclass;
> |    :
> |
> |と一度Qnilを代入しているのですが, これはなぜでしょうか?
>
> なんでなんでしょうねえ。akrさんのr13413からそうみたいなんで、
> 彼に聞いてみないと。

r13413 では rb_gc_register_address が間に入っていたので、
そこで GC が起きることへの対策ですね。

% svn diff -c 13413 --diff-cmd diff -x '-u -p'
...
+    compat = ALLOC(marshal_compat_t);
+    compat->newclass = Qnil;
+    compat->oldclass = Qnil;
+    rb_gc_register_address(&compat->newclass);
+    rb_gc_register_address(&compat->oldclass);
+    compat->newclass = newclass;
+    compat->oldclass = oldclass;
+    compat->dumper = dumper;
+    compat->loader = loader;
...

rb_gc_register_address 内では ALLOC するので GC が起きる可能性があり、
GC が起きたときに compat->newclass や compat->oldclass にゴミが入っていると
よろしくなかったんじゃないでしょうか。
-- 
[田中 哲][たなか あきら][Tanaka Akira]

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [ruby-dev:45399] Re: Marshal.dumpにおけるインスタンス変数の取り扱いについて
  2012-03-17 15:26     ` [ruby-dev:45381] " Yukihiro Matsumoto
  2012-03-17 17:15       ` [ruby-dev:45382] " Tanaka Akira
@ 2012-03-18 20:54       ` 石塚圭樹
  2012-03-19  0:44         ` [ruby-dev:45401] " Tanaka Akira
  2012-03-19  4:16         ` [ruby-dev:45403] " Yukihiro Matsumoto
  1 sibling, 2 replies; 14+ messages in thread
From: 石塚圭樹 @ 2012-03-18 20:54 UTC (permalink / raw
  To: ruby developers list

けいじゅ@いしつかです.

In [ruby-dev:45381] the message: "[ruby-dev:45381] Re: Marshal.dumpに
おけるインスタンス変数の取り扱いについて", on Mar/18 00:26(JST)
Yukihiro Matsumoto writes:

>まつもと ゆきひろです

>まあ、以前はComplexとか通常のオブジェクトでしたからね。
>Numericの下だからという理由でインスタンス変数を全部削られた
>らそれはそれで困るでしょうが。

たしかに.

>ただ、T_OBJECTでないFloatやBignumはやっぱり無視してもいいような気がし
>ます。

そうですねぇ. それらの, (Cレベル)サブクラスではインスタンス変数は定義
するな, もしくはそれなりのmashalメソッド定義しろって規定するのはありか
も.

>|rb_marshal_define_compat() で
>なんでなんでしょうねえ。akrさんのr13413からそうみたいなんで、
>彼に聞いてみないと。

(次に続きます)

In [ruby-dev:45382] the message: "[ruby-dev:45382] Re: Marshal.dumpに
おけるインスタンス変数の取り扱いについて", on Mar/18 02:15(JST) Tanaka
Akira writes:

>r13413 では rb_gc_register_address が間に入っていたので、
>そこで GC が起きることへの対策ですね。
>rb_gc_register_address 内では ALLOC するので GC が起きる可能性があり、
>GC が起きたときに compat->newclass や compat->oldclass にゴミが入っていると
>よろしくなかったんじゃないでしょうか。

なるほど, その状態なら理解できます.

ということは, すくなくとも, 今は必要ないという事で良いんですよね?

さらに細かくなるのですが...

marshal_compat_t に関わる全ての処理ですが, 昔の互換性のためにあるのしょ
うか? 使っているのは, Rangeだけですし この仕組みを使わなくても代替でき, 
かつ, 今の仕組みを使うほうがエレガントな気がしますが?

__
---------------------------------------------------->> 石塚 圭樹 <<---
---------------------------------->> e-mail: keiju@ishitsuka•com <<---

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [ruby-dev:45401] Re: Marshal.dumpにおけるインスタンス変数の取り扱いについて
  2012-03-18 20:54       ` [ruby-dev:45399] " 石塚圭樹
@ 2012-03-19  0:44         ` Tanaka Akira
  2012-03-19  8:49           ` [ruby-dev:45405] " 石塚圭樹
  2012-03-19  4:16         ` [ruby-dev:45403] " Yukihiro Matsumoto
  1 sibling, 1 reply; 14+ messages in thread
From: Tanaka Akira @ 2012-03-19  0:44 UTC (permalink / raw
  To: ruby developers list

2012年3月19日5:54 石塚圭樹 <keiju@ishitsuka•com>:

>>r13413 では rb_gc_register_address が間に入っていたので、
>>そこで GC が起きることへの対策ですね。
>>rb_gc_register_address 内では ALLOC するので GC が起きる可能性があり、
>>GC が起きたときに compat->newclass や compat->oldclass にゴミが入っていると
>>よろしくなかったんじゃないでしょうか。
>
> なるほど, その状態なら理解できます.
>
> ということは, すくなくとも, 今は必要ないという事で良いんですよね?

そう思います。

> marshal_compat_t に関わる全ての処理ですが, 昔の互換性のためにあるのしょ
> うか? 使っているのは, Rangeだけですし この仕組みを使わなくても代替でき,
> かつ, 今の仕組みを使うほうがエレガントな気がしますが?

今の仕組みというのが何を指しているのかちょっとわからないのですが、
Range を T_OBJECT に戻せば問題ないと思います。
-- 
[田中 哲][たなか あきら][Tanaka Akira]

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [ruby-dev:45403] Re: Marshal.dumpにおけるインスタンス変数の取り扱いについて
  2012-03-18 20:54       ` [ruby-dev:45399] " 石塚圭樹
  2012-03-19  0:44         ` [ruby-dev:45401] " Tanaka Akira
@ 2012-03-19  4:16         ` Yukihiro Matsumoto
  2012-03-19  8:59           ` [ruby-dev:45406] " 石塚圭樹
  1 sibling, 1 reply; 14+ messages in thread
From: Yukihiro Matsumoto @ 2012-03-19  4:16 UTC (permalink / raw
  To: ruby developers list

まつもと ゆきひろです

In message "Re: [ruby-dev:45399] Re: Marshal.dumpにおけるインスタンス変数の取り扱いについて"
    on Mon, 19 Mar 2012 05:54:02 +0900, keiju@ishitsuka•com (石塚圭樹) writes:

|>ただ、T_OBJECTでないFloatやBignumはやっぱり無視してもいいような気がし
|>ます。
|
|そうですねぇ. それらの, (Cレベル)サブクラスではインスタンス変数は定義
|するな, もしくはそれなりのmashalメソッド定義しろって規定するのはありか
|も.

redmineに登録してみましょうか。

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [ruby-dev:45405] Re: Marshal.dumpにおけるインスタンス変数の取り扱いについて
  2012-03-19  0:44         ` [ruby-dev:45401] " Tanaka Akira
@ 2012-03-19  8:49           ` 石塚圭樹
  2012-03-19  9:01             ` [ruby-dev:45407] " Tanaka Akira
  0 siblings, 1 reply; 14+ messages in thread
From: 石塚圭樹 @ 2012-03-19  8:49 UTC (permalink / raw
  To: ruby developers list

けいじゅ@いしつかです.

In [ruby-dev:45401] the message: "[ruby-dev:45401] Re: Marshal.dumpに
おけるインスタンス変数の取り扱いについて", on Mar/19 09:44(JST) Tanaka
Akira writes:

>> ということは, すくなくとも, 今は必要ないという事で良いんですよね?
>そう思います。

了解です.

>> marshal_compat_t に関わる全ての処理ですが, 昔の互換性のためにあるのしょ
>> うか? 使っているのは, Rangeだけですし この仕組みを使わなくても代替でき,
>> かつ, 今の仕組みを使うほうがエレガントな気がしますが?

>今の仕組みというのが何を指しているのかちょっとわからないのですが、
>Range を T_OBJECT に戻せば問題ないと思います。

言葉足らずですいません. 
Range#marshal_dump/load とか Range#_dump_data/_dump_loadを定義すれば良
いのでは? という意味でした.


さらに, もうひとつ質問:
w_objectで

    :
    else if (FIXNUM_P(obj)) {
#if SIZEOF_LONG <= 4
	w_byte(TYPE_FIXNUM, arg);
	w_long(FIX2INT(obj), arg);
#else
	if (RSHIFT((long)obj, 31) == 0 || RSHIFT((long)obj, 31) == -1) {
	    w_byte(TYPE_FIXNUM, arg);
	    w_long(FIX2LONG(obj), arg);
	}
	else {
	    w_object(rb_int2big(FIX2LONG(obj)), arg, limit);
	}
#endif
    }
    :

とあるのですが, サイズで処理を分けなくて(前半部分だけ)も動作する気がす
るのですが(w_longの#ifdef内も削除)? 

__
---------------------------------------------------->> 石塚 圭樹 <<---
---------------------------------->> e-mail: keiju@ishitsuka•com <<---

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [ruby-dev:45406] Re: Marshal.dumpにおけるインスタンス変数の取り扱いについて
  2012-03-19  4:16         ` [ruby-dev:45403] " Yukihiro Matsumoto
@ 2012-03-19  8:59           ` 石塚圭樹
  0 siblings, 0 replies; 14+ messages in thread
From: 石塚圭樹 @ 2012-03-19  8:59 UTC (permalink / raw
  To: ruby developers list

けいじゅ@いしつかです.

In [ruby-dev:45403] the message: "[ruby-dev:45403] Re: Marshal.dumpに
おけるインスタンス変数の取り扱いについて", on Mar/19 13:16(JST)
Yukihiro Matsumoto writes:

>まつもと ゆきひろです

>redmineに登録してみましょうか。

おまかせします.

__
---------------------------------------------------->> 石塚 圭樹 <<---
---------------------------------->> e-mail: keiju@ishitsuka•com <<---

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [ruby-dev:45407] Re: Marshal.dumpにおけるインスタンス変数の取り扱いについて
  2012-03-19  8:49           ` [ruby-dev:45405] " 石塚圭樹
@ 2012-03-19  9:01             ` Tanaka Akira
  2012-03-19 11:14               ` [ruby-dev:45408] " 石塚圭樹
  0 siblings, 1 reply; 14+ messages in thread
From: Tanaka Akira @ 2012-03-19  9:01 UTC (permalink / raw
  To: ruby developers list

2012年3月19日17:49 石塚圭樹 <keiju@ishitsuka•com>:

> 言葉足らずですいません.
> Range#marshal_dump/load とか Range#_dump_data/_dump_loadを定義すれば良
> いのでは? という意味でした.

そうした場合、以前の Ruby における Range オブジェクトの marshal フォーマットと
異なるものになったりはしないでしょうか。
たとえば、そのようにした Ruby で marshal した Range オブジェクトを
以前の Ruby で unmarshal することは可能でしょうか。

> さらに, もうひとつ質問:
> w_objectで
>
>    :
>    else if (FIXNUM_P(obj)) {
> #if SIZEOF_LONG <= 4
>        w_byte(TYPE_FIXNUM, arg);
>        w_long(FIX2INT(obj), arg);
> #else
>        if (RSHIFT((long)obj, 31) == 0 || RSHIFT((long)obj, 31) == -1) {
>            w_byte(TYPE_FIXNUM, arg);
>            w_long(FIX2LONG(obj), arg);
>        }
>        else {
>            w_object(rb_int2big(FIX2LONG(obj)), arg, limit);
>        }
> #endif
>    }
>    :
>
> とあるのですが, サイズで処理を分けなくて(前半部分だけ)も動作する気がす
> るのですが(w_longの#ifdef内も削除)?

そうした場合、32bit 環境と 64bit 環境の Ruby で marshal フォーマットが
異なるものになったりはしないでしょうか。
たとえば、そのようにした 64bit Ruby で marshal した 2**48 を
32bit Ruby で unmarshal することは可能でしょうか。
-- 
[田中 哲][たなか あきら][Tanaka Akira]

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [ruby-dev:45408] Re: Marshal.dumpにおけるインスタンス変数の取り扱いについて
  2012-03-19  9:01             ` [ruby-dev:45407] " Tanaka Akira
@ 2012-03-19 11:14               ` 石塚圭樹
  2012-03-19 12:25                 ` [ruby-dev:45409] " Tanaka Akira
  0 siblings, 1 reply; 14+ messages in thread
From: 石塚圭樹 @ 2012-03-19 11:14 UTC (permalink / raw
  To: ruby developers list

けいじゅ@いしつかです.

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 <<---

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [ruby-dev:45409] Re: Marshal.dumpにおけるインスタンス変数の取り扱いについて
  2012-03-19 11:14               ` [ruby-dev:45408] " 石塚圭樹
@ 2012-03-19 12:25                 ` Tanaka Akira
  2012-03-19 14:24                   ` [ruby-dev:45410] " 石塚圭樹
  0 siblings, 1 reply; 14+ messages in thread
From: Tanaka Akira @ 2012-03-19 12:25 UTC (permalink / raw
  To: ruby developers list

2012年3月19日20:14 石塚圭樹 <keiju@ishitsuka•com>:

> ですので, ``marshal_compat_t に関わる全ての処理ですが, 昔の互換性のた
> めにあるのしょうか?'' とお聞きしたかったのです. いまは,
> marshal_dump/load とか _dump_data/_dump_load の仕組みがあるので, Range
> 以外のクラスでわざわざmarshal_compat_tの仕組みを使う必要はないわけです
> よね?

互換性が理由なのはそのとおりです。

Ruby 1.8 と Ruby 1.9 の間で marshal したデータをやりとりしたいといった
理由が「昔の」といいきってしまっていいのかどうかはよくわかりません。

>>たとえば、そのようにした Ruby で marshal した Range オブジェクトを
>>以前の Ruby で unmarshal することは可能でしょうか。
>
> Marshalってそこまで要求されているんでしたっけ?

要求されているように感じています。

なお、Range を T_OBJECT に戻すのはありうると思っています。
-- 
[田中 哲][たなか あきら][Tanaka Akira]

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [ruby-dev:45410] Re: Marshal.dumpにおけるインスタンス変数の取り扱いについて
  2012-03-19 12:25                 ` [ruby-dev:45409] " Tanaka Akira
@ 2012-03-19 14:24                   ` 石塚圭樹
  0 siblings, 0 replies; 14+ messages in thread
From: 石塚圭樹 @ 2012-03-19 14:24 UTC (permalink / raw
  To: ruby developers list

けいじゅ@いしつかです.

In [ruby-dev:45409] the message: "[ruby-dev:45409] Re: Marshal.dumpに
おけるインスタンス変数の取り扱いについて", on Mar/19 21:25(JST) Tanaka
Akira writes:

>> marshal_dump/load とか _dump_data/_dump_load の仕組みがあるので, Range
>> 以外のクラスでわざわざmarshal_compat_tの仕組みを使う必要はないわけです
>> よね?
>
>互換性が理由なのはそのとおりです。

了解しましたです.

>Ruby 1.8 と Ruby 1.9 の間で marshal したデータをやりとりしたいといった
>理由が「昔の」といいきってしまっていいのかどうかはよくわかりません。

それは, それはそれほど昔ではないですし, こまる事になりそう.

でも, marshalのフォーマットが異なっていたことありませんでした? 1.9系同
士ですが, フォーマットが異なっているらしくてバージョンをそろえたことが
あった気がするんですけど...

>> Marshalってそこまで要求されているんでしたっけ?
>要求されているように感じています。

1.8系では互換性ないといやかもしれないですね.

>なお、Range を T_OBJECT に戻すのはありうると思っています。

いや. 別に, どうして欲しいって話ではなく, どうしてこうなっているのか知
りたかっただけですので.

いろいろと教えてくださりありがとうございました.

__
---------------------------------------------------->> 石塚 圭樹 <<---
---------------------------------->> e-mail: keiju@ishitsuka•com <<---

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2012-03-19 14:41 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-03-16 12:58 [ruby-dev:45372] Marshal.dumpにおけるインスタンス変数の取り扱いについて Keiju ISHITSUKA
2012-03-17  1:27 ` [ruby-dev:45376] Marshal.dumpにおけるインスタンス変数の取り扱いについて Yukihiro Matsumoto
2012-03-17  6:06   ` [ruby-dev:45377] " 石塚圭樹
2012-03-17 15:26     ` [ruby-dev:45381] " Yukihiro Matsumoto
2012-03-17 17:15       ` [ruby-dev:45382] " Tanaka Akira
2012-03-18 20:54       ` [ruby-dev:45399] " 石塚圭樹
2012-03-19  0:44         ` [ruby-dev:45401] " Tanaka Akira
2012-03-19  8:49           ` [ruby-dev:45405] " 石塚圭樹
2012-03-19  9:01             ` [ruby-dev:45407] " Tanaka Akira
2012-03-19 11:14               ` [ruby-dev:45408] " 石塚圭樹
2012-03-19 12:25                 ` [ruby-dev:45409] " Tanaka Akira
2012-03-19 14:24                   ` [ruby-dev:45410] " 石塚圭樹
2012-03-19  4:16         ` [ruby-dev:45403] " Yukihiro Matsumoto
2012-03-19  8:59           ` [ruby-dev:45406] " 石塚圭樹

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).