Skip to content

Test with more modern compilers & standards #990

@h-vetinari

Description

@h-vetinari

Congratulations to the 1.87 release! 🥳

Looking at the release notes, I see under "Boost's primary test compilers are:"

Linux:
    Clang, C++03: 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 12.0.0, 13.0.0, 14.0.0, 15.0.0
    Clang, C++11: 3.4, 11.0.0, 13.0.0, 14.0.0, 15.0.0
    Clang, C++14: 3.5, 3.6, 3.7, 3.8, 3.9, 4.0, 5.0, 12.0.0, 13.0.0, 14.0.0, 15.0.0
    Clang, C++17: 6.0.1, 7.0.0, 8.0.0, 9.0.0, 10.0.0, 11.0.0, 12.0.0, 13.0.0, 14.0.0, 15.0.0
    Clang, C++20: 11.0.0, 12.0.0, 13.0.0, 14.0.0, 15.0.0
    GCC, C++03: 4.6.3, 11, 12
    GCC, C++11: 4.7.3, 4.8.5, 11, 12
    GCC, C++14: 5.4.0, 6.4.0, 7.3.0, 8.0.1, 9.1.0, 11, 12
    GCC, C++17: 7.3.0, 8.0.1, 9.1.0, 11, 12
    GCC, C++20: 8.0.1, 9.1.0, 10, 11, 12

This is almost 2.5 years behind current compilers on linux (GCC 12 released in May 2022, GCC 14 in May 2024; Clang 15 released in Sept. 2022, Clang 19 in Sept. 2024).

I don't know if this is just the documentation that's out of date, or the actual testing, but in either case it should be updated. Compilers regularly add tighter warnings (or even error-by-default) on various aspects of the language, and IMO it should be expected of one of the most prominent C++ libraries to be compatible with current compilers upon release.

Note, I'm not advocating to test the entire version range. For example, I hardly think that testing Clang 3.5, 3.6, 3.7, 3.8, 3.9 (in addition to 3.4) has any benefits in 2025. I leave the question of whether resp. how to thin out the list to the maintainers here, but the newer end should be supported.

An example where users ran into this: #857 (though probably many more; haven't searched subproject issue trackers).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions