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::streambufinterface 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::ManagedAllocatorprotocol 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
doublevalues.
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_toruint64_tvalues
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, andendthat work on C-style arrays and array-like types (likevector)
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