From: Urabe Shyouhei Date: 2008-10-18T07:05:07+09:00 Subject: [ruby-dev:36773] Re: [Bug #650] Marshal.load raises RegexpError 卜部です。 Yukihiro Matsumoto さんは書きました: > まつもと ゆきひろです > > In message "Re: [ruby-dev:36771] Re: [Bug #650] Marshal.load raises RegexpError" > on Sat, 18 Oct 2008 01:05:25 +0900, Urabe Shyouhei writes: > > |> 厳密に言うとmarshalに上位互換性がないのでmarshalのメジャーバー > |> ジョンを変化させるべきなのかもしれませんが、メリットよりもデ > |> メリットの方が大きいのでそれはしない方向を考えてます。 > > |ちなみにどういうデメリットですか? > > 1.8と1.9でmarshalデータが全くやりとりできないというデメリッ > トです。 > まったくということはないでしょう。 1.8で作ったデータを1.9が読めように1.9を作るのは可能なはずです。 # 今でも、古いmarshal formatのデータを読もうとすると、警告が出るが処理自 体はできるはず。 > |すでに作ってしまったPStoreデータベースが困りま > |す、というか、手元で読めなくて若干困っているわけです。なにか(スクリプト > |側ででもかまわないので)既存のMarshal済みデータに対するworkaroundみたいな > |ものはないでしょうか。 > > これからコミットする新しい1.8で古いmarshalデータを一度読み込 > んで、ふたたび書き込むことで1.9でも読めるようにできます。って、 > そういうことじゃないのかな。 > 気づいたんですけど、それだと % ruby1.9 -e 'Marshal.dump(/\u0001/, STDOUT)' | \ ruby1.8 -e 'Marshal.dump(Marshal.load(STDIN), STDOUT)' | \ ruby1.9 -e 'p Marshal.load(STDIN)' とかがroud-tripしなくなると思う(いまはする)んですけど、平気なんですかね。