diff --git a/.beman-tidy.yaml b/.beman-tidy.yaml index 41b5df4..041fdb0 100644 --- a/.beman-tidy.yaml +++ b/.beman-tidy.yaml @@ -1,4 +1,10 @@ # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +# This is the config file for beman-tidy, which checks compliance with the Beman Standard (https://github.com/bemanproject/beman/blob/main/docs/beman_standard.md) +# Check documentation for beman-tidy here: +# https://github.com/bemanproject/beman-tidy/blob/main/README.md + +disabled_rules: + # None ignored_paths: - include/beman/iterator_interface/detail/stl_interfaces/ diff --git a/.exemplar_version b/.exemplar_version index 8f59e27..14f6221 100644 --- a/.exemplar_version +++ b/.exemplar_version @@ -1 +1 @@ -0131279454a8b54a6038203a7b714e2e0a835039 +ec861600898941a5114f352f1efcba57d825b6d0 diff --git a/.github/workflows/ci_tests.yml b/.github/workflows/ci_tests.yml index 21f3fab..dc05464 100644 --- a/.github/workflows/ci_tests.yml +++ b/.github/workflows/ci_tests.yml @@ -11,12 +11,16 @@ on: schedule: - cron: '32 15 * * 4' +concurrency: + group: ${{format('{0}:{1}', github.repository, github.ref)}} + cancel-in-progress: true + jobs: beman-submodule-check: - uses: bemanproject/infra-workflows/.github/workflows/reusable-beman-submodule-check.yml@1.7.0 + uses: bemanproject/infra-workflows/.github/workflows/reusable-beman-submodule-check.yml@1.7.3 preset-test: - uses: bemanproject/infra-workflows/.github/workflows/reusable-beman-preset-test.yml@1.7.0 + uses: bemanproject/infra-workflows/.github/workflows/reusable-beman-preset-test.yml@1.7.3 with: matrix_config: > [ @@ -27,7 +31,7 @@ jobs: ] build-and-test: - uses: bemanproject/infra-workflows/.github/workflows/reusable-beman-build-and-test.yml@1.7.0 + uses: bemanproject/infra-workflows/.github/workflows/reusable-beman-build-and-test.yml@1.7.3 with: matrix_config: > { @@ -119,7 +123,7 @@ jobs: } vcpkg-ci: - uses: bemanproject/infra-workflows/.github/workflows/reusable-beman-vcpkg-ci.yml@1.7.0 + uses: bemanproject/infra-workflows/.github/workflows/reusable-beman-vcpkg-ci.yml@1.7.3 with: port_name: beman-iterator-interface container_image: ghcr.io/bemanproject/infra-containers-gcc:14 @@ -132,4 +136,4 @@ jobs: create-issue-when-fault: needs: [preset-test, build-and-test] if: failure() && github.event_name == 'schedule' - uses: bemanproject/infra-workflows/.github/workflows/reusable-beman-create-issue-when-fault.yml@1.7.0 + uses: bemanproject/infra-workflows/.github/workflows/reusable-beman-create-issue-when-fault.yml@1.7.3 diff --git a/.github/workflows/pre-commit-check.yml b/.github/workflows/pre-commit-check.yml index 4a4a462..d65a3cc 100644 --- a/.github/workflows/pre-commit-check.yml +++ b/.github/workflows/pre-commit-check.yml @@ -17,4 +17,4 @@ permissions: jobs: pre-commit: - uses: bemanproject/infra-workflows/.github/workflows/reusable-beman-pre-commit.yml@1.7.0 + uses: bemanproject/infra-workflows/.github/workflows/reusable-beman-pre-commit.yml@1.7.3 diff --git a/.github/workflows/pre-commit-update.yml b/.github/workflows/pre-commit-update.yml index 8405120..e250336 100644 --- a/.github/workflows/pre-commit-update.yml +++ b/.github/workflows/pre-commit-update.yml @@ -9,7 +9,7 @@ on: jobs: auto-update-pre-commit: - uses: bemanproject/infra-workflows/.github/workflows/reusable-beman-update-pre-commit.yml@1.7.0 + uses: bemanproject/infra-workflows/.github/workflows/reusable-beman-update-pre-commit.yml@1.7.3 secrets: APP_ID: ${{ secrets.AUTO_PR_BOT_APP_ID }} PRIVATE_KEY: ${{ secrets.AUTO_PR_BOT_PRIVATE_KEY }} diff --git a/.github/workflows/vcpkg-release.yml b/.github/workflows/vcpkg-release.yml index 35df9a5..31a13b5 100644 --- a/.github/workflows/vcpkg-release.yml +++ b/.github/workflows/vcpkg-release.yml @@ -6,7 +6,7 @@ on: types: [published] jobs: vcpkg-release: - uses: bemanproject/infra-workflows/.github/workflows/reusable-beman-vcpkg-release.yml@1.7.0 + uses: bemanproject/infra-workflows/.github/workflows/reusable-beman-vcpkg-release.yml@1.7.3 with: port_name: beman-iterator-interface secrets: diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 209fcdc..d609eab 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -14,14 +14,14 @@ repos: # This brings in a portable version of clang-format. # See also: https://github.com/ssciwr/clang-format-wheel - repo: https://github.com/pre-commit/mirrors-clang-format - rev: v22.1.4 + rev: v22.1.5 hooks: - id: clang-format types_or: [c++, c] # CMake linting and formatting - repo: https://github.com/BlankSpruce/gersemi-pre-commit - rev: 0.27.2 + rev: 0.27.6 hooks: - id: gersemi name: CMake linting @@ -42,7 +42,7 @@ repos: # Beman Standard checking via beman-tidy - repo: https://github.com/bemanproject/beman-tidy - rev: v0.4.0 + rev: v0.5.1 hooks: - id: beman-tidy diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e56dea5..530ceca 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,3 +1,7 @@ + + # Development ## Configure and Build the Project Using CMake Presets @@ -65,7 +69,7 @@ the project's dependencies, including GoogleTest. Example commands: -``` +```shell cmake \ -B build \ -S . \ diff --git a/README.md b/README.md index 38dc28b..31f3215 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,13 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception --> - -![Library Status](https://raw.githubusercontent.com/bemanproject/beman/refs/heads/main/images/badges/beman_badge-beman_library_under_development.svg) ![CI Tests](https://github.com/bemanproject/iterator_interface/actions/workflows/ci.yml/badge.svg) ![Standard Target](https://github.com/bemanproject/beman/blob/main/images/badges/cpp29.svg) [![Compiler Explorer Example](https://img.shields.io/badge/Try%20it%20on%20Compiler%20Explorer-grey?logo=compilerexplorer&logoColor=67c52a)](https://godbolt.org/z/Kcq9bbeWW) - + +[![Library Status](https://raw.githubusercontent.com/bemanproject/beman/refs/heads/main/images/badges/beman_badge-beman_library_under_development.svg)](https://github.com/bemanproject/beman/blob/main/docs/beman_library_maturity_model.md#the-beman-library-maturity-model) + +[![CI Tests](https://github.com/bemanproject/iterator_interface/actions/workflows/ci.yml/badge.svg)](https://github.com/bemanproject/iterator_interface/actions/workflows/ci.yml) +![Standard Target](https://github.com/bemanproject/beman/blob/main/images/badges/cpp29.svg) +[![Compiler Explorer Example](https://img.shields.io/badge/Try%20it%20on%20Compiler%20Explorer-grey?logo=compilerexplorer&logoColor=67c52a)](https://godbolt.org/z/Kcq9bbeWW) + **Implements**: [`std::iterator_interface` (P2727R4)](https://wg21.link/P2727R4) @@ -133,7 +137,7 @@ You can disable building tests by setting CMake option `BEMAN_ITERATOR_INTERFACE | Compiler | Version | C++ Standards | Standard Library | |----------|---------|---------------|-------------------| -| GCC | 14-13 | C++26-C++20 | libstdc++ | +| GCC | 15-13 | C++26-C++20 | libstdc++ | | GCC | 12 | C++23, C++20 | libstdc++ | | Clang | 22-19 | C++26-C++20 | libstdc++, libc++ | | Clang | 18 | C++26-C++20 | libc++ | @@ -234,9 +238,3 @@ include an appropriate `beman.iterator_interface` header from your source code. ```c++ #include ``` - -> [!NOTE] -> -> `beman.iterator_interface` headers are to be included with the `beman/iterator_interface/` prefix. -> Altering include search paths to spell the include target another way (e.g. -> `#include `) is unsupported. diff --git a/infra/.beman_submodule b/infra/.beman_submodule index a2ad45f..a24c23d 100644 --- a/infra/.beman_submodule +++ b/infra/.beman_submodule @@ -1,3 +1,3 @@ [beman_submodule] remote=https://github.com/bemanproject/infra.git -commit_hash=1b14bad2cd2cf0e44d1aeb608557e0e35ce27eaa +commit_hash=d536fc285ae058cf8f5b736b5ff73d18a421b296 diff --git a/infra/.github/CODEOWNERS b/infra/.github/CODEOWNERS index 4ff90a4..439303d 100644 --- a/infra/.github/CODEOWNERS +++ b/infra/.github/CODEOWNERS @@ -1 +1 @@ -* @ednolan @neatudarius @rishyak @wusatosi @JeffGarland +* @ednolan @rishyak @wusatosi @JeffGarland diff --git a/infra/cmake/Config.cmake.in b/infra/cmake/Config.cmake.in index 3f1341c..df903cf 100644 --- a/infra/cmake/Config.cmake.in +++ b/infra/cmake/Config.cmake.in @@ -1,5 +1,5 @@ -# cmake/Config.cmake.in -*-makefile-*- # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +# cmake/Config.cmake.in -*-makefile-*- include(CMakeFindDependencyMacro) diff --git a/infra/cmake/beman-install-library.cmake b/infra/cmake/beman-install-library.cmake index dc5a4d1..df2dbe9 100644 --- a/infra/cmake/beman-install-library.cmake +++ b/infra/cmake/beman-install-library.cmake @@ -122,7 +122,9 @@ function(beman_install_library name) endif() if(NOT BEMAN_INSTALL_DESTINATION) - set(BEMAN_INSTALL_DESTINATION "${_config_install_dir}/modules") + set(BEMAN_INSTALL_DESTINATION + "${CMAKE_INSTALL_DATADIR}/${name}/modules" + ) endif() string(REPLACE "beman." "" install_component_name "${name}") @@ -210,7 +212,7 @@ function(beman_install_library name) # NOTE: There's currently no convention for this location! CK CXX_MODULES_BMI DESTINATION - ${_config_install_dir}/bmi-${CMAKE_CXX_COMPILER_ID}_$ + ${CMAKE_INSTALL_DATADIR}/${name}/bmi-${CMAKE_CXX_COMPILER_ID}_$ COMPONENT "${install_component_name}_Development" ) else() diff --git a/infra/cmake/enable-experimental-import-std.cmake b/infra/cmake/enable-experimental-import-std.cmake new file mode 100644 index 0000000..0ac9604 --- /dev/null +++ b/infra/cmake/enable-experimental-import-std.cmake @@ -0,0 +1,194 @@ +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +if(CMAKE_VERSION VERSION_EQUAL "3.30.0") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "0e5b6991-d74f-4b3d-a41c-cf096e0b2508" + ) +elseif(CMAKE_VERSION VERSION_EQUAL "3.30.1") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "0e5b6991-d74f-4b3d-a41c-cf096e0b2508" + ) +elseif(CMAKE_VERSION VERSION_EQUAL "3.30.2") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "0e5b6991-d74f-4b3d-a41c-cf096e0b2508" + ) +elseif(CMAKE_VERSION VERSION_EQUAL "3.30.3") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "0e5b6991-d74f-4b3d-a41c-cf096e0b2508" + ) +elseif(CMAKE_VERSION VERSION_EQUAL "3.30.4") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "0e5b6991-d74f-4b3d-a41c-cf096e0b2508" + ) +elseif(CMAKE_VERSION VERSION_EQUAL "3.30.5") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "0e5b6991-d74f-4b3d-a41c-cf096e0b2508" + ) +elseif(CMAKE_VERSION VERSION_EQUAL "3.30.6") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "0e5b6991-d74f-4b3d-a41c-cf096e0b2508" + ) +elseif(CMAKE_VERSION VERSION_EQUAL "3.30.7") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "0e5b6991-d74f-4b3d-a41c-cf096e0b2508" + ) +elseif(CMAKE_VERSION VERSION_EQUAL "3.30.8") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "0e5b6991-d74f-4b3d-a41c-cf096e0b2508" + ) +elseif(CMAKE_VERSION VERSION_EQUAL "3.30.9") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "0e5b6991-d74f-4b3d-a41c-cf096e0b2508" + ) +elseif(CMAKE_VERSION VERSION_EQUAL "3.31.0") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "0e5b6991-d74f-4b3d-a41c-cf096e0b2508" + ) +elseif(CMAKE_VERSION VERSION_EQUAL "3.31.1") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "0e5b6991-d74f-4b3d-a41c-cf096e0b2508" + ) +elseif(CMAKE_VERSION VERSION_EQUAL "3.31.10") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "d0edc3af-4c50-42ea-a356-e2862fe7a444" + ) +elseif(CMAKE_VERSION VERSION_EQUAL "3.31.11") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "d0edc3af-4c50-42ea-a356-e2862fe7a444" + ) +elseif(CMAKE_VERSION VERSION_EQUAL "3.31.12") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "d0edc3af-4c50-42ea-a356-e2862fe7a444" + ) +elseif(CMAKE_VERSION VERSION_EQUAL "3.31.2") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "0e5b6991-d74f-4b3d-a41c-cf096e0b2508" + ) +elseif(CMAKE_VERSION VERSION_EQUAL "3.31.3") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "0e5b6991-d74f-4b3d-a41c-cf096e0b2508" + ) +elseif(CMAKE_VERSION VERSION_EQUAL "3.31.4") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "0e5b6991-d74f-4b3d-a41c-cf096e0b2508" + ) +elseif(CMAKE_VERSION VERSION_EQUAL "3.31.5") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "0e5b6991-d74f-4b3d-a41c-cf096e0b2508" + ) +elseif(CMAKE_VERSION VERSION_EQUAL "3.31.6") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "0e5b6991-d74f-4b3d-a41c-cf096e0b2508" + ) +elseif(CMAKE_VERSION VERSION_EQUAL "3.31.7") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "0e5b6991-d74f-4b3d-a41c-cf096e0b2508" + ) +elseif(CMAKE_VERSION VERSION_EQUAL "3.31.8") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "d0edc3af-4c50-42ea-a356-e2862fe7a444" + ) +elseif(CMAKE_VERSION VERSION_EQUAL "3.31.9") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "d0edc3af-4c50-42ea-a356-e2862fe7a444" + ) +elseif(CMAKE_VERSION VERSION_EQUAL "4.0.0") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "a9e1cf81-9932-4810-974b-6eccaf14e457" + ) +elseif(CMAKE_VERSION VERSION_EQUAL "4.0.1") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "a9e1cf81-9932-4810-974b-6eccaf14e457" + ) +elseif(CMAKE_VERSION VERSION_EQUAL "4.0.2") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "a9e1cf81-9932-4810-974b-6eccaf14e457" + ) +elseif(CMAKE_VERSION VERSION_EQUAL "4.0.3") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "d0edc3af-4c50-42ea-a356-e2862fe7a444" + ) +elseif(CMAKE_VERSION VERSION_EQUAL "4.0.4") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "d0edc3af-4c50-42ea-a356-e2862fe7a444" + ) +elseif(CMAKE_VERSION VERSION_EQUAL "4.0.5") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "d0edc3af-4c50-42ea-a356-e2862fe7a444" + ) +elseif(CMAKE_VERSION VERSION_EQUAL "4.0.6") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "d0edc3af-4c50-42ea-a356-e2862fe7a444" + ) +elseif(CMAKE_VERSION VERSION_EQUAL "4.0.7") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "d0edc3af-4c50-42ea-a356-e2862fe7a444" + ) +elseif(CMAKE_VERSION VERSION_EQUAL "4.1.0") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "d0edc3af-4c50-42ea-a356-e2862fe7a444" + ) +elseif(CMAKE_VERSION VERSION_EQUAL "4.1.1") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "d0edc3af-4c50-42ea-a356-e2862fe7a444" + ) +elseif(CMAKE_VERSION VERSION_EQUAL "4.1.2") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "d0edc3af-4c50-42ea-a356-e2862fe7a444" + ) +elseif(CMAKE_VERSION VERSION_EQUAL "4.1.3") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "d0edc3af-4c50-42ea-a356-e2862fe7a444" + ) +elseif(CMAKE_VERSION VERSION_EQUAL "4.1.4") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "d0edc3af-4c50-42ea-a356-e2862fe7a444" + ) +elseif(CMAKE_VERSION VERSION_EQUAL "4.1.5") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "d0edc3af-4c50-42ea-a356-e2862fe7a444" + ) +elseif(CMAKE_VERSION VERSION_EQUAL "4.1.6") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "d0edc3af-4c50-42ea-a356-e2862fe7a444" + ) +elseif(CMAKE_VERSION VERSION_EQUAL "4.2.0") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "d0edc3af-4c50-42ea-a356-e2862fe7a444" + ) +elseif(CMAKE_VERSION VERSION_EQUAL "4.2.1") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "d0edc3af-4c50-42ea-a356-e2862fe7a444" + ) +elseif(CMAKE_VERSION VERSION_EQUAL "4.2.2") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "d0edc3af-4c50-42ea-a356-e2862fe7a444" + ) +elseif(CMAKE_VERSION VERSION_EQUAL "4.2.3") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "d0edc3af-4c50-42ea-a356-e2862fe7a444" + ) +elseif(CMAKE_VERSION VERSION_EQUAL "4.2.4") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "d0edc3af-4c50-42ea-a356-e2862fe7a444" + ) +elseif(CMAKE_VERSION VERSION_EQUAL "4.2.5") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "d0edc3af-4c50-42ea-a356-e2862fe7a444" + ) +elseif(CMAKE_VERSION VERSION_EQUAL "4.3.0") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "451f2fe2-a8a2-47c3-bc32-94786d8fc91b" + ) +elseif(CMAKE_VERSION VERSION_EQUAL "4.3.1") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "451f2fe2-a8a2-47c3-bc32-94786d8fc91b" + ) +elseif(CMAKE_VERSION VERSION_EQUAL "4.3.2") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "451f2fe2-a8a2-47c3-bc32-94786d8fc91b" + ) +elseif(CMAKE_VERSION VERSION_EQUAL "4.3.3") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD + "451f2fe2-a8a2-47c3-bc32-94786d8fc91b" + ) +endif() diff --git a/infra/cmake/telemetry.sh b/infra/cmake/telemetry.sh index 123324e..cb5fd88 100755 --- a/infra/cmake/telemetry.sh +++ b/infra/cmake/telemetry.sh @@ -1,5 +1,5 @@ -#!/usr/bin/env bash # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +#!/usr/bin/env bash set -o nounset set -o errexit diff --git a/port/portfile.cmake.in b/port/portfile.cmake.in index ae86857..45a0b0b 100644 --- a/port/portfile.cmake.in +++ b/port/portfile.cmake.in @@ -1,3 +1,4 @@ +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO bemanproject/iterator_interface diff --git a/vcpkg-configuration.json b/vcpkg-configuration.json index 25169b2..0924600 100644 --- a/vcpkg-configuration.json +++ b/vcpkg-configuration.json @@ -2,13 +2,13 @@ "default-registry": { "kind": "git", "repository": "https://github.com/microsoft/vcpkg.git", - "baseline": "80f9bcfa455e875d9c1bf7a7c6692d7e1e481061" + "baseline": "aa40adda5352e87655b8583cfb2451d5e9e276fd" }, "registries": [ { "kind": "git", "repository": "https://github.com/bemanproject/vcpkg-registry.git", - "baseline": "5195f94f2b550163917c1152180fc59bbd760556", + "baseline": "e1aa5c3c2a46486cc1384d70beab939d76bfe128", "packages": ["beman-*"] } ]