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
-->
-
-
  [](https://godbolt.org/z/Kcq9bbeWW)
-
+
+[](https://github.com/bemanproject/beman/blob/main/docs/beman_library_maturity_model.md#the-beman-library-maturity-model)
+
+[](https://github.com/bemanproject/iterator_interface/actions/workflows/ci.yml)
+
+[](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-*"]
}
]