Commit graph

26 commits

Author SHA1 Message Date
Carson Radtke
08687fb42a
Fix floating-to-integral narrow undefined behavior (#1266)
* Fix floating-to-integral narrow undefined behavior

* Format narrow conversion changes

* Suppress float-equal warning in narrow_cast
2026-08-25 11:29:25 -06:00
Carson Radtke
5230b7ea0e
ci: fix failing actions (#1255)
* ci: windows-2025 image -> use VS2026

For more info: https://github.com/actions/runner-images/issues/14017

* ci: macos -> use xcode 26.6

For more info: https://github.com/actions/runner-images/issues/13345

* fix -Wnrvo instance in dyn_array

* suppress build error in gtest w/ clangcl

* Drop Android and iOS support
2026-08-19 16:00:04 -06:00
Carson Radtke
a75212b9f3
feat: implementation of gsl::dyn_array (#1228)
* feat: implementation of gsl::dyn_array

Implement gsl::dyn_array<T, Allocator> as specified by the
CppCoreGuidlines here:
https://github.com/isocpp/CppCoreGuidelines/blob/master/docs/dyn_array.md

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2026-07-13 14:53:09 -06:00
Werner Henze
b2f6bec48e
clang-format improvements (#1251)
* clang-format improvements

- Add a clang-format linter check to the PR pipeline
- Apply clang-format to files where the linter initially failed
- Remove `CommentPragmas` from `.clang-format`
- Remove all `// clang-format off` and `// NO-FORMAT` as they are not needed
- Remove a commented out `GSL_SUPPRESS`

* clang-format 20

* pipeline fail

* Update .github/workflows/clang-format.yml

Co-authored-by: Carson Radtke <nosrac925@gmail.com>

* output used clang-format version

* installed version is 18 which replaces "GSL_SUPPRESS(bounds.1)" with "GSL_SUPPRESS(bounds .1)"

* only include/gsl, not include

to prevent formatting of include/CMakeLists.txt

* apply clang-format[-20]

In a VS2026 developer command prompt I ran `clang-format -i include\gsl\* --assume-filename x.cpp`. This was necessary because VS GUI does not format files without an extension :(. Please note that `--assume-filename` is necessary here, otherwise the files will not be formatted. Surprisingly the behaviour for the formatter differs from the behaviour of `lang-format(-20) --dry-run --Werror include/gsl/*` where clang-format recognizes that the files is C++.

* change "#if 0" back to original version with comments only

* formatting scripts for windows and linux

for linux with linter (shfmt and shellcheck)

* add WhitespaceSensitiveMacros: [GSL_SUPPRESS]

* provide path for clang-format (Windows)

Currently not clear to me:
On my personal computer at home, when I start "Developer Command Prompt for VS18", I can run `clang-format` without providing the path.
On my managed (domain) company computer, when I start "Developer Command Prompt for VS18", I can NOT run `clang-format` without providing the path. I need to call `"%VCINSTALLDIR%Tools\Llvm\bin\clang-format"`.
I have no idea what the difference is. At least the version `"%VCINSTALLDIR%Tools\Llvm\bin\clang-format"` works on both computers, so I add the path.

---------

Co-authored-by: Werner Henze <w.henze@avm.de>
Co-authored-by: Carson Radtke <nosrac925@gmail.com>
Co-authored-by: Werner Henze <werner.henze+gitcommits@posteo.de>
2026-06-05 06:45:10 -06:00
maflcko
4524208d32
ci: Bump actions/setup-java@v5 (#1249)
Co-authored-by: MarcoFalke <*~=`'#}+{/-|&$^_@721217.xyz>
2026-05-27 11:15:45 -06:00
maflcko
0249144ad1
ci: Use microsoft/setup-msbuild@v3 (#1240)
Co-authored-by: MarcoFalke <*~=`'#}+{/-|&$^_@721217.xyz>
2026-03-24 11:59:58 -06:00
maflcko
688ffcde90
ci: Bump to actions/checkout@v6 (#1237)
Co-authored-by: MarcoFalke <*~=`'#}+{/-|&$^_@721217.xyz>
2026-03-23 12:23:07 -06:00
Carson Radtke
756c91ab89
infra: individual test executables (#1212)
* infra: individual test executables

We used have tests contained in a single executable. This was fine for
testing, but it would be more convient to separate tests into indivudal
modules so targeted changes could have targeted tests.

This change associates each test file with its own executable. We now
have 14 tests for GSL each of which testing a different component.

* revert -Wno-reserved-identifier

* Update tests/span_tests.cpp

thanks copilot

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* be sure to include build type in ctest command

* [VS] make sure we are building the correct configuration

* restore tests/span_tests.cpp

* fix build break after merge conflicts

* fix build break after merge conflicts #2

* another try at fixing a build break

* fix silly typo. build break pt 4

* Use file globbing for test sources instead of manual list (#1227)

* Initial plan

* Use file globbing for test sources instead of manual list

Replace the manually maintained list of test sources with file(GLOB) to
automatically discover all .cpp files in the tests directory, excluding
no_exception_ensure_tests.cpp which needs special compilation flags.

This approach:
- Automatically picks up new test files without CMake updates
- Still correctly excludes no_exception_ensure_tests.cpp
- Maintains the same test build configuration
- Works with both C++14 and C++20

Co-authored-by: carsonRadtke <10507970+carsonRadtke@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: carsonRadtke <10507970+carsonRadtke@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
2025-12-05 13:24:15 -07:00
Carson Radtke
c31617f56a
use cmake presets instead of cmake settings (#1219)
* use cmake presets instead of cmake settings

This change uses a cmake presets file in an effort allow for agentic AI
to better switch between project settings. It replaces the old
CMakeSettings.json for the more flexible CMakePresets.json.

* Update GitHub Actions workflows to use CMake presets (#1223)

* Initial plan

* Update GitHub Actions to use CMake presets for compilers workflow

Co-authored-by: carsonRadtke <10507970+carsonRadtke@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: carsonRadtke <10507970+carsonRadtke@users.noreply.github.com>

* remove unused cmake options

* address PR feedback from copilot

* fix build break

---------

Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
2025-12-05 09:59:18 -07:00
Carson Radtke
494e6e988c
fix: all pipeline failures (#1221)
* fix: update conditional static assertion
There is a static assertion that spuriously fails on MSVC that was
version checked. Unfortunately it fires every time there is a new
compiler update, so for now we will remove the version check and add it
back once the compiler bug is fixed.

* fix: ios pipeline failure

Looks like somewhere along the line, the iOS simulator changed the range
of support iOS versions. This changes bumps the version from 9 to 12.0.

Also noticed that the GSL OSX bundle version was quite out of date. I
bumped this from 3.1.0 to 4.2.0 and created an upgrade checklist file in
docs/ so we don't forget these types of tasks in the future.

* bump xcode version from 15.4 to 16.4

* fix compiler warning when building gtest for ios

* allow for missing include dirs on command line

* replace windows-2019 with windows-2025

* update visual studio versions after runner bump

* PR feedback: make sure markdown links are syntactically correct
2025-09-30 15:10:46 -06:00
Carson Radtke
c21970972b
copilot: Provide more project context for the Copilot coding agent (#1207)
* copilot: create .github/copilot-instructions.md

This file provides additional context and instructions to GitHub
Copilot so it can better understand the codebase and coding conventions.

More can be found about this file at the following links:
 - [Best practices for using Copilot to work on tasks](https://docs.github.com/en/enterprise-cloud@latest/copilot/using-github-copilot/using-copilot-coding-agent-to-work-on-tasks/best-practices-for-using-copilot-to-work-on-taskshttps://docs.github.com/en/enterprise-cloud@latest/copilot/using-github-copilot/using-copilot-coding-agent-to-work-on-tasks/best-practices-for-using-copilot-to-work-on-tasks)
 - [Adding repository custom instructions for GitHub Copilot](https://docs.github.com/en/enterprise-cloud@latest/copilot/customizing-copilot/adding-repository-custom-instructions-for-github-copilot?tool=webuihttps://docs.github.com/en/enterprise-cloud@latest/copilot/customizing-copilot/adding-repository-custom-instructions-for-github-copilot)

* copilot: add copilot-setup-steps.yml

This new workflow is done when copilot loads into an environment and
enables copilot to be sure it has the proper dependencies before working
on changes. Also included in the change are explicit instructions on
what to do before reporting back "done".
2025-05-22 10:32:01 -06:00
Carson Radtke
c832885f15
React to ubuntu-latest changing to 24.04 (#1181)
* React to ubuntu-latest changing to 24.04
Reacting to https://github.com/actions/runner-images/issues/10636
* update clang to 16,17,18
* update gcc to 12,13,14
2025-01-03 10:23:50 -06:00
Carson Radtke
4b190d2e2a
Create issue templates (#1173) 2024-12-02 14:34:38 -06:00
Carson Radtke
74d2bb79d4
fix various pipeline failures (#1172)
* fix failing pipeline tests
* upgrade to googletest v1.14.0 so it works with newer cmake versions
* fix android pipeline to permit new cmake versions (short-term fix)
2024-11-25 12:58:45 -06:00
Carson Radtke
ce2a959e02
[ci]: add testing pipelines to github actions (#1159)
move pipeline testing from AzDO to GitHub Actions.

* update clang versions to 13-15
* update gcc versions to 10-12
* update xcode versions to 14.3.1 and 15.4
* test against C++23 (where supported)
2024-10-14 15:05:13 -05:00
Carson Radtke
b206bd163b
[ci]: fix android job (#1158)
Job has been failing for months and is preventing other PRs from getting
merged. This PR fixes the pipeline - it changed the following:
 - runs on macos-latest-large (which is a non-arm image)
 - starts the emulator under java8 (see
   https://learn.microsoft.com/en-us/java/openjdk/transition-from-java-8-to-java-11)
 - runs emulator with -no-audio

The above were requirements to get the pipeline running. Other changes
include the following:
 - The job will auto-cancel when a newer commit is pushed to the
 PR.
 - The 'Wait for emulator ready' step now has a 2 minute timeout. This
   is necessary because we get no indication on whether or not the
   command that started the emulator suceeded. I believe there is room
   for improvement here, but it is outside the scope of the PR.
2024-10-11 16:05:20 -07:00
Bruce Mitchener
f1a494cfd2
ci: Update to actions/checkout@v4. (#1142)
This fixes annotations on task runs like the following:

    The following actions uses node12 which is deprecated and will be forced
    to run on node16: actions/checkout@v2. For more info:
    https://github.blog/changelog/2023-06-13-github-actions-all-actions-will-run-on-node16-instead-of-node12-by-default/
2024-01-17 15:25:32 -08:00
jpr42
f7da2e41f0
Raise CMake min to 3.14 (#1083)
- Explicitly test package manager support with CMake 3.14 and Ninja
- Remove gsl_install.cmake
- Simplify installation code
2023-02-06 11:16:37 -08:00
dmitrykobets-msft
1683d87a3f
Fix NDK version in Android CI (#1054)
This PR future-proofs the fix made in #1053, which is now outdated due to further updates to the NDK version in the Azure VMs used as part of the CI.
2022-09-27 17:04:21 -07:00
dmitrykobets-msft
2e94541fcf
Use updated NDK version in android test suite (#1053)
https://github.com/actions/runner-images/issues/5930 recently updated the NDK version, resulting in test breakages. Update the version.
2022-08-17 12:40:45 -07:00
Tushar Maheshwari
c1cbb41b42
Fix iPhone simulator CI (#981)
* Run iOS simulator CI

* Fix link errors

- scope function linkage using anonymous namespace

* Update noexcept test for consistency
2021-05-13 10:52:09 -07:00
Jordan Maples [MSFT]
176c92e802
Branch rename cleanup (#976)
* Update pipeline build tag

The build status was still looking for a "master" branch, updated it to point to "main"

* Update ios.yml

* Update android.yml

* Update azure-pipelines.yml

* Update CONTRIBUTING.md
2021-02-24 11:16:21 -08:00
jpr89
84aeb59f26
Fixing cmake developer warning (#972)
Here is the warning currently being produced:

CMake Warning (dev) at C:/Program Files/CMake/share/cmake-3.19/Modules/GNUInstallDirs.cmake:223 (message):
  Unable to determine default CMAKE_INSTALL_LIBDIR directory because no
  target architecture is known.  Please enable at least one language before
  including GNUInstallDirs.
Call Stack (most recent call first):
  cmake/guidelineSupportLibrary.cmake:20 (include)
  CMakeLists.txt:4 (include)
This warning is for project developers.  Use -Wno-dev to suppress it.

I noted how I fixed the error. This is caused by GNUInstallDirs automatically executing code just by including it.

I also added -Werror=dev to the CI to ensure this never happens again.

Co-authored-by: Juan Ramos <juanr0911@gmail.com>
2021-01-19 13:41:25 -08:00
Jordan Maples
13f57a1e70 update ci names 2020-08-11 16:28:37 -07:00
Jordan Maples
c482c82d3a experimenting with splitting the yml files into their own runs 2020-08-11 16:08:16 -07:00
Bas Hendri
0ab350f5de enables iOS and Android testing 2020-05-04 13:26:50 -07:00