A C++11 library for serialization
BSD-3-CLAUSE License
Bot releases are visible (Hide)
The primary reason for this release is to correctly increment the version for cereal in include/cereal/version.hpp
.
Full Changelog: https://github.com/USCiLab/cereal/compare/v1.3.1...v1.3.2
Published by AzothAmmo almost 3 years ago
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.
This is not an exhaustive list of changes or individual contributions. See the closed issues or complete changelog for more information.
Open source projects take a considerable amount of time to maintain! Contributions are always appreciated, especially when they can be easily integrated.
Published by AzothAmmo almost 5 years ago
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.
variant
and optional
(thanks to @arximboldi, #448)std::atomic
(thanks to @bluescarni, #277)-Wconversion
and -Wdocumentation
(thanks to @WSoptics, #423)CEREAL_REGISTER_DYNAMIC_INIT
with shared libraries (thanks to @M2tM, #523)StaticObject
(thanks to @erichkeane, #470)version.hpp
file describes cereal version (#444)size=dynamic
attribute in the XML archive (thanks to @hoensr, #401)minimal
serialization has been relaxed as there were many legitimate cases it was interfering with (thanks to @h-2, #565)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.
Open source projects take a considerable amount of time to maintain! Contributions are always appreciated, especially when they can be easily integrated.
Published by AzothAmmo over 7 years ago
The majority of fixes and enhancements for this release come from the community. Thank you for your contributions!
#include
to make it easier to drop into a project (thanks to @kklouzal, #347)check
macro on OSX (thanks to @erichkeane, #341, #342)cereal::size_type
can now be configured via macro (#379)See the closed issues for more information.
Polymorphic registration for large numbers of classes is currently slower than it should be. See the ongoing progress towards this at #354.
Published by AzothAmmo about 8 years ago
See the closed issues for more information.
Published by AzothAmmo over 8 years ago
This release sat around (much) longer than expected - note that the develop branch can always be used to access the latest changes to cereal.
load_and_construct
now supports versioning (#216)<memory>
(#193)See the closed issues for more information.
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.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.
Published by AzothAmmo over 9 years ago
See the closed issues for more information.
To see what else is upcoming in the next release, check out milestone 1.2.
Published by AzothAmmo over 9 years ago
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.
See the closed issues for more information.
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.
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.
Published by AzothAmmo almost 10 years ago
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.
cereal/macros.hpp
(thanks to @mattyclarkson, #60)See the closed issues for more information.
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.
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.
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.
Published by AzothAmmo over 10 years ago
This is a major feature release for cereal. Notable changes include:
std::enable_shared_from_this
(cereal hall of fame for most annoying standard library feature to support) (#47)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:
Published by AzothAmmo about 11 years ago
This release introduces a few new features which can be found in detail here. In summary, they are:
size_t
internallyportable_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)Published by AzothAmmo over 11 years ago
This is the initial release of cereal.