BDE Documentation

What is BDE?

BDE stands for BDE Development Environment. Depending on the context, BDE may refer to a suite of low-level C++ libraries, the methodology that guides their development, or to the team that develops them. The BDE libraries strive to meet high standards of design, documentation, and testing and are the foundation of C++ development at Bloomberg. Among other things, the BDE libraries provide an enhanced implementation of STL containers, vocabulary types for representing common concepts (like dates and times), and building blocks for developing multi-threaded applications and network applications.

The BDE team also provides tools and a methodology that enable developers to create their own C++ software that meets similar standards of quality. The coding standards followed by the BDE team can be found here. BDE library development is guided by principles described in Large-Scale C++ Software Design, Large Scale C++: Volume 1 and later work (see white papers ).

BDE Latest News

BDE 4.39.0 Release

See BDE 4.39.0 Release for more information.

Aug 3, 2026

BDE 4.38.0 Release

See BDE 4.38.0 Release for more information.

Jun 1, 2026

MIRA distribution for BDE deprecations

Summary:

  • BDE now provides a sanitized distribution with deprecated BDE API removed.

  • The clients are encouraged to address the build failures in that distribution in a timely manner to allow removal of the deprecated API from BDE code.

See the latest build status

See bde-deprecations-top for more information.

Apr 30, 2026

BDE 4.37.0 Release

See BDE 4.37.0 Release for more information.

Apr 6, 2026

BDE 4.36.0 Release

See BDE 4.36.0 Release for more information.

Mar 23, 2026

BALL Record Formatter Plugins: Flexible Log Output Formatting

