BDE 4.8.0 Release

Schedule

  • The BDE team announces that the BDE 4.8.0 production release was completed on Sunday, May 19, 2024.

BDE 4.8.0 Release Highlights

Added transparent try_emplace to bsl::map and bsl::unordered_map

The transparent overloads of try_emplace that have been added to the standard for C++26 have been added to bsl::map and bsl::unordered_map.

See overloads #3 and #6 on map::try_emplace and unordered_map::try_emplace

Performance Improvement for Logging

This release contains an improvement to how log records are initialized that results in a 50% improvement in the baseline throughput (on Linux) of recording log messages.

The log message recording infrastructure was updated to cache ostream instances across log messages, avoiding contention and other costs for initializing a new ostream.

Thanks to Cameron Desrochers for this contribution.

Updated bsitzo::TzdfTimezoneUtil Mapping for TZDF 1

Mirroring fixes to Bloomberg’s infrastructure for time zones, the bsitzo_tzdftimezoneutil component, now maps TZDF id 1 to Pacific/Kwajalein rather than Etc/GMT+12.

Etc/GMT+12 was previously specified for TZDF identifier 1 because the TZDF/timesvc data had been incorrect for that time zone. That data has been fixed allowing us to update the mapping.

TZDF uses Enewetak, rather than Kwajalein (both atolls in the Marshall Islands), to identify the time zone. The error in TZDF/timesvc data stemmed from when those atolls changed from UTC-12 to UT+12 in 1993:

From wikipedia:

The Kwajalein Atoll of the Marshall Islands formerly observed
UTC-12:00, which made communicating and trading with the other atolls
observing UTC+12:00 a day ahead highly problematic. Due to this, the
Kwajalein Atoll advanced 24 hours to the Eastern Hemisphere side of the
International Date Line by skipping 21 August 1993.

Thanks to Andrew Paprocki for this contribution.

Fixed DRQSs:

Summary

ball::Log::setCategory: tsan race

C++20 work: ‘bslstl_stringview’: Re-enable iterator CTOR and (start|end)s_with methods

Update ‘bsic_hoststate’ to support node numbers above 64k

stringop-overflow error

Please add transparent try_emplace to ‘bsl::map’ and ‘bsl::unordered_map’

Reuse ‘bsl::ostream’ to reduce locale overhead when logging

Fix UB in ‘bdlb::BitmaskUtil’

Regression in ball logging in BDE 4.6.0

BDE link coercion symbols are not working in recent releases.

‘bsitzo_TzdfTimezoneUtil’: Change TZDF 1 mapping from Etc/GMT+12 to Pacific/Kwajalein