Matz,

If you don't already have this on your list of things to fix, let me 
point out that Marshal.dump and Marshal.load do not save and restore the 
encoding of strings.

# -*- coding: utf-8 -*-
s = "?"
puts s.encoding       # Prints utf-8
puts s.size           # Prints 1
t = Marshal.load(Marshal.dump(s))
puts t.encoding       # Prints US-ASCII
puts t.size           # Prints 2

I'm completely unqualified to even attempt a patch to fix this, but I 
suspect that it will require a change to Marshal.MINOR_VERSION, at least.

	David