BDE 3.41.0: Production Release

Schedule

  • The BDE team is pleased to announce that the BDE 3.41.0 production release was completed on Wednesday, October 30, 2019

BDE 3.41.0 Highlights

Change to balxml::Encoder Behavior

The BDE XML encoder, balxml::Encoder, will change the encoding of sequence elements that are both nullable and nillable. This change will not impact users of BDE’s XML decoder to decode the resulting XML. This change fixes a long standing user reported issue in rendering nullable and nillable elements that have the null value, and is backwards-compatible with the existing behavior of the BDE XML Decoder.

New Option for baexml_SchemaParser Allows Empty-String Default Values

baexml_SchemaParser is a mechanism that can be used to generate bdem_Schema objects by parsing XSD.

It has a new configuration option, preserveEmptyDefaultStrings, that controls whether elements with type='xs:string' and default='', when decoded, are represented as optional strings, or as non-optional strings that will be populated with a (default) empty string value if the element is not present in an XML being decoded. By default, this option is disabled, which indicates that the sting elements will be represented as optional elements. This default behavior is unchanged from previous BDE releases. If the preserveEmptyDefaultStrings options is enabled, this indicates that the string elements will be represented as non-optional strings (having an empty string as a default value). This behavior more closely matches the intention of the schema, but is not backwards compatible with previous behavior.

New Support for Schema-less JSON Encoding and Decoding

This release introduces the ability to encode and decode JSON strings using the baljsn package. The new component baljsn::DatumUtil provides a schema-less conversion between JSON text and bdld::Datum. DatumUtil is adapted from dlcjsn::DataUtil, developed by the App Frameworks team. This release also adds a new component, baljsn::SimpleFormatter providing a general-purpose interface for rendering JSON text (SimpleFormatter is now the preferred alternative to the existing baljsn::Formatter component).

Performance Improvements for bdlcc::BufferedSequentialPool

The bdlcc::BufferedSequentialPool class has been changed so that its constructor no longer creates a bdlcc::SequentialPool object at construction, but rather defers its creation until an attempt to allocate memory goes beyond the capacity of the user supplied buffer. This change speeds construction and destruction of the BufferedSequentialPool in the usual case, where all allocation comes out of the buffer passed at construction. This also improves types that use bdlcc::BufferedSequentialPool, including bdlcc::BufferedSequentialAllocator, bdlcc::LocalSequentialAllocator, bdema_BufferedSequentialPool, and bdema_BufferedSequentialAllocator.

Fixed requests: 3.41.0

Summary

[bsl] type_index not working with unordered_map

Reduce size of BDE-related DPKGs

XML encoder encodes aggregates with nillable+nullable fields wrong

Validate Visual Studio 2019 (v142) build of BDE

baexml_SchemaParser fails to distinguish between default=’’ and no default

Productize a non-schema dependent JSON parser/formatter

Errors in balxml examples [documentation update]

bde repo: get BDE building on g++9 -std=C++17

Warning using -Wduplicated-branches

revise ref. to non-existent bdlb_nullinputiterator in bdeut_nullinputiterato

bslmt_threadutil: Support naming threads on solaris

bdlma::BufferedSequentialAllocator is mis-optimized

In bslstl_unorderedmap test driver, is few places COMP instead of EQUAL

EventScheduler::d_waitCount is uninitialised

native_std::hash<bsl::type_index> compile failures in BDE

[bsl] bad documentation in ‘bsls_nativestd’

[bsl] type_index test driver does not build on MSVC 2015 and later (compile

[bsl] improve quality of bsls_platform report on supported macros

[bsl] Many warnings for Solaric gcc in the nightly builds

bsls_stackaddressutil test driver case 7 fails on 64 bit Windows

inteldfp has incomplete bde metadata

advanceTime() call hangs if use EventScheduler + EventSchedulerTimeSource +

please correct widespread baexml_encoder.t and baejsn_encoder.t failures

bdema_bufferedsequential*.t fix failing test cases

bdlma_BufferedSequentialPool::release does not fulfill its contract

balxml_decoder test fails to compile on 64 bit windows without /bigobj

Please add a component documentation secion on Decimal user-defined literal

Cleanup trailing spaces in bde/bde