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 using directives are presented.