All Versions
25
Latest Version
Avg Release Cycle
92 days
Latest Release
61 days ago

Changelog History
Page 1

  • v5.2.3 Changes

    December 01, 2022

    ๐Ÿ‘Œ Improvements

    • ๐Ÿ”จ refactored bit-packing implementation to make sure that MeasureSize adapter acts as all other adapters and is not bit-packing enabled by default. #91
    • ๐Ÿ‘ BufferAdapterTraits::increaseBufferSize now accepts current size and minimum required size in order to better allocate required memory.

    ๐Ÿ› Bug fixes

    • ๐Ÿ›  fix shadow warning in gcc8 #87 (thanks to museghost and brian.kim)

    Other notes

    • ๐Ÿ’… format whole code base in Mozilla style.
    • simplified adapters implementations
  • v5.2.2 Changes

    August 31, 2021

    ๐Ÿ‘Œ Improvements

    • โž• add 16 byte value support #75 (thanks to Victor Stewart)
    • avoid reinitializing nontrivial std::variant #77 (thanks to Robbert van der Helm)
    • avoid reinitializing nontrivial std::optional.

    ๐Ÿ› Bug fixes

    • ๐Ÿ›  fix missing headers for GCC11, also added test to check includes #82 (thanks to michael-mueller-git)
    • fixed StdBitset to build on macOS (proxy type, returned by [] operator wasn't correctly converted to unsigned integral type).

    Other notes

    • โœ… migrated to Github actions for running tests.
    • ๐Ÿ›  fixes few warnings on MSVC compiler.
    • ๐ŸŽ now tests are also run on macOS and Windows.
  • v5.2.1 Changes

    November 14, 2020

    ๐Ÿ‘Œ Improvements

    • Input/OutputBufferAdapter now statically asserts that underlying type is 1byte in size.

    ๐Ÿ› Bug fixes

    • ๐Ÿ›  fixed serialization in StdBitset when it's size is less then unsigned long long.
  • v5.2.0 Changes

    November 09, 2020

    ๐Ÿ”‹ Features

    • new extension StdBitset.

    ๐Ÿ‘Œ Improvements

    • โœ‚ removed unused variable warnings in release build, where max_size variable during serialization is ignored.
    • โœ‚ removed unknown pragmas warnings for GCC/Clang (thanks to Mmpuskas).
  • v5.1.0 Changes

    June 08, 2020

    ๐Ÿ”‹ Features

    • new extension StdAtomic (thanks for VelocityRa).

    ๐Ÿ‘Œ Improvements

    • ๐Ÿšš [examples](examples) no longer include bitsery in global namespace (removed using namespace bitsery).
    • โœ‚ removed multiple warning regarding integer conversions (thanks to tower120).
    • โœ‚ removed unnecessary dynamic_cast from BasicInput/OutputStreamAdapter (thanks to tower120).
    • ๐Ÿ›  fixed some include paths, now you can basically to copy/paste bitsery include directory to your project without cmake support.

    Other notes

    • โž• added tutorial of how to write your own extension ([here])(doc/tutorial/first_extension.md).
    • ๐Ÿ— now gtest 1.10 is required if you want to build tests.
  • v5.0.3 Changes

    January 29, 2020

    ๐Ÿ‘Œ Improvements

    • rewritten buffer adapters (and BasicBufferedOutputStreamAdapter) to fix UB when incrementing past the end iterator, and added an additional read/write method that accepts a number of bytes to be read/written at compile time. This provides additional optimization opportunities.
  • v5.0.2 Changes

    January 17, 2020

    ๐Ÿ› Bug fixes

    • ๐Ÿ›  fixed a bug when deserializing non-default constructible containers (thanks to nicktrandafil).
    • ๐Ÿ›  fixed issue with a brace initialization in extension StdMap and StdSet. It was working on major compilers, but it wasn't C++11 compatible. More info about it in stackoverflow (thanks to BotellaA).

    Other notes

    • added [patches/centos7_gcc4.8.2.diff](patches/centos7_gcc4.8.2.diff) that allows to use bitsery with gcc4.8.2 on Centos7 (thanks to BotellaA). More information on patches is [here](patches/README.md).
    • โž• added documentation on how [extensions](doc/design/extensions.md) work.
  • v5.0.1 Changes

    August 21, 2019

    ๐Ÿ› Bug fixes

    • ๐Ÿ›  fixed polymorphic handler deleter in PolymorphicContext, now it is captured by value and doesn't depend on lifetime of PolymorphicContext instance.
    • ๐Ÿ›  fixed compilation errors in ext/utils/pointer_utils.h on macOS.
    • โฌ‡๏ธ reduced warnings on Visual Studio (thanks to BotellaA)
  • v5.0.0 Changes

    July 09, 2019

    This version reduces library complexity by removing redundant features and changing existing ones. โž• Additionally, it provides more customization options for serialization/deserialization flow.

    ๐Ÿ”‹ Features

    • added config options to enable/disable checking input adapter and data errors: CheckAdapterErrors and CheckDataErrors. ๐ŸŽ If you can trust your data this will improve deserialization performance. Error checks are enabled by default.
    • all memory allocation in the library can be customized using memory resource (similar to c++ 17 memory resource)
      • contexts that internally requires to allocate memory are: PointerLinkingContext, PolymorphicContext, and InheritanceContext.
      • extensions, for pointers like types, that allocate memory are: PointerOwner and StdSharedPtr. More information about pointer extension can be found [here](doc/design/pointers.md).

    ๐Ÿ’ฅ Breaking changes

    • improved design for serializer/deserializer context. It was hard to understand and easy to misuse, so several changes were made.
      • removed internal context from config, because it doesn't actually solve any problems, only allows doing the same thing in multiple ways.
      • removed T* context(). This allowed to get a context that is std::tuple<...>, but you can do the same with other methods, by wrapping in an outer tuple, e.g. std::tuple<std::tuple<...>>.
      • if a context is defined, in serializer/deserializer, it is passed (and stored) by reference as a first argument (instead of pointer). Other parameters are forwarded to a input/output adapter.
      • changed signature T* context<T> to T& context<T>, this will either return context or doesn't compile, previously it could also return nullptr.
      • context<T> and contextOrNull<T> now also check if a type is convertible, so it can work with base classes (e.g. you can require a base class of context in extension, but provided child implementation instead). This allows to further customise extension by providing different context implementations.
    • reworked BufferedSessions. It was the only feature that was in a bitsery core and required allocations. ๐Ÿšš It was removed and instead was added ability to change read/write position directly for buffered adapters. This is also a more flexible solution, and can be used to implement solutions that allow deserialization in-place like flatbuffers does.
    • ๐Ÿ”„ changed the signature to all serialization functions that accept lambdas, instead of accepting (T& ), now accept (S& ,T& ). This allows much easier serialization customization, because no additional state is required in a functor, and these methods can now accept function pointers or stateless lambdas.
    • โœ‚ removed various functions/classes that became redundant:
      • AdapterWriter/Reader classes - their functionality is moved to adapters.
      • AdapterAccess class - now serializer/deserializer expose adapter directly via adapter() method. Additionally adapter can be moved out if serializer/deserializer is rvalue .e.g auto adapter = std::move(ser).adapter();.
      • removed Writer/Reader parameters from extensions serialize/deserialize methods - because serializer/deserializer now expose adapter directly.
      • archive from serializer/deserializer - because operator() do the same thing, but it is more terse, and is compatible with cereal library.
      • align function from serializer/deserializer - it can now be called directly on input/output adapter.
      • UnsafeInputBufferAdapter - instead config option is provided to disable adapter read errors (CheckAdapterErrors).
      • isValidState from stream output adapter - it didn't provide any additional information that couldn't be queried directly on stream object.
      • registerBasesList from PolymorphicContext - it was previously deprecated.
    • ๐Ÿ“‡ renamed various classes/functions and files:
      • flexible to brief_syntax - this is a big change and might affect a lot of code, but it was necessary, because this name was contradicting to what it actually was trying to achieve. Migration should not be very hard, just global replace flexible to brief_syntax and it should work:).
      • BasicSerializer/BasicDeserializer to Serializer/Deserializer - previously they were aliases, but after removing adapter writer/reader, serializer/deserializer signature has changed to Serializer/Deserializer<Adapter, Context=void> and no longer need any alias.
      • setError to error for input adapters.
      • NetworkEndianness to Endianness in config.
      • MeasureSize adapter moved to separate file /adapter/measure_size.h

    ๐Ÿ‘Œ Improvements

    • โž• added quickSerialization/Deserialization overloads that can accept context as first parameter.
    • added convenience classes (functors) FtorExtValue, FtorExtObject, in places where you need to provide (des)serialize function/lambda that uses extension. e.g. instead of writing s.container(obj, [](S& s, MyData& data) {s.ext(data, MyExtension{});}); you can write s.container(obj, FtorExtObject<MyExtension>{});
    • โž• added more tests for adapters.
    • ๐Ÿ‘ input adapters now save first error that occured, this allows better diagnostic for what actually happened.

    ๐Ÿ› Bug fixes

    • ๐Ÿ›  fixed enabledBitPacking in serializer/deserializer where writer/reader and internal context states were not restored properly after bit packing is complete.
  • v4.6.1 Changes

    June 27, 2019

    ๐Ÿ”‹ Features

    • ๐Ÿ‘ flexible syntax now also supports cereal like serialization interface (thanks to Luli2020)

    ๐Ÿ› Bug fixes

    • when using enableBitPacking, internal context (i.e. context()) in serializer/deserializer was not copied to/from new bitpacking enabled instance.