BDE 4.31.0 Release

Schedule

  • The BDE team announces that the BDE 4.31.0 production release was completed on Monday, November 17, 2025.

BDE 4.31.0 Release Highlights

New bdlar backend for BAS message encoding and decoding

BAS messages are typically described in XSD and then converted into C++ representation using the bas_codegen.pl tool. Those generated C++ types can be serialized and deserialized using any of the supported formats (XML, JSON and ASN.1 BER).

The original implementation of BAS message encoding and decoding was based on template metaprogramming and compile-time code generation and, for big schemas, could cause compiler or linker failures due to the sheer size of instantiated templates.

This release introduces new API for encoding and decoding BAS messages:

  • encodeAny()

  • decodeAny()

These new functions rely on run-time dispatch rather than compile-time dispatch. The key benefits of this approach are:

  • The amount of invisible compile-time generated code is minimal, preventing uncontrolled exponential code bloat.

  • Most of the encoding/decoding code is precompiled and linked from the BDE library files.

See <no title> for more information.

Optimization of bdld::Datum::clone()

The bdld::Datum::clone() method was re-impemented to take advantage of byte-copying Datum objects which do not allocate memory. New implementation yeilds 1.5-2x speed improvement.

Many thanks to Elliot Goodrich and Thomas Prideaux-Ghee for the contribution.

Fixed Tickets

Summary

Remove deprecated true_type::VALUE and false_type::VALUE

Parent Ticket: Virtual Introspection Project

bdem_Convert loses bdlt::Datetime microsecond precision

Update the list of macros reported by the bsls_platform test driver

Wdeprecated-literal-operator diagnostics in bslstl_chrono

Test deep copying of array references in Datum::clone

Tidy bslalg_constructorproxy

Fix SyncBufBase name clash with Qt macro

BSLS_REVIEW_INVOKE macro has a dangerous design bug

Fix Datum::clone fo array reference

balm no longer compiles for C++11 and C++14

Please increase the number of variadic args for bdlb::NullableAllocatedValue