BDE 3.92.0 Release

Schedule

  • The BDE team announces that the BDE 3.92.0 production release was completed on Tuesday, October 19, 2021.

BDE 3.92.0 Highlights

balst::StackTracePrinter: More Graceful Streaming of Stack Traces

The new type StackTracePrinter provides superior streaming of stack traces to any bsl::ostream, particularly making it easier to work with ball.

To stream a stack trace using ball, say

BALL_LOG_FATAL << balst::StackTracePrinter();

The constructor to StackTracePrinter takes 3 optional arguments:

  1. The maximum number of frames to display (default 1024 – passing -1 yields the default)

  2. Enable demangling (default true)

  3. Additional frames to ignore at the top of the stack (default 0)

Added support for “Base 64 Encoding with URL and Filename Safe Alphabet” to bdlde::base64Encoder and bdlde::base64Decoder

The bdlde::Base64Encoder and bdlde::Base64Decoder support the standard “base64” encoding (described in https://tools.ietf.org/html/rfc4648) as well as the “Base 64 Encoding with URL and Filename Safe Alphabet”, or “base64url”, encoding. The “base64url” encoding is very similar to “base64” but substitutes a couple characters in the encoded alphabet to avoid characters that conflict with special characters in URL syntax or filename descriptions (replacing ‘+’ for ‘-‘, and ‘/’ for ‘_’).

The alphabet for encoding and decoding is selected at bdlde::Encoder or bdlde::Decoder construction, for example:

bdlde::Encoder basicEncoder;            // use "base64" alphabet by default
bdlde::Encoder basicEncoder1(e_BASIC);  // explicitly specify "base64" alphabet
bdlde::Encoder urlEncoder(e_URL);       // explicitly specify "base64url" alphabet

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):

  • balcl

  • balm

  • baltzo

  • bblb

  • bdlcc

bsl::shared_ptr and bsl::weak_ptr Now Provide Deduction Guides

This release adds deduction guides for bsl::shared_ptr and bsl::weak_ptr allowing clients using C++17 to forgo supplying explicit template arguments when creating a bsl::shared_ptr or bsl::weak_ptr. For example:

bsl::shared_ptr sptr<ClassWithLargeFootprint> sp;
sp = bsl::make_shared<ClassWithLargeFootprint>();

// without C++17 or deduction guides
bsl::weak_ptr<ClassWithLargeFootprint> wp(sp);

// with C++17 and deduction guides
bsl::weak_ptr wp(sp);

Note that C++17 supports automatic template argument deduction in many contexts, however some types require explicit deduction guides in order for the compiler to deduce the template arguments. There is ongoing work to provide similar guides for all the standard library types in bsl that require them.

Fixed requests: 3.92.0

Summary

Provide print helpers for ‘bsl::optional’.

baltzo: bde-4.0 interfaces

bdlcc: bde-4.0 interfaces

balm: bde-4.0 interfaces

balcl: BDE 4.0 changes

bslmt_semaphore: benchmark creators

array constexpr index operator

Refactor TempDirectoryGuard

Offer a file-scope identification for the appropriate interface header for this component

balst::StackTracePrinter – object to get balst cooperating with ball

Base64Decoder does not support base64url alphabet

BlobUtilHexDumper causes stack overflow

bdlb::NullableValue: some c’tors missing BSLS_KEYWORD_NOEXCEPT?

Add template deduction guides for bsl::shared_ptr

bblb: BDE-4.0 interfaces

Make TimeInterval_ChronoUtil a public class

bslalg_numericformatterutil doesn’t build in gcc c++03

bdlcc_skiplist: test failures in nightly build

Release BDE 3.92.0

[bsl] deprecate bslmf_if component