Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
76 changes: 46 additions & 30 deletions .github/workflows/unit_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,11 @@ env:
DEBIAN_FRONTEND: noninteractive
CMAKE_GENERATOR: Ninja
DEFAULT_CXX_STANDARD: 23
DEFAULT_LLVM_VERSION: 21
DEFAULT_LLVM_VERSION: 22
DEFAULT_GCC_VERSION: 14
MULL_LLVM_MAJOR_VERSION: 19
MULL_LLVM_VERSION: 19.1.1
MULL_VERSION: 0.27.1
MULL_LLVM_MAJOR_VERSION: 20
MULL_LLVM_VERSION: 20.1.2
MULL_VERSION: 0.29.0
HYPOTHESIS_PROFILE: default

concurrency:
Expand All @@ -31,7 +31,7 @@ jobs:
fail-fast: false
matrix:
compiler: [clang, gcc]
version: [12, 13, 14, 18, 19, 20, 21]
version: [12, 13, 14, 18, 19, 20, 21, 22]
cxx_standard: [23]
stdlib: [libstdc++, libc++]
build_type: [Debug]
Expand All @@ -40,62 +40,60 @@ jobs:
cc: "clang"
cxx: "clang++"
cxx_flags: "-stdlib=libstdc++"
- version: 22
compiler: clang
toolchain_root: "/usr/lib/llvm-22"
- version: 22
compiler: clang
stdlib: libc++
cxx_flags: "-stdlib=libc++"
- version: 21
compiler: clang
install: sudo bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)" llvm.sh 21
toolchain_root: "/usr/lib/llvm-21"
- version: 21
compiler: clang
stdlib: libc++
install: sudo bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)" llvm.sh 21 && sudo apt install -y libc++-21-dev libc++abi-21-dev
cxx_flags: "-stdlib=libc++"
- version: 20
compiler: clang
install: sudo bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)" llvm.sh 20
toolchain_root: "/usr/lib/llvm-20"
- version: 20
compiler: clang
stdlib: libc++
install: sudo bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)" llvm.sh 20 && sudo apt install -y libc++-20-dev libc++abi-20-dev
cxx_flags: "-stdlib=libc++"
- version: 19
compiler: clang
install: sudo apt update && sudo apt install -y clang-19
toolchain_root: "/usr/lib/llvm-19"
- version: 19
compiler: clang
stdlib: libc++
install: sudo apt update && sudo apt install -y clang-19 libc++-19-dev libc++abi-19-dev
cxx_flags: "-stdlib=libc++"
- version: 18
compiler: clang
install: sudo apt update && sudo apt install -y clang-18
toolchain_root: "/usr/lib/llvm-18"
- version: 18
compiler: clang
stdlib: libc++
install: sudo apt update && sudo apt install -y clang-18 libc++-18-dev libc++abi-18-dev
cxx_flags: "-stdlib=libc++"
- compiler: gcc
toolchain_root: "/usr"
cxx_flags: ""
- version: 14
compiler: gcc
install: sudo apt update && sudo apt install -y gcc-14 g++-14
cc: "gcc-14"
cxx: "g++-14"
- version: 13
compiler: gcc
install: sudo apt update && sudo apt install -y gcc-13 g++-13
cc: "gcc-13"
cxx: "g++-13"
- version: 12
compiler: gcc
install: sudo apt update && sudo apt install -y gcc-12 g++-12
cc: "gcc-12"
cxx: "g++-12"
cxx_flags: ""
exclude:
- compiler: gcc
version: 22
- compiler: gcc
version: 21
- compiler: gcc
Expand All @@ -118,8 +116,14 @@ jobs:

- name: Install build tools
run: |
${{ matrix.install }}
sudo apt install -y ninja-build python3-venv python3-pip
if [[ "${{matrix.compiler}}" == "clang" ]]; then
export DISTRO=$(lsb_release -cs)
wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | sudo tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc
sudo add-apt-repository -y deb https://apt.llvm.org/$DISTRO/ llvm-toolchain-$DISTRO-${{matrix.version}} main
sudo apt update && sudo apt install -y ninja-build clang-${{matrix.version}} libc++-${{matrix.version}}-dev libc++abi-${{matrix.version}}-dev
else
sudo apt update && sudo apt install -y ninja-build gcc-${{matrix.version}} g++-${{matrix.version}}
fi

- name: Restore CPM cache
env:
Expand Down Expand Up @@ -176,16 +180,22 @@ jobs:
- name: Checkout PR branch
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: Setup python venv
run: |
python3 -m venv ${{github.workspace}}/test_venv
source ${{github.workspace}}/test_venv/bin/activate
echo "${{github.workspace}}/test_venv/bin" >> $GITHUB_PATH

- name: Install build tools
run: |
sudo bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)" llvm.sh ${{env.DEFAULT_LLVM_VERSION}}
sudo apt install -y pipx ninja-build clang-tidy-${{env.DEFAULT_LLVM_VERSION}} clang-format-${{env.DEFAULT_LLVM_VERSION}}
export DISTRO=$(lsb_release -cs)
wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | sudo tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc
sudo add-apt-repository -y deb https://apt.llvm.org/$DISTRO/ llvm-toolchain-$DISTRO-${{env.DEFAULT_LLVM_VERSION}} main
sudo apt update && sudo apt install -y ninja-build clang-tidy-${{env.DEFAULT_LLVM_VERSION}} clang-format-${{env.DEFAULT_LLVM_VERSION}}

