-
The ReprHash (now AlignHash) of arrays was wrong and could have led to data corruption. As a result, some serialized file might return an alignment error.
-
The implementation for tuples was broken because it assumed that the memory layout would have been the same of the source layout. We now just support tuples of zero-copy identical types up to size 12, and
TypeHash
for generic tuples up to size 12 to help with the idiomPhantomData<(T, U)>
. For the other cases, it is necessary to create arepr(C)
tuple newtype. Note that up to ε-serde 0.7.0 we provided an erroneous implementation for mixed zero-copy types. If you serialized a structure using such a tuple, it will be no longer deserializable. -
You can now serialize exact-size iterators that will be deserialized as vectors, making it possible to save incrementally structures larger than the available memory.
- Now
SerializeInner
inner has an associated typeSerType
that is used to write the file header. This is done soData<&[u32]>
can be conveniently serialized as if it wereData<Vec<u32>>
. There is no change in the file format.
- Memory-mapping can be disabled using the
mmap
default feature.
- Added missing implementation of
TypeHash
,ReprHash
,MaxSizeOf
,SerializeInner
,DeserializeInner
forRange
,RangeFrom
,RangeFull
,RangeInclusive
,RangeTo
,RangeToInclusive
,Bound
,ControlFlow
.
- The return type of
Deserialize::load_full
is how ananyhow::Result
, analogously to the otherload
functions.
- Added missing implementation of MaxSizeOf for PhantomData.
- Updated MemDbg to 0.2.1.
-
Added const generic parameters values and names to type hash. Note that this change will invalidate type hashes for structures with generic constants.
-
Fixed handling of zero-sized zero-copy structs eps_deserialization.
- Added MemDbg, MemSize, and Debug to most structs.
- Renamed the lifetime
'a
in derives todeserialize_eps_inner_lifetime
to avoid clashes.
util
->utils
to follow new guidelines.