Supported Platforms¶
BDE, as a fundamental low-level library, is expected to support a wide array of “platforms” (processor/OS/compiler combinations). We categorize platforms into three different tiers of support, and set a minimum supported version for each compiler.
Current Minimum Compilers Supported¶
gcc-9.3
MSVC 2017
clang-11.0 / XCode 11
Sun-cc-5.15 (Solaris Studio 12.6)
Tiers of Support¶
Tier 1: Bloomberg Production Platforms¶
x86/Linux/gcc-10
x86/Windows/MSVC2022
x86/Windows/MSVC2019
x86/Windows/MSVC2017
Sparc/Solaris/Sun-cc-5.15
All using the default production standard library.
Tier 2: Actively Supported Platforms¶
These platforms are not Bloomberg production platforms, but either have a large base of Bloomberg active users (e.g., x86/OSX/clang), or tooling that depends on them (e.g., Sparc/Solaris/gcc), or are expected to be production platforms in the future (x86/linux/gcc-11).
x86/OSX/clang
Apple M1/OSX/clang 1
x86/Linux/gcc-11
x86/Linux/clang
Sparc/Solaris/gcc-10
Notes
- 1
Apple M1 hardware has qualified tier-2 support. Currently there is no server hardware, no automated builds, and limited developer hardware. BDE will address issues on a best-effort basis.
Tier 3: User Supported Platforms¶
These are platforms for which code has been contributed, often by motivated BDE users, but the BDE team does not actively support.
x86/Cygwin/gcc
ARM/Linux/gcc
x86/Solaris/gcc
In addition, some compilers allow a choice of standard library. Choices of standard library outside of the default options are also considered Tier 3. This includes:
gcc with stdcxx
clang with stdc++
Supported Compiler Versions¶
Language Support Requirements¶
Language Standard |
GCC |
Clang |
Visual Studio |
Solaris Studio |
---|---|---|---|---|
C++17 |
7 |
7 |
2019 (MSVC 19.20) |
Not supported |
C++20 |
11.1 |
15 |
2022 (MSVC 19.30) |
Not supported |
Rationale¶
The question of which versions of a compiler to support is inherently tricky. Older versions of a compiler may not contain language or library support for newer features of C++. Newer versions of a compiler may contain errors, generate new warnings, or be less permissive of non-standard constructs. As a general guideline, versions of a compiler used in production at Bloomberg are part of the Tier 1 platforms. Otherwise, as a guideline, compiler versions released two years ago (measured from now) should be fully supported, as being neither too old nor too leading-edge.
Current Test Matrix¶
The compilers in the active test matrix for BDE:
gcc-9, gcc-10, gcc-11
MSVC 2017, 2019, 2022
Apple clang-11 (MacOS)
clang-11, clang-15 (Linux)
Sun C++ 5.12, 5.13, and 5.15
Compiler Patch Information¶
The following tables catalogue known issues with compiler patch versions:
MSVC¶
Known Broken Version |
Known Fixed Version |
Observed behavior |
---|---|---|
1929 |
1931 |
Example compiler error: example.cpp(17): error C3861: '==': identifier not found
MSVC has a problem with unqualified name lookup for equality
operators if multiple |