BDE 3.93.0 Release

Schedule

  • The BDE team announces that the BDE 3.93.0 production release was completed on Monday, November 1, 2021.

BDE 3.93.0 Highlights

std::pair and std::tuple Now Supported as Keys in bsl Containers

Two new components, bslh_hashpair and bslh_hashtuple, define hashAppend function templates for std::pair and std::tuple types, respectively. Recall that std::tuple is available for version C++11 and later.

With these function templates defined, these two standard types can be used as keys in bsl hash-based containers (e.g., bsl::unordered_set, bsl::unordered_map). For example,

typedef std::pair<int, int>                  StdPairInts;
typedef bsl::unordered_set<StdPairInts> SetOfStdPairInts; // Use as key.

SetOfStdPairInts setOfStdPairInts;

setOfStdPairInts.insert(std::make_pair(0, 0));
setOfStdPairInts.insert(std::make_pair(1, 1));
setOfStdPairInts.insert(std::make_pair(2, 2));

assert(3 == setOfStdPairInts.size());

and, for C++11 and later, one can also use std::tuple:

#include <bsls_libraryfeatures.h>

#ifdef BSLS_LIBRARYFEATURES_HAS_CPP11_TUPLE

using      StdTripleInts = std::tuple<int, int, int>;
using SetOfStdTripleInts = bsl::unordered_set<StdTripleInts>; // Use as key.

SetOfStdTripleInts setOfStdTripleInts;

setOfStdTripleInts.insert(std::make_tuple(0, 0, 0));
setOfStdTripleInts.insert(std::make_tuple(1, 1, 1));
setOfStdTripleInts.insert(std::make_tuple(2, 2, 2));

assert(3 == setOfStdTripleInts.size());

#endif  // BSLS_LIBRARYFEATURES_HAS_CPP11_TUPLE

User-defined types having hashAppend functions can be used as elements of std::pair and/or std::tuple types that are used as hash keys. See bslh_hash for further details.

New (Migrated) Components: balb_leakybucket, balb_ratelimiter, balb_reservationguard

This release migrates 3 components from the internal bte transport library to the open-source balb package in the bal library: balb_leakybucket, balb_ratelimiter, and balb_reservationguard. These components provide facilities to help control the rate of data being sent over a network connection (note that a fully thread-safe version of balb_leakybucket is avaliable as bdlmt_throttle).

Continuing BDE 4.0 Changes

This release contains a several updates to better support the platform standard library, which are part of the BDE 4.0 effort. This includes changes to the following components or packages to add support for bsl::string_view, std::string, and/or std::pmr::string (where supported):

  • bbldc

  • bdlde::Utf8Util::appendUtf8CodePoint

Fixed requests: 3.93.0

Summary

Define hashAppend for bsl::tuple for usage in unordered containers

sim_cpp11_features.pl uses incorrect macro name for split test drivers.

Create robobuild-based tool for BDE test builds

Migrating leaky bucket related components from BTE to BDL

Specify the security (or lack thereof) of bslx in the package docs

bbldc: BDE-4.0 interfaces

bde-4.0: bdlde::Utf8Util::appendUtf8CodePoint

Define ‘hashAppend’ for ‘std::pair’ for usage in unordered containers

‘balcl_typeinfo.t.cpp’: case 10: memory leak

Release BDE 3.93.0