]> git.ipfire.org Git - thirdparty/ccache.git/log
thirdparty/ccache.git
2 days agobuild: Use find_package first for cpp-httplib (#1717) master
Jiri Slaby [Tue, 7 Apr 2026 17:34:55 +0000 (19:34 +0200)] 
build: Use find_package first for cpp-httplib (#1717)

5 days agochore: Add commit type compat, improve explanation of enhance/feat/fix
Joel Rosdahl [Sat, 4 Apr 2026 19:06:03 +0000 (21:06 +0200)] 
chore: Add commit type compat, improve explanation of enhance/feat/fix

5 days agocompat: Add knowledge of -fsanitize-ignorelist
Joel Rosdahl [Sat, 4 Apr 2026 19:05:52 +0000 (21:05 +0200)] 
compat: Add knowledge of -fsanitize-ignorelist

-fsanitize-blacklist was renamed to -fsanitize-ignorelist in Clang 13.

Fixes #1712.

9 days agochore: Add ccache configuration field to the problem report template
Joel Rosdahl [Tue, 31 Mar 2026 17:37:39 +0000 (19:37 +0200)] 
chore: Add ccache configuration field to the problem report template

9 days agotest: Disable reading of external system config in upgrade tests
Joel Rosdahl [Tue, 31 Mar 2026 16:50:25 +0000 (18:50 +0200)] 
test: Disable reading of external system config in upgrade tests

Fixes #1713.

9 days agochore: Improve table in CONTRIBUTING.md
Joel Rosdahl [Sat, 28 Mar 2026 08:34:28 +0000 (09:34 +0100)] 
chore: Improve table in CONTRIBUTING.md

9 days agobump: Upgrade to doctest 2.5.0
Joel Rosdahl [Sat, 28 Mar 2026 08:33:22 +0000 (09:33 +0100)] 
bump: Upgrade to doctest 2.5.0

9 days agofix: Invalidate PCH upon MSVC toolset update (#1714)
Philipp Kolberg [Tue, 31 Mar 2026 17:32:21 +0000 (19:32 +0200)] 
fix: Invalidate PCH upon MSVC toolset update (#1714)

2 weeks agofeat: Improve path rewriting on Windows
Joel Rosdahl [Wed, 25 Mar 2026 15:16:29 +0000 (16:16 +0100)] 
feat: Improve path rewriting on Windows

Made it possible to rewrite absolute paths to relative on Windows when
paths differ in case.

2 weeks agoenhance: Add util::to_uppercase
Joel Rosdahl [Thu, 26 Mar 2026 08:42:43 +0000 (09:42 +0100)] 
enhance: Add util::to_uppercase

2 weeks agofix: Disable base directory when using MSVC's /Yc option
Joel Rosdahl [Thu, 26 Mar 2026 08:13:39 +0000 (09:13 +0100)] 
fix: Disable base directory when using MSVC's /Yc option

When creating a precompiled header (PCH), MSVC does not like relative
paths for /Yc and /FI arguments, so don't rewrite paths to relative in
that case.

Fixes #1710.

2 weeks agotest: Check that response file expansion is not done too eagerly
Joel Rosdahl [Thu, 26 Mar 2026 08:09:48 +0000 (09:09 +0100)] 
test: Check that response file expansion is not done too eagerly

For example,

    gcc -c test.c -o @foo

will not read arguments from @foo.

2 weeks agotest: Don't allow running tests from repo top directory
Joel Rosdahl [Thu, 26 Mar 2026 07:26:20 +0000 (08:26 +0100)] 
test: Don't allow running tests from repo top directory

2 weeks agofix: Pass sysconfdir and other variables from Makefile to install.sh
Joel Rosdahl [Wed, 25 Mar 2026 19:42:59 +0000 (20:42 +0100)] 
fix: Pass sysconfdir and other variables from Makefile to install.sh

2 weeks agoenhance: Add iterators for util::Args
Joel Rosdahl [Wed, 25 Mar 2026 15:52:19 +0000 (16:52 +0100)] 
enhance: Add iterators for util::Args

2 weeks agobuild: Ignore -Wc2y-extensions warning for doctest with Clang 22+
Joel Rosdahl [Tue, 24 Mar 2026 18:51:28 +0000 (19:51 +0100)] 
build: Ignore -Wc2y-extensions warning for doctest with Clang 22+

https://github.com/doctest/doctest/issues/1042

2 weeks agotest: dump logs on failure to aid investigation
Maksym Sobolyev [Fri, 13 Mar 2026 22:32:46 +0000 (15:32 -0700)] 
test: dump logs on failure to aid investigation

2 weeks agotest: Reduce remote_helper flakes on slow systems
Maksym Sobolyev [Tue, 24 Mar 2026 14:33:13 +0000 (07:33 -0700)] 
test: Reduce remote_helper flakes on slow systems

2 weeks agofix(http): Treat HTTP 2xx with empty body as cache miss (#1707)
Björn Svensson [Mon, 23 Mar 2026 19:29:32 +0000 (20:29 +0100)] 
fix(http): Treat HTTP 2xx with empty body as cache miss (#1707)

fix(storage): Treat empty remote storage entries as errors

A remote storage backend returning a value with an empty body indicates
a corrupt or misconfigured entry, not a cache miss. Check for empty
values in the storage layer so that all current and future backends are
covered. The error is logged but the backend is not marked as failed,
since other entries may still be valid.

Signed-off-by: Björn Svensson <bjorn.a.svensson@est.tech>
2 weeks agoci: Add darwin binary releases to prepare-release again
Joel Rosdahl [Sun, 22 Mar 2026 12:03:23 +0000 (13:03 +0100)] 
ci: Add darwin binary releases to prepare-release again

Fixes regression in 8496fc8c2e00b0917d9d6206093fc6d7fac69bf7.

2 weeks agoci: Add Linux binary tar.gz archives to release notes
Joel Rosdahl [Sun, 22 Mar 2026 12:02:56 +0000 (13:02 +0100)] 
ci: Add Linux binary tar.gz archives to release notes

2 weeks agochore: Remove duplicate header in release notes
Joel Rosdahl [Sun, 22 Mar 2026 12:01:52 +0000 (13:01 +0100)] 
chore: Remove duplicate header in release notes

(cherry picked from commit 912c2d57fb694697fa8045da60657e08f373d71a)

2 weeks agochore: Update NEWS
Joel Rosdahl [Fri, 20 Mar 2026 20:09:50 +0000 (21:09 +0100)] 
chore: Update NEWS

(cherry picked from commit 68878d188f6c3f963042757acc231a89223dd86a)

2 weeks agotest: Reduce remote_helper flakes on slow systems
Maksym Sobolyev [Sat, 14 Mar 2026 05:51:36 +0000 (22:51 -0700)] 
test: Reduce remote_helper flakes on slow systems

Raise the helper idle timeout so the direct crsh test doesn't lose the
helper between the local-hit phase and the final remote reconnect.

2 weeks agotest: Relax util::exec_to_string missing command assertion
Maksym Sobolyev [Fri, 13 Mar 2026 01:56:40 +0000 (18:56 -0700)] 
test: Relax util::exec_to_string missing command assertion

The POSIX error for a missing command is not stable across systems. Some
environments report the posix_spawnp failure directly, while others
return a shell-style "Non-zero exit code: 127" instead.

Accept both outcomes in the test and capture the actual error string to
make future failures easier to diagnose.

2 weeks agochore: Point to gcc11 instead of the default gcc8 in alma-8 image
Maksym Sobolyev [Fri, 13 Mar 2026 01:56:53 +0000 (18:56 -0700)] 
chore: Point to gcc11 instead of the default gcc8 in alma-8 image

2 weeks agochore: Add libstdc++-devel/libstdc++-devel to alma-{8,9,10} images
Maksym Sobolyev [Wed, 8 Oct 2025 19:34:54 +0000 (12:34 -0700)] 
chore: Add libstdc++-devel/libstdc++-devel to alma-{8,9,10} images

2 weeks agofix: Fix rewriting MSVC /FI argument to relative when using base_dir
Joel Rosdahl [Thu, 19 Mar 2026 13:42:46 +0000 (14:42 +0100)] 
fix: Fix rewriting MSVC /FI argument to relative when using base_dir

MSVC's /FI option is special in that the compiler looks up a relative
file relative to the source file instead of the CWD.

3 weeks agofeat: Add install script for binary Linux releases
Joel Rosdahl [Wed, 18 Mar 2026 18:17:48 +0000 (19:17 +0100)] 
feat: Add install script for binary Linux releases

This makes it possible to install without having make(1) available.

3 weeks agoci: Add tar.gz archives for Linux binary releases
Joel Rosdahl [Mon, 16 Mar 2026 19:52:22 +0000 (20:52 +0100)] 
ci: Add tar.gz archives for Linux binary releases

3 weeks agofix: Avoid crash for `/Yc` without `/Fp`
Joel Rosdahl [Sun, 15 Mar 2026 14:36:32 +0000 (15:36 +0100)] 
fix: Avoid crash for `/Yc` without `/Fp`

(cherry picked from commit 0f98ffb366891f815719560a97293acc55fd42fa)

3 weeks agoenhance: Add util::Args::parse_response_file_content function
Joel Rosdahl [Sun, 15 Mar 2026 09:04:10 +0000 (10:04 +0100)] 
enhance: Add util::Args::parse_response_file_content function

3 weeks agofix: Increase robustness of manifest parsing
Joel Rosdahl [Sun, 15 Mar 2026 09:05:53 +0000 (10:05 +0100)] 
fix: Increase robustness of manifest parsing

3 weeks agofix: Sanity check original_size in util::zstd_decompress
Joel Rosdahl [Sat, 14 Mar 2026 12:33:41 +0000 (13:33 +0100)] 
fix: Sanity check original_size in util::zstd_decompress

If original_size 0, `&output[original_size]` will crash later (if
`output.size()` is also 0).

3 weeks agofix: Sanity check decompressed payload size
Joel Rosdahl [Wed, 11 Mar 2026 18:59:10 +0000 (19:59 +0100)] 
fix: Sanity check decompressed payload size

3 weeks agofix: Fix return type for CacheEntry::Header::uncompressed_payload_size
Joel Rosdahl [Tue, 10 Mar 2026 20:50:07 +0000 (21:50 +0100)] 
fix: Fix return type for CacheEntry::Header::uncompressed_payload_size

Returning uint32_t instead of uint64_t seems like an oversight.

3 weeks agotest: Don't check `.ltrans0.ltrans.su` files in `-flto` tests (#1704)
Joel Rosdahl [Sat, 14 Mar 2026 12:06:18 +0000 (13:06 +0100)] 
test: Don't check `.ltrans0.ltrans.su` files in `-flto` tests (#1704)

Different compilers produce different stack-usage files when linking
object files compiled with `-fstack-usage -flto`. Since ccache does not
cache linking anyway, skip checking the linking results to avoid
compiler-specific expectations.

Fixes #1699.

3 weeks agofix: LTO is disabled if `-fno-lto` is used (#1700)
Kristian Sloth Lauszus [Sat, 14 Mar 2026 09:50:26 +0000 (10:50 +0100)] 
fix: LTO is disabled if `-fno-lto` is used (#1700)

If `-flto` is followered by `-fno-lto`, then LTO will be disabled

On the other hand if `-fno-lto` is followered by `-flto`, then LTO will be enabled

4 weeks agotest: Fix remote_helper test error for long $PWD
Joel Rosdahl [Thu, 12 Mar 2026 07:31:19 +0000 (08:31 +0100)] 
test: Fix remote_helper test error for long $PWD

Use relative Unix socket paths in tests to avoid overflowing the Unix
socket name length limit when $PWD is long.

Fixes #1697.

4 weeks agochore: Improve log messages for Unix socket connect failure
Joel Rosdahl [Thu, 12 Mar 2026 07:24:32 +0000 (08:24 +0100)] 
chore: Improve log messages for Unix socket connect failure

Related to #1697.

4 weeks agoci: Add macOS 15/26 builds
Joel Rosdahl [Wed, 11 Mar 2026 20:21:44 +0000 (21:21 +0100)] 
ci: Add macOS 15/26 builds

Also bump Xcode version for macOS 14.

4 weeks agochore: Improve log messages for Unix socket connect failure
Joel Rosdahl [Wed, 11 Mar 2026 19:23:39 +0000 (20:23 +0100)] 
chore: Improve log messages for Unix socket connect failure

Related to #1697.

4 weeks agofix: Fix DEFER usage
Joel Rosdahl [Wed, 11 Mar 2026 19:15:56 +0000 (20:15 +0100)] 
fix: Fix DEFER usage

4 weeks agofix: Fix restoring of timestamps in recompressor
Joel Rosdahl [Wed, 11 Mar 2026 19:05:11 +0000 (20:05 +0100)] 
fix: Fix restoring of timestamps in recompressor

Fixes incorrect fix in 86af29da704f0e879c55230aad9a22d5df330bc3.

4 weeks agochore: Use typedefs to access ::type (#1695)
Gregor Jasny [Wed, 11 Mar 2026 19:17:01 +0000 (20:17 +0100)] 
chore: Use typedefs to access ::type (#1695)

4 weeks agochore: Update authors
Joel Rosdahl [Mon, 9 Mar 2026 20:29:49 +0000 (21:29 +0100)] 
chore: Update authors

(cherry picked from commit 5a1399943d6f145960108fbd27f125ec39569a28)

4 weeks agochore: Update news
Joel Rosdahl [Mon, 9 Mar 2026 20:26:22 +0000 (21:26 +0100)] 
chore: Update news

(cherry picked from commit 9dc6847f9e704519787521903cdade28fd9c298c)

4 weeks agofix: Do not look for .su and .ci output files when LTO is used (#1693)
Kristian Sloth Lauszus [Mon, 9 Mar 2026 20:06:57 +0000 (21:06 +0100)] 
fix: Do not look for .su and .ci output files when LTO is used (#1693)

When `-flto` is used the .su and .ci output files are not generated during compilation, instead they are generated during link time

This means that ccache can simply skip those files when `-fstack-usage` and `-fcallgraph-info` are used in combination with the `-flto` flag

See: https://gcc.gnu.org/onlinedocs/gcc/Developer-Options.html#index-fcallgraph-info

4 weeks agofix: Pass template argument to mktemp(1) for portability to macOS/BSD
Joel Rosdahl [Mon, 9 Mar 2026 19:48:14 +0000 (20:48 +0100)] 
fix: Pass template argument to mktemp(1) for portability to macOS/BSD

Fixes #1692.

4 weeks agobuild: Use correct pandoc binary
Joel Rosdahl [Mon, 9 Mar 2026 19:38:49 +0000 (20:38 +0100)] 
build: Use correct pandoc binary

4 weeks agochore: Remove obsolete condition (#1694)
Gregor Jasny [Mon, 9 Mar 2026 20:02:15 +0000 (21:02 +0100)] 
chore: Remove obsolete condition (#1694)

4 weeks agobuild: Use CMake knowledge about helper locations (#1689)
Gregor Jasny [Mon, 9 Mar 2026 19:21:09 +0000 (20:21 +0100)] 
build: Use CMake knowledge about helper locations (#1689)

4 weeks agofix: Restore atime when recompressor fails to read a file
Joel Rosdahl [Sun, 8 Mar 2026 18:00:42 +0000 (19:00 +0100)] 
fix: Restore atime when recompressor fails to read a file

4 weeks agofix: Handle extensionless -x assembler inputs
Joel Rosdahl [Sun, 8 Mar 2026 16:09:36 +0000 (17:09 +0100)] 
fix: Handle extensionless -x assembler inputs

Regression in 5da91eb2b4f4cd09a5669f0aebfc534b514826ce.

Fixes #1691.

4 weeks agofix: Fix crash when finding storage helper next to the ccache executable
Joel Rosdahl [Sun, 8 Mar 2026 12:32:28 +0000 (13:32 +0100)] 
fix: Fix crash when finding storage helper next to the ccache executable

4 weeks agofix: Use OS-specific methods to reliably find the ccache executable path
Joel Rosdahl [Sun, 8 Mar 2026 12:19:11 +0000 (13:19 +0100)] 
fix: Use OS-specific methods to reliably find the ccache executable path

argv[0] is not guaranteed to reflect the actual location of the
executable (e.g. when invoked via a symlink). Use platform-specific APIs
instead. Fall back to the argv[0]-based approach if the OS method fails.

4 weeks agofix: Search for storage helper in libexec before PATH
Joel Rosdahl [Sat, 7 Mar 2026 21:42:11 +0000 (22:42 +0100)] 
fix: Search for storage helper in libexec before PATH

Previously ccache searched for storage helpers in PATH before libexec
directories. The idea was that users could easily override a
system-installed helper by placing a newer version earlier in PATH.

However, this also meant that PATH was consulted even when a libexec
directory had been explicitly configured, or when the helper was
installed in the intended system location. In these cases, helpers found
in PATH could take precedence over the expected libexec helper.

Since installing helpers in a libexec directory is the intended
deployment model, prefer libexec locations over PATH.

4 weeks agofix: Fix build with HAVE_UTIMES but without HAVE_UTIMENSAT
Joel Rosdahl [Fri, 6 Mar 2026 20:16:04 +0000 (21:16 +0100)] 
fix: Fix build with HAVE_UTIMES but without HAVE_UTIMENSAT

Fixes #1690.

5 weeks agoci: Adapt generate-release-notes to new Linux binary release archives
Joel Rosdahl [Thu, 5 Mar 2026 15:15:42 +0000 (16:15 +0100)] 
ci: Adapt generate-release-notes to new Linux binary release archives

5 weeks agochore: Update authors v4.13
Joel Rosdahl [Thu, 5 Mar 2026 14:14:51 +0000 (15:14 +0100)] 
chore: Update authors

5 weeks agochore: Update NEWS
Joel Rosdahl [Thu, 5 Mar 2026 14:12:26 +0000 (15:12 +0100)] 
chore: Update NEWS

5 weeks agochore: Add GitHub user names to NEWS
Joel Rosdahl [Thu, 5 Mar 2026 14:11:20 +0000 (15:11 +0100)] 
chore: Add GitHub user names to NEWS

5 weeks agobuild: Only inject config.h for C and C++, not assembler
Joel Rosdahl [Sun, 1 Mar 2026 14:45:46 +0000 (15:45 +0100)] 
build: Only inject config.h for C and C++, not assembler

Fixes #1599.

6 weeks agofeat: Add support for directory-specific configuration file
Joel Rosdahl [Thu, 26 Feb 2026 10:40:43 +0000 (11:40 +0100)] 
feat: Add support for directory-specific configuration file

Ccache now searches for a ccache.conf file (separate from the
cache-specific config) in the current working directory and its parent
directories. This allows per-project configuration without modifying the
user's cache-specific config.

Directory config has higher priority than other config files but lower
priority than environment variables.

The search stops when reaching a ceiling_dirs entry (default: $HOME), a
ceiling_marker (default: .git), a mount point or a directory owned by
another user. A found file is accepted only if it is owned by the
effective user and not world-writable.

For security, unsafe settings are rejected by default, where unsafe
means affecting which commands to execute, which files to write and
which network connections to make. They are only allowed when the
directory config file is under a trusted path listed in safe_dirs.

Closes #1393.

6 weeks agodocs: Define path list separator in one place
Joel Rosdahl [Thu, 26 Feb 2026 10:49:23 +0000 (11:49 +0100)] 
docs: Define path list separator in one place

6 weeks agochore: Add temporary Emacs files to .gitignore
Joel Rosdahl [Thu, 26 Feb 2026 09:16:34 +0000 (10:16 +0100)] 
chore: Add temporary Emacs files to .gitignore

6 weeks agoenhance: Add util::DirEntry::uid function
Joel Rosdahl [Sat, 21 Feb 2026 13:35:08 +0000 (14:35 +0100)] 
enhance: Add util::DirEntry::uid function

6 weeks agorefactor: Sort Config methods and variables
Joel Rosdahl [Sun, 22 Feb 2026 18:55:44 +0000 (19:55 +0100)] 
refactor: Sort Config methods and variables

6 weeks agorefactor: Verify absolute paths in set_base_dirs instead of after
Joel Rosdahl [Sat, 21 Feb 2026 13:33:21 +0000 (14:33 +0100)] 
refactor: Verify absolute paths in set_base_dirs instead of after

7 weeks agochore: Remove check for (on POSIX) mandatory spawn.h header
Joel Rosdahl [Wed, 18 Feb 2026 19:51:17 +0000 (20:51 +0100)] 
chore: Remove check for (on POSIX) mandatory spawn.h header

7 weeks agoci: Stop building 32-bit Windows releases
Joel Rosdahl [Mon, 16 Feb 2026 19:22:25 +0000 (20:22 +0100)] 
ci: Stop building 32-bit Windows releases

I see no reason to continue releasing prebuilt 32-bit binaries, so let's
stop doing that and see if users agree.

7 weeks agoperf: Fix performance regression in process_preprocessed_file
Joel Rosdahl [Sun, 15 Feb 2026 17:49:13 +0000 (18:49 +0100)] 
perf: Fix performance regression in process_preprocessed_file

4b79f9ec35b1de186e924e3f9f467ad1504b523e introduced std::string_view
construction of potentially very large strings in
process_preprocessed_file.

7 weeks agochore: Require Clang >= 12
Joel Rosdahl [Sun, 8 Feb 2026 19:10:41 +0000 (20:10 +0100)] 
chore: Require Clang >= 12

7 weeks agochore: Fix typo
Joel Rosdahl [Sat, 7 Feb 2026 21:30:41 +0000 (22:30 +0100)] 
chore: Fix typo

Fixes typos introduced in 51466ac40eeb57a0d9b0edbdbc9f40ed2d753b7a.

7 weeks agorefactor: Improve PRINT macro to accept format string without arguments
Joel Rosdahl [Sat, 7 Feb 2026 18:11:52 +0000 (19:11 +0100)] 
refactor: Improve PRINT macro to accept format string without arguments

7 weeks agorefactor: Improve LOG macro to accept format string without arguments
Joel Rosdahl [Mon, 2 Feb 2026 20:35:14 +0000 (21:35 +0100)] 
refactor: Improve LOG macro to accept format string without arguments

8 weeks agorefactor: Generalize "already preprocessed" compiler language slightly (#1684)
Joel Rosdahl [Thu, 12 Feb 2026 20:05:30 +0000 (21:05 +0100)] 
refactor: Generalize "already preprocessed" compiler language slightly (#1684)

- Rename ArgsInfo::direct_i_file to preprocess_input_file, since that's
  what it now means.
- Add "ir" as a language and let "-fthinlto-index=" use that language
  implicitly instead of piggybacking on "assembler".

8 weeks agofeat: Support caching of distributed ThinLTO for Clang (#1683)
zcfh [Wed, 11 Feb 2026 20:05:44 +0000 (04:05 +0800)] 
feat: Support caching of distributed ThinLTO for Clang (#1683)

2 months agorefactor: Remove now unnecessary util::{starts,ends}_with
Joel Rosdahl [Wed, 4 Feb 2026 20:14:53 +0000 (21:14 +0100)] 
refactor: Remove now unnecessary util::{starts,ends}_with

2 months agochore: Update copyright years
Joel Rosdahl [Sat, 7 Feb 2026 14:21:01 +0000 (15:21 +0100)] 
chore: Update copyright years

(cherry picked from commit ec039169a4d93f7bae3f3f99762bd0248c9d3bd5)

2 months agochore: Update authors
Joel Rosdahl [Sat, 7 Feb 2026 14:20:21 +0000 (15:20 +0100)] 
chore: Update authors

(cherry picked from commit 1a0c691375ead5eb13b39090de6da8699bc0ae9c)

2 months agochore: Update NEWS
Joel Rosdahl [Sat, 7 Feb 2026 14:19:47 +0000 (15:19 +0100)] 
chore: Update NEWS

(cherry picked from commit 1d35536287570a2033978e5abb98e9e5e5c76b20)

2 months agofix(cmake): Enable assembler compiler conditionally (#1678)
Steffen [Sat, 7 Feb 2026 08:50:14 +0000 (08:50 +0000)] 
fix(cmake): Enable assembler compiler conditionally (#1678)

CMake will call `enable_language` for all languages passed to `project`.
This deduplicates the work and only enables one assembler depending on
the platform.

2 months agorefactor: Remove no longer needed FMT_STRING
Joel Rosdahl [Tue, 3 Feb 2026 19:27:01 +0000 (20:27 +0100)] 
refactor: Remove no longer needed FMT_STRING

fmt checks format arguments without the need of FMT_STRING when using
C++20.

2 months agorefactor: Use C++20 .contains(...) instead of .find() != .end()
Joel Rosdahl [Tue, 3 Feb 2026 19:26:56 +0000 (20:26 +0100)] 
refactor: Use C++20 .contains(...) instead of .find() != .end()

2 months agorefactor: Use C++20 erase_if instead of erase+remove_if
Joel Rosdahl [Tue, 3 Feb 2026 19:26:53 +0000 (20:26 +0100)] 
refactor: Use C++20 erase_if instead of erase+remove_if

2 months agorefactor: Use std::span instead of nonstd::span
Joel Rosdahl [Tue, 3 Feb 2026 19:26:51 +0000 (20:26 +0100)] 
refactor: Use std::span instead of nonstd::span

2 months agochore: Bump required compiler versions
Joel Rosdahl [Tue, 3 Feb 2026 19:26:45 +0000 (20:26 +0100)] 
chore: Bump required compiler versions

2 months agobuild: Require a C++-20 compiler
Joel Rosdahl [Tue, 3 Feb 2026 19:26:38 +0000 (20:26 +0100)] 
build: Require a C++-20 compiler

2 months agobuild: Add missing includes
Joel Rosdahl [Tue, 3 Feb 2026 18:04:54 +0000 (19:04 +0100)] 
build: Add missing includes

2 months agobuild: Disable Clang-Tidy modernize-loop-convert check
Joel Rosdahl [Tue, 3 Feb 2026 18:51:03 +0000 (19:51 +0100)] 
build: Disable Clang-Tidy modernize-loop-convert check

2 months agoci: Use Clang-Tidy 13
Joel Rosdahl [Tue, 3 Feb 2026 18:23:11 +0000 (19:23 +0100)] 
ci: Use Clang-Tidy 13

2 months agobuild: Disable legacy support for downloaded zstd
Joel Rosdahl [Sat, 31 Jan 2026 09:54:32 +0000 (10:54 +0100)] 
build: Disable legacy support for downloaded zstd

This avoids compiling zstd's lib/legacy/zstd_v01.c file which is seen to
trigger -Wmaybe-uninitialized warnings.

Closes #1679.

2 months agoperf: Use copy_file_range to copy files if available (#1680)
Oleg Sidorkin [Sat, 31 Jan 2026 09:46:13 +0000 (12:46 +0300)] 
perf: Use copy_file_range to copy files if available (#1680)

2 months agofix: Rewrite 'inlined from' messages in absolute_paths_in_stderr (#1676)
Enrico Seiler [Tue, 27 Jan 2026 18:39:41 +0000 (19:39 +0100)] 
fix: Rewrite 'inlined from' messages in absolute_paths_in_stderr (#1676)

2 months agochore: Improve GitHub issue templates
Joel Rosdahl [Tue, 27 Jan 2026 18:23:10 +0000 (19:23 +0100)] 
chore: Improve GitHub issue templates

2 months agochore: Improve GitHub issue templates
Joel Rosdahl [Tue, 27 Jan 2026 18:17:48 +0000 (19:17 +0100)] 
chore: Improve GitHub issue templates

2 months agoMerge pull request #1672 from jrosdahl/crsh
Joel Rosdahl [Sun, 25 Jan 2026 10:04:44 +0000 (11:04 +0100)] 
Merge pull request #1672 from jrosdahl/crsh

Add remote storage helper support.

2 months agofeat: Add support for remote storage helpers 1672/head
Joel Rosdahl [Sun, 18 Jan 2026 13:48:06 +0000 (14:48 +0100)] 
feat: Add support for remote storage helpers

This commit adds support for communicating with a remote storage server
using a long-lived local helper process, started by ccache on demand.
The helper process can keep connections alive (thus amortizing the
session setup cost), and knowledge about remote storage protocols can be
kept out of the ccache code base, making it possible to develop and
release support for different storage server protocols independently.

The storage helper listens to a Unix-domain socket on POSIX systems and
a named pipe on Windows systems. Ccache communicates with it using a
custom IPC protocol, described in doc/remote_storage_helper_spec.md. The
helper is named ccache-storage-<scheme> (e.g. ccache-storage-https) and
can be placed in $PATH, next to the ccache executable or in ccache's
libexec directory. Storage helpers time terminate after a while on
inactivity.

Built-in support for http and redis is kept for now but will likely be
removed in a future ccache release.

- The syntax of the remote_storage/CCACHE_REMOTE_STORAGE configuration
  option has been improved (in a backward compatible way): What used to
  be called "attributes" are now split into "properties" and "custom
  attributes", where properties are things that ccache knows about and
  acts on (e.g. read-only and shards) while attributes are custom
  key-value pairs sent to the helper without ccache knowing or caring
  about them. Syntax: A property is "key=value", a custom attribute is
  "@key=value".
- Properties/attributes are now separated by whitespace instead of pipe
  characters.

New remote storage properties:

- data-timeout: Timeout for send/receive data transfer. Resets whenever
  data is received or can be sent. Default: 1s.
- request-timeout: Timeout for the whole request. Default: 10s.
- idle-timeout: Timeout for the helper process to wait before exiting
  after client inactivity (0s: stay up indefinitely). Default: 10m.
- helper: Override which storage helper to spawn (either a filename or a
  full path). This is mainly useful when developing or testing new
  helpers.

The new command line option "--stop-storage-helpers" can be used to ask
spawned storage helpers to stop immediately.

A new "libexec_dirs" configuration option is available for overriding
the default libexec determined at build time.

2 months agofeat: Add simple storage helper implementation for integration tests
Joel Rosdahl [Thu, 23 Oct 2025 16:07:34 +0000 (18:07 +0200)] 
feat: Add simple storage helper implementation for integration tests

The helper keeps stored values in memory and only handles one client
connection at a time.