]> git.ipfire.org Git - thirdparty/ccache.git/commitdiff
Update NEWS
authorJoel Rosdahl <joel@rosdahl.net>
Sun, 4 Oct 2020 18:50:58 +0000 (20:50 +0200)
committerJoel Rosdahl <joel@rosdahl.net>
Mon, 5 Oct 2020 06:54:51 +0000 (08:54 +0200)
doc/NEWS.adoc

index 6aa74b3965e663d14947108e24bef15c61a2433e..57221d8bfbb6adcc06676413e10dc41e1f9200a8 100644 (file)
@@ -5,56 +5,198 @@ ccache 4.0
 ----------
 Unreleased
 
-High-level summary of changes (work in progress)
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-- Compilation results are now stored in single aggregated files; before up to
-  seven files per cached result were used.
+Tooling
+~~~~~~~
+
+- CMake is now used instead of Autoconf for build configuration.
+
+- A C++11 compiler, a C99 compiler and CMake 3.4.3 or newer are now required to
+  build ccache.
+
+- Ccache can now be built using Microsoft Visual C++.
+
+
+Functional changes
+~~~~~~~~~~~~~~~~~~
 
-- Result and manifest files are now compressed by the real-time compression
-  algorithm Zstandard by default.
+- All data of a cached result is now stored in a single file called “result”
+  instead of up to seven files. This reduces i-node usage and improves data
+  locality.
 
-- BLAKE3 is now used instead of MD4 for hashing input.
+- Added compression of result and manifest files using the
+  http://zstd.net[Zstandard] algorithm. Compression is enabled by default with
+  compression level 1. This makes ccache able to store more data in the cache.
+  Previously compression with zlib (deflate) was available but disabled by
+  default. Files can be recompressed with a another compression level later
+  with the `-X/--recompress` option described further below.
 
-- Added checksumming of result files using XXH3 to detect data corruption.
+- Switched to use the https://blake3.io[BLAKE3] algorithm instead of MD4 for
+  hashing input. This improves performance and reduces the risk of hash
+  collisions.
 
-- Made the hard link mode less error prone.
+- Added checksumming of result and manifest files using the
+  http://xxhash.com[XXH3] algorithm to detect data corruption.
 
-- Added opt-in support for using file cloning (on Btrfs/XFS/APFS) to copy data
-  to and from the cache.
+- Ccache now follows the
+  https://specifications.freedesktop.org/basedir-spec/[XDG base directory
+  specification]. This means that the default cache directory on Unix systems
+  is `$XDG_CACHE_HOME/ccache` (with `$HOME/.cache/ccache` as the fallback if
+  `XDG_CACHE_HOME` is not set) and the configuration file is
+  `$XDG_CONFIG_HOME/ccache/ccache.conf` (with
+  `$HOME/.config/ccache/ccache.conf` as the fallback). On macOS, the fallbacks
+  are `$HOME/Library/Caches/ccache` and
+  `$HOME/Library/Preferences/ccache/ccache.conf`. On Windows, the fallbacks are
+  `%APPDATA%/ccache` and `%APPDATA%/ccache/ccache.conf`. Exception: If the
+  legacy `$HOME/.ccache` directory exists, that directory is used for the
+  default cache location and `$HOME/.ccache/ccache.conf` for the configuration
+  file.
 
-- A C++11 compiler is now required to build ccache.
+- Cache statistics are now stored in files on cache level 2 to reduce lock
+  contention when there are many parallel compilations.
 
-- Build tooling switched from Autoconf to CMake.
+- An appropriate cache directory level structure is now chosen automatically.
+  The `cache_dir_levels` (`CCACHE_NLEVELS`) configuration option has therefore
+  been removed.
 
-- Added a `-x/--show-compression` option which shows some statistics about
-  cache compression.
+- Added an experimental “inode cache” for file hashes, allowing computed hash
+  values to be reused both within and between builds. The inode cache is off by
+  default but can be enabled by setting `inode_cache` (`CCACHE_INODECACHE`) to
+  `true`.
 
-- Added a `-X/--recompress` option which can be used to recompress the cache
-  data with another compression level (or make it uncompressed). If you choose
-  to disable compression by default or to use a level with a low compression
-  ratio, you can recompress the cache with a higher compression level after the
-  build or at another time when there are more CPU cycles available, for
-  instance every night.
+- Added support for using file cloning (AKA “reflinks”) on Btrfs, XFS and APFS
+  to copy data to and from the cache very efficiently.
+
+- Two measures have been implemented to make the hard link mode safer:
+  hard-linked files are made read-only and inadvertent content changes that
+  affect file size are detected.
+
+- Added a command line option `-x/--show-compression` which shows statistics
+  about cache compression.
+
+- Added a command line option `-X/--recompress` which can be used to recompress
+  the cache data with another compression level or make it uncompressed. If you
+  choose to disable compression by default, or to use a compression level with
+  a low compression ratio, you can recompress the cache with a higher
+  compression level after the build or at another time when there are more CPU
+  cycles available, for instance every night.
+
+- Added a command line option `--evict-older-than` which can be used to remove
+  cache entries older than a certain age.
+
+- Added a command line option `-d/--directory` which can be used to specify
+  cache directory to operate on instead of having to set `CCACHE_DIR`
+  temporarily.
 
 - A progress bar has been added to show the progress of time-consuming options
