Releases: squidfunk/protobluff
protobluff-1.1.1
protobluff-1.1.0
- Fixed generator compatibility issues with protobuf 3.6+
protobluff-1.0.3
- Fixed buffer size not being cleared during destruction
protobluff-1.0.2
- Removed
-march=native
as it makes cross-compiling impossible
protobluff-1.0.1
- Fixed compile error when linking with CXX
- Fixed missing implicit default value for enumerations
protobluff-1.0.0
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
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
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
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
andPB_ERROR_DESCRIPTOR
error codes - Removed
pb_cursor_tag()
from ABI in favor ofpb_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
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