diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000000..5bf1d3d448 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,8 @@ +version: 2 + +updates: + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" + day: "wednesday" \ No newline at end of file diff --git a/.github/workflows/armv7.yml b/.github/workflows/armv7.yml index 7d5426282d..0dfa147e3c 100644 --- a/.github/workflows/armv7.yml +++ b/.github/workflows/armv7.yml @@ -18,7 +18,7 @@ on: jobs: build-armv7: - runs-on: ubuntu-24.04 + runs-on: ubuntu-26.04 name: GCC armv7 (NEON, cross-compiled) steps: @@ -28,17 +28,17 @@ jobs: run: | sudo apt-get update sudo apt-get install -y \ - gcc-13-arm-linux-gnueabihf \ - g++-13-arm-linux-gnueabihf \ - libstdc++-13-dev-armhf-cross \ + gcc-15-arm-linux-gnueabihf \ + g++-15-arm-linux-gnueabihf \ + libstdc++-15-dev-armhf-cross \ libc6-armhf-cross \ - qemu-user-static + qemu-user - name: Verify compiler and NEON target macro run: | - arm-linux-gnueabihf-g++-13 --version - qemu-arm-static --version - arm-linux-gnueabihf-g++-13 -std=c++23 -march=armv7-a -mfpu=neon -mfloat-abi=hard -dM -E -x c++ /dev/null | grep "__ARM_NEON" + arm-linux-gnueabihf-g++-15 --version + qemu-arm --version + arm-linux-gnueabihf-g++-15 -std=c++23 -march=armv7-a -mfpu=neon -mfloat-abi=hard -dM -E -x c++ /dev/null | grep "__ARM_NEON" - name: Create CMake toolchain file run: | @@ -46,8 +46,8 @@ jobs: set(CMAKE_SYSTEM_NAME Linux) set(CMAKE_SYSTEM_PROCESSOR armv7) - set(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc-13) - set(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++-13) + set(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc-15) + set(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++-15) set(CMAKE_FIND_ROOT_PATH /usr/arm-linux-gnueabihf) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) @@ -55,7 +55,7 @@ jobs: set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) # Use QEMU to run selected target binaries in smoke tests. - set(CMAKE_CROSSCOMPILING_EMULATOR qemu-arm-static;-L;/usr/arm-linux-gnueabihf) + set(CMAKE_CROSSCOMPILING_EMULATOR qemu-arm;-L;/usr/arm-linux-gnueabihf) # We're cross-compiling; avoid running target executables during configure. set(CMAKE_CROSSCOMPILING TRUE) diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml index 2c4846b904..7ad06f873f 100644 --- a/.github/workflows/benchmark.yml +++ b/.github/workflows/benchmark.yml @@ -11,11 +11,11 @@ on: jobs: skip_ws_benchmark: - runs-on: ubuntu-24.04 + runs-on: ubuntu-26.04 env: - CC: gcc-14 - CXX: g++-14 + CC: gcc-15 + CXX: g++-15 steps: - uses: actions/checkout@v6 @@ -45,11 +45,11 @@ jobs: fi string_write_benchmark: - runs-on: ubuntu-24.04 + runs-on: ubuntu-26.04 env: - CC: gcc-14 - CXX: g++-14 + CC: gcc-15 + CXX: g++-15 steps: - uses: actions/checkout@v6 diff --git a/.github/workflows/big-endian.yml b/.github/workflows/big-endian.yml index 7a2eb4de09..54e98db3d7 100644 --- a/.github/workflows/big-endian.yml +++ b/.github/workflows/big-endian.yml @@ -18,7 +18,7 @@ on: jobs: build-s390x: - runs-on: ubuntu-24.04 + runs-on: ubuntu-26.04 name: GCC s390x (big-endian, cross-compiled) steps: @@ -28,14 +28,14 @@ jobs: run: | sudo apt-get update sudo apt-get install -y \ - g++-13-s390x-linux-gnu \ - qemu-user-static \ - libstdc++-13-dev-s390x-cross + g++-15-s390x-linux-gnu \ + qemu-user \ + libstdc++-15-dev-s390x-cross - name: Verify cross-compiler run: | - s390x-linux-gnu-g++-13 --version - qemu-s390x-static --version + s390x-linux-gnu-g++-15 --version + qemu-s390x --version - name: Create CMake toolchain file run: | @@ -43,14 +43,16 @@ jobs: set(CMAKE_SYSTEM_NAME Linux) set(CMAKE_SYSTEM_PROCESSOR s390x) - set(CMAKE_C_COMPILER s390x-linux-gnu-gcc-13) - set(CMAKE_CXX_COMPILER s390x-linux-gnu-g++-13) + set(CMAKE_C_COMPILER s390x-linux-gnu-gcc-15) + set(CMAKE_CXX_COMPILER s390x-linux-gnu-g++-15) set(CMAKE_FIND_ROOT_PATH /usr/s390x-linux-gnu) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) + set(CMAKE_CROSSCOMPILING_EMULATOR qemu-s390x;-L;/usr/s390x-linux-gnu) + # Tell CMake we're cross-compiling, so it won't try to run test executables set(CMAKE_CROSSCOMPILING TRUE) EOF @@ -70,8 +72,8 @@ jobs: } } EOF - s390x-linux-gnu-g++-13 -std=c++20 /tmp/check_endian.cpp -o /tmp/check_endian - qemu-s390x-static -L /usr/s390x-linux-gnu /tmp/check_endian + s390x-linux-gnu-g++-15 -std=c++20 /tmp/check_endian.cpp -o /tmp/check_endian + qemu-s390x -L /usr/s390x-linux-gnu /tmp/check_endian - name: Configure CMake run: | diff --git a/.github/workflows/boost-asio.yml b/.github/workflows/boost-asio.yml index 9fefb4f7ef..53fc1e50fe 100644 --- a/.github/workflows/boost-asio.yml +++ b/.github/workflows/boost-asio.yml @@ -18,14 +18,14 @@ on: jobs: build: - runs-on: ubuntu-latest + runs-on: ubuntu-26.04 strategy: fail-fast: false matrix: compiler: - - { name: clang, version: 18 } - - { name: clang, version: 20 } - - { name: gcc, version: 14 } + - { name: clang, version: 21 } + - { name: clang, version: 22 } + - { name: gcc, version: 15 } boost_version: [1.88.0, 1.86.0] env: @@ -35,14 +35,11 @@ jobs: steps: - uses: actions/checkout@v6 - - name: Install clang - if: matrix.compiler.name == 'clang' + - name: Install Clang dependencies + if: ${{ matrix.compiler.name == 'clang' }} run: | - wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - - echo "deb http://apt.llvm.org/noble/ llvm-toolchain-noble-${{ matrix.compiler.version }} main" | sudo tee /etc/apt/sources.list.d/llvm.list sudo apt-get update - sudo apt-get install -y --fix-missing clang-${{ matrix.compiler.version }} libc++-${{ matrix.compiler.version }}-dev libc++abi-${{ matrix.compiler.version }}-dev - echo "PATH=/usr/lib/llvm-${{ matrix.compiler.version }}/bin:$PATH" >> $GITHUB_ENV + sudo apt-get install -y libc++-dev libc++abi-dev - name: Install Boost id: install-boost diff --git a/.github/workflows/clang-format.yml b/.github/workflows/clang-format.yml index 28236a3562..f807ea786e 100644 --- a/.github/workflows/clang-format.yml +++ b/.github/workflows/clang-format.yml @@ -11,7 +11,7 @@ on: jobs: build: - runs-on: ubuntu-latest + runs-on: ubuntu-26.04 steps: - uses: actions/checkout@v6 @@ -20,7 +20,7 @@ jobs: source: '.' exclude: '' extensions: 'h,hpp,cpp' - clangFormatVersion: 20 + clangFormatVersion: 22 style: file inplace: True - uses: EndBug/add-and-commit@v9 diff --git a/.github/workflows/clang-linux-erlang.yml b/.github/workflows/clang-linux-erlang.yml index 50a2cf9716..10c4df8c7a 100644 --- a/.github/workflows/clang-linux-erlang.yml +++ b/.github/workflows/clang-linux-erlang.yml @@ -18,12 +18,12 @@ on: jobs: build: - runs-on: ubuntu-24.04 + runs-on: ubuntu-26.04 strategy: fail-fast: false matrix: - clang: [17, 18] + clang: [21, 22] build_type: [Debug] std: [23] diff --git a/.github/workflows/clang-linux-latest.yml b/.github/workflows/clang-linux-latest.yml deleted file mode 100644 index 43685b058e..0000000000 --- a/.github/workflows/clang-linux-latest.yml +++ /dev/null @@ -1,72 +0,0 @@ -name: clang-linux-latest -# This is for the latest version of Clang that aren't yet -# supported by default in the Github Action runners -# and instead need to be installed - -on: - push: - branches: - - main - - feature/* - paths-ignore: - - '**/*.md' - - 'docs/**' - pull_request: - branches: - - main - paths-ignore: - - '**/*.md' - - 'docs/**' - workflow_dispatch: - -jobs: - build: - runs-on: ubuntu-latest - - strategy: - fail-fast: false - matrix: - clang: [19, 20] - build_type: [Debug] - std: [23] - - env: - CC: clang-${{matrix.clang}} - CXX: clang++-${{matrix.clang}} - LLVM_VERSION: ${{matrix.clang}} - - steps: - - uses: actions/checkout@v6 - - - name: Install latest clang - run: | - wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - - # Use the 'noble' repository for Ubuntu 24.04 - echo "deb http://apt.llvm.org/noble/ llvm-toolchain-noble-${{matrix.clang}} main" | sudo tee /etc/apt/sources.list.d/llvm.list - # Clean apt cache and update before installing - sudo apt-get clean - sudo apt-get update - sudo apt-get install -y --fix-missing clang-${{matrix.clang}} libc++-${{matrix.clang}}-dev libc++abi-${{matrix.clang}}-dev - - - name: Set path for clang - run: | - echo "PATH=/usr/lib/llvm-${{matrix.clang}}/bin:$PATH" >> $GITHUB_ENV - clang-${{matrix.clang}} --version - clang++-${{matrix.clang}} --version - - - name: Configure CMake - run: | - cmake -B ${{github.workspace}}/build \ - -DCMAKE_BUILD_TYPE=${{matrix.build_type}} \ - -DCMAKE_CXX_STANDARD=${{matrix.std}} \ - -DCMAKE_C_COMPILER=${{env.CC}} \ - -DCMAKE_CXX_COMPILER=${{env.CXX}} \ - -DCMAKE_CXX_FLAGS="-stdlib=libc++" \ - -DCMAKE_EXE_LINKER_FLAGS="-stdlib=libc++ -lc++abi" - - - name: Build - run: cmake --build build -j $(nproc) - - - name: Test - working-directory: build - run: ctest -j $(nproc) --output-on-failure \ No newline at end of file diff --git a/.github/workflows/clang-linux.yml b/.github/workflows/clang-linux.yml index 2ccf1f3ba6..394f1a7d91 100644 --- a/.github/workflows/clang-linux.yml +++ b/.github/workflows/clang-linux.yml @@ -18,12 +18,12 @@ on: jobs: build: - runs-on: ubuntu-latest + runs-on: ubuntu-26.04 strategy: fail-fast: false matrix: - clang: [17, 18] + clang: [21, 22] build_type: [Debug] std: [23] diff --git a/.github/workflows/clang-tidy.yml b/.github/workflows/clang-tidy.yml index 676a7e6ffd..8808599e19 100644 --- a/.github/workflows/clang-tidy.yml +++ b/.github/workflows/clang-tidy.yml @@ -8,7 +8,7 @@ on: jobs: clang-tidy-include-cleaner: - runs-on: ubuntu-latest + runs-on: ubuntu-26.04 steps: - name: Checkout code @@ -17,21 +17,16 @@ jobs: fetch-depth: 0 # Fetch all history for git diff token: ${{ secrets.GITHUB_TOKEN }} # Use GITHUB_TOKEN for pushing changes - - name: Install Clang-Tidy - run: | - sudo apt-get update - sudo apt-get install -y clang-tools-19 - - name: Run Clang-Tidy Include Cleaner run: | echo "Running clang-tidy on .hpp files" - git diff --diff-filter=d --name-only origin/main | grep -E "\.hpp$" | xargs -r -t -n 1 -P 8 -- /usr/bin/clang-tidy-19 --fix --checks="-*,misc-include-cleaner" || true + git diff --diff-filter=d --name-only origin/main | grep -E "\.hpp$" | xargs -r -t -n 1 -P 8 -- /usr/bin/clang-tidy-22 --fix --checks="-*,misc-include-cleaner" || true echo "Running clang-tidy on .cpp files" - git diff --diff-filter=d --name-only origin/main | grep -E "\.cpp$" | xargs -r -t -n 1 -P 8 -- /usr/bin/clang-tidy-19 --fix --checks="-*,misc-include-cleaner" || true + git diff --diff-filter=d --name-only origin/main | grep -E "\.cpp$" | xargs -r -t -n 1 -P 8 -- /usr/bin/clang-tidy-22 --fix --checks="-*,misc-include-cleaner" || true - name: Commit changes - uses: EndBug/add-and-commit@v9 + uses: EndBug/add-and-commit@v10 with: author_name: Clang Tidy Bot author_email: actions@github.com diff --git a/.github/workflows/clang.yml b/.github/workflows/clang.yml index 59c484748d..1c31d13e26 100644 --- a/.github/workflows/clang.yml +++ b/.github/workflows/clang.yml @@ -1,4 +1,4 @@ -name: clang +name: clang (MacOS) on: push: diff --git a/.github/workflows/code_coverage.yml b/.github/workflows/code_coverage.yml index ab8d67eb2b..e8f2e30765 100644 --- a/.github/workflows/code_coverage.yml +++ b/.github/workflows/code_coverage.yml @@ -8,24 +8,24 @@ env: jobs: build: - runs-on: ubuntu-latest + runs-on: ubuntu-26.04 steps: - uses: actions/checkout@v6 - name: Set up environment run: | - echo "CXX=clang++-16" >> "$GITHUB_ENV" - echo "CC=clang-16" >> "$GITHUB_ENV" + echo "CXX=clang++-22" >> "$GITHUB_ENV" + echo "CC=clang-22" >> "$GITHUB_ENV" echo "CXXFLAGS="-fprofile-instr-generate -fcoverage-mapping"" >> "$GITHUB_ENV" echo "LDFLAGS="-fprofile-instr-generate"" >> "$GITHUB_ENV" echo "LLVM_PROFILE_FILE="code-%p.profraw"" >> "$GITHUB_ENV" - - name: Have llvm-cov point to llvm-cov-16 + - name: Have llvm-cov point to llvm-cov-22 run: | mkdir -p /home/runner/.local/bin - ln -s `which llvm-cov-16` /home/runner/.local/bin/llvm-cov - ln -s `which llvm-profdata-16` /home/runner/.local/bin/llvm-profdata + ln -s `which llvm-cov-22` /home/runner/.local/bin/llvm-cov + ln -s `which llvm-profdata-22` /home/runner/.local/bin/llvm-profdata - name: Configure CMake run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} @@ -37,7 +37,7 @@ jobs: run: cmake --build build --config ${{env.BUILD_TYPE}} --target ccov-all -j 2 - name: Archive code coverage results - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v7 with: name: code-coverage-report path: ${{github.workspace}}/build/ccov/all-merged diff --git a/.github/workflows/disable-always-inline.yml b/.github/workflows/disable-always-inline.yml index 3d170b4453..725e27c63e 100644 --- a/.github/workflows/disable-always-inline.yml +++ b/.github/workflows/disable-always-inline.yml @@ -18,9 +18,7 @@ on: jobs: gcc15: - runs-on: ubuntu-24.04 - container: - image: gcc:15 + runs-on: ubuntu-26.04 strategy: fail-fast: false @@ -29,22 +27,10 @@ jobs: std: [23] env: - CC: gcc - CXX: g++ + CC: gcc-15 + CXX: g++-15 steps: - - name: Install build dependencies - env: - DEBIAN_FRONTEND: noninteractive - run: | - apt-get update - apt-get install -y --no-install-recommends \ - ca-certificates \ - cmake \ - git \ - python3 - update-ca-certificates - - uses: actions/checkout@v6 - name: Configure CMake @@ -62,8 +48,8 @@ jobs: - name: Test run: ctest --output-on-failure --test-dir "$GITHUB_WORKSPACE/build" - clang19: - runs-on: ubuntu-latest + clang22: + runs-on: ubuntu-26.04 strategy: fail-fast: false @@ -72,26 +58,16 @@ jobs: std: [23] env: - CC: clang-19 - CXX: clang++-19 - LLVM_VERSION: 19 + CC: clang-22 + CXX: clang++-22 steps: - uses: actions/checkout@v6 - - name: Install Clang 19 + - name: Install dependencies run: | - wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - - echo "deb http://apt.llvm.org/noble/ llvm-toolchain-noble-19 main" | sudo tee /etc/apt/sources.list.d/llvm.list - sudo apt-get clean sudo apt-get update - sudo apt-get install -y --fix-missing clang-19 libc++-19-dev libc++abi-19-dev - - - name: Set path for clang - run: | - echo "PATH=/usr/lib/llvm-19/bin:$PATH" >> $GITHUB_ENV - clang-19 --version - clang++-19 --version + sudo apt-get install -y libc++-dev libc++abi-dev - name: Configure CMake run: | diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 5756665237..0a07f5f7ce 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -20,7 +20,7 @@ concurrency: jobs: build: - runs-on: ubuntu-latest + runs-on: ubuntu-26.04 steps: - name: Checkout uses: actions/checkout@v6 @@ -52,7 +52,7 @@ jobs: environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} - runs-on: ubuntu-latest + runs-on: ubuntu-26.04 needs: build steps: - name: Deploy to GitHub Pages diff --git a/.github/workflows/exhaustive_float.yml b/.github/workflows/exhaustive_float.yml index deedfe275c..147101aeec 100644 --- a/.github/workflows/exhaustive_float.yml +++ b/.github/workflows/exhaustive_float.yml @@ -18,12 +18,12 @@ on: jobs: build: - runs-on: ubuntu-24.04 + runs-on: ubuntu-26.04 strategy: fail-fast: false matrix: - clang: [18] + clang: [22] build_type: [Release] std: [23] diff --git a/.github/workflows/exhaustive_int.yml b/.github/workflows/exhaustive_int.yml index 79b7ff93a5..409fd141c2 100644 --- a/.github/workflows/exhaustive_int.yml +++ b/.github/workflows/exhaustive_int.yml @@ -18,12 +18,12 @@ on: jobs: build: - runs-on: ubuntu-24.04 + runs-on: ubuntu-26.04 strategy: fail-fast: false matrix: - clang: [18] + clang: [22] build_type: [Release] std: [23] diff --git a/.github/workflows/gcc-erlang.yml b/.github/workflows/gcc-erlang.yml index a8d5290da0..1277bf5f55 100644 --- a/.github/workflows/gcc-erlang.yml +++ b/.github/workflows/gcc-erlang.yml @@ -18,12 +18,12 @@ on: jobs: build: - runs-on: ubuntu-24.04 + runs-on: ubuntu-26.04 strategy: fail-fast: false matrix: - gcc: [13, 14] + gcc: [14, 15] build_type: [Debug] std: [23] @@ -32,13 +32,14 @@ jobs: CXX: g++-${{matrix.gcc}} steps: - - name: Install Dependencies - run: | - sudo apt-get update - sudo apt-get install erlang-dev - uses: actions/checkout@v6 + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y erlang-dev + - name: Configure CMake run: | CXXFLAGS="-g3" cmake -B ${{github.workspace}}/build \ diff --git a/.github/workflows/gcc-old-abi.yml b/.github/workflows/gcc-old-abi.yml index 4b92b7deab..e8f10aa111 100644 --- a/.github/workflows/gcc-old-abi.yml +++ b/.github/workflows/gcc-old-abi.yml @@ -18,12 +18,12 @@ on: jobs: build: - runs-on: ubuntu-24.04 + runs-on: ubuntu-26.04 strategy: fail-fast: false matrix: - gcc: [13, 14] + gcc: [14, 15] build_type: [Debug] std: [23] @@ -42,48 +42,4 @@ jobs: run: cmake --build "$GITHUB_WORKSPACE/build" -j $(nproc) - name: Test - run: ctest --output-on-failure --test-dir "$GITHUB_WORKSPACE/build" - - build-gcc15: - runs-on: ubuntu-24.04 - container: - image: gcc:15 - - strategy: - fail-fast: false - matrix: - build_type: [Debug] - std: [23] - - env: - CC: gcc - CXX: g++ - - steps: - - name: Install build dependencies - env: - DEBIAN_FRONTEND: noninteractive - run: | - apt-get update - apt-get install -y --no-install-recommends \ - ca-certificates \ - cmake \ - git \ - libssl-dev \ - python3 - update-ca-certificates - - - uses: actions/checkout@v6 - - - name: Prepare build directory - run: cmake -E make_directory "$GITHUB_WORKSPACE/build" - - - name: Configure CMake - run: | - CXXFLAGS="-g3 -D_GLIBCXX_USE_CXX11_ABI=0" cmake -S "$GITHUB_WORKSPACE" -B "$GITHUB_WORKSPACE/build" -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DCMAKE_CXX_STANDARD=${{matrix.std}} - - - name: Build - run: cmake --build "$GITHUB_WORKSPACE/build" -j $(nproc) - - - name: Test - run: ctest --output-on-failure --test-dir "$GITHUB_WORKSPACE/build" + run: ctest --output-on-failure --test-dir "$GITHUB_WORKSPACE/build" \ No newline at end of file diff --git a/.github/workflows/gcc-x86.yml b/.github/workflows/gcc-x86.yml index c5b75729b8..2e57176fda 100644 --- a/.github/workflows/gcc-x86.yml +++ b/.github/workflows/gcc-x86.yml @@ -18,12 +18,12 @@ on: jobs: build: - runs-on: ubuntu-24.04 + runs-on: ubuntu-26.04 strategy: fail-fast: false matrix: - gcc: [13, 14] + gcc: [14, 15] build_type: [Debug] std: [23] diff --git a/.github/workflows/gcc.yml b/.github/workflows/gcc.yml index 8dec3858e3..a676b9f653 100644 --- a/.github/workflows/gcc.yml +++ b/.github/workflows/gcc.yml @@ -18,12 +18,12 @@ on: jobs: build: - runs-on: ubuntu-24.04 + runs-on: ubuntu-26.04 strategy: fail-fast: false matrix: - gcc: [13, 14] + gcc: [14, 15] build_type: [Debug] std: [23] @@ -44,52 +44,8 @@ jobs: - name: Test run: ctest --output-on-failure --test-dir "$GITHUB_WORKSPACE/build" - build-gcc15: - runs-on: ubuntu-24.04 - container: - image: gcc:15 - - strategy: - fail-fast: false - matrix: - build_type: [Debug] - std: [23] - - env: - CC: gcc - CXX: g++ - - steps: - - name: Install build dependencies - env: - DEBIAN_FRONTEND: noninteractive - run: | - apt-get update - apt-get install -y --no-install-recommends \ - ca-certificates \ - cmake \ - git \ - libssl-dev \ - python3 - update-ca-certificates - - - uses: actions/checkout@v6 - - - name: Prepare build directory - run: cmake -E make_directory "$GITHUB_WORKSPACE/build" - - - name: Configure CMake - run: | - CXXFLAGS="-g3" cmake -S "$GITHUB_WORKSPACE" -B "$GITHUB_WORKSPACE/build" -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DCMAKE_CXX_STANDARD=${{matrix.std}} - - - name: Build - run: cmake --build "$GITHUB_WORKSPACE/build" -j $(nproc) - - - name: Test - run: ctest --output-on-failure --test-dir "$GITHUB_WORKSPACE/build" - build-gcc16: - runs-on: ubuntu-24.04 + runs-on: ubuntu-26.04 container: image: gcc:16.1 @@ -136,7 +92,7 @@ jobs: # C++26 P2996 reflection coverage on GCC 16.1. # Replaces the standalone gcc-p2996-reflection.yml workflow which used # ubuntu:26.04 + apt-installed gcc-16; gcc:16.1 is the official image. - runs-on: ubuntu-24.04 + runs-on: ubuntu-26.04 container: image: gcc:16.1 diff --git a/.github/workflows/p2996-reflection.yml b/.github/workflows/p2996-reflection.yml index 661f17d2bb..041ebc8ae2 100644 --- a/.github/workflows/p2996-reflection.yml +++ b/.github/workflows/p2996-reflection.yml @@ -21,7 +21,7 @@ env: jobs: test-p2996: - runs-on: ubuntu-latest + runs-on: ubuntu-26.04 name: P2996 Reflection Tests steps: diff --git a/.github/workflows/quickfuzz.yml b/.github/workflows/quickfuzz.yml index e146bf3f18..3ca370ceb2 100644 --- a/.github/workflows/quickfuzz.yml +++ b/.github/workflows/quickfuzz.yml @@ -18,12 +18,12 @@ on: jobs: build: - runs-on: ubuntu-24.04 + runs-on: ubuntu-26.04 strategy: fail-fast: false matrix: - clang: [19] + clang: [22] build_type: [Debug] std: [23] @@ -34,11 +34,6 @@ jobs: steps: - uses: actions/checkout@v6 - - name: Install dependencies - run: | - sudo apt-get update - sudo apt-get install -y clang-19 - - name: Configure CMake run: | cmake -B ${{github.workspace}}/build \ diff --git a/.github/workflows/sanitizers.yml b/.github/workflows/sanitizers.yml index 71a86a49bd..c29c095c59 100644 --- a/.github/workflows/sanitizers.yml +++ b/.github/workflows/sanitizers.yml @@ -18,9 +18,7 @@ on: jobs: asan: - runs-on: ubuntu-24.04 - container: - image: gcc:15 + runs-on: ubuntu-26.04 strategy: fail-fast: false @@ -29,23 +27,10 @@ jobs: std: [23] env: - CC: gcc - CXX: g++ + CC: gcc-15 + CXX: g++-15 steps: - - name: Install build dependencies - env: - DEBIAN_FRONTEND: noninteractive - run: | - apt-get update - apt-get install -y --no-install-recommends \ - ca-certificates \ - cmake \ - git \ - libssl-dev \ - python3 - update-ca-certificates - - uses: actions/checkout@v6 - name: Configure CMake diff --git a/.github/workflows/simple_float.yml b/.github/workflows/simple_float.yml index 961a086cb7..c18024a3fb 100644 --- a/.github/workflows/simple_float.yml +++ b/.github/workflows/simple_float.yml @@ -18,12 +18,12 @@ on: jobs: clang: - runs-on: ubuntu-24.04 + runs-on: ubuntu-26.04 strategy: fail-fast: false matrix: - clang: [18] + clang: [22] build_type: [Release] std: [23] @@ -57,12 +57,12 @@ jobs: run: ctest -R simple_float_test --output-on-failure gcc: - runs-on: ubuntu-24.04 + runs-on: ubuntu-26.04 strategy: fail-fast: false matrix: - gcc: [14] + gcc: [15] build_type: [Release] std: [23] diff --git a/.github/workflows/standalone-asio.yml b/.github/workflows/standalone-asio.yml index dc3a5c9ddf..5b2240049c 100644 --- a/.github/workflows/standalone-asio.yml +++ b/.github/workflows/standalone-asio.yml @@ -19,9 +19,7 @@ on: jobs: build: name: Standalone ASIO 1.36 + SSL - runs-on: ubuntu-24.04 - container: - image: gcc:15 + runs-on: ubuntu-26.04 strategy: fail-fast: false @@ -30,23 +28,10 @@ jobs: std: [23] env: - CC: gcc - CXX: g++ + CC: gcc-15 + CXX: g++-15 steps: - - name: Install build dependencies - env: - DEBIAN_FRONTEND: noninteractive - run: | - apt-get update - apt-get install -y --no-install-recommends \ - ca-certificates \ - cmake \ - git \ - libssl-dev \ - python3 - update-ca-certificates - - uses: actions/checkout@v6 - name: Configure CMake diff --git a/.github/workflows/yaml-conformance-data-gcc.yml b/.github/workflows/yaml-conformance-data-gcc.yml index 4b0f708f2e..317af41d57 100644 --- a/.github/workflows/yaml-conformance-data-gcc.yml +++ b/.github/workflows/yaml-conformance-data-gcc.yml @@ -18,12 +18,12 @@ on: jobs: build: - runs-on: ubuntu-24.04 + runs-on: ubuntu-26.04 strategy: fail-fast: false matrix: - gcc: [14] + gcc: [15] build_type: [Debug] std: [23] diff --git a/README.md b/README.md index b4dd193bbb..2b4a071de6 100644 --- a/README.md +++ b/README.md @@ -91,6 +91,29 @@ See this README, the [Glaze Documentation Page](https://stephenberry.github.io/g - [Streaming I/O](https://stephenberry.github.io/glaze/streaming/) for reading/writing large files with bounded memory - [Much more!](#more-features) +## Compiler/System Support + +- Requires C++23 +- Tested for both 64bit and 32bit +- Supports both little-endian and big-endian systems + +| Compiler | Supported versions | Versions tested in CI | +|-------------|------------------------------------------------------|-----------------------| +| MSVC | Visual Studio 2026 MSVC Build Tools 14.50 and higher | 14.51 | +| Clang | >= 18 | 21, 22 | +| GCC | >= 13 | 14, 15, 16 | +| Apple Clang | >= 21 | 21 | + +In [Actions](https://github.com/stephenberry/glaze/actions), MSVC is tested on Windows, GCC is tested on Linux and Clang is tested on Linux and macOS. Big-endian is tested via QEMU emulation on s390x. + +![clang build](https://github.com/stephenberry/glaze/actions/workflows/clang.yml/badge.svg) ![gcc build](https://github.com/stephenberry/glaze/actions/workflows/gcc.yml/badge.svg) ![msvc build](https://github.com/stephenberry/glaze/actions/workflows/msvc.yml/badge.svg) + +Glaze seeks to maintain compatibility with the latest three versions of GCC and Clang, as well as the two latest versions of MSVC and the latest version of Apple Clang (Xcode). We aim to only drop old versions with major releases. + +### MSVC Compiler Flags + +Glaze requires a C++ standard conformant pre-processor, which requires the `/Zc:preprocessor` flag when building with MSVC. + ## Performance | Library | Roundtrip Time (s) | Write (MB/s) | Read (MB/s) | @@ -251,21 +274,6 @@ auto ec = glz::read_json(obj, buffer); The buffer refills automatically during parsing, enabling reading of arbitrarily large inputs with fixed memory. See [Streaming I/O](https://stephenberry.github.io/glaze/streaming/) for NDJSON processing and other streaming patterns. -## Compiler/System Support - -- Requires C++23 -- Tested for both 64bit and 32bit -- Supports both little-endian and big-endian systems - -[Actions](https://github.com/stephenberry/glaze/actions) build and test with [Clang](https://clang.llvm.org) (18+), [MSVC](https://visualstudio.microsoft.com/vs/features/cplusplus/) (Visual Studio 2026 MSVC Build Tools 14.50), and [GCC](https://gcc.gnu.org) (13+) on apple, windows, and linux. Big-endian is tested via QEMU emulation on s390x. - -![clang build](https://github.com/stephenberry/glaze/actions/workflows/clang.yml/badge.svg) ![gcc build](https://github.com/stephenberry/glaze/actions/workflows/gcc.yml/badge.svg) ![msvc build](https://github.com/stephenberry/glaze/actions/workflows/msvc.yml/badge.svg) - -> Glaze seeks to maintain compatibility with the latest three versions of GCC and Clang, as well as the latest version of MSVC and Apple Clang (Xcode). And, we aim to only drop old versions with major releases. - -### MSVC Compiler Flags - -Glaze requires a C++ standard conformant pre-processor, which requires the `/Zc:preprocessor` flag when building with MSVC. ### SIMD Architecture Detection