-  like `-c/--cleanup`, `-C/--clear`, `-x/--show-compression` and
-  `-X/--recompress`.
+  like `-c/--cleanup`, `-C/--clear`, `--evict-older-than`,
+  `-x/--show-compression` and `-X/--recompress`.
 
 - When supported by the CPU, a SIMD-friendly (using AVX2) algorithm is now used
-  to scan input source code for `__DATE__` and `__TIME__` macros. This can
-  decrease the number of CPU cycles for a direct cache hit with up to 15% in
-  some cases.
+  to scan input source code for `__DATE__`, `__TIME__` and `__TIMESTAMP__`
+  macros. This can decrease the number of CPU cycles for a direct cache hit
+  with up to 15% in some cases.
 
-- Added a new inode cache for file hashes, allowing computed hash values to be
-  reused both within and between builds.
+- Some unnecessary `stat(2)` system calls are now avoided when verifying header
+  files.
 
 - Compiler diagnostic messages are now always cached in color, and ccache
-  strips the color codes on the fly when requested explicitly by command-line
+  strips the color codes on the fly when requested explicitly by command-line
   option or when stderr does not refer to a TTY. This allows IDEs and terminals
   to share cached compilation results.
 
-- (More to be written.)
+- Added optional logging to syslog.
+
+- The compiler option `-fmodules` is now handled in “depend mode”. If “depend
+  mode” is disabled the option is still considered too hard and ccache will
+  fall back to running the compiler.
+
+- `realpath(3)` is no longer used for normalization when computing relative
+  paths. This makes it possible to get cache hits when the source or build
+  directory is a symbolic link to an absolute path that includes unstable
+  information like build IDs or timestamps.
+
+- Added a new `ignore_options` (`CCACHE_IGNOREOPTIONS`) configuration option
+  which makes it possible to exclude compiler options from the hash.
+
+- Added an `absolute_paths_in_stderr` (`CCACHE_ABSSTDERR`) configuration option
+  which, if set, makes ccache rewrite absolute paths in compiler warnings and
+  errors to relative.
+
+- Improved handling of umask. The configured `umask` (`CCACHE_UMASK`) is now
+  only applied to files and directories in the cache directory. Previously the
+  umask was applied to all files produced by ccache and the executed compiler.
+
+- Ccache is now able to share cache entries for different object file names
+  when using `-MD` or `-MMD`.
+
+- Clang’s `-Xclang` (used by CMake for precompiled headers),
+  `-fno-pch-timestamp`, `-emit-pch`, `-emit-pth` and `-include-pth` options are
+  now understood.
+
+- Added support for the HIP (“C++ Heterogeneous-Compute Interface for
+  Portability”) language.
+
+- The manifest format now allows for header files larger than 4 GiB.
+
+- Made it possible to once again cache compilations with `__DATE__` in the
+  source code.
+
+- Added handling of the `__TIMESTAMP__` macro.
+
+- An absolute input source path is now rewritten to a relative path when using
+  `base_dir`.
+
+- `waitpid` system calls interrupted by a signal are now handled correctly.
+
+- Made handling of `.dwo` files and interaction between `-gsplit-dwarf` and
+  other `-g*` options more robust.
+
+- The “couldn't find compiler” statistics counter is no longer incremented when
+  ccache exits with a fatal error.
+
+- Failure to run a `compiler_check` command is no longer a fatal error.
+
+- Added command line options `--dump-result` and `--extract-result` for
+  inspecting and extracting result files.
+
+- Added a command line option `--checksum-file` for debugging or evaluating the
+  checksum algorithm.
+
+- Improved error message for “ccache -o=K=V” (trying to set a configuration
+  option named “=K”).
+
+- Made timestamps in statistics files Y2038-proof.
+
+- Removed code for populating a newly created configuration file with cache
+  size values for cache directories created by ccache versions older than 3.2
+  (released 2014).
+
+- Removed knowledge about a top-level stats file created by ccache versions
+  older than 3.1 (released 2010).
+
+
+Other improvements
+~~~~~~~~~~~~~~~~~~
+
+- Improved help text and documentation of command line options.
+
+- Improved documentation of the `base_dir` configuration option.
+
+- Improved documentation of preprocessor and direct modes.
+
+- Added HTML anchors to configuration options in the manual so that it is
+  possible to construct a URL to a specific item.
+
+- Tweaked placement of “(readonly)” in output of `ccache -s`.
+
+- Improved visibility of color output from the test suite.
+
+- Fixed test suite problems on macOS.
+
+- Disabled hardlink tests on AFS since it lacks such support.
+
+- Disabled read-only tests on file systems that lack such support.
 
 
 ccache 3.7.12