Skip to content

Releases: PavelKisliak/BitSerializer

v0.85

11 Jan 10:54

Choose a tag to compare

  • [ ! ] Introduced deserialization postprocessors (Fallback, TrimWhitespace, ToLowerCase, ToUpperCase).
  • [ ! ] Added the ability to pass through the payload of raw data structures (thanks @hoshinohikari for the idea!).
  • [ + ] Added new serialization option trimStringFields (automatically trims whitespace from all string fields).
  • [ + ] Added new sample payload_passthrough; see also the corresponding section in README.md.
  • [ * ] Reworked all comments in Doxygen style.
  • [ * ] Added prefix BITSERIALIZER_ to the enum registration macros: REGISTER_ENUM and DECLARE_ENUM_STREAM_OPS.
  • [ * ] Moved some header files containing public types to the root directory of bitserializer.
  • [ * ] Fixed typo where the alias for MaxSize was incorrectly named Validate::MinSize (thanks @mattlutz-acre).
  • [ * ] Changed OverflowTypeException to MismatchedTypeException when attempting to load a negative value into an unsigned type.
  • [ * ] [Convert] Changed exception type to invalid_argument when attempting to convert a negative value to an unsigned type.
  • [ * ] [CSV] Optimized deserialization performance (+22% faster from memory and +32% faster from stream).
  • [ * ] [MsgPack] Fixed crash in certain cases when loading corrupted MsgPack data (caused by a nested exception).
  • [ * ] [CSV, PugiXml, RapidYaml] Fixed cross-platform compatibility for serializing special floating-point values (INF, NAN).
  • [ * ] [RapidJson, PugiXml, RapidYaml] Fixed loading of optional objects and arrays from null values (thanks @mattlutz-acre).

v0.80

03 May 12:33

Choose a tag to compare

  • [ ! ] Improved code quality and sanity check of commits with helping ClangTidy and Valgrind.
  • [ ! ] Changed the priority of serialization methods, the internal Serialize() method will have a higher priority than the global one.
  • [ ! ] Validators were moved to namespace BitSerializer::Validate for avoid conflicts when using namespace BitSerializer.
  • [ + ] Added support building a shared (dynamic) library type.
  • [ + ] Added visualization of benchmarks and testing serialization to STD streams.
  • [ + ] Added support for serialization of class hierarchy when the base class uses global SerializeObject() function.
  • [ + ] Added extra arguments into Convert functions (can be used to pass an allocator or an existing string).
  • [ * ] Fixed issue with serialization custom arrays, related to detection size() function (thanks @marton78).
  • [ + ] Added new sample serialize_custom_array and new related chapter in the "README.md".
  • [ * ] Optimized loading into std containers.
  • [ + ] Added publishing of binaries to GitHub releases.
  • [ * ] Rewritten Hello world! example to better demonstrate the library's capabilities.
  • [ * ] [CSV] Fixed reading escaped values from std::istream.
  • [ * ] [MsgPack] Fixed serialization std::tuple (thanks @marton78).
  • [ * ] [MsgPack, RapidJson] Fixed serialization of long, unsigned long types (not compiled on all platforms).
  • [ * ] [RapidJson] Fixed serialization of std::unordered_map and std::unordered_multimap.
  • [ * ] [RapidJson] Fixed loading null to string type, now it will not lead to MismatchedTypes error (similar to numbers).
  • [ * ] [RapidYaml] Added support for the latest released library v0.8.0 (+70% to performance and now works on ARM).
  • [ - ] Removed deprecated CppRestJson archive, please use RapidJson instead.
  • [ - ] Removed deprecated classes and functions - Version, MakeKeyValue, AutoKeyValue, MakeAutoKeyValue.
  • [ - ] Removed deprecated classes and functions - MakeAttributeValue, AutoAttributeValue, MakeAutoAttributeValue.

v0.75

05 Jan 07:24

