BDE 4.27.0 Release

Schedule

  • The BDE team announces that the BDE 4.27.0 production release was completed on Friday, August 1, 2025.

BDE 4.27.0 Release Highlights

PCRE2 library version update from 10.39 to 10.45

This BDE release updates the version of PCRE2 third-party library used by the implementation of the ‘bdlpcre_regex’ component. PCRE version 10.45 contains various improvements, bug fixes, and security fixes.

Unfortunately, the upstream PCRE2 library has dropped support for the JIT (just-in-time) compiler for the Sparc architecture (note that previously JIT was supported only for 32-bit on Sparc). This change effectively forces the ‘bdlpcre_regex’ component implementation to ignore all JIT related flags and APIs on Sparc.

Utility for Adapting bsl Map Types for the Standard Ranges Library

This BDE release adds the utility bdlb::PairUtil::adaptForRanges, which converts a given range whose value type is a bsl::pair into a range whose value type is a std::pair of references to the elements of the bsl::pair. Because certain standard range adaptors work only with standard types such as std::pair, adaptForRanges must be used to make ranges of bsl::pair’s compatible with such standard range adaptors. For example:

bsl::map<int, int> M = {{1, 2}, {3, 4}};

const bsl::vector<int> expectedValues = {2, 4};

assert(bsl::ranges::equal(expectedValues, M | bsl::views::values));  // error

assert(bsl::ranges::equal(expectedValues, bdlb::PairUtil::adaptForRanges(M) | bsl::views::values));  // OK

ball_fmt: new component providing formatting macros for ball logging

BDE has added a new component, ball_fmt, that provides for reporting log messages using a bsl::format-style format specification and argument substitution. For example:

BALL_FMT_ERROR("Endpoint '{}' is not in the allowed list", endPoint);

The new <ball_fmt.h> provides logger macros for each log level as well as a macro to be used inside logging-blocks. Each macro is variadic, with the first argument being the format string and the rest the formatted arguments. Note that to bridge the gap between stream and bsl::format based logging we also provide the bslfmt::streamed wrapper, also provided in this release.

For more information, see Introducing BALL_FMT: BALL Logger Support for std::format-style Text Formatting and Enabling bsl::format for Types with an ostream Insert operator<<

Fixed Tickets

Summary

Missing ‘required’ bas request elements have default values

Update pcre2 to version 10.45

bsl::views::values with bsl::map

bsl::format Bring ‘bslfmt_formatterstring’ to gold quality

Update documentation to describe TOCTTOU issues on windows FilesystemUtil::remove

Please provide bdljsn::Json -> bdlat-compatible type conversion

Provide Safe API for Creating Date/Time Objects in BDE Libraries

Evaluate bdlcc_deque case 6 for threat start checks and watchdog

Implement quick and easy stream-operator-based-formatter enabling for classes and templates

Please correct recently introduced issues in bslstl_optional

Please reduce gcc-13 bde-core nightly build issues reported 6/4/2025

Remove Obsolete Usage Restriction Comment

Fix TSAN issue in bdlmt_timereventscheduler.t.cpp

Create bslmt::TimedCompletionGuard, to replace current watchdog code

Make bdlat::FuzzUtil UTF-8-compatible

StackAddressUtil: increase k_IGNORE_FRAMES when xSAN backtrace interceptor is expected

bslfmt_formaterror.h includes the wrong header for std::format_error

Please correct gcc-13 bslfmt issues

bdlb_variantprinter.t.cpp: correct warning

Please fix bslmft_testspecificationgenerator test case 1

bdlde::base64decoder deprecation docs are (potentially) incorrect

Please support checking for required elements in baljsn_decoder

Please correct bslfmt_formatterstring.t.cpp gcc-13 compile errors

Use TimedCompletionGuard in bdlcc

Round-trip error serializing baljsn::DecoderOptions.