All Versions
10
Latest Version
Avg Release Cycle
255 days
Latest Release
693 days ago

Changelog History

  • v1.3.0 Changes

    October 25, 2019

    ๐Ÿš€ 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.

  • v1.2.2 Changes

    February 12, 2017

    ๐Ÿš€ 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?

  • v1.2.1 Changes

    August 10, 2016

    ๐Ÿš€ 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.

  • v1.2.0 Changes

    June 30, 2016

    ๐Ÿš€ 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.

  • v1.1.2 Changes

    June 08, 2015

    ๐Ÿš€ 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.

  • v1.1.1 Changes

    April 06, 2015

    ๐Ÿš€ 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.

  • v1.1.0 Changes

    January 19, 2015

    ๐Ÿš€ 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 https://github.com/USCiLab/cereal/labels/module for more information.

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

  • v1.0.0 Changes

    March 22, 2014

    ๐Ÿš€ 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)
    • 0๏ธโƒฃ 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)
  • v0.9.1 Changes

    August 26, 2013

    ๐Ÿš€ This release introduces a few new features which can be found in detail here. In summary, they are:

    • Making archives more portable by switching away from size_t internally
    • โž• Adding a portable_binary.hpp archive that handles little vs big endian machines (NOTE: this still needs more testing across architectures. It passes unit tests and simulated endian swaps)
    • ๐Ÿ‘ GCC 4.7.3 is supported as the minimum GCC version
    • ๐Ÿ‘Œ Supports compiling using libc++
  • v0.9.0 Changes

    July 10, 2013

    ๐Ÿš€ This is the initial release of cereal.