BDE 4.1.0 Release

Schedule

  • The BDE team announces that the BDE 4.1.0 production release was completed on Thursday, February 1, 2024.

BDE 4.1.0 Release Highlights

Behavioral Change: bdljsn::JsonUtil Now “Strict”

bdljsn::JsonUtil provides (overloaded) read methods that each convert a JSON document (text) to a bdljsn::Json object. The policy of that conversion now strictly conforms to RFC8259. Thus, some JSON documents that were previously accepted will no longer convert.

Briefly, the following are now disallowed:

  • multiple, consecutive separators (i.e., colons and commas)

  • non-UTF8 string literals

  • unescaped control characters

  • trailing top-level commas

See the conformanceMode feature of bdljsn_tokenizer for details.

In addition, a new component, bdljsn_jsontestsuiteutil, was added that provides the contents of JsonTestSuite.

New Features

  • When decoding into an integer-valued enumeration, baljsn::Decoder and balber::BerDecoder now accept a representation that was produced by encoding an integer or a customized type whose base type is integral. Similarly, when decoding into an integer or a customized type whose base type is integral, the representation produced by encoding an integer-valued enumeration is accepted.

  • In C++11 and later, the manipulators bsl::map<K, M>::operator[] and bsl::unordered_map<K, M>::operator[] now work correctly when M is non-copyable and non-movable.

Deprecated Features

  • The bdlcc::ObjectCatalog::value accessor has been deprecated because it is not thread-safe. Use the find or isMember accessor, or access the object through an iterator.

Fixed DRQSs:

Summary

bdlf::BindUtil::bindS: clarify documentation of methods

Update uses of ‘volatile’ in BDE

bdlcc::ObjectCatalog: deprecate ‘value’ accessor

Extend BDE Coding Standards to allow for hidden friends idiom

Remove unnecessary ‘volatile’ qualifiers from the ‘bslmt_threadutilimpl_win32.cpp’

Improve static variables initialization in ‘bslmt_threadutilimpl_cpp32’

bsl::unordered_map::operator[] behaviour seems broken for non-movable types

Bring the ‘bsl::copy_n’ into compliance with the standard counterpart

Reintroduce EN for balber/baljsn option to decode ints into int enums and vice versa

ball::LoggerManager creates process-wide static w/o globalAllocator

‘bsl::is_convertible’ incorrectly returns ‘true’ with C++03

Improve confusing #ifdef check in bslmf_isconvertible (and others)

bslma_bslallocator test failures in non-asserion build

Reintroduce the JSON Conformance test suite

Please allow non-copyable types in map::operator[]

Multiple definitions of hashAppend for std::monostate

add note to bslmt_fastpostsemaphoreimpl for DRQS

stringop-overflow error

Temporary disable genering PMR support for linux production builds