BDE 3.64.0: Production Release

Schedule

  • The BDE team is pleased to announce that the BDE 3.64.0 production patch release was completed on Monday, October 5, 2020.

BDE 3.64.0 Highlights

Support for transparent comparators added to unordered containers

The bsl::unordered_map, bsl::unordered_set, bsl::unordered_multimap, and bsl::unordered_multiset containers now support transparent comparators, allowing lookups in a container with appropriate comparator and hashing types to perform some lookups without the construction of a temporary.

Note that none of the default comparators or hashers are transparent yet.

bdlb::StringViewUtil component added

A new component bdlb_stringviewutil was added, which provides utility functions on bsl::string_view values. It deprecates bdlb::StringRefUtil and adds a few extra sets of utilities like findFirstOf/findLastOf/findFirstNotOf/findLastNotOf and startsWith/endsWith.

blds::PathUtil::getExtension method added

A getExtension method was added to bdls::PathUtil via an inner-source contribution, allowing for the efficient extraction of the extension from a path.

Thanks Braulio!

Improved JSON Conformance in baljsn::DatumUtil::decode

As part of DRQS 117361294 we added the validation suite from Parsing JSON is a Minefield to the baljsn::DatumUtil test driver. This test data highlighted a few areas of non-conformance:

Fixed in BDE 3.64:

  • Incorrectly parsing UTF-16 \uxxxx\uxxxx surrogate pairs.

  • Allowing invalid UTF-8 in string literals (including object field names).

There are also several points of non-conformance, where BDE is more permissive than the JSON standard, that we do not plan to address (for backwards compatibility reasons):

  • Consecutive delimiters are accepted, e.g. [1,,2] and {"a"::"b"}

  • Trailing text is ignored, e.g. "abc"sometrailingtext

  • Floating point numeric format is more permissive, most notably supporting “inf” and “nan” values.

Users of baljsn::DatumUtil should be aware that Datum objects returned from decode may contain infinities or NaN’s in double fields.

Fixed requests: 3.64.0

Summary

Add heterogeneous lookup for associative containers

Prosposal to add bdls::PathUtil::getExtension

BSLS_ASSERT and BSLS_REVIEW should support constexpr and assume

baljsn::Encoder::encode() ignores overflow in output stream

Improve JSON conformance of baljsn

bcem_aggregate append() behavior

Create string_view C++20 methods in util component usable from C++03/17

fix anone build of bde-classic

Fuzzing test - read past end of buffer in bdlt_fixutil.cpp

fix anone warnings

widespread nightly build failure in baljsn_datumutil.cpp

Replace WHITELIST with more inclusive term

Release BDE 3.64.0