Releases: PJK/libcbor
Releases · PJK/libcbor
0.11.0 (2024-02-04)
0.11.0 (2024-02-04)
- Updated documentation to refer to RFC 8949
- Improvements to
cbor_describe
- Fix
cbor_string_set_handle
not setting the codepoint count - BREAKING:
cbor_load
will no longer fail on input strings that are well-formed but not valid UTF-8- If you were relying on the validation, please check the result using
cbor_string_codepoint_count
instead
- If you were relying on the validation, please check the result using
- BREAKING: All decoders like
cbor_load
andcbor_stream_decode
will accept all well-formed tag values (bug discovered by dskern-github)- Previously, decoding of certain values would fail with
CBOR_ERR_MALFORMATED
orCBOR_DECODER_ERROR
- This also makes decoding symmetrical with serialization, which already accepts all values
- Previously, decoding of certain values would fail with
v0.10.2
0.10.2 (2023-01-31)
- Fixed minor test bug causing failures for x86 Linux (discovered by trofi)
- Actual libcbor functionality not affected, bug was in the test suite
- Made tests platform-independent
v0.10.1
v0.10.0
0.10.0 (2022-12-29)
- Make the buffer_size optional in
cbor_serialize_alloc
[#205] (by hughsie) - BREAKING: Improved half-float encoding for denormalized numbers. [#208] (by ranvis)
- Denormalized half-floats will now preserve data in the mantissa
- Note: Half-float NaNs still lose data (#215)
- BUILD BREAKING: Minimum CMake version is 3.0 [#201] (by thewtex@)
- See https://repology.org/project/cmake/versions for support; the vast majority of users should not be affected.
- Fix a potential memory leak when the allocator fails during array or map decoding [#224] (by James-ZHANG)
- Fix a memory leak when the allocator fails when adding chunks to indefinite bytestrings. (discovered by James-ZHANG)
- Fix a memory leak when the allocator fails when adding chunks to indefinite strings
- Potentially BUILD BREAKING: Add nodiscard attributes to most functions
- Warning: This may cause new build warnings and (in rare cases, depending on your configuration) errors
- BREAKING: Fix
cbor_copy
leaking memory and creating invalid items when the allocator fails.- Previously, the failures were not handled in the interface. Now,
cbor_copy
may returnNULL
upon failure; clients should check the return value
- Previously, the failures were not handled in the interface. Now,
- Fix
cbor_build_tag
illegal memory behavior when the allocator fails - Add a new
cbor_serialized_size
API - Reworked
cbor_serialize_alloc
to allocate the exact amount of memory necessary upfront- This should significantly speed up
cbor_serialize_alloc
for large items by avoiding multiple reallocation iterations - Clients should not use the return value of
cbor_serialize_alloc
. It may be removed in the future.
- This should significantly speed up
- BUILD BREAKING: Deprecate CBOR_CUSTOM_ALLOC
cbor_set_allocs
will always be enabled from now on- Note: The flag will be kept as a no-op triggering a warning when used for one version and then removed completely
v0.9.0
0.9.0 (2021-11-14)
- Improved pkg-config paths handling [#164] (by jtojnar@)
- Use explicit math.h linkage [#170]
- BREAKING: Fixed handling of items that exceed the host size_t range [#186]
- Callbacks for bytestrings, strings, arrays, and maps use uint64_t instead of size_t to allow handling of large items that exceed size_t even if size_t < uint64_t
- cbor_decode explicitly checks size to avoid overflows (previously broken, potentially resulting in erroneous decoding on affected systems)
- The change should be a noop for 64b systems
- Added a Bazel build example [#196] (by andyjgf@)
v0.8.0
- BUILD BREAKING: Use BUILD_SHARED_LIBS to determine how to build libraries (fixed Windows linkage) [#148] (by intelligide@)
- BREAKING: Fix
cbor_tag_item
not increasing the reference count on the tagged item reference it returns [Fixes #109] (discovered bt JohnGilmour)- If you have previously relied on the broken behavior, you can use
cbor_move
to emulate as long as the returned handle is an "rvalue"
- If you have previously relied on the broken behavior, you can use
- BREAKING:
CBOR_DECODER_EBUFFER
removed fromcbor_decoder_status
cbor_stream_decode
will setCBOR_DECODER_NEDATA
instead if the input buffer is empty
- Fix
cbor_stream_decode
to setcbor_decoder_result.required
to the minimum number of input bytes necessary to receive the next callback (as long as at least one byte was passed) (discovered by woefulwabbit) - Fixed several minor manpage issues [#159] (discovered by kloczek@)
v0.7.0
- Fix bad encoding of NaN half-floats [Fixes #53] (discovered by BSipos-RKF)
- Warning: Previous versions encoded NaNs as
0xf9e700
instead of0xf97e00
; if you rely on the broken behavior, this will be a breaking change
- Warning: Previous versions encoded NaNs as
- Fix potentially bad encoding of negative half-float with exponent < -14 [Fixes #112] (discovered by yami36)
- BREAKING: Improved bool support [Fixes #63]
- Rename
cbor_ctrl_is_bool
tocbor_get_bool
and fix the behavior - Add
cbor_set_bool
- Rename
- Fix memory_allocation_test breaking the build without CBOR_CUSTOM_ALLOC [Fixes #128] (by panlinux)
- Fix a potential build issue where cJSON includes may be misconfigured
- Breaking: Add a limit on the size of the decoding context stack (by James-ZHANG)
- If your usecase requires parsing very deeply nested structures, you might need to increase the default 2k limit via
CBOR_MAX_STACK_SIZE
- If your usecase requires parsing very deeply nested structures, you might need to increase the default 2k limit via
- Enable LTO/IPO based on CheckIPOSupported [#143] (by xanderlent)
- If you rely on LTO being enabled and use CMake version older than 3.9, you will need to re-enable it manually or upgrade your CMake
v0.6.1
- Fix bad shared library version number
- Warning: Shared library built from the 0.6.0 release is erroneously marked as version "0.6.0", which makes it incompatible with future releases including the v0.6.X line even though they may be compatible API/ABI-wise. Refer to the documentation for the new SO versioning scheme.
- Warning: This release has been originally attached to the wrong commit (09ef47f)
v0.6.0
- Correctly set .so version [Fixes #52].
- Warning: All previous releases will be identified as 0.0 by the linker.
- Fix & prevent heap overflow error in example code [#74] [#76] (by @nevun)
- Correctly set OSX dynamic library version [Fixes #75]
- Fix misplaced 0xFF bytes in maps possibly causing memory corruption
- BREAKING: Fix handling & cleanup of failed memory allocation in constructor
and builder helper functions [Fixes #84]- All cbor_new_ and cbor_build_ functions will now explicitly return NULL
when memory allocation fails - It is up to the client to handle such cases
- All cbor_new_ and cbor_build_ functions will now explicitly return NULL
- Globally enforced code style [Fixes #83]
- Fix issue possible memory corruption bug on repeated
cbor_(byte)string_add_chunk calls with intermittently failing realloc calls - Fix possibly misaligned reads and writes when endian.h is uses or when
running on a big-endian machine [Fixes #99, #100] - Improved CI setup with Travis-native arm64 support
- Docs migrated to Sphinx 2.4 and Python3
v0.5.0
This release addresses several long-outstanding issues regarding compatibility, portability, and correctness.
- Remove cmocka from the subtree (always rely on system or user-provided version)
- Windows CI
- Only build tests if explicitly enabled (
-DWITH_TESTS=ON
) - Fixed static header declarations (by cedric-d)
- Improved documentation (by Michael Richardson)
- Improved
examples/readfile.c
- Reworked (re)allocation to handle huge inputs and overflows in size_t [#16]
- Improvements to C++ linkage (corrected
cbor_empty_callbacks
, fixedrestrict
pointers) (by Dennis Bijwaard) - Fixed Linux installation directory depending on architecture [#34](by jvymazal)
- Improved 32-bit support [#35]
- Fixed MSVC compatibility [#31]
- Fixed and improved half-float encoding [#5] [#11]