Summary:

  • New plugin-based architecture for BALL record formatting using URI-style scheme identifiers (text://, json://, qjson://).

  • Easily switch between text and JSON log output formats without code changes.

See BALL Record Formatter Plugins: Flexible Log Output Formatting for more information.

Mar 2, 2026

BDE 4.35.0 Release

See BDE 4.35.0 Release for more information.

Feb 17, 2026

BDE 4.34.0 Release

See BDE 4.34.0 Release for more information.

Jan 16, 2026

Component of the Week #40: bsls_linkcoercion

Summary:

  • Provides a macro to force a link-time dependency on a symbol.

  • Useful for generating link-time failures when library version mismatches occur.

See Component of the Week #40: bsls_linkcoercion for more information.

Dec 29, 2025

BDE 4.33.0 Release

See BDE 4.33.0 Release for more information.

Dec 22, 2025

Component of the Week #39: baljsn_simpleformatter

Summary:
  • Provides a simple formatter for encoding data in the JSON format.

See Component of the Week #39: baljsn_simpleformatter for more information.

Dec 11, 2025

BDE 4.32.0 Release

See BDE 4.32.0 Release for more information.

Dec 09, 2025

Component of the Week #38: bdld_datum

Summary:
  • Provides a discriminated variant type with a small footprint, particularly useful for interfacing with or creating scripting languages.

See Component of the Week #38: bdld_datum for more information.

Dec 04, 2025

Component of the Week #37: ball_administration

Summary:
  • Provides logging administration functions from an application owner’s perspective

See Component of the Week #37: ball_administration for more information.

Nov 24, 2025

Component of the Week #36: bdlsb_package

Summary:
  • Provide classes that inherit from bsl::streambuf with virtual-functions

See Component of the Week #36: bdlsb - I/O streambufs for memory buffers for more information.

Nov 18, 2025

BDE 4.31.0 Release

See BDE 4.31.0 Release for more information.

Nov 17, 2025

Component of the Week #35: bdls_fdstreambuf

Summary:
  • Provides a stream buffer that can be initialized with a file descriptor.

  • Implements bsl::streambuf interface for file descriptor-based I/O.

  • Supports both text and binary modes, with platform-appropriate line ending handling.

  • Can optionally take ownership of the file descriptor for automatic cleanup.

See Component of the Week #35: bdls_fdstreambuf for more information.

Sep 31, 2025

Component of the Week #34: bdlma_sequentialallocator

Summary:
  • Allows mass-freeing of complex data structures with single operation.

  • Implements the bdlma::ManagedAllocator protocol and efficiently allocates heterogeneous memory blocks.

  • Allocation of small memory segments by client are batched together in large memory blocks allocated from the underlying allocator, resulting in greater allocation speed and efficiency.

See Component of the Week #34: bdlma_sequentialallocator for more information.

Oct 23, 2025

BDE 4.30.0 Release

See BDE 4.30.0 Release for more information.

Oct 20, 2025

Component of the Week #33: balcl_commandline

Summary:
  • A facility for parsing the values of command-line arguments.

See Component of the Week #33: balcl_commandline for more information.

Oct 8, 2025

Component of the Week #32: bhlb_urlutil

Summary:
  • Provides operations for parsing and accessing elements of a URL string.

See cotw_032_bhlb_urlutil-top for more information.

Sep 30, 2025

Component of the Week #31: bdlb_caselessstringview*

Summary:
  • Provide support for case-insensitive keys for standard associative containers.

See Component of the Week #31: bdlb_caselessstringview* for more information.

Sep 22, 2025

Component of the Week #30: baltzo_timezoneutil

Summary:
  • Provide utilities for converting times among different time zones.

See Component of the Week #30: baltzo_timezoneutil for more information.

Sep 16, 2025

BDE 4.29.0 Release

See BDE 4.29.0 Release for more information.

Component of the Week #29: bdljsn_json

Summary:
  • A value-semantic type providing an in-memory representation of JSON documents, along with helper types for JSON arrays and objects, maintaining the invariant that all objects represent valid JSON.

See Component of the Week #29: bdljsn_json for more information.

Sep 1, 2025

Component of the Week #28: bdlf_noop

Summary:
  • A functor class that accepts any type and number of parameters and does nothing, useful for doing nothing even when an interface requires providing a callback.

See Component of the Week #28: bdlf_noop for more information.

Aug 25, 2025

Component of the Week #27: bdlb_pcgrandomgenerator

Summary:
  • Provides a high-performance, high-quality random number generator using the PCG algorithm.

  • Can be used to generate multiple uncorrelated random sequences via stream selectors.

  • Can be seeded with a true random source for high-quality randomness.

See Component of the Week #27: bdlb_pcgrandomgenerator for more information.

Aug 18, 2025

BDE 4.28.0 Release

See BDE 4.28.0 Release for more information.

Aug 7, 2025

Component of the Week #26: bdlf_overloaded

Summary:
  • A utility for creating an overload set of callable things (like lambdas) that is particularly useful with bsl::visit.

See Component of the Week #26: bdlf_overloaded for more information.

Aug 6, 2025

BDE 4.27.0 Release

See BDE 4.27.0 Release for more information.

Aug 1, 2025

Component of the Week #25: bsls_nameof

Summary:
  • A class template that can conveniently stringify a type’s name.

See Component of the Week #25: bsls_nameof for more information.

Jul 30, 2025

Component of the Week #24 Standard Searchers

Summary:
  • Searching for substrings (or subsequences) quickly.

See Component of the Week #24: Standard Searchers for more information.

Jul 25, 2025

Component of the Week #23: bdlt_calendar

Summary:
  • A fast repository for accessing weekend and holiday information.

See Component of the Week #23: bdlt_calendar for more information.

Jul 18, 2025

Component of the Week #22: bdlc_bitarray

Summary:
  • Provide a space-efficient, sequential container of boolean values.

See Component of the Week #22: bdlc_bitarray for more information.

Jul 11, 2025

BDE 4.26.0 Release

See BDE 4.26.0 Release for more information.

Jul 5, 2025

Component of the Week #21: bdlb_doublecompareutil

Summary:
  • Provides utilities for “fuzzy” comparison of double values.

See Component of the Week #21: bdlb_doublecompareutil for more information.

Jun 30, 2025

Component of the Week #20: bdlb_scopeexit

Summary:
  • Provides a general-purpose proctor object that executes a function when exiting a scope.

See Component of the Week #20: bdlb_scopeexit for more information.

Jun 23, 2025

Component of the Week #19: bdlde_utf8util

Summary:
  • Provides basic utilities for working with UTF-8 encoded strings.

See Component of the Week #19: bdlde_utf8util for more information.

Jun 16, 2025

Component of the Week #18: bdlb_transformiterator

Summary:
  • Provides an iterator wrapper that applies a functor transformation on each value when dereferenced.

See Component of the Week #18: bdlb_transformiterator for more information.

Jun 9, 2025

Component of the Week #17: bdlc_flathashset and bdlc_flathashmap

Summary:
  • Provide efficient, open-addressed, unordered set/map containers.

See Component of the Week #17: bdlc_flathashset and bdlc_flathashmap for more information.

Jun 2, 2025

BDE 4.25.0 Release

See BDE 4.25.0 Release for more information.

May 28, 2025

Component of the Week #16: bsldoc_glossary

Summary:
  • Provides a glossary of terms and definitions used throughout BDE documentation.

See Component of the Week #16: bsldoc_glossary for more information.

May 26, 2025

Component of the Week #15: bdlb_bitutil

Summary:
  • Provide efficient bit-manipulation of uint32_t or uint64_t values

See Component of the Week #15: bdlb_bitutil for more information.

May 19, 2025

Component of the Week #14: bslim_formatguard

Summary:
  • Provides a guard for saving the formatting state of a stream object.

See Component of the Week #14: bslim_formatguard for more information.

May 12, 2025

Component of the Week #13: bsls_compilerfeatures

Summary:
  • Provide a set of preprocessor macros to detect the current compiler, C++ version, and its supported features.

See Component of the Week #13: bsls_compilerfeatures for more information.

May 5, 2025

BDE 4.24.0 Release

See BDE 4.24.0 Release for more information.

Apr 30, 2025

Component of the Week #12: bdldfp_decimal

Summary:
  • Accurately represent base-10 floating-point numbers.

See Component of the Week #12: bdldfp_decimal for more information.

Apr 29, 2025

Component of the Week #11: bslh_hash

Summary:
  • Provide composable facilities for defining hash functions.

See Component of the Week #11: bslh_hash for more information.

Apr 22, 2025

BDE 4.23.0 Release

See BDE 4.23.0 Release for more information.

Apr 14, 2025

Component of the Week #10: bsls_asserttest

Summary:
  • Provide a facility to test assertion macros.

See Component of the Week #10: bsls_asserttest for more information.

Apr 14, 2025

Component of the Week #9: bdls_tempdirectoryguard

Summary:
  • Provide a mechanism to create and remove temporary directories.

See Component of the Week #9: bdls_tempdirectoryguard for more information.

Apr 7, 2025

Component of the Week #8: bdlpcre_regex

Summary:
  • Provide a perl-compatible regular expression interface.

See Component of the Week #8: bdlpcre_regex for more information.

Mar 31, 2025

Component of the Week #7: bsls_platform

Summary:
  • Provide a set of preprocessor macros that allow determining the properties of the target host platform at compile time.

See Component of the Week #7: bsls_platform for more information.

Mar 24, 2025

BDE 4.22.0 Release

See BDE 4.22.0 Release for more information.

Mar 20, 2025

Components of the Week #6: bdlb_transparent*

Summary:
  • Provide comparators and hash functions for use with standard containers that allow users to efficiently search the container using a type different from (but comparable to) the container’s key.

See Component of the Week #6: bdlb_transparent* for more information.

Mar 18, 2025

Component of the Week #5: bdlb_numericparseutil

Summary:
  • Provides functions for efficient and safe parsing of integral and floating-point numbers.

See Component of the Week #5: bdlb_numericparseutil for more information.

Mar 10, 2025

Component of the Week #4: bslalg_numericformatterutil

Summary:
  • Provides utilities for efficiently converting integral and floating-point values to strings in various formats.

See Component of the Week #4: bslalg_numericformatterutil for more information.

Mar 3, 2025

BDE 4.21.0 Release

See BDE 4.21.0 Release for more information.

Feb 24, 2025

Component of the Week #3: bdlb_topologicalsortutil

Summary:
  • Enables sorting the nodes of a Directed Acyclic Graph in dependency order.

See Component of the Week #3: bdlb_topologicalsortutil for more information.

Feb 24, 2025

Component of the Week #2: bsl_iterator

Summary:
  • Provides free functions like size, begin, and end that work on C-style arrays and array-like types (like vector)

See Component of the Week #2: bsl_iterator for more information.

Feb 18, 2025

Component of the Week #1: bdlb_tokenizer

Summary:
  • Provides a class for tokenizing text.

See Component of the Week #1: bdlb_tokenizer for more information.

Feb 10, 2025

BDE 4.20.0 Release

See BDE 4.20.0 Release for more information.

Feb 3, 2025

BDE 4.19.0 Release

See BDE 4.19.0 Release for more information.

Jan 27, 2025

BDE 4.18.0 Release

See BDE 4.18.0 Release for more information.

Dec 23, 2024

BDE 4.17.0 Release

See BDE 4.17.0 Release for more information.

Nov 18, 2024

BDE 4.16.0 Release

See BDE 4.16.0 Release for more information.

Oct 28, 2024

BDE 4.15.0 Release

See BDE 4.15.0 Release for more information.

Oct 7, 2024

BDE 4.14.0 Release

See BDE 4.14.0 Release for more information.

Sep 23, 2024

BDE 4.13.0 Release

See BDE 4.13.0 Release for more information.

Sep 2, 2024

BDE 4.12.0 Release

See BDE 4.12.0 Release for more information.

Aug 12, 2024

BDE 4.11.0 Release

See BDE 4.11.0 Release for more information.

Jul 17, 2024

BDE 4.10.0 Release

See BDE 4.10.0 Release for more information.

Jun 26, 2024

BDE 4.9.0 Release

See BDE 4.9.0 Release for more information.

May 31, 2024

BDE 4.8.0 Release

See BDE 4.8.0 Release for more information.

May 19, 2024

BDE 4.7.0 Release

See BDE 4.7.0 Release for more information.

Apr 23, 2024

BDE 4.5.0 Release

See BDE 4.5.0 Release for more information.

Mar 18, 2024

bde-format 15 Release

See bde-format 15 Release for more information.

Feb 29, 2024

BDE 4.3.0 Release

See BDE 4.3.0 Release for more information.

Feb 22, 2024

BDE 4.2.0 Release

See BDE 4.2.0 Release for more information.

Feb 7, 2024

BDE 4.1.0 Release

See BDE 4.1.0 Release for more information.

Feb 1, 2024

BDE 4.0.0 Release

See BDE 4.0.0 Release for more information.

Jan 8, 2024

BDE 3.127.0 Release

See BDE 3.127.0 Release for more information.

Dec 6, 2023

BDE 3.126.0 Release

See BDE 3.126.0 Release for more information.

Nov 10, 2023