<feed xmlns='http://www.w3.org/2005/Atom'>
<title>catch3/.github/workflows/windows-simple-builds.yml, branch build/cpp17</title>
<subtitle>Progmasoft Catch3: an independently maintained C++17 test framework with a parallel runner, property checks, snapshots and structured results.</subtitle>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/'/>
<entry>
<title>Build Catch3 as C++17</title>
<updated>2026-10-31T10:00:24+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-10-31T10:00:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=8814bd0b796b2e291fa5b4a1033f0313c8a26065'/>
<id>8814bd0b796b2e291fa5b4a1033f0313c8a26065</id>
<content type='text'>
C++17 is still the widest common target, and a library built on it stays
usable from C++17 and every later standard, while C++20 would have left
out many users.

Concepts become enable_if on named traits in Detail/TypeTraits.hpp, which
also replaces std::remove_cvref_t and std::identity. std::span becomes
std::vector references, std::bit_cast becomes static_cast and memcpy,
template lambdas become helper templates, and std::erase_if, contains,
starts_with and ends_with have their C++17 forms. Random::Between no
longer uses a lambda over a constexpr local, which MSVC rejects outside
/permissive-, so the headers work under its default mode too.

Tests give up designated initializers, which MSVC refuses in C++17. CI
builds the matrix in C++17 and C++20, since the headers promise both.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
C++17 is still the widest common target, and a library built on it stays
usable from C++17 and every later standard, while C++20 would have left
out many users.

Concepts become enable_if on named traits in Detail/TypeTraits.hpp, which
also replaces std::remove_cvref_t and std::identity. std::span becomes
std::vector references, std::bit_cast becomes static_cast and memcpy,
template lambdas become helper templates, and std::erase_if, contains,
starts_with and ends_with have their C++17 forms. Random::Between no
longer uses a lambda over a constexpr local, which MSVC rejects outside
/permissive-, so the headers work under its default mode too.

Tests give up designated initializers, which MSVC refuses in C++17. CI
builds the matrix in C++17 and C++20, since the headers promise both.
</pre>
</div>
</content>
</entry>
<entry>
<title>Give macOS one CI job and stop building pull requests twice</title>
<updated>2026-10-29T17:03:06+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-10-29T17:03:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=db9f14bb7f38425e6005ae2212d83f01f9f2f8be'/>
<id>db9f14bb7f38425e6005ae2212d83f01f9f2f8be</id>
<content type='text'>
macOS runners are the bottleneck of Progmasoft's CI: an organization
runs at most five macOS jobs at a time, shared by every repository, and a
pull request of Catch3 asked for about twenty of them. Every workflow
also listened to both push and pull_request, so each pull request ran
everything twice, once for its branch and once for the pull request.

macOS now has one job, as in the Tala compiler: macOS 26 on Apple
Silicon, Debug, C++17, with AddressSanitizer and UndefinedBehaviorSanitizer
over the most-tests preset, examples and extra tests. The C++14 and C++17,
Debug and Release matrix stays on Ubuntu and Fedora, where it already ran.
ThreadSanitizer, which ran only on macOS, moves to a new Ubuntu job.

The build systems that tested Windows and macOS (Bazel, Meson, Xmake,
Premake) test Windows and Ubuntu instead, with Clang, so their Unix side
is still covered and Linux is covered for the first time. The jobs that do
not depend on the platform leave macOS: CodeQL (build mode none), the
header and license checks, and native coverage, which now builds with
the Clang and LLVM tools of Ubuntu instead of those of Xcode.

Pushes build only devel; pull requests build their branches. The weekly
CodeQL schedule stays.

The required check "Bazel on macos-15" becomes "Bazel on ubuntu-26.04" in
the branch protection and the ruleset when this is merged.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
macOS runners are the bottleneck of Progmasoft's CI: an organization
runs at most five macOS jobs at a time, shared by every repository, and a
pull request of Catch3 asked for about twenty of them. Every workflow
also listened to both push and pull_request, so each pull request ran
everything twice, once for its branch and once for the pull request.

macOS now has one job, as in the Tala compiler: macOS 26 on Apple
Silicon, Debug, C++17, with AddressSanitizer and UndefinedBehaviorSanitizer
over the most-tests preset, examples and extra tests. The C++14 and C++17,
Debug and Release matrix stays on Ubuntu and Fedora, where it already ran.
ThreadSanitizer, which ran only on macOS, moves to a new Ubuntu job.

The build systems that tested Windows and macOS (Bazel, Meson, Xmake,
Premake) test Windows and Ubuntu instead, with Clang, so their Unix side
is still covered and Linux is covered for the first time. The jobs that do
not depend on the platform leave macOS: CodeQL (build mode none), the
header and license checks, and native coverage, which now builds with
the Clang and LLVM tools of Ubuntu instead of those of Xcode.

Pushes build only devel; pull requests build their branches. The weekly
CodeQL schedule stays.

The required check "Bazel on macos-15" becomes "Bazel on ubuntu-26.04" in
the branch protection and the ruleset when this is merged.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Build on the platforms the Visual X# compiler builds on</title>
<updated>2026-10-10T23:58:27+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-10-10T23:58:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=ab1214937f57fb81a56e615a0aef8269ade5da91'/>
<id>ab1214937f57fb81a56e615a0aef8269ade5da91</id>
<content type='text'>
The compiler that uses this framework first is built and tested on
Windows with the Visual Studio 2026 image, macOS 15 and 26, Ubuntu 26.04
and Fedora 43. This repository was tested on Windows Server 2022 and
2025, macOS 14, 15 and 15 on Intel, and on no Linux at all.

