228 Commits

Author SHA1 Message Date
dependabot[bot]
c5728fb720
Bump msys2/setup-msys2 from 2.28.0 to 2.32.0 (#4908)
Bumps [msys2/setup-msys2](https://github.com/msys2/setup-msys2) from 2.28.0 to 2.32.0.
- [Release notes](https://github.com/msys2/setup-msys2/releases)
- [Changelog](https://github.com/msys2/setup-msys2/blob/main/CHANGELOG.md)
- [Commits](40677d36a5...66cd2cce69)

---
updated-dependencies:
- dependency-name: msys2/setup-msys2
  dependency-version: 2.32.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-01 10:51:53 -07:00
Victor Zverovich
bb1bcede25 Stop enabling C++26 reflection by default
Don't inject -freflection when building the module, so it isn't forced onto
the module or its importers. Build enum-test unconditionally (it is a no-op
without reflection) and drop the now-unneeded reflection detection. Enable
reflection explicitly in the g++-16 C++26 CI job.
2026-08-29 16:28:09 -07:00
Avi Kivity
e27cc20bd9
Format enums annotated with fmt::as_identifiers (requires C++26 reflection) (#4885)
* Format enums annotated with fmt::as_identifiers (requires C++26 reflection)

Format an enum as the identifier of the matching enumerator if the enum is
annotated with fmt::as_identifiers:

  enum class [[=fmt::as_identifiers]] color { red, green, blue };
  fmt::format("{}", color::green);  // "green"

Values that don't match any enumerator are represented as their underlying
value in decimal before applying string formatting.

Identifiers are retrieved via C++26 reflection (P2996) and the annotation
via P3394. FMT_USE_REFLECTION is autodetected and can be overridden by the
user; without reflection the header is empty.

The header is also part of the fmt module, but, unlike with headers, whether
it provides anything is decided when the module is compiled, so the module
build detects reflection and enables it if the configured standard allows.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* Look up enum identifiers by index when the values are dense

The formatter for enums annotated with fmt::as_identifiers did a linear
search over all enumerators. Build a table indexed by the distance from
the smallest enumerator value instead, with empty string views in the
holes, which reduces the lookup to a bounds check and one load.

The table is only used if at least 70% of its elements are identifiers,
limiting its size to 10/7 of the number of enumerators. Sparser enums
keep using the linear search. Distances are computed in uint64_t so that
enums with negative values and values spanning the whole range of the
underlying type are handled without overflow.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* Suppress -Wsfinae-incomplete in format-test on GCC 16

GCC 16 warns when a type is completed after it failed to be complete in a
SFINAE context. format-test does this deliberately to check that formatting
of incomplete types works, so the warning is a false positive there and
breaks the build with -Werror.

* Test GCC 16 on CI

GCC 16 is the first compiler with C++26 reflection support, which is needed
by fmt/enum.h, so add a job that builds with it in C++26 mode. It comes from
the ubuntu-toolchain-r/test PPA since Ubuntu 24.04 only ships GCC 14.

Also report when reflection is not detected to make it visible that
enum-test was skipped.

---------

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-23 09:31:28 -07:00
Victor Zverovich
be39437ee7 Simplify hexfloat comment and retry CI downloads on more 50x errors 2026-08-12 09:21:04 -07:00
hexonal
e2243a6a7f
Set matching CC alongside CXX in Linux CI matrix (#4863)
* Set matching CC alongside CXX in Linux CI matrix

The Configure step only set CXX, so CMake's C compiler detection
fell back to whatever the default happened to be on the runner,
independent of which C++ compiler the matrix entry was actually
testing (e.g. CXX=clang++-3.6 but CC left to detect GCC 11).

Derive CC from the same matrix.cxx value the job already installs
a matching compiler for.

* Skip c-test when the C compiler is Clang < 3.8

Setting CC from matrix.cxx means the clang++-3.6 job now configures with real
clang 3.6 instead of falling back to the runner's default GCC, which exposes a
compile failure in test/c-test.c: clang predates the LLVM PR16340 fix (landed in
3.8) that applies array-to-pointer decay to the controlling expression of
_Generic, so fmt-c.h's FMT_MAKE_ARG dispatch never matches a string literal
(char[4]) against its char*/const char* associations. It falls through to the
zero-argument default association, which is then called with one argument.

The guard is at configure time rather than in the CI Test step. c-test is part
of the default target, so `cmake --build` compiles it before ctest ever runs --
excluding it with `ctest -E` cannot help, because the job has already failed in
the Build step. Guarding the add_executable also means anyone building fmt's
tests with an old clang benefits, not just this one CI job.

enable_language(C) stays first and unconditional, since CMAKE_C_COMPILER_VERSION
is not set before it. fmt-c itself (src/fmt-c.cc, C++) still builds on that job;
only the C-consumer smoke test is skipped.
2026-07-30 10:08:36 -07:00
Victor Zverovich
26c01df3bd Handle const-qualified named arguments
A named argument that arrives const-qualified was not recognized by
is_named_arg, silently dropping its name. This happens both when a
named argument is passed through an intermediate function returning
const T& (https://github.com/fmtlib/fmt/issues/4866) and in fmt's own
compiled format path, which passes arguments as const T&.

Make is_named_arg and is_static_named_arg see through top-level const so
the name is preserved instead of dropped.
2026-07-29 09:20:23 -07:00
dependabot[bot]
77b6ff700b
Bump actions/checkout from 6.0.0 to 7.0.0 (#4835)
Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.0 to 7.0.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](1af3b93b68...9c091bb21b)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 7.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-01 09:07:12 -07:00
Victor Zverovich
5ea06b13fe Exclude the build tree from the source package
The .gitignore-derived `build/` pattern does not actually prune the build
directory or its contents from the CPack source package, so an empty build/
(and, once docs were built in CI, build/doc-html) leaked into the zip. Ignore
the whole build tree in CPACK_SOURCE_IGNORE_FILES.
2026-06-16 07:04:03 +02:00
Victor Zverovich
11ddbcb789 Build docs in the release workflow so the source zip includes doc-html
The source-zip build moved to CI, which configured out-of-source and never
ran the doc target, so the pre-rendered HTML docs (doc-html/) silently
dropped out of the package. Install the doc toolchain, build the docs, and
stage them into the source tree before package_source so CPack picks them up.
2026-06-12 17:01:05 +02:00
Victor Zverovich
e60274b29c Run lint workflow on all PRs to fix stuck required checks
The lint workflow was path-filtered to source files, so PRs that didn't
touch them never ran clang-format/cmake-format. Since those checks are
required, such PRs were blocked forever waiting for a status that never
came. Drop the paths filter so the workflow always reports a status.
2026-06-09 15:56:50 +02:00
Victor Zverovich
87bb05d3b2 Fix release workflow startup failure from insufficient permissions
The provenance job called the SLSA generator with contents: read, but the
generator's upload-assets job declares contents: write. A reusable
workflow's job permissions may not exceed the caller's, so GitHub failed
the run at startup. Grant contents: write; the upload-assets job is still
skipped at runtime since upload-assets is false.
2026-06-09 15:48:28 +02:00
Victor Zverovich
1ccba0cf80 Attach SLSA provenance to the draft instead of a new release
With upload-assets the SLSA generator created and published its own
release (and tag) to host the attestation, duplicating the draft. Disable
upload-assets and add a job that downloads the provenance artifact and
attaches it to the draft alongside the source zip.
2026-06-09 06:23:34 +02:00
Victor Zverovich
841040e781 Attach release artifacts to draft via workflow_dispatch
Draft releases do not fire the `release: created` event, so the release
workflow never ran and the source zip and SLSA provenance were not
attached to the draft. Trigger the workflow explicitly from release.py
via workflow_dispatch, passing the tag to attach to and the ref to build
from, and resolve the tag/ref in the workflow for both event types.
2026-06-08 07:48:52 +02:00
dependabot[bot]
57563a7ebd
Bump github/codeql-action from 4.35.1 to 4.36.1 (#4793)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.35.1 to 4.36.1.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](c10b8064de...87557b9c84)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.36.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-02 15:15:23 -07:00
dependabot[bot]
a597d06854
Bump slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml (#4792)
Bumps [slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml](https://github.com/slsa-framework/slsa-github-generator) from 2.0.0 to 2.1.0.
- [Release notes](https://github.com/slsa-framework/slsa-github-generator/releases)
- [Changelog](https://github.com/slsa-framework/slsa-github-generator/blob/main/CHANGELOG.md)
- [Commits](https://github.com/slsa-framework/slsa-github-generator/compare/v2.0.0...v2.1.0)

---
updated-dependencies:
- dependency-name: slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml
  dependency-version: 2.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-02 15:14:38 -07:00
Victor Zverovich
b6248c5bc0 Fix doc deploy condition for main branch 2026-06-01 15:22:36 -07:00
Victor Zverovich
6b2d7f9726 Rename CIFuzz workflow to fuzz
Match the naming convention used by the other workflows: lowercase,
single-word names that describe what the workflow does rather than the
tool it uses. Also rename the job from Fuzzing to fuzz for consistency.
2026-06-01 12:03:52 -07:00
Victor Zverovich
2538c89e71 Scope CodeQL write permissions to the analyze job 2026-06-01 10:53:29 -07:00
Victor Zverovich
b18919cb38 Clean up supply-chain workflow 2026-06-01 10:22:33 -07:00
Victor Zverovich
3046d2ca7e Add CodeQL workflow 2026-06-01 09:31:01 -07:00
Victor Zverovich
95390170a9 Rename scorecard workflow to supply-chain 2026-06-01 08:54:54 -07:00
Victor Zverovich
1c98a69c66 Move security policy from README to .github/SECURITY.md 2026-06-01 06:51:41 -07:00
Victor Zverovich
ed5d7ec5a3 Add CODEOWNERS 2026-05-31 21:45:33 -07:00
Victor Zverovich
1f0533a923 Pin clang-20 install
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-31 21:23:21 -07:00
Victor Zverovich
e48f8a9070 Pin clang-format install
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-31 20:56:33 -07:00
Victor Zverovich
6a1d56c425 Pin doc deps 2026-05-31 20:14:10 -07:00
Victor Zverovich
49780cabbe Pin deps 2026-05-31 19:10:01 -07:00
Victor Zverovich
a9e889e161 Build release artifacts and SLSA provenance in CI
Adds .github/workflows/release.yml, triggered on `release: created`, which:
  - checks out the release's target_commitish,
  - builds the source zip via CMake/CPack (`package_source`),
  - uploads the zip to the draft release,
  - calls slsa-framework/slsa-github-generator to produce a
    SLSA v1.0 *.intoto.jsonl provenance file and attach it to the
    same draft release.

After CI completes, the draft has both the zip and the provenance attached,
and the maintainer reviews and publishes as before.

Updates support/release.py to stop building and uploading the zip locally;
that work has moved to CI so the SLSA provenance attests to the actual
build environment that produced the artifact, not to a hash observed
after the fact. The script still builds docs locally because the
subsequent mkdocs deploy step depends on them.
2026-05-31 18:16:07 -07:00
Victor Zverovich
d079860923 Remove a temporary workflow 2026-05-31 18:15:24 -07:00
Victor Zverovich
da081318af
Add workflow_dispatch trigger to scorecard.yml 2026-05-31 15:01:24 -07:00
Victor Zverovich
2a24d1ae2e Add a temporary workflow to backfill SLSA provenance for existing releases 2026-05-31 09:16:32 -07:00
Victor Zverovich
7aabdcf0ba Workaround apt-add-repository timeouts 2026-05-03 07:25:47 -07:00
Victor Zverovich
382609a920 Cleanup module test and CI config 2026-04-14 12:30:21 -07:00
Mathew Benson
8783c3c2d4
enable fmt_module tests by updating module-test.cc (#4702)
- Update g++ module testing to use g++ version 15 instead of 14.
  The module support in version 14 isn't very stable and the module
  testing was not working due to unresolved locale symbols.
- Update CI for linux and macos to add verbosity so its consistent with
  windows.
- Refactor test/CMakeLists.txt to enable testing for modules
- The tests in `module-test.cc` seem to not have been updated in some
  time despite changes in the main library.
- Wide String versions of several tests appear to be deprecated so have
  been removed.
- Refactored tests related to `fmt::format_args` that now requires lvalue
  references as opposed to direct values.
- Remove the none-working code identified in the `module-test.cc` file
  while updating.
2026-04-12 10:07:16 -07:00
Victor Zverovich
907f002f8e Cleanup CI 2026-04-02 16:30:52 -07:00
dependabot[bot]
579587bee3
Bump github/codeql-action from 4.32.0 to 4.35.1 (#4727)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.32.0 to 4.35.1.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](b20883b0cd...c10b8064de)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.35.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-02 15:20:10 -07:00
Victor Zverovich
8572a24603 Cleanup CI config 2026-04-02 15:04:00 -07:00
Mathew Benson
cdb8dc76d9
Add C++-Modules Based Linux CI workflow (#4708)
- This adds a set of CI tests for linux that include compilers that
  support modules
- This CI workflow uses ninja as the build system generator
- Can be integrated with the other linux workflow after successful
  testing

Co-authored-by: Mathew Benson <mathew@benson.co.ke>
2026-03-28 09:45:56 -07:00
Victor Zverovich
dc05bee307 Don't assume nul termination in printf
Thanks ZUENS2020 for reporting.
2026-03-23 13:28:26 -07:00
Victor Zverovich
7733f4c136 Add cmake-format job 2026-03-14 13:51:29 -07:00
Victor Zverovich
04434416a4 Remove unnecessary CI change 2026-03-03 12:35:39 -08:00
dependabot[bot]
fca0445565
Bump actions/upload-artifact from 6.0.0 to 7.0.0 (#4691)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 6.0.0 to 7.0.0.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](b7c566a772...bbbca2ddaa)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: 7.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-01 13:06:20 -08:00
Victor Zverovich
88c5a91487
Fix CI (#4690) 2026-02-28 08:37:13 -08:00
dependabot[bot]
afd51d1041
Bump github/codeql-action from 4.31.2 to 4.32.0 (#4664)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.31.2 to 4.32.0.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](0499de31b9...b20883b0cd)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.32.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-01 08:21:38 -08:00
dependabot[bot]
bf3babfd7c
Bump actions/upload-artifact from 5.0.0 to 6.0.0 (#4642)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 5.0.0 to 6.0.0.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](330a01c490...b7c566a772)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: 6.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-01 13:10:42 -08:00
Victor Zverovich
95ba44311c
Add funding configuration for GitHub 2025-12-31 09:21:49 -08:00
Zephyr Lykos
7bce22571a
Make it work on newer mkdocstrings, fix deprecation warnings (#4626)
* Make it work on newer mkdocstrings, fix deprecation warnings

* Bump documentation dependency versions
2025-12-14 08:36:41 -08:00
dependabot[bot]
d6712ff2c0
Bump actions/checkout from 5.0.0 to 6.0.0 (#4621)
Bumps [actions/checkout](https://github.com/actions/checkout) from 5.0.0 to 6.0.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](08c6903cd8...1af3b93b68)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 6.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-01 09:04:20 -08:00
Victor Zverovich
5bc56e24a9 Update clang-format to version 21 2025-11-28 20:05:18 -08:00
Victor Zverovich
62f57b2496 Fix the macOS build 2025-11-04 09:12:57 -10:00