- name: Install cmake-format
run: |
pipx install cmakelang
pipx inject cmakelang pyyaml
echo "/opt/pipx_bin" >> $GITHUB_PATH
pip install cmakelang pyyaml

- name: Restore CPM cache
env:
Expand Down Expand Up @@ -228,21 +238,25 @@ jobs:
- compiler: clang
cc: "clang"
cxx: "clang++"
install: sudo bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)" llvm.sh 21
toolchain_root: "/usr/lib/llvm-21"
toolchain_root: "/usr/lib/llvm-22"
- compiler: gcc
cc: "gcc-14"
cxx: "g++-14"
install: sudo apt update && sudo apt install -y gcc-14 g++-14
toolchain_root: "/usr"

steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: Install build tools
run: |
${{ matrix.install }}
sudo apt install -y ninja-build python3-venv python3-pip
if [[ "${{matrix.compiler}}" == "clang" ]]; then
export DISTRO=$(lsb_release -cs)
wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | sudo tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc
sudo add-apt-repository -y deb https://apt.llvm.org/$DISTRO/ llvm-toolchain-$DISTRO-${{env.DEFAULT_LLVM_VERSION}} main
sudo apt update && sudo apt install -y ninja-build clang-${{env.DEFAULT_LLVM_VERSION}}
else
sudo apt update && sudo apt install -y ninja-build ${{matrix.cc}} ${{matrix.cxx}}
fi

- name: Restore CPM cache
env:
Expand Down Expand Up @@ -373,8 +387,10 @@ jobs:

- name: Install build tools
run: |
sudo bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)" llvm.sh ${{env.MULL_LLVM_MAJOR_VERSION}}
sudo apt install -y ninja-build python3-venv python3-pip
export DISTRO=$(lsb_release -cs)
wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | sudo tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc
sudo add-apt-repository -y deb https://apt.llvm.org/$DISTRO/ llvm-toolchain-$DISTRO-${{env.MULL_LLVM_MAJOR_VERSION}} main
sudo apt update && sudo apt install -y ninja-build clang-${{env.MULL_LLVM_MAJOR_VERSION}}

- name: Install mull
env:
Expand Down
2 changes: 1 addition & 1 deletion include/stdx/bitset.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ class bitset {

constexpr static auto lastmask = []() -> elem_t {
if constexpr (N % storage_elem_size != 0) {
return allbits >> (storage_elem_size - N % storage_elem_size);
return allbits >> (storage_elem_size - (N % storage_elem_size));
} else {
return allbits;
}
Expand Down
4 changes: 4 additions & 0 deletions include/stdx/rollover.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,8 @@ template <typename T> rollover_t(T) -> rollover_t<T>;
} // namespace v1
} // namespace stdx

// NOLINTBEGIN(bugprone-std-namespace-modification)

template <typename T, typename U>
struct std::common_type<stdx::rollover_t<T>, stdx::rollover_t<U>> {
using type = stdx::rollover_t<std::common_type_t<T, U>>;
Expand All @@ -153,3 +155,5 @@ struct std::common_type<stdx::rollover_t<T>, I> {
using type =
stdx::rollover_t<std::common_type_t<T, std::make_unsigned_t<I>>>;
};

// NOLINTEND(bugprone-std-namespace-modification)
4 changes: 4 additions & 0 deletions include/stdx/tuple_destructure.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
#include <type_traits>
#include <utility>

// NOLINTBEGIN(bugprone-std-namespace-modification)

template <typename... Ts>
struct std::tuple_size<stdx::tuple<Ts...>>
: std::integral_constant<std::size_t, sizeof...(Ts)> {};
Expand All @@ -26,4 +28,6 @@ struct std::tuple_element<I, stdx::indexed_tuple<IL, Ts...>>
std::remove_cvref_t<decltype(std::declval<stdx::indexed_tuple<
IL, Ts...>>()[stdx::index<I>])>> {};

// NOLINTEND(bugprone-std-namespace-modification)

#endif
6 changes: 5 additions & 1 deletion include/stdx/utility.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ template <typename T, typename U>
} else if constexpr (sizeof(T) > sizeof(U)) {
return (sz * sizeof(T) / sizeof(U)) + (sizeof(T) % sizeof(U) > 0);
} else {
return (sz * sizeof(T) + sizeof(U) - 1) / sizeof(U);
return ((sz * sizeof(T)) + sizeof(U) - 1) / sizeof(U);
}
}
} // namespace detail
Expand Down Expand Up @@ -300,13 +300,17 @@ constexpr auto get(make_integer_sequence<T, N>) {
} // namespace v1
} // namespace stdx

// NOLINTBEGIN(bugprone-std-namespace-modification)

template <typename T, T N>
struct std::tuple_size<stdx::make_integer_sequence<T, N>>
: std::integral_constant<std::size_t, N> {};
template <std::size_t I, typename T, T N>
struct std::tuple_element<I, stdx::make_integer_sequence<T, N>>
: stdx::type_identity<std::integral_constant<T, I>> {};

// NOLINTEND(bugprone-std-namespace-modification)

// NOLINTBEGIN(cppcoreguidelines-macro-usage)

#ifndef FWD
Expand Down