BDE 4.3.0 Release

Schedule

  • The BDE team announces that the BDE 4.3.0 production release was completed on Thursday, February 22, 2024.

BDE 4.3.0 Release Highlights

Improved bdlb::BitUtil Platform Compatibility

In this release, the overload sets of the functions in bdlb::BitUtil have been updated to avoid ambiguities in overload resolution. Prior to this change, the overload sets accepted 32- and 64-bit width unsigned types (uint32_t and uint64_t respectively), which might result in an ambiguous call when invoked with the fundamental unsigned long long, depending on the types that the fixed-width types are aliased to on the particular platform. Instead, bdlb::BitUtil now provides the overloads accepting fundamental types (unsigned int, unsigned long, and unsigned long long) which prevent any such ambiguities on all platforms.

New Feature: bdlb::BlobUtil::append with a Fill Character

This release adds a new overload to bdlb::BlobUtil::append that accepts a number of characters to append as well as the charater with which to initialize the new elements. This overload is particularly beneficial when used instead of bdlbb::Blob::setLength in test drivers run using tools like Valgrind that issue an error when a buffer having uninitialized values is passed to a system call.

Inreased Performance of bdlb::Guid::print and bdlb::GuidUtil::guidToString

This release introduces significant improvements to the performance of string formatting functions for bdlb::Guid objects by avoiding the use of string streams and employing SSE instructions where available. In addition, bdlb::Guid::format has been added that allows formatting the GUID into an arbitrary buffer, bypassing an allocation that would be required by converting a GUID to a bsl::string:

void printGuid(const bdlb::Guid& guid)
{
    char buffer[bdlb::Guid::k_GUID_NUM_CHARS];
    guid.format(buffer);
    bsl::cout << buffer;
}

Thank you to Cameron Desrochers for the contribution!

Fixed DRQSs:

Summary

is_constructible<bsl::pair> returns incorrect results because of disabled SFINAE constraints

‘bsls::Types::Uint64’ and ‘bsl::uint64_t’ are different on Linux, breaking overloads for ‘bdld::BitUtil’

Remove the ‘allocator’ accessor to bsl::string

bdlbb::Blob create ‘append’

Multiple definitions of bsl::monostate operators

-Wmaybe-uninitialized and bsl::optional<bsl::vector<>> issue on DTS-12

Speed up GuidUtil::guidToString

Remove use of bsl::string::allocator