I've noticed (during the downstreaming ruby/spec in https://github.com/ruby/ruby/pull/12679) that a repeated Float value may be dumped "directly"/"immediately" without an object link on x86 architecture, and with a link in other cases. It seems it depends on whether Float is Flonum or not.
amd64:
Marshal.dump([0.0,0.0])# => "\x04\b[\af\x060@\x06", where @\x06 is an object link
i686:
Marshal.dump([0.0,0.0])# => "\x04\b[\af\x060f\x060", so f\x060 is dumped twice
Both dumps are loaded correctly, so it seems there is no any compatibility issue.
Should dumping be consistent and don't depend on architecture?
IMO Marshal should not depend on obscure implementation details like Flonum, i.e. Float whether fitting in a Flonum or not should be dumped the same with Marshal.
What do others think?