BDE 4.36.0 Release

Schedule

  • The BDE team announces that the BDE 4.36.0 production release was completed on Monday, March 23, 2026.

BDE 4.36.0 Release Highlights

BALL Record Formatter Plugins: Scheme-Based Log Output Format Selection

BALL observers now support a plugin-based architecture for log record formatting. Format specifications can include a URI-style scheme identifier that selects the formatter type:

  • text:// – The traditional printf-style text formatter (default when no scheme is specified, fully backward compatible).

  • json:// – Structured JSON output using JSON array notation for field specifications.

  • qjson:// – A convenience format that combines JSON output with the familiar printf-style specifiers for the contents.

For more information, see BALL Record Formatter Plugins: Flexible Log Output Formatting.

New Macros: BSLS_ASSERT_*UNREACHABLE

New macros BSLS_ASSERT_UNREACHABLE, BSLS_ASSERT_OPT_UNREACHABLE, and BSLS_ASSERT_SAFE_UNREACHABLE have been added to bsls_assert. These macros are intended for use in code paths that should never be reached, providing both documentation of intent and runtime detection of logic errors.

bdlmt::EventScheduler Retain Cycle Hazard Fixed

bdlmt::EventScheduler no longer stores a copy of the callback in the event, eliminating a potential retain cycle hazard when a callback captures a shared pointer to the scheduler or to an object that owns the scheduler.

Fixed Tickets

Summary

bdlmt::EventScheduler unexpectedly stores callback in event, creating a retain cycle hazard

Implement pluggable log record formatters

Implement BSLS_ASSERT_*UNREACHABLE

Fix bsls_assert macro usage in bslfmt_padutil

Fix logic that enables BSLS_IDENT

Conditionally remove redeclarations deprecated in C++17

Fix build issues for C++23 on MacOS

Fix bad spelling of __cpp feature macro in bslstl_function_invokerutil

Reduce Darwin machine load nightly build failures

Reduce spew from bslfmt_formatterstring.t.cpp case 4

Correct for-testing-only includes in bslmt, add TimedCompletionGuard usage

Reduce execution time of bslfmt_testspecificationgenerator.t.cpp on Darwin

Reduce introduced TimedCompletionGuard issues on Darwin

Fix typo in balcl_typeinfo.t.cpp

Reduce bsls_atomic.t cases 7 and 8 runtime on Darwin

Reduce bsls_atomic.t cases 7, 8, and 9 runtime on Darwin

Remove remaining use of bsls_ident in test drivers

Alphasort bsls_libraryfeatures documentation

Audit the printFlags report in bsls_compilerfeatures

Resolve deprecation warning in bdldfp_decimal test driver

Regenerate bslstl_function_invokerutil_cpp03.t.cpp