Skip to content

Releases: USCiLab/cereal

v1.3.2

28 Feb 03:53
Compare
Choose a tag to compare

This is a minor bug fix and build enhancement release for cereal.

The primary reason for this release is to correctly increment the version for cereal in include/cereal/version.hpp.

Bug fixes and enhancements

New Contributors

  • @mr-c made their first contribution in #740

Full Changelog: v1.3.1...v1.3.2

v1.3.1

17 Jan 05:56
Compare
Choose a tag to compare

This is a bug fix and minor enhancement release for cereal.

This release contains numerous quality of life improvements and bug fixes that improve support on newer compilers. Continuous integration testing has also been overhauled and cereal now uses github actions in place of travis for linux and mac testing.

Many of these changes come from community contributions.

Highlighted fixes and enhancements include:

  • Github actions in place of Travis CI (thanks to @isuruf, #727)
  • Doctest updates (and upstream patches!) to support all targeted compilers (#714, #736)
  • Cmake modernization (thanks to @ClausKlein, #659)

Bug fixes and minor enhancements:

This is not an exhaustive list of changes or individual contributions. See the closed issues or complete changelog for more information.

New contributors

Want to contribute to cereal?

Open source projects take a considerable amount of time to maintain! Contributions are always appreciated, especially when they can be easily integrated.

cereal v 1.3.0

25 Oct 04:45
Compare
Choose a tag to compare

This is a feature and bug fix release for cereal.

This release contains a few new features, numerous quality of life improvements, and bug fixes. Many of these come from community contributions.

With this release, the develop branch is being removed in favor of a single default branch. This means that tagged releases should be used in favor of trusting the master branch as being stable. The development branch for documentation, gh-pages-develop, is also being removed. This change comes with two small side benefits: pull requests will always be against the correct branch, and it will be easy to see development activity at a glance.

New features include:

  • Deferred serialization for smart pointers (#185)
  • Initial support for C++17 standard library variant and optional (thanks to @arximboldi, #448)
  • Support for std::atomic (thanks to @bluescarni, #277)

Fixes and enhancements include:

  • Vastly improved continuous integration testing (#568, #569)
  • Fixed several issues related to compilation on newer compilers (#579, #587, #515)
  • Fixed warnings with -Wconversion and -Wdocumentation (thanks to @WSoptics, #423)
  • Performance improvements for polymorphic serialization (#354)

Minor fixes and enhancements include:

  • Fixed a bug related to CEREAL_REGISTER_DYNAMIC_INIT with shared libraries (thanks to @m2tm, #523)
  • Avoid unnecessary undefined behavior with StaticObject (thanks to @erichkeane, #470)
  • New version.hpp file describes cereal version (#444)
  • Ability to disable size=dynamic attribute in the XML archive (thanks to @hoensr, #401)

Other Notes

  • The static checking for minimal serialization has been relaxed as there were many legitimate cases it was interfering with (thanks to @h-2, #565)
  • The vs2013 directory has been removed in favor of generating solutions with CMake (#574)

This is not an exhaustive list of changes or individual contributions. See the closed issues for more information.

Want to contribute to cereal?

Open source projects take a considerable amount of time to maintain! Contributions are always appreciated, especially when they can be easily integrated.

cereal v 1.2.2

12 Feb 22:19
Compare
Choose a tag to compare

This is a minor feature and bug fix release for cereal.

The majority of fixes and enhancements for this release come from the community. Thank you for your contributions!

Fixes and enhancements include:

  • Polymorphic registrations should always occur as intended, especially on VS2015 (#356)
  • Unit testing overhauled to prepare for modules; dependency on boost test dropped in favor of doctest (#139)
  • Continuous integration testing for Windows using AppVeyor (thanks to @tusharpm, #373)

Minor fixes and enhancements include:

  • Ongoing optimizations for polymorphism support (thanks in part to @dlardi, #335, also see #354 for continuing work)
  • cereal now uses local #include to make it easier to drop into a project (thanks to @kklouzal, #347)
  • Fixed a bug related to threading support (thanks to @auric, #331)
  • Fixed a bug related to loading bitsets (thanks to @drivehappy, #355)
  • Avoid conflict with the check macro on OSX (thanks to @erichkeane, #341, #342)
  • Removed remaining traces of hardcoded RapidJSON namespaces to avoid conflicting with system library (thanks to @Enhex, #351)
  • cereal::size_type can now be configured via macro (#379)
  • Improved traivs continuous integration testing (thanks to @tusharpm, #367)
  • cereal no longer uses c-style casts interanlly (thanks to @laudrup, #363)
  • Improved support for migrating from boost (thanks to @headupinclouds, #366)

See the closed issues for more information.

Known Issues

Polymorphic registration for large numbers of classes is currently slower than it should be. See the ongoing progress towards this at #354.

Want to contribute to cereal?

cereal v 1.2.1

10 Aug 18:56
Compare
Choose a tag to compare

This is a minor feature and bug fix release for cereal.

Notable changes include:

  • Support for g++ 6 (#300)
  • Enhancements to support optional thread safety (#315, #320, thanks to @ChrisBFX)

Minor fixes and enhancements include:

  • Fixed compilation errors with g++ 4.7.3 (#311)
  • New documentation for the PIMPL idiom (#324) as well as threading (#322)

See the closed issues for more information.

cereal v 1.2.0

30 Jun 21:56
Compare
Choose a tag to compare

This is a minor feature and bug fix release for cereal.

This release sat around (much) longer than expected - note that the develop branch can always be used to access the latest changes to cereal.

Notable changes include:

  • RapidJSON updated to a recent version (#121)
  • load_and_construct now supports versioning (#216)
  • Bug fixes for polymorphism and multiple inheritance (#188, #281). See the documentation regarding the new requirement for paths between base and derived classes and read the breaking changes below for more information.

Minor fixes and enhancements include:

  • Improved control over endianness for portable binary archive (#115)
  • Improved documentation (#201, #269, others)
  • Polymorphic support pulled in automatically with <memory> (#193)
  • RapidJSON and RapidXML placed in cereal namespace (#121)
  • Various CMAKE improvements (#222 thanks to @robiwano, #239 and #254 thanks to @tamaskenez)

See the closed issues for more information.

Breaking Changes:

  • As part of improving support for polymorphic serialization, we have introduced a requirement for explicit relations between polymorphic class hierarchies. Whenever you serialize a smart pointer to a polymorphic type, cereal must be able to find a path from the derived type to the base type. cereal is able to do this automatically if you serialize the base class using cereal::base_class or cereal::virtual_base_class. If you do not do this, you must explicitly tell cereal about the relationship using the new macro CEREAL_REGISTER_POLYMORPHIC_RELATION, found in <cereal/types/polymorphic.hpp>.
  • std::bitset has been optimized for binary archives to avoid conversion to a string representation (see #236, thanks to @lyager). As a result of this, any bitset long enough to previously use the string output will not be compatible with the new serialization.

Known Issues

There is currently an error in the compile-time type checking that cereal performs on non-member load_minimal functions that will cause a static_assertion to mistakenly prevent compilation from succeeding. This only affects users using non-member load_minimal functions where the type to support load_minimal requires an unknown template parameter. See #132 for more information and workarounds.

cereal v 1.1.2

08 Jun 18:19
Compare
Choose a tag to compare

This is a minor release for cereal

New Features

  • Added support for std::valarray (thanks to @ilerik, #184)

Minor fixes and enhancements include:

  • Fixed an issue with partial matching for NVP lookup (#167)

See the closed issues for more information.

To see what else is upcoming in the next release, check out milestone 1.2.

cereal v1.1.1

06 Apr 17:23
Compare
Choose a tag to compare

This is a minor bug fix release for cereal

We're moving to more rapid intermediate releases between feature versions of cereal to make it easier for users to take advantage of bug fixes and various improvements. Although these fixes were and will continue to be available in the develop branch, many users are more comfortable using an official released version.

Minor fixes and enhancements include:

  • Compliance with MSVC warning level 4 (#151, #178)
  • Bug fixes related to tuples (thanks to @eschnett and @erichkeane, #175, #176)
  • Empty string fixes for XML archives (#182)
  • Fixes related to polymorphism and serialization function specialization (#180)

See the closed issues for more information.

Potential Breaking Changes

In fixing #180, the type traits is_input_serializable and is_output_serializable were changed to accurately reflect their names. Prior to this release, these traits would return false if a type had more than one serialization function but was restricted to use only one of them through specialization. With this release, these traits base their decision on whether a type is either specialized for exactly one serialization method or has exactly one non-specialized serialization method available. If you relied on the previous (incorrect) behavior in any custom type traits, you may need to make appropriate changes.

Upcoming Changes

We next plan to fix some compilation issues with NVCC for users of cuda 7.0 and then move on to core 1.2 features, which will mainly focus on modules and various enhancements to cereal.

To see what else is upcoming in the next release, check out milestone 1.2.

cereal v1.1.0

19 Jan 21:00
Compare
Choose a tag to compare

This is a minor feature and bug fix release for cereal.

This is our first release since 1.0, and the first release with significant contribution from the community, which will only increase with 1.2. cereal would like to thank its users and contributors for helping make this release possible.

Notable changes include:

  • cereal serialization functions (e.g. load/save/serialize) can now be easily renamed via macros in cereal/macros.hpp (thanks to @mattyclarkson, #60)
  • XML archives properly handle whitespace in text (thanks to @volo-zyko, #109)
  • Class versioning and polymorphic registration work properly with shared libraries (thanks in part to @ImplOfAnImpl, #113, #137)

Minor fixes and enhancements include:

  • Fixed issues related to long serialization on OSX using libc++ (#81)
  • Fixed support of char serialization for XML archives (#116)
  • Fixes and enhancements related to minimal serialization (#79, #80)
  • Properly utilizing R-values in various internal containers (#96)
  • Improved support for ICC (Intel C++ compiler) (#120)
  • Tuple elements are now serialized in proper order with unique names in text archives (thanks in part to @erichkeane, #143). See breaking changes for a special note on this.
  • Additional miscellaneous bug fixes and code refactoring.

See the closed issues for more information.

Breaking Changes:

This release introduces two breaking changes. The first will affect any user that created a custom serialization archive and utilizes minimal serialization functions with that archive:

In fixing #79, we introduced the concept of relating input and output archives using type traits. You now need to use the macro CEREAL_SETUP_ARCHIVE_TRAITS(InArchive, OutArchive) for your custom archives if you wish to support minimal serialization. You can look at the source of any of the cereal provided archives to see an example of this.

In addition, in fixing #80, we introduced a traits class that text based archives should inherit from. This has been applied to JSON and XML archives, but any users with custom text based archives are encouraged to have their text archive inherit from cereal::traits::TextArchive. This is not currently used internally by cereal but may be used by users with the new cereal::traits::is_text_archive traits class.

The second breaking change has to do with tuple serialization. We fixed the order of tuple serialization to go in ascending (get<0>(), get<1>()) instead of descending order. See #143 for more information.

Known Issues

There is currently an error in the compile-time type checking that cereal performs on non-member load_minimal functions that will cause a static_assertion to mistakenly prevent compilation from succeeding. This only affects users using non-member load_minimal functions where the type to support load_minimal requires an unknown template parameter. See #132 for more information and workarounds. This is scheduled to be fixed in the next release.

Various cereal macros such as CEREAL_REGISTER_TYPE do not work properly when used with templated class arguments (e.g. MyClass<OtherType>). You can use a typedef (e.g. using SingleName = MyClass<OtherType>) to avoid the issue. See #141 for the future solution we will use.

Upcoming Changes

The next version of cereal will introduce cereal modules, which will be collections of serialization functions or archives for types outside of the standard library. These will exist outside of the main cereal distribution to avoid cluttering the core of cereal. See module for more information.

To see what else is upcoming in the next release, check out milestone 1.2.

cereal v1.0.0

22 Mar 00:06
Compare
Choose a tag to compare

This is a major feature release for cereal. Notable changes include:

  • Support for Visual Studio 2013 (#11)
  • Support for out of order loading in text (XML/JSON) archives (#13, #14)
  • Full API compatibility with Boost serialization (#8)
  • Support for class versioning (#8)
  • New API for types with no default constructor (#43, #44, #59)
  • New minimal serialization functions (#23)
  • Compliance with the compiler flags -Wextra, -Wshadow, and -pedantic (#17)
  • Fixes related to libc++ compliance, especially on OSX (#49, #51, #72)
  • Support for std::enable_shared_from_this (cereal hall of fame for most annoying standard library feature to support) (#47)
  • Miscellaneous bug fixes, documentation updates, small improvements, and code refactoring

See the closed issues for more information.

cereal is not designed to be inherently backwards compatible across significant releases. There are a few changes in this release that may break some existing use cases:

  • The constructors for XML and JSON archives accept options in a different manner (#64)
  • Types with no default constructor have a new API and new names for required functions
  • Some built in types may have had their serialization format changed, especially in regards to text archives using name-value-pairs.
  • Enums use the new minimal serialization (#23)
  • JSON archives now serialize large types in base 10 instead of base 64 (#72)