In article <1084509554.595111.510.nullmailer / picachu.netlab.jp>, matz / ruby-lang.org (Yukihiro Matsumoto) writes: > 1.9 will preserve this information in the near future. > > matz. > --- time.c 30 Apr 2004 11:10:02 -0000 1.100 > +++ time.c 14 May 2004 04:38:36 -0000 > @@ -1904,3 +1904,4 @@ time_mdump(time) > p = 0x1 << 31 | /* 1 */ > - tm->tm_year << 14 | /* 17 */ > + tobj->gmt << 30 | /* 1 */ > + tm->tm_year << 14 | /* 16 */ > tm->tm_mon << 10 | /* 4 */ I found that this change causes Marshal.load error if GMT time is sent from 1.9 to 1.8.1. % ruby -e 'Marshal.dump(Time.new.getgm, STDOUT)'|ruby-1.8.1 -e 'p Marshal.load(STDIN)' -e:1:in `_load': time out of range (ArgumentError) from -e:1:in `load' from -e:1 % ruby -v ruby 1.9.0 (2004-05-15) [i686-linux] % ruby-1.8.1 -v ruby 1.8.1 (2003-12-25) [i686-linux] Why don't you use the bit 31, which is previously filled by 1 ? -- Tanaka Akira