BDE 3.48.1: Production Release

Schedule

  • BDE team is pleased to announce that the BDE 3.48.1 production release was completed on Monday, February 3, 2020.

BDE 3.48.1 Highlights

balcl_commandline: Open-Source Command-Line Parsing

The new component, balcl_commandline, is an open-source version of baea_commandline, a component widely used at Bloomberg to parse command-line arguments.

The major difference is that the new code has no dependency on bdem. In lieu of bdem, several new classes are introduced: balcl::OptionType, balcl::OptionValue, and balcl::CommandLineOptionsHandle.

As part of this refactoring, the (very large) baea_commandline component is replaced by eight new components having their own package group, balcl. The old baea_commandline component is DEPRECATED.

Conversion

The syntax and semantics of baea_commandline are almost entirely preserved, making conversion a largely mechanical process. Known differences are detailed below.

Obviously, the new classes are in a new package, and follow the modern two-level-namespace naming convention. For example:

BAEA:  BloombergLP::baea_CommandLine
                    ^^^^^
BALCL: BloombergLP::balcl::CommandLine
                    ^^^^^^^

Supported option types no longer include short and float. Use int and double instead.

Command-line arguments for data, time, and datetime values now use the ISO 8601 format, not the bdepu format. Notably, the fields of date values are separated by dashes (-), not slashes (/) and, in the datetime values, the separator between date and time fields is a T, not an underscore (_). For example:

BAEA:  2018/07/22_04:06:08
           |  |  |
BALCL: 2018-07-22T04:06:08

Users of the bdem_ConstRowBinding objects returned by the data and specifiedData methods of baea_CommandLine must now accept a balcl::CommandLineOptionHandle object instead. (Users must also call those methods by their new names – see below.)

Several classes and methods have been renamed:

BAEA

BALCL

baea_CommandLine::isInvalid

balcl::CommandLine::isValid

baea_CommandLine::data

balcl::CommandLine::options

baea_CommandLine::specifiedData

balcl::CommandLine::specifiedOptions

baea_CommandLine_Constraint

balcl::TypeInfoConstraint

baea_CommandLineTypeInfo::resetLinkedVariable

balcl::TypeInfo::resetLinkedVariableAndConstraint

baea_CommandLineTypeInfo::checkConstraint

balcl::TypeInfoUtil::satisifiesConstraint, balcl::TypeInfoUtil::parseAndValidate (new method)

Note that the semantics of resetLinkedVariable have not changed, just its name. That method has always reset linked variables and constraints.

Change to scientific output format for bdldfp::Decimal

This release updates the streaming behavior for bdldfp::Decimal types when scientific formatting is used (e.g., operator<< in conjunction with << bsl::scientific) to output two digits for the exponent. This change matches the output rendering for double and float (and the behavior of printf). Currently, a single digit is output if the exponent fits in one digit.

Before

After

3.0

3.00

The behavior for the default “Natural” output (where neither fixed nor scientific formatting is specified) is unchanged, and will continue to use a single digit where possible (as the decimal foundational document describes). So this change should not impact most users, but might cause issues if people have tests that expect the previous output form.

Fixed requests: 3.48.1

Summary

Decimal(64) does not obey bsl::showpoint

Create an open-source version of the baea_CommandLine

bdlcc_objectcatalog: add move semantics

Support for INT_MAP in Datum

bdldfp::DecimalNumPut: Missing Ctor

Remove balb_assertiontracker*

bsls::ProtocolTest: Error With bsls::ObjectBuffer<AbstractType>

bcem_Aggregate: clang-tidy (part of RSAT) complains of null dereference

bdlcc::BoundedQueue race condition

bslim_testutil gcc 9 failure on Linux

gcc c++03 null pointer literal test failure

BDE headers using symbols in #ifndef without #include’s

DRQS 153876375 P1: Please add behavioral tests to BER codec before refactor

Fix bslim_bslstandardheaderstest.t.cpp case 7 for MSVC

Add test cases for ‘typedef struct {‘ traits issue on AIX.

Prepare to alias bsl::string_view to std::string_view on C++17+ platforms

Release BDE 3.48.1

please investigate and correct MQTP case 12 intermittent failure

‘balcl_commandline.t.cpp’: platform-dependent failure in TC3.

please correct formatting error in balxml_typesprintutil.t.cpp CASE 7

test driver failure in nightly build for hslc_testparsetreegenerator

bdldfp_decimalimputil.cpp assert fails output large values in scientific mode

a_iconv ASSERT causing service crash