Skip to content

Releases: rkyv/rkyv

v0.4.0

19 Feb 08:57
Compare
Choose a tag to compare

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

02 Feb 02:01
Compare
Choose a tag to compare

This bugfix corrects atomic implementations for embedded systems and untangles some dev dependencies that made it difficult to publish crates.

Bugs fixed:

  • #58 Atomic support is now enabled and disabled properly for embedded systems.

v0.3.0

14 Jan 21:06
Compare
Choose a tag to compare

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 and SeekExt and folds their functionality into Write and Seek 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 to ArchiveCopy and SelfResolver to CopyResolver. The derive argument is now #[archive(copy)].

v0.2.1

12 Dec 04:09
Compare
Choose a tag to compare

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 the archive_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

19 Nov 02:46
Compare
Choose a tag to compare

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

13 Nov 04:24
Compare
Choose a tag to compare

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.