Added is_trivially_copyable and is_trivially_default_constructible type
traits that rely on the non-standard type traits available in libstdc++
from gcc 4.8 and 4.9.
Rather than requiring cxx11_hdr_type_traits in the library and test
requirements, use a more limited test that checks only the type traits
we use in Boost.Atomic.
Similarly, downgrade the requirement of C++ unrestricted unions to
unions with members that have non-trivial default constructors.
Remove the requirements of alignas and alignof, since those are not
mandatory for now.
Closes https://github.com/boostorg/atomic/issues/74.
We are going to use more C++11 features unconditionally, so add more
requirements in the build files. Don't straight require cxx11 in the
Jamfile as this eliminates all versions of MSVC from the builds.
Also remove older compilers that don't support enough of C++11 from CI.
This uses vmactions/solaris-vm project that creates a Solaris virtual
machine and runs the CI job in it.
This CI job is mainly useful for testing fallback POSIX implementation
of waiting/notifying operations.
This mitigates majority of spurious job failures caused by HTTP errors from
Ubuntu APT servers. Presumably, this is caused by DDoS filters triggered by
a multitude of CI jobs started at once.
Some jobs that access Launchpad repositories may still occasionally fail.
This makes WaitOnAddress/WakeByAddressSingle/WakeByAddressAll a mandatory
requirement. Thus, runtime detection of these APIs is now removed.
Also, linking with synchronization lib on Windows is now mandatory. The
library provides WaitOnAddress & co. which are now mandatory.
Added more recent gcc and clang versions, reduced usage of external package
repositories. macos-12 image is now removed from GitHub Actions, so removed
the CI job based on it.
This removes dependencies on Boost.Thread and Boost.Chrono, as well as
their dependencies and potentially allows to test more compilers. In particular,
this removes the dependency on Boost.Lexical cast, which no longer compiles
with gcc 4.6 and 4.7.
As a result of dependent libraries dropping support for C++03, Boost.Atomic
is no longer able to support C++03 and now requires C++11 as a minimum.
Drop C++03 compilers from the CI and update docs accordingly. No code changes
at this time.
Enabling AVX will allow to test future updates that will use these
instructions.
Since MSVC doesn't allow to enable instruction sets for the current CPU,
we enable AVX unconditionally there, in hope that AppVeyor CI runners
support AVX.
Also, different clang versions exhibit various issues in GitHub Actions
when "native" instruction set is enabled, so we also explicitly specify
the instruction set we want for GHA.
In Ubuntu 20.04 there appeared an updated version of the
software-properties-common package in focal-updates, which ships a newer
apt-add-repository version that doesn't support -P/-S/-U command line arguments.
Since we cannot rely on package version checks to determine apt-add-repository
capabilities, we have to parse its --help output instead.
Also, made source list processing more protected against spaces.