Skip to content

Releases: squidfunk/protobluff

protobluff-1.1.1

23 Feb 09:53
Compare
Choose a tag to compare
  • Fixed compilation error when including in C++ units

protobluff-1.1.0

11 Jul 07:48
Compare
Choose a tag to compare
  • Fixed generator compatibility issues with protobuf 3.6+

protobluff-1.0.3

02 Aug 08:32
Compare
Choose a tag to compare
  • Fixed buffer size not being cleared during destruction

protobluff-1.0.2

27 Feb 10:40
Compare
Choose a tag to compare
  • Removed -march=native as it makes cross-compiling impossible

protobluff-1.0.1

10 Feb 11:31
Compare
Choose a tag to compare
  • Fixed compile error when linking with CXX
  • Fixed missing implicit default value for enumerations

protobluff-1.0.0

08 Jan 19:29
Compare
Choose a tag to compare

protobluff reaches maturity.

Runtime:

  • Fixed descriptor iterator prev/next return values
  • Fixed warnings in descriptor tests
  • Added constants for tags to generated source (_T suffixes)
  • Added _V suffixes to generated source for enum values
  • Added reference guide
  • Enabled stripped build by default
  • Removed pb_cursor_pos() (deprecated in 0.4.0)
  • Removed raw pointer access (deprecated in 0.4.0)

Generator:

  • Fixed generated source of nested enum value accessors

protobluff-0.5.0

11 Jan 16:12
Compare
Choose a tag to compare

This release adds support for oneofs. protobluff now implements all features of the Protocol Buffers specification version 2 (known as "proto2"), except groups and generic services which are both deprecated. However, there may be a GRPC-based service implementation in form of a plugin in the future.

This is the last release before bumping the version to 1.0.0. proto3 support is basically possible (and not that complicated to implement), and may also be something that is added in the future. The libtool version has been updated to 4.0.0, due to the renaming of some descriptor-related functions.

Runtime:

  • Fixed occurrence handling of non-repeated fields in message and cursor
  • Added regression tests for occurrence handling
  • Added support and tests for oneofs
  • Moved descriptor iterators from util into core (won't affect core size)
  • Changed field descriptor accessors for clarity ("nested", "enum", "oneof")
  • Renamed enum descriptor value into enum value descriptor (consistency)

Generator:

  • Added support for oneofs
  • Removed banners for empty sections in generated source
  • Removed from field constructors (may be introduced with "Any" in proto3)
  • Refactored generator for better readability

protobluff-0.4.1

21 Dec 16:53
Compare
Choose a tag to compare

Bugfix release for packed field support, no interface changes.

Runtime:

  • Fixed alignment bug for packed fields after erasing from cursor
  • Added tests for corner cases of packed fields
  • Refactored part alignment internals

protobluff-0.4.0

16 Dec 18:46
Compare
Choose a tag to compare

This release adds full support for packed fields (in lite and full runtime). Furthermore, some functions have been deprecated to prepare for the 1.0.0 release, in particular raw pointer access, because unaligned access of floats and doubles may cause undefined behavior on some architectures, and the position of the cursor, as due to the possible erasure of fields during a cursor's lifetime, the position may not be accurately determined.

Again, this release is mostly compatible with prior versions, but a few breaking changes to the ABI could not be omitted. See the MIGRATION file for further assistance. However, approaching the 1.0.0 release, the ABI can be considered stable very soon. The libtool version has been updated to 3.0.0.

Runtime:

  • Deprecated raw pointer access (will be removed in 1.0.0)
  • Deprecated pb_cursor_pos() (will be removed in 1.0.0)
  • Fixed invalid reads reported when compiling with -fsanitize
  • Fixed incorrectly reported position in pb_cursor_seek()
  • Fixed cursor state when erasing the last field in a message
  • Fixed alignment issues and checks after erasing parts
  • Added support for packed fields
  • Added missing error string for PB_ERROR_EOM (could have caused segfault)
  • Added tests for packed fields
  • Changed cursor semantics: cursor will now skip unknown fields
  • Changed cursor to directly initialize descriptor
  • Changed encoder interface to account for packed fields
  • Removed obsolete PB_ERROR_WIRETYPE and PB_ERROR_DESCRIPTOR error codes
  • Removed pb_cursor_tag() from ABI in favor of pb_cursor_descriptor()
  • Renamed C-linkage classifier to avoid name clashes
  • Adapted message and field from cursor constructors
  • Adapted examples to interface changes

Generator:

  • Added support for packed fields
  • Changed encoder generator to account for repeated fields

protobluff-0.3.0

30 Nov 16:48
Compare
Choose a tag to compare

Complete overhaul of the internal structure: an encoder and decoder have been implemented which now form the core of protobluff, together with the buffer, descriptor and varint-packing logic. protobluff is turning into a full-featured multi-purpose library: messages can be streamed using the encoding and/or decoding functions, fields and messages can be read and written without decoding/encoding the entire message using the message and cursor functions (as before).

In addition protobluff has been split into a lite and full runtime. The lite runtime only contains the core functionality and currently weighs 14kb (stripped) on x86_64, the full runtime weighs 36kb (stripped). Though not being the highest priority task on the list, compatibility with embedded environments is planned, as the groundwork has now been done. Furthermore the project structure has been revamped and is now completely modular, and some examples on how to use protobluff for encoding/decoding were added.

Regardless of the addition of a whole bunch of new functions, this release is mostly compatible with prior versions. Nevertheless, the libtool version has been updated to 2.0.0 to reflect some breaking changes. See the MIGRATION file for more information on how to migrate from older versions.

Runtime:

  • Complete overhaul of runtime
  • Fixed improper encoding and decoding of zig-zag encoded varints
  • Added functions for type-specific packing and unpacking of varints
  • Added function to efficiently grow buffers
  • Added decoder and encoder to stream messages
  • Added tests for all new structures
  • Added validator as a replacement for pb_message_check()
  • Added some usage examples for encoding and decoding messages
  • Changed directory structure to reflect new modular design
  • Changed macros to inline functions for better type checking
  • Renamed binary into buffer and fleshed out the implementation
  • Renamed binary stream into stream and refactored implementation
  • Merged journaling with binary functionality into journal
  • Merged descriptors into single translation unit
  • Adapted existing code to work with new internal structure

Generator:

  • Fixed accessor generation for nested enumerations
  • Added compile-time field, message, enum and enum value deprecations
  • Added generators for interfacing with the decoder and encoder
  • Changed generated code from macros to inline functions