Choose a tag to compare

  • [ ! ] Added support ARM architecture (including platforms with big-endian byte order).
  • [ + ] Added new option SerializationOptions::utfEncodingErrorPolicy for configure handling of UTF encoding errors.
  • [ + ] Added support for serialization types: std::unordered_multiset, std::unordered_multimap, std::u8string (C++20).
  • [ + ] Added optional overwrite flag to SaveObjectToFile() function (false by default).
  • [ + ] Added PhoneNumber validator.
  • [ * ] Fixed saving of constant values (thanks @marton78).
  • [ * ] Fixed serializing std::set, std::multiset, std::unordered_map and std::unordered_multimap with custom allocator.
  • [ * ] [Convert] Improved UTF encoders, they will return more details about errors.
  • [ * ] [Convert] Moved all UTF encoders and related code into sub-namespace BitSerializer::Convert::Utf.
  • [ * ] [RapidJson] Fixed conflict with GetObject macro from Windows headers (thanks @psallandre).
  • [ * ] [PugiXml] Slightly improved performance of saving to stream.
  • [ - ] [CppRestJson] JSON archive based on CppRestSdk library is deprecated, please use implementation based on RapidJson.

v0.70

31 May 18:29

Choose a tag to compare

  • [ ! ] Added new archive for serialization to MsgPack (built-in implementation, no dependencies).
  • [ ! ] Improved performance for all archives (sufficiently for CSV).
  • [ ! ] Deprecated AutoKeyValue and AutoAttributeValue (use regular KeyValue and AttributeValue for all cases).
  • [ ! ] Deprecated Version structure, please use similar macros BITSERIALIZER_VERSION_*.
  • [ ! ] Optimized string serialization, especially for your own types (use internal function Detail::SerializeString()).
  • [ + ] Added support for serialization types: std::filesystem::path, std::atomic type, std::byte and std::valarray.
  • [ + ] Added config.h file with version macros and several other library options (disable std::filesystem, etc).
  • [ + ] Added EnumAsBin wrapper for able to serialize enum types as integers (registration is not required in this case).
  • [ * ] Implemented Overflow and Mismatched policies for std::chrono types serialization.
  • [ * ] Fixed handling mismatch types for cases when target value is array or object.
  • [ * ] Changed OverflowTypeException to MismatchedTypeException when try to load float to int.
  • [ + ] Added the ability to pass custom error messages to validators.
  • [ + ] Added email validator.
  • [ + ] Added new samples "msgpack_vs_json" and "versioning".
  • [ + ] Added new option maxValidationErrors to SerializationOptions.
  • [ * ] SerializationException with error code UnregisteredEnum will be thrown when serializing unregistered enum.
  • [ + ] [Convert] Added new API function IsConvertible<TIn, TOut>().
  • [ + ] [Convert] Use modern from_chars() and to_chars() for converting float types (if they available).
  • [ + ] [Convert] Allowed to convert any of fundamental types to any other fundamental type.
  • [ * ] [Convert] Fixed floating numbers conversion after failure due to overflow.
  • [ * ] [Convert] Increased number of significant digits for float from 6 to 7.
  • [ * ] [Convert] Changed exception type to invalid_argument when converting a string with floating point number to integer.
  • [ * ] [Convert] Fixed convert (and serialization) negative std::duration with fractions of second.
  • [ * ] Fixed compatibility with C++ 20.
  • [ - ] Removed deprecated REGISTER_ENUM_MAP.
  • [ * ] [RapidYaml] Replaced usages of deprecated API function (compatibility is preserved).
  • [ * ] [RapidYaml] Changed serialization of boolean values to "true|false", as in other archives (thanks @psallandre).

0.65

12 Sep 14:43

Choose a tag to compare

  • [ ! ] The repository has been migrated to GitHub.
  • [ ! ] Added support serialization of chrono::time_point, chrono::duration and time_t.
  • [ ! ] Conversion sub-module: Added conversion of chrono::time_point, chrono::duration and time_t.
  • [ ! ] Functions MakeKeyValue and MakeAutoKeyValuewere marked as deprecated (please use constructors directly).
  • [ ! ] Functions MakeAttributeValue and MakeAutoAttributeValue were marked as deprecated (please use constructors directly).
  • [ + ] Added support serialization of std::tuple (as array in the target archive, cannot be used with CSV archive).
  • [ * ] Applied MismatchedTypesPolicy when serialization enum types.
  • [ * ] Applied Overflow and Mismatched types of policies when loading keys of map types.
  • [ * ] Fixed detection overflow of integers (uses for OverflowNumberPolicy).
  • [ * ] Fixed serialization of std::multimap (was broken in v.0.50).
  • [ * ] Optimized loading of std::unordered_map (pre-reserve size if possible).
  • [ * ] Change measurement units in the performance tests from kb/s to fields/ms.
  • [ - ] Removed deprecated global SerializationContext.
  • [ * ] [RapidJson, CSV] Optimized the performance.