BDE 4.26.0 Release
Schedule
The BDE team announces that the BDE 4.26.0 production release was completed on Saturday, July 5, 2025.
BDE 4.26.0 Release Highlights
balber::BerEncoder Enhanced to Improve Decoder Performance
balber::BerEncoder has been augmented to emit array length hints when
possible. To enable hints, the balber::BerEncoderOptions
EncodeArrayLengthHints attribute must be set true (using
setEncodeArrayLengthHints).
Note that for large arrays, decoder performance may improve by over 10%.
WARNING: It is only safe to use this mode when communication with a balber
BER decoder built using this release or later, or a decoder having the
balber::BerDecoderOptions SkipUnknownElements attribute set to
true.
New Component: balber_berencoderoptionsutil
The new component,
balber_berencoderoptionsutil,
provides a struct of utility functions, balber::BerEncoderOptionsUtil,
for configuring balber::BerEncoderOptions objects. In particular, this
utility can be used to set the recommended options needed for encoding BER
messages that are time-efficient to decode. This utility can also be used to
set a balber::BerEncoderOptions object to its default state.
bslfmt::Streamed Wrapper Facilitates Use of bsl::format
Use of bsl::format` for a user-defined type requires a user-supplied
specialization of bsl::format for that type. Assuming that the
user-defined type is already stream-able, use of the new
bslfmt::Streamed
wrapper readily makes that type formattable as well.
bsl::optional<TYPE> Usable with constexpr for Non-Allocator-Aware TYPE
Methods and free functions associated with std::optional<TYPE> that are constexpr in C++17 or C++20 are now also constexpr for bsl::optional<TYPE> in the respective language version, provided that TYPE is not allocator-aware.
bsl_ Headers Can Now Be Included Regardless of Language Version
All bsl_ headers can now be included in all language versions (e.g.,
C++03, C++11, …. C++20). For example, the <bsl_random.h> header can be
included in C++03 even though <random> is not available in C++03. In such
cases, including the bsl_ header is not an error; it silently succeeds and
simply does not provide the declarations that are absent from the standard
library (in the language version being used).
This change makes it easier to write code that provides additional functionality in later language versions and must include additional headers to provide such functionality.
Previously, inclusion of a header such bsl_initializer_list.h could not be
included when compiling for a C++ version that does not support the language
features used in that header:
#include <bsls_compilerfeatures.h>
#ifdef BSLS_COMPILERFEATURES_SUPPORT_GENERALIZED_INITIALIZERS
#include <bsl_initializer_list.h>
#endf
Now, all bsl_ headers can now simply be included at the top of the file
without guards.
#include <bsls_compilerfeatures.h>
#include <bsl_initializer_list.h> // Now, compiles even in C++03.
class Vector {
// . . .
public:
/// CREATORS
/// Create a `Vector` object that holds no values.
Vector();
#ifdef BSLS_COMPILERFEATURES_SUPPORT_GENERALIZED_INITIALIZERS
/// Create a `Vector` object that holds a copy of the values from the
/// specified `il`.
Vector(bsl::initializer_list<int> il);
#endif
};
Notice that preprocessor guards are still required around the declaration (and the definition, not shown) of the construction that depends on initializer list.
balb::ControlManager Supports Fallback Handler
The balb::ControlManager dispatches received messages to previously
registered handler functors based on the message “prefix” – i.e, the
first word of the message.
Previously, messages having prefixes that match none of the previously registered handers were simply ignored.
Now, users have the option to specify a fallback (default) hander for for messages that don’t match any of the regular handlers. If users do not specify such a default handler, the previous policy (ignoring such messages) is followed.
See Default Handler
Fixed Tickets
Summary |
|---|
|
|
Make |
[BALL] Add |
Allow C++11-only headers to be included in C++03 |
Make constructors for |
Support default handler in |
Provide a wrapper for formatting types with a streaming operator |
Fix for data race in |
Request for Review – TSAN Race Fix in |
please correct |
|
[bde-tools] Add toolchain file for Homebrew |
implement array length hints for ber |
create balber_berencoderoptionsutil |
implement |
Complexity of |
correct |
Please add |
|
please clean warnings observed in nightly build for |
Apple/Darwin preprocessor macro confusion |
please correct |
Split default ctor for |
Fix semaphore collisions on darwin |