The Windows builds move to the windows-2025-vs2026 image, in the basic
builds and in the Xmake, Bazel and Meson builds. The macOS builds and
the sanitizer builds run on macos-15 and macos-26. A new workflow builds
and tests on Ubuntu 26.04 and, in a container, on Fedora 43, with Clang,
as C++14 and C++17, Debug and Release.

Two jobs stay on windows-2022: the Premake job generates Visual Studio
2022 projects, and the Conan job names the Visual Studio 17 generator
and the v144 runtime. Moving them means moving those tools to Visual
Studio 2026, which is a change of its own.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The compiler that uses this framework first is built and tested on
Windows with the Visual Studio 2026 image, macOS 15 and 26, Ubuntu 26.04
and Fedora 43. This repository was tested on Windows Server 2022 and
2025, macOS 14, 15 and 15 on Intel, and on no Linux at all.

The Windows builds move to the windows-2025-vs2026 image, in the basic
builds and in the Xmake, Bazel and Meson builds. The macOS builds and
the sanitizer builds run on macos-15 and macos-26. A new workflow builds
and tests on Ubuntu 26.04 and, in a container, on Fedora 43, with Clang,
as C++14 and C++17, Debug and Release.

Two jobs stay on windows-2022: the Premake job generates Visual Studio
2022 projects, and the Conan job names the Visual Studio 17 generator
and the v144 runtime. Moving them means moving those tools to Visual
Studio 2026, which is a change of its own.
</pre>
</div>
</content>
</entry>
<entry>
<title>Add workflow, repository and dependency analysis</title>
<updated>2026-10-10T17:23:52+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-10-10T17:23:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=ba6cbc4e6fc71f7b2240f9c42f1124dc2e9b6532'/>
<id>ba6cbc4e6fc71f7b2240f9c42f1124dc2e9b6532</id>
<content type='text'>
zizmor audits the workflows themselves for what makes a workflow
unsafe, and uploads what it finds to code scanning. Its first run here
found one thing, 11 times: a checkout that leaves the job's token in
the checked-out repository, where any later step can read it. No
workflow pushes or needs the token after the checkout, so every checkout
now sets persist-credentials to false, and zizmor reports nothing.

OpenSSF Scorecard grades how the repository is kept: branch protection,
pinned dependencies, token permissions and the like. It runs on the
default branch and weekly and uploads its findings to
code scanning.

Dependency Review fails a pull request that adds or changes a dependency
with a known vulnerability of high severity or worse. Dependabot watches
what is already there; this holds what comes in.

Every new action is pinned to a commit, each job names the permissions
it needs, and no new workflow has a default permission.

Two steps of the Windows build ran in the CMD shell, which zizmor cannot

read into; they run in PowerShell now, with the same commands and the

processor count taken from the environment.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
zizmor audits the workflows themselves for what makes a workflow
unsafe, and uploads what it finds to code scanning. Its first run here
found one thing, 11 times: a checkout that leaves the job's token in
the checked-out repository, where any later step can read it. No
workflow pushes or needs the token after the checkout, so every checkout
now sets persist-credentials to false, and zizmor reports nothing.

OpenSSF Scorecard grades how the repository is kept: branch protection,
pinned dependencies, token permissions and the like. It runs on the
default branch and weekly and uploads its findings to
code scanning.

Dependency Review fails a pull request that adds or changes a dependency
with a known vulnerability of high severity or worse. Dependabot watches
what is already there; this holds what comes in.

Every new action is pinned to a commit, each job names the permissions
it needs, and no new workflow has a default permission.

Two steps of the Windows build ran in the CMD shell, which zizmor cannot

read into; they run in PowerShell now, with the same commands and the

processor count taken from the environment.
</pre>
</div>
</content>
</entry>
<entry>
<title>Harden Catch3 exit guards and pin build workflows</title>
<updated>2026-09-27T22:10:14+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-09-27T22:10:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=97328fefe9650c84b594f1cea212c48562e1745b'/>
<id>97328fefe9650c84b594f1cea212c48562e1745b</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[ci] Update GitHub Actions to latest major release</title>
<updated>2026-04-04T20:28:48+00:00</updated>
<author>
<name>Christoph Grüninger</name>
</author>
<published>2026-04-03T08:22:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=34f4f819470dc64c8090859a6bbf9f57760d7b0a'/>
<id>34f4f819470dc64c8090859a6bbf9f57760d7b0a</id>
<content type='text'>
Fix warning that Node.js 20 is disconinued in June
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fix warning that Node.js 20 is disconinued in June
</pre>
</div>
</content>
</entry>
<entry>
<title>Add OUTPUT_ON_FAILURE and NO_TESTS_ACTIONS=error to CTest GHA actions</title>
<updated>2026-01-03T13:07:25+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2026-01-03T13:07:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=b81ef2aa2e76a432f2082d1788ea2e7304bfbecf'/>
<id>b81ef2aa2e76a432f2082d1788ea2e7304bfbecf</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Drop windows-2019 server from list of GitHub Action runners</title>
<updated>2025-07-02T12:13:57+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2025-07-02T11:35:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=038ee6ea13f341807547657d42333ad339eac2fe'/>
<id>038ee6ea13f341807547657d42333ad339eac2fe</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Add VS 2025 CI jobs</title>
<updated>2025-04-27T17:08:50+00:00</updated>
<author>
<name>Chris Thrasher</name>
</author>
<published>2025-04-27T15:55:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=dde822061330510d5c3360bf062beaec60ccef08'/>
<id>dde822061330510d5c3360bf062beaec60ccef08</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Simplify Windows CI jobs</title>
<updated>2025-04-27T17:08:45+00:00</updated>
<author>
<name>Chris Thrasher</name>
</author>
<published>2025-04-27T15:43:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=66085dac555c102ec4004cc057e7ef09c81d3c3c'/>
<id>66085dac555c102ec4004cc057e7ef09c81d3c3c</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
