I was thinking about writing a patch to modify how Marshal handles
floats, right now it dumps them using sprintf(3) and stores the
resulting string in the Marshal stream. I’d like to see it handle
floats the same way that Array#pack does:
[400.53].pack(‘g’).length == 4
[400.53].pack(‘G’).length == 8
Marshal.dump(400.53).length - 3 == 22
(and is slower, to boot)
I want to make sure, though, that this would be an acceptable patch.
I can’t think why it would be OK for Array#pack to work this way and
not Marshal, but is there any particular reason why it can’t be done?
Obviously it would break backwards compatability with older Marshal
dumps, but I don’t think they’re often used for long-term storage,
– Brian P.