Bitsery v4.0.0 Release Notes

Release Date: 2017-10-13 // over 6 years ago
  • I feel that current library public API is complete, and should be stable for long time. ๐ŸŽ Most changes was made to improve performance or/and make library usage easier.

    ๐Ÿ”‹ Features

    • new flexible syntax similar to cereal library. This syntax no longer requires to specify explicit fundamental type sizes and container maxsize (container max size can be enforced by special function maxSize). Be careful when using deserializing untrusted data and make sure to enforce fundamental type sizes when using on multiple platforms. (use helper function assertFundamentalTypeSizes to enforce type sizes for multiple platforms)
    • added streaming support, by introducing new adapter concept. Two adapter implementations is available: stream adapter, or buffer adapter.
    • added missing std containers support: forward_list, deque, stack, queue, priority_queue, set, multiset, unordered_set, unordered_multiset.

    ๐Ÿ’ฅ Breaking changes

    • a lot of classes and files were renamed.
    • ๐Ÿ‘Œ improved error messages.
    • traits reworked:
      • ContainerTraits get isContiguous.
      • TextTraits is separate from ContainerTraits, only has length, and addNUL.
      • buffer traits renamed to BufferAdapterTraits and removed difference type.
      • added TValue to all trait types, this is used to diagnose better errors.
    • BasicBufferReader/Writer is split in two different types: AdapterReader/Writer and separate type that enables bit-packing operations AdapterBitPacking(Reader/Writer)Wrapper.
    • Serializer/Deserializer reworked
      • No longer copyable, because it stores adapter writer/reader.
      • Removed boolByte, boolBit, and added boolValue and it writes bit or byte, depeding on if bit-packing is enabled or not.
      • Bit-packing is enabled by calling enableBitPacking, if bitpacking is already enabled, this method will return same instance.
    • 0๏ธโƒฃ changed defaults for DefaultConfig, BufferSessionsEnabled is false by default, because it doesn't work with input streams.
    • serialization config no longer needs typedef Buffer.