BDE 4.7.0 Release

Schedule

  • The BDE team announces that the BDE 4.7.0 production release was completed on Tuesday, April 23, 2024.

BDE 4.7.0 Release Highlights

New component bdlma_localbufferedobject

This release provides a new component, bdlma_localbufferedobject, that is primarily used to simplify the creation of temporary objects utilizing a local memory buffer (typically on the stack) for efficiency, and is equivalent to creating a temporary object and supplying it a bdlma::LocalSequentialAllocator.

For example:

bdlma::LocalBufferedObject<bsl::string> string;

Here, LocalBufferedObject is syntactic convenience that can be used in place of:

LocalSequentialAllocator localAllocator<1024>;
bsl::string string(&localAllocator);

The LocalBufferedObject class template, in addition an argument (t_TYPE) for the type of object, provides template parameter t_BUFFER_SIZE for the size of the stack buffer, and t_DISABLE_DESTRUCTION to enable eliding the destructor of t_TYPE.

See bdlma_localbufferedobject for more information.

baljsn::Decoder Fixed to Allow Supplying Null Elements in Arrays of Objects

The baljsn::Decoder will now correctly decode arrays of nillable objects where some of the objects have “null” values. Previously, that would result in an error.

For example, imagine decoding messages that contain the following as part of their schema:

<xs:complexType name='Value'>
  <xs:choice>
    <xs:element name='value'  type='xs::string'/>
  </xs:choice>
</xs:complexType>
<element name="values" type="tns::Value" minOccurs="0" maxOccurs="unbounded" nillable="true"/>

The following JSON would previously produce an error on a call to baljsn::Decoder::decode, but will now succeed:

[{"value": "1st text"}, {"value": "2nd text"}, null, {"value": "3rd text"}]

Fixed Tickets:

Summary

ball_logthrottle documentation is incomprehensible

balber::BerEncoder::encode doesn’t support ‘bslstl::StringRef’ leaf values

baljsn_decoder fails to decode arrays of nullable objects where null and non-null values are mixed

GCC 12 generates -Wuninitialized warning in baea_SerializableObjectProxy constructor

bdlma::LocalBufferedObject: create component

Remove transitive metaint inclusion dependencies

BDE json decoders do not offer strict validation of json string contents

Compilation error with range-v3 view to vector conversion and C++20

merge TEOM integration branch to main

Fix 32-bit MSVC bslmf test driver build errors

Please adjust balxml::Formatter::addData documentation

Create alias for std::jthread

Remove clang warnings about converting char[] to bool

Please fix new memory leaks in bdlmt test drivers in nightly build

WyHash of empty string view hits UB on memcpy

Please fix intermittent baljsn_parserutil test failures on AIX

Please document how clients can integrate with debug-linking cmake feature

bdlm::MetricsRegistry::Data should be allocator aware

MetricsRegistry: order of destruction issue

Fix UBs in bdld_datum and tests

‘bslma::TestAllocator’ is not exception-neutral

Add missing performance hinst to new if in Datum

Address UB in bdlc_packedintarray

Address UB in bslma_allocatorutil test driver

Address UB in bslmt_readerwriterlock

Fix the missing thread-safety documentation for bdlbb::PooledBlobBufferFactory

string_view c++17 dpkg build error

AP2 - update baltzo_localtimedescriptor

Clean up bdld_datum

bbs-cmake-module is missing dependency