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
Fix link coercion¶
BSL includes link coercion symbols to actively prevent object files compiled with incompatible C++ flags being linked together, as this can result in ABI breaks and undefined behavior.
The new linker (presumably the one from RHEL7) started to actively garbage-collect data sections containing link coercion symbols and successfully link binary incompatible object files and libraries. This release specifically marks those data sections in-use and prevent object files and libraries built with incompatible flags being linked together.
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 observedUTC-12:00, which made communicating and trading with the other atollsobserving UTC+12:00 a day ahead highly problematic. Due to this, theKwajalein Atoll advanced 24 hours to the Eastern Hemisphere side of theInternational 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 |