Releases: rkyv/rkyv
v0.4.0
This release changes some major APIs and adds shared pointer support:
#32 Introduces new context traits in place of the previous context struct.
#33 Allows serialization parameterization over the type of the serializer, allowing users to choose the complexity of their serializers and create their own.
#34 Renames Unarchive to Deserialize.
#35 Splits Archive into Serialize to allow a clean hierarchy while still enabling parameterization.
#39 Removes the Resolve trait and simplifies the API.
#37 Performed some cleanup on the rkyv_dyn API.
#36 Added shared and weak pointer support.
#41 Added validation support for shared and weak pointers.
#40 Added deserialization contexts to match serialization and verification contexts.
#47 Introduced Serializers and Deserializers.
#42 Added an attribute to rename the resolver type for archived values.
#51 Fixed a performance regression.
#45 Updated and greatly improved the book's documentation.
#59 Introduced the ptr_meta crate and vastly reduced the number of dangerous transmutations.
#56 Added archive implementations for usize and isize.
#55 Made the support for 32/64-bit much more uniform and consistent.
Thanks to everyone who contributed by asking questions, filing issues, and making feature requests.
v0.3.1
v0.3.0
v0.3.0 changes a few major APIs, adds new features, simplifies the framework, and adds lots of documentation:
- #9 #19 Replace the current archived HashMap implementation with a minimal perfect hashmap implementation. This greatly reduces memory use, but also fixes compatibility issues with the previous implementation. Archive time for hashmaps will likely increase as a result.
- #22 Adds the
Unarchive
trait with counterparts for unsized types and trait objects. Unarchive is a direct replacement for deserialization and converts archived types back into their unarchived forms. - #24 Removes
WriteExt
andSeekExt
and folds their functionality intoWrite
andSeek
respectively. - #23 Improves validation performance by a modest amount in most cases.
- #27 Makes it an error to use both
#[archive(copy)]
and#[archive(name = "...")]
or#[archive(derive(...))]
. - #25, #30 Adds a book with more narrative documentation on rkyv architecture and features.
- #28 Adds more extensive tests and benchmarks.
- #29 Renames
ArchiveSelf
toArchiveCopy
andSelfResolver
toCopyResolver
. The derive argument is now#[archive(copy)]
.
v0.2.1
v0.2.1 adds some small new features and fixes a handful of bugs:
- #14 Empty slices no longer align the writer, which avoids wasting space in some cases.
- #17 With the
strict
feature, all archived types will be#[repr(C)]
. This is probably unnecessary except for the extra cautious. - #18 A loophole in trait object validation has been patched which could have allowed malicious code execution.
- #21 The
Seek
trait has been added, along with thearchive_root
helper. This allows archiving the root object at position 0 in the archive, which is useful for self-describing formats like files and messages. - #20 Ranges, atomics, and nonzero integer types are now supported by rkyv.
v0.2.0
This is a major feature release, adding a wide variety of new features and plugging some existing holes:
#7 Relative pointers now have 64-bit support through the long_rel_ptrs
feature.
#8 Mutable archives can now be created and mutated through pinned references.
#11, #16 bytecheck support has been added, allowing for archive validation. Bytecheck is built with the explicit goal of validating untrusted and potentially malicious data.
#12 The core and std archived types are now exposed and documented.
#13 Duplicate impls now provide a much more friendly error message to help you track down the problem.
#15 Recursive data structures can now be archived properly with use of the #[recursive]
attribute on recursive fields.
The next release will be v0.2.1 with any bugfixes and non-breaking changes.
v0.1.1
This is a bugfix release to address issues discovered after the previous release and minor feature shortcomings:
#2 Crates with no_std support need #![no_std]
#3 Examples allow buffer mutation after archiving
#4 Archived fields don't match the visibility of their unarchived counterparts
#5 Doesn't compile on rustc < 1.47
Actions have also been set up for the repo to automatically build and run tests.