Imported Upstream version 3.5.1
[platform/upstream/ccache.git] / doc / NEWS.adoc
1 ccache news
2 ===========
3
4 ccache 3.5.1
5 ------------
6 Release date: 2019-01-02
7
8 Changes
9 ~~~~~~~
10
11 - Added missing getopt_long.c source file to release archive.
12
13 - Fixed (harmless) compiler warnings when building ccache object files.
14
15 - CFLAGS is no longer passed to the linker when linking ccache.
16
17 - Improved development mode build flags.
18
19
20 ccache 3.5
21 ----------
22 Release date: 2018-10-15
23
24 Changes
25 ~~~~~~~
26
27 - Added a boolean `debug` (`CCACHE_DEBUG`) configuration option. When enabled,
28   ccache will create per-object debug files that are helpful e.g. when
29   debugging unexpected cache misses. See also the new ``Cache debugging''
30   section in the manual.
31
32 - Renamed `CCACHE_CC` to `CCACHE_COMPILER` (keeping the former as a deprecated
33   alias).
34
35 - Added a new command-line option `-k/--get-config` that prints the value of a
36   config key.
37
38 - It is now possible to let ccache hash a precomputed checksum file instead of
39   the full content of a precompiled header. This can save time for large
40   precompiled headers. Note that the build system needs to keep the checksum
41   file in sync with the precompiled header for this to work.
42
43 - Improved performance substantially when using `hash_dir = false` on platforms
44   like macOS where `getcwd()` is slow.
45
46 - Added ``stats updated'' timestamp in `ccache -s` output. This can be useful
47   if you wonder whether ccache actually was used for your last build.
48
49 - Renamed ``stats zero time'' to ``stats zeroed'' and documented it. The
50   counter is also now only present in `ccache -s` output when `ccache -z`
51   actually has been called.
52
53 - The content of the `-fsanitize-blacklist` file is now included in the hash,
54   so updates to the file will now correctly result in separate cache entries.
55
56 - It's now possible to opt out of building and installing man pages when
57   running `make install` in the source repository.
58
59 - If the compiler type can't be detected (e.g. if it is named *cc*), use safer
60   defaults that won't trip up Clang.
61
62 - Made the ccache test suite work on FreeBSD.
63
64 - Added `file_stat_matches_ctime` option to disable ctime check if
65   `file_stat_matches` is enabled.
66
67 - Made “./configure --without-bundled-zlib” do what’s intended.
68
69
70 ccache 3.4.3
71 -----------
72 Release date: 2018-09-02
73
74 Bug fixes
75 ~~~~~~~~~
76
77 - Fixed a race condition when creating the initial config file in the cache
78   directory.
79
80 - Bail out on too hard Clang option `-MJ`.
81
82 - Bail out on too hard option `-save-temps=obj`.
83
84 - Handle separate parameter to Clang option `-target` correctly.
85
86 - Upgraded bundled zlib to version 1.2.11.
87
88
89 ccache 3.4.2
90 ------------
91 Release date: 2018-03-25
92
93 Bug fixes
94 ~~~~~~~~~
95
96 - The cleanup algorithm has been fixed to not misbehave when files are removed
97   by another process while the cleanup process is running. Previously, too many
98   files could be removed from the cache if multiple cleanup processes were
99   triggered at the same time, in extreme cases trimming the cache to a much
100   smaller size than the configured limits.
101
102 - Correctly hash preprocessed headers located in a ``.gch directory''.
103   Previously, ccache would not pick up changes to such precompiled headers,
104   risking false positive cache hits.
105
106 - Fixed build failure when using the bundled zlib sources.
107
108 - ccache 3.3.5 added a workaround for not triggering Clang errors when a
109   precompiled header's dependency has an updated timestamp (but identical
110   content). That workaround is now only applied when the compiler is Clang.
111
112 - Made it possible to perform out-of-source builds in dev mode again.
113
114
115 ccache 3.4.1
116 ------------
117 Release date: 2018-02-11
118
119 Bug fixes
120 ~~~~~~~~~
121
122 - Fixed printing of version number in `ccache --version`.
123
124
125 ccache 3.4
126 ----------
127 Release date: 2018-02-11
128
129 New features and enhancements
130 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
131
132 - The compiler option form `--sysroot arg` is now handled like the documented
133   `--sysroot=arg` form.
134
135 - Added support for caching `.su` files generated by GCC flag `-fstack-usage`.
136
137 - ccache should now work with distcc's ``pump'' wrapper.
138
139 - The optional unifier is no longer disabled when the direct mode is enabled.
140
141 - Added support for NVCC compiler options `--compiler-bindir/-ccbin`,
142   `--output-directory/-odir` and `--libdevice-directory/-ldir`.
143
144 - Boolean environment variable settings no longer accept the following
145   (case-insensitive) values: `0`, `false`, `disable` and `no`. All other values
146   are accepted and taken to mean ``true''. This is to stop users from setting
147   e.g. `CCACHE_DISABLE=0` and then expect the cache to be used.
148
149 - Improved support for `run_second_cpp = false`: If combined with passing
150   `-fdirectives-only` (GCC) or `frewrite-includes` (Clang) to the compiler,
151   diagnostics warnings and similar will be correct.
152
153 - An implicit `-MQ` is now passed to the preprocessor only if the object file
154   extension is non-standard. This should make it easier to use EDG-based
155   compilers (e.g. GHS) which don't understand `-MQ`.
156
157 - ccache now treats an unreadable configuration file just like a missing
158   configuration file.
159
160 - Documented more pitfalls with enabling `hard_links` (`CCACHE_HARDLINK`).
161
162 - Documented caveats related to colored warnings from compilers.
163
164
165 Bug fixes
166 ~~~~~~~~~
167
168 - File size and number counters are now updated correctly when files are
169   overwritten in the cache, e.g. when using `CCACHE_RECACHE`.
170
171 - `run_second_cpp` is now forced for NVCC.
172
173 - Fixed how the NVCC options `-optf` and `-odir` are handled.
174
175
176 ccache 3.3.6
177 ------------
178 Release date: 2018-01-28
179
180 New features and enhancements
181 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
182
183 - Improved instructions on how to get cache hits between different working
184   directories.
185
186
187 Bug fixes
188 ~~~~~~~~~
189
190 - Fixed regression in ccache 3.3.5 related to the `UNCACHED_ERR_FD` feature.
191
192
193 ccache 3.3.5
194 ------------
195 Release date: 2018-01-13
196
197
198 New features and enhancements
199 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
200
201 - Documented how automatic cache cleanup works.
202
203
204 Bug fixes
205 ~~~~~~~~~
206
207 - Fixed a regression where the original order of debug options could be lost.
208   This reverts the ``Improved parsing of `-g*` options'' feature in ccache 3.3.
209
210 - Multiple `-fdebug-prefix-map` options should now be handled correctly.
211
212 - Fixed matching of directories in the `ignore_headers_in_manifest`
213   configuration option.
214
215 - Fixed detection of missing argument to `-opt`/`--options-file`.
216
217 - ccache now bails out when building a precompiled header if any of the
218   corresponding header files has an updated timestamp. This fixes complaints
219   from Clang.
220
221 - Fixed a bug related to erroneously storing a dependency file with absolute
222   paths in the cache on a preprocessed hit.
223
224 - `ccache -c/--cleanup` now works like documented: it just recalculates size
225   counters and trims the cache to not exceed the max size and file number
226   limits. Previously, the forced cleanup took ``limit_multiple'' into account,
227   so that `ccache -c/--cleanup` by default would trim the cache to 80% of the
228   max limit.
229
230 - ccache no longer ignores linker arguments for Clang since Clang warns about
231   them.
232
233 - Plugged a couple of file descriptor leaks.
234
235 - Fixed a bug where ccache would skip hashing the compiler argument following a
236   `-fno-working-directory`, `-fworking-directory`, `-nostdinc`, `-nostdinc++`,
237   `-remap` or `-trigraphs` option in preprocessor mode.
238
239
240 ccache 3.3.4
241 ------------
242 Release date: 2017-02-17
243
244 New features and enhancements
245 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
246
247 - Documented the different cache statistics counters.
248
249
250 Bug fixes
251 ~~~~~~~~~
252
253 - Fixed a regression in ccache 3.3 related to potentially bad content of
254   dependency files when compiling identical source code but with different
255   source paths. This was only partially fixed in 3.3.2 and reverts the new
256   ``Names of included files are no longer included in the hash of the
257   compiler's preprocessed output'' feature in 3.3.
258
259 - Corrected statistics counter for `-optf`/`--options-file` failure.
260
261 - Fixed undefined behavior warnings in ccache found by `-fsanitize=undefined`.
262
263 ccache 3.3.3
264 ------------
265 Release date: 2016-10-26
266
267 Bug fixes
268 ~~~~~~~~~
269
270 - ccache now detects usage of `.incbin` assembler directives in the source code
271   and avoids caching such compilations.
272
273
274 ccache 3.3.2
275 ------------
276 Release date: 2016-09-28
277
278 Bug fixes
279 ~~~~~~~~~
280
281 - Fixed a regression in ccache 3.3 related to potentially bad content of
282   dependency files when compiling identical source code but with different
283   source paths.
284
285 - Fixed a regression in ccache 3.3.1: ccache could get confused when using the
286   compiler option `-Wp,` to pass multiple options to the preprocessor,
287   resulting in missing dependency files from direct mode cache hits.
288
289
290 ccache 3.3.1
291 ------------
292 Release date: 2016-09-07
293
294 Bug fixes
295 ~~~~~~~~~
296
297 - Fixed a problem in the ``multiple `-arch` options'' support introduced in
298   3.3. When using the direct mode (the default), different combinations of
299   `-arch` options were not detected properly.
300
301 - Fixed an issue when compiler option `-Wp,-MT,path` is used instead of `-MT
302   path` (and similar for `-MF`, `-MP` and `-MQ`) and `run_second_cpp`
303   (`CCACHE_CPP2`) is enabled.
304
305
306 ccache 3.3
307 ----------
308 Release date: 2016-08-27
309
310 Notes
311 ~~~~~
312
313 - A C99-compatible compiler is now required to build ccache.
314
315
316 New features and enhancements
317 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
318
319 - The configuration option `run_second_cpp` (`CCACHE_CPP2`) now defaults to
320   true. This improves ccache's out-of-the-box experience for compilers that
321   can't compile their own preprocessed output with the same outcome as if they
322   compiled the real source code directly, e.g. newer versions of GCC and Clang.
323
324 - The configuration option `hash_dir` (`CCACHE_HASHDIR`) now defaults to true.
325
326 - Added a new `ignore_headers_in_manifest` configuration option, which
327   specifies headers that should be ignored in the direct mode.
328
329 - Added a new `prefix_command_cpp` (`CCACHE_PREFIX_CPP`) configuration option,
330   which specifies one or several prefixes to add to the command line ccache
331   uses when invoking the preprocessor.
332
333 - Added a new `limit_multiple` (`CCACHE_LIMIT_MULTIPLE`) configuration option,
334   which specifies how much of the cache to remove when cleaning.
335
336 - Added a new `keep_comments_cpp` (`CCACHE_COMMENTS`) configuration option,
337   which tells ccache not to discard the comments before hashing preprocessor
338   output. This can be used to check documentation with *-Wdocumentation*.
339
340 - Added a new sloppiness option `no_system_headers`, which tells ccache not to
341   include system headers in manifest files.
342
343 - Added a new statistics counter that tracks the number of performed cleanups
344   due to the cache size being over the limit. The value is shown in the output
345   of ``ccache -s''.
346
347 - Added support for relocating debug info directory using `-fdebug-prefix-map`.
348   This allows for cache hits even when `hash_dir` is used in combination with
349   `base_dir`.
350
351 - Added a new ``cache hit rate'' field to the output of ``ccache -s''.
352
353 - Added support for caching compilation of assembler code produced by e.g.
354   ``gcc -S file.c''.
355
356 - Added support for cuda including the -optf/--options-file option.
357
358 - Added support for Fortran 77.
359
360 - Added support for multiple `-arch` options to produce "fat binaries".
361
362 - Multiple identical `-arch` arguments are now handled without bailing.
363
364 - The concatenated form of some long compiler options is now recognized, for
365   example when using `-isystemPATH` instead of `-isystem PATH`.
366
367 - If hard-linking is enabled and but fails (e.g. due to cross-device linking),
368   ccache now falls back to copying instead of running the compiler.
369
370 - Made the `hash_dir` option only have effect when generating debug info.
371
372 - ccache now knows how to convert absolute paths to relative paths inside
373   dependency files when using `base_dir`.
374
375 - Improved parsing of `-g*` options.
376
377 - Made ccache understand `-Wp,-D*` options.
378
379 - ccache now understands the undocumented `-coverage` (only one dash) GCC
380   option.
381
382 - Names of included files are no longer included in the hash of the compiler's
383   preprocessed output. This leads to more potential cache hits when not using
384   the direct mode.
385
386 - Increased buffer size used when reading file data. This improves performance
387   slightly.
388
389
390 Bug fixes
391 ~~~~~~~~~
392
393 - Bail out on too hard compiler option `-P`.
394
395 - Fixed Clang test suite when running on Linux.
396
397 - Fixed build and test for MinGW32 and Windows.
398
399
400 ccache 3.2.9
401 ------------
402 Release date: 2016-09-28
403
404 Bug fixes
405 ~~~~~~~~~
406
407 - Fixed a regression in ccache 3.2.8: ccache could get confused when using the
408   compiler option `-Wp,` to pass multiple options to the preprocessor,
409   resulting in missing dependency files from direct mode cache hits.
410
411
412 ccache 3.2.8
413 ------------
414 Release date: 2016-09-07
415
416 Bug fixes
417 ~~~~~~~~~
418
419 - Fixed an issue when compiler option `-Wp,-MT,path` is used instead of `-MT
420   path` (and similar for `-MF`, `-MP` and `-MQ`) and `run_second_cpp`
421   (`CCACHE_CPP2`) is enabled.
422
423 - ccache now understands the undocumented `-coverage` (only one dash) GCC
424   option.
425
426
427 ccache 3.2.7
428 ------------
429 Release date: 2016-07-20
430
431 Bug fixes
432 ~~~~~~~~~
433
434 - Fixed a bug which could lead to false cache hits for compiler command lines
435   with a missing argument to an option that takes an argument.
436
437 - ccache now knows how to work around a glitch in the output of GCC 6's
438   preprocessor.
439
440
441 ccache 3.2.6
442 ------------
443 Release date: 2016-07-12
444
445 Bug fixes
446 ~~~~~~~~~
447
448 - Fixed build problem on QNX, which lacks ``SA_RESTART''.
449
450 - Bail out on compiler option `-fstack-usage` since it creates a `.su` file
451   which ccache currently doesn't handle.
452
453 - Fixed a bug where (due to ccache rewriting paths) the compiler could choose
454   incorrect include files if `CCACHE_BASEDIR` is used and the source file path
455   is absolute and is a symlink.
456
457
458 ccache 3.2.5
459 ------------
460 Release date: 2016-04-17
461
462
463 New features and enhancements
464 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
465
466 - Only pass Clang-specific `-stdlib=` to the preprocessor.
467
468 - Improved handling of stale NFS handles.
469
470 - Made it harder to misinterpret documentation of boolean environment settings'
471   semantics.
472
473
474 Bug fixes
475 ~~~~~~~~~
476
477 - Include m4 files used by configure.ac in the source dist archives.
478
479 - Corrected "Performance" section in the manual regarding `__DATE_`, `__TIME__`
480   and `__FILE__` macros.
481
482 - Fixed build on Solaris 10+ and AIX 7.
483
484 - Fixed failure to create directories on QNX.
485
486 - Don't (try to) update manifest file in ``read-only'' and ``read-only direct''
487   modes.
488
489 - Fixed a bug in caching of `stat` system calls in ``file_stat_matches
490   sloppiness mode''.
491
492 - Fixed bug in hashing of Clang plugins, leading to unnecessary cache misses.
493
494 - Fixed --print-config to show ``pch_defines sloppiness''.
495
496 - The man page is now built when running ``make install'' from Git repository
497   sources.
498
499
500 ccache 3.2.4
501 ------------
502 Release date: 2015-10-08
503
504
505 Bug fixes
506 ~~~~~~~~~
507
508 - Fixed build error related to zlib on systems with older make versions
509   (regression in ccache 3.2.3).
510
511 - Made conversion-to-bool explicit to avoid build warnings (and potential
512   runtime errors) on legacy systems.
513
514 - Improved signal handling: Kill compiler on SIGTERM; wait for compiler to exit
515   before exiting; die appropriately.
516
517 - Minor fixes related to Windows support.
518
519 - The correct compression level is now used if compression is requested.
520
521 - Fixed a bug where cache cleanup could be run too early for caches larger than
522   64 GiB on 32-bit systems.
523
524
525 ccache 3.2.3
526 ------------
527 Release date: 2015-08-16
528
529
530 New features and enhancements
531 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
532
533 - Added support for compiler option `-gsplit-dwarf`.
534
535
536 Bug fixes
537 ~~~~~~~~~
538
539 - Support external zlib in nonstandard directory.
540
541 - Avoid calling `exit()` inside an exit handler.
542
543 - Let exit handler terminate properly.
544
545 - Bail out on compiler option `--save-temps` in addition to `-save-temps`.
546
547 - Only log "Disabling direct mode" once when failing to read potential include
548   files.
549
550
551 ccache 3.2.2
552 ------------
553 Release date: 2015-05-10
554
555
556 New features and enhancements
557 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
558
559 - Added support for `CCACHE_COMPILERCHECK=string:<value>`. This is a faster
560   alternative to `CCACHE_COMPILERCHECK=<command>` if the command's output can
561   be precalculated by the build system.
562
563 - Add support for caching code coverage results (compiling for gcov).
564
565
566 Bug fixes
567 ~~~~~~~~~
568
569 - Made hash of cached result created with and without `CCACHE_CPP2` different.
570   This makes it possible to rebuild with `CCACHE_CPP2` set without having to
571   clear the cache to get new results.
572
573 - Don't try to reset a non-existing stats file. This avoids ``No such file or
574   directory'' messages in the ccache log when the cache directory doesn't
575   exist.
576
577 - Fixed a bug where ccache deleted Clang diagnostics after compiler failures.
578
579 - Avoid performing an unnecessary copy of the object file on a cache miss.
580
581 - Bail out on too hard compiler option `-fmodules`.
582
583 - Bail out on too hard compiler option `-fplugin=libcc1plugin` (interaction
584   with GDB).
585
586 - Fixed build error when compiling ccache with recent Clang versions.
587
588 - Removed signal-unsafe code from signal handler.
589
590 - Corrected logic for when to output cached stderr.
591
592 - Wipe the whole cached result on failure retrieving a cached file.
593
594 - Fixed build error when compiling ccache with recent Clang versions.
595
596
597 ccache 3.2.1
598 ------------
599 Release date: 2014-12-10
600
601
602 Bug fixes
603 ~~~~~~~~~
604
605 - Fixed regression in temporary file handling, which lead to incorrect
606   permissions for stats, manifest and ccache.conf files in the cache.
607
608 - `CACHEDIR.TAG` files are now created in the [0-9a-f] subdirectories so that
609   ccache.conf is not lost in backups.
610
611 - Made the default cache size suffix `G`, as previously documented.
612
613 - `-fdiagnostics-color=auto` is now passed to the compiler even if stderr is
614   redirected. This fixes a problem when, for instance, a configure test probes
615   if the compiler (wrapped via ccache) supports `-fdiagnostics-color=auto`.
616
617 - Added missing documentation for `max_files` and `max_size` configuration
618   options.
619
620
621 ccache 3.2
622 ----------
623 Release date: 2014-11-17
624
625
626 New features and enhancements
627 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
628
629 - Added support for configuring ccache via one or several configuration files
630   instead of via environment variables. Environment variables still have
631   priority but are no longer the recommended way of customizing ccache
632   behavior. See the manual for more information.
633
634 - Added support for compiler error/warning messages with color.
635
636 - Made creation of temporary directories and cache directories smarter to avoid
637   unnecessary `stat` calls.
638
639 - Improved efficiency of the algorithm that scans for `__DATE_` and `__TIME__`
640   tokens in the hashed source code.
641
642 - Added support for several binaries (separated by space) in `CCACHE_PREFIX`.
643
644 - The `-c` option is no longer passed to the preprocessor. This fixes problems
645   with Clang and Solaris's C++ compiler.
646
647 - ccache no longer passes preprocessor options like `-D` and `-I` to the
648   compiler when compiling preprocessed output. This fixes warnings emitted by
649   Clang.
650
651 - Compiler options `-fprofile-generate`, `-fprofile-arcs`, `-fprofile-use` and
652   `-fbranch-probabilities` are now handled without bailing.
653
654 - Added support for Clang's `--serialize-diagnostic` option, storing the
655   diagnostic file (`.dia`) in the cache.
656
657 - Added support for precompiled headers when using Clang.
658
659 - Added support for Clang `.pth` (pretokenized header) files.
660
661 - Changed the `-x` language option to use the new objective C standard for GCC
662   and Clang.
663
664 - On a cache miss, ccache now instructs the compiler to create the object file
665   at the real destination and then copies the file into the cache instead of
666   the other way around. This is needed to support compiler options like
667   `-fprofile-arcs` and `--serialize-diagnostics`.
668
669 - ccache now checks that included files' ctimes aren't too new. This check can
670   be turned off by adding `include_file_ctime` to the ``ccache sloppiness''
671   setting.
672
673 - Added possibility to get cache hits based on filename, size, mtime and ctime
674   only. On other words, source code files are not even read, only stat-ed. This
675   operation mode is opt-in by adding `file_stat_matches` to the ``ccache
676   sloppiness'' setting.
677
678 - The filename part of options like `-Wp,-MDfilename` is no longer included in
679   the hash since the filename doesn't have any bearing on the result.
680
681 - Added a ``read-only direct'' configuration setting, which is like the
682   ordinary read-only setting except that ccache will only try to retrieve
683   results from the cache using the direct mode, not the preprocessor mode.
684
685 - The display and interpretation of cache size has been changed to use SI
686   units.
687
688 - Default cache size is now 5 GB (was previously 1 GiB).
689
690 - Added configuration option to set the compression level of compressed object
691   files in the cache.
692
693 - Added support for `@file` and `-@file` arguments (reading options from a
694   file).
695
696 - `-Wl,` options are no longer included in the hash since they don't affect
697   compilation.
698
699 - Bail out on too hard compiler option `-Wp,-P`.
700
701 - Optimized MD4 calculation code on little-endian systems.
702
703 - Various improvements and fixes on win32.
704
705 - Improved logging to the ccache log file.
706
707 - Added `--dump-manifest` command-line option for debugging purposes.
708
709 - Added `--with-bundled-zlib` configure option.
710
711 - Upgraded bundled zlib to version 1.2.8.
712
713 - Improved `dev.mk` to be more platform independent.
714
715 - Made the test suite work with Clang and gcc-llvm on OS X.
716
717 - Various other improvements of the test suite.
718
719
720 Bug fixes
721 ~~~~~~~~~
722
723 - Any previous `.stderr` is now removed from the cache when recaching.
724
725 - Fixed an issue when handling the `-arch` compiler option with an argument.
726
727 - Fixed race condition when creating the initial cache directory.
728
729 - Fixed test suite failures when `CC` is a ccache-wrapped compiler.
730
731
732 ccache 3.1.12
733 -------------
734 Release date: 2016-07-12
735
736
737 Bug fixes
738 ~~~~~~~~~
739
740 - Fixed a bug where (due to ccache rewriting paths) the compiler could choose
741   incorrect include files if `CCACHE_BASEDIR` is used and the source file path
742   is absolute and is a symlink.
743
744
745 ccache 3.1.11
746 -------------
747 Release date: 2015-03-07
748
749
750 Bug fixes
751 ~~~~~~~~~
752
753 - Fixed bug which could result in false cache hits when source code contains
754   `'"'` followed by `" /*"` or `" //"` (with variations).
755
756 - Made hash of cached result created with and without `CCACHE_CPP2` different.
757   This makes it possible to rebuild with `CCACHE_CPP2` set without having to
758   clear the cache to get new results.
759
760 - Don't try to reset a non-existing stats file. This avoids ``No such file or
761   directory'' messages in the ccache log when the cache directory doesn't
762   exist.
763
764
765 ccache 3.1.10
766 -------------
767 Release date: 2014-10-19
768
769
770 New features and enhancements
771 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
772
773 - Added support for the `-Xclang` compiler option.
774
775 - Improved handling of exit code of internally executed processes.
776
777 - Zero length object files in the cache are now rejected as invalid.
778
779 - Bail out on option `-gsplit-dwarf` (since it produces multiple output files).
780
781 - Compiler option `-fdebug-prefix-map` is now ignored (not part of the hash).
782   (The `-fdebug-prefix-map` option may be used in combination with
783   `CCACHE_BASEDIR` to reuse results across different directories.)
784
785 - Added note in documentation that `--ccache-skip` currently does not mean
786   ``don't hash the following option''.
787
788 - To enable support for precompiled headers (PCH), `CCACHE_SLOPPINESS` now also
789   needs to include the new `pch_defines` sloppiness. This is because ccache
790   can't detect changes in the source code when only defined macros have been
791   changed.
792
793 - Stale files in the internal temporary directory (`<ccache_dir>/tmp`) are now
794   cleaned up if they are older than one hour.
795
796
797 Bug fixes
798 ~~~~~~~~~
799
800 - Fixed path canonicalization in `make_relative_path()` when path doesn't
801   exist.
802
803 - Fixed bug in `common_dir_prefix_length()`. This corrects the `CCACHE_BASEDIR`
804   behavior.
805
806 - ccache no longer tries to create the cache directory when `CCACHE_DISABLE` is
807   set.
808
809 - Fixed bug when reading manifests with a very large number of file info
810   entries.
811
812 - Fixed problem with logging of current working directory.
813
814
815 ccache 3.1.9
816 ------------
817 Release date: 2013-01-06
818
819
820 Bug fixes
821 ~~~~~~~~~
822
823 - The EAGAIN signal is now handled correctly when emitting cached stderr
824   output. This fixes a problem triggered by large error outputs from the
825   compiler.
826
827 - Subdirectories in the cache are no longer created in read-only mode.
828
829 - Fixed so that ccache's log file descriptor is not made available to the
830   compiler.
831
832 - Improved error reporting when failing to create temporary stdout/stderr files
833   when executing the compiler.
834
835 - Disappearing temporary stdout/stderr files are now handled gracefully.
836
837
838 Other
839 ~~~~~
840
841 - Fixed test suite to work on ecryptfs.
842
843
844 ccache 3.1.8
845 ------------
846 Release date: 2012-08-11
847
848
849 New features and enhancements
850 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
851
852 - Made paths to dependency files relative in order to increase cache hits.
853
854 - Added work-around to make ccache work with buggy GCC 4.1 when creating a
855   pre-compiled header.
856
857 - Clang plugins are now hashed to catch plugin upgrades.
858
859
860 Bug fixes
861 ~~~~~~~~~
862
863 - Fixed crash when the current working directory has been removed.
864
865 - Fixed crash when stderr is closed.
866
867 - Corrected a corner case when parsing backslash escapes in string
868   literals.
869
870 - Paths are now correctly canonicalized when computing paths relative to the
871   base directory.
872
873
874 Other
875 ~~~~~
876
877 - Made git version macro work when compiling outside of the source directory.
878
879 - Fixed `static_assert` macro definition clash with GCC 4.7.
880
881
882 ccache 3.1.7
883 ------------
884 Release date: 2012-01-08
885
886
887 Bug fixes
888 ~~~~~~~~~
889
890 - Non-writable `CCACHE_DIR` is now handled gracefully when `CCACHE_READONLY` is
891   set.
892
893 - Made failure to create files (typically due to bad directory permissions) in
894   the cache directory fatal. Previously, such failures were silently and
895   erroneously flagged as "compiler produced stdout".
896
897 - Both the `-specs=file` and `--specs=file` forms are now recognized.
898
899 - Added recognition and hashing of GCC plugins specified with `-fplugin=file`.
900
901 - `CCACHE_COMPILERCHECK` now also determines how to hash explicit specs files
902   (`-specs=file`).
903
904 - Added `CPATH`, `C_INCLUDE_PATH` and similar environment variables to the hash
905   to avoid false cache hits when such variables have changed.
906
907 - Corrected log message when unify mode is enabled.
908
909 - Reverted the GCC bug compatibility introduced in ccache 3.1.5 for `-MT`/`-MQ`
910   options with concatenated arguments. (The bug is fixed in recent GCC
911   versions.)
912
913
914 Other
915 ~~~~~
916
917 - Corrected license header for `mdfour.c`.
918
919 - Improved documentation on how to fix bad object files in the cache.
920
921
922
923 ccache 3.1.6
924 ------------
925 Release date: 2011-08-21
926
927
928 New features and enhancements
929 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
930
931 - Rewrite argument to `--sysroot` if `CCACHE_BASEDIR` is used.
932
933
934 Bug fixes
935 ~~~~~~~~~
936
937 - Don't crash if `getcwd()` fails.
938
939 - Fixed alignment of ``called for preprocessing'' counter.
940
941
942 ccache 3.1.5
943 ------------
944 Release date: 2011-05-29
945
946
947 New features and enhancements
948 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
949
950 - Added a new statistics counter named ``called for preprocessing''.
951
952 - The original command line is now logged to the file specified with
953   `CCACHE_LOGFILE`.
954
955 - Improved error logging when system calls fail.
956
957 - Added support for rewriting absolute paths in `-F`/`-iframework` GCC
958   options.
959
960 - Improved order of statistics counters in `ccache -s` output.
961
962
963 Bug fixes
964 ~~~~~~~~~
965
966 - The `-MF`/`-MT`/`-MQ` options with concatenated argument are now handled
967   correctly when they are last on the command line.
968
969 - ccache is now bug compatible with GCC for the `-MT`/`-MQ` options with
970   concatenated arguments.
971
972 - Fixed a minor memory leak.
973
974 - Systems that lack (and don't need to be linked with) libm are now supported.
975
976
977 ccache 3.1.4
978 ------------
979 Release date: 2011-01-09
980
981
982 Bug fixes
983 ~~~~~~~~~
984
985 - Made a work-around for a bug in `gzputc()` in zlib 1.2.5.
986
987 - Corrupt manifest files are now removed so that they won't block direct mode
988   hits.
989
990 - ccache now copes with file systems that don't know about symbolic links.
991
992 - The file handle in now correctly closed on write error when trying to create
993   a cache dir tag.
994
995
996 ccache 3.1.3
997 ------------
998 Release date: 2010-11-28
999
1000
1001 Bug fixes
1002 ~~~~~~~~~
1003
1004 - The -MFarg, -MTarg and -MQarg compiler options (i.e, without space between
1005   option and argument) are now handled correctly.
1006
1007
1008 Other
1009 ~~~~~
1010
1011 - Portability fixes for HP-UX 11.00 and other esoteric systems.
1012
1013
1014 ccache 3.1.2
1015 ------------
1016 Release date: 2010-11-21
1017
1018
1019 Bug fixes
1020 ~~~~~~~~~
1021
1022 - Bail out on too hard compiler options `-fdump-*`.
1023
1024 - NULL return values from malloc/calloc of zero bytes are now handled
1025   correctly.
1026
1027 - Fixed issue when parsing precompiler output on AIX.
1028
1029
1030 Other
1031 ~~~~~
1032
1033 - Improved documentation on which information is included in the hash sum.
1034
1035 - Made the ``too new header file'' test case work on file systems with
1036   unsynchronized clocks.
1037
1038 - The test suite now also works on systems that lack a /dev/zero.
1039
1040
1041 ccache 3.1.1
1042 ------------
1043 Release date: 2010-11-07
1044
1045
1046 Bug fixes
1047 ~~~~~~~~~
1048
1049 - ccache now falls back to preprocessor mode when a non-regular include file
1050   (device, socket, etc) has been detected so that potential hanging due to
1051   blocking reads is avoided.
1052
1053 - CRC errors are now detected when decompressing compressed files in the cache.
1054
1055 - Fixed potential object file corruption race on NFS.
1056
1057 - Minor documentation corrections.
1058
1059 - Fixed configure detection of ar.
1060
1061 - ccache development version (set by dev.mk) now works with gits whose
1062   `describe` command doesn't understand `--dirty`.
1063
1064
1065 Other
1066 ~~~~~
1067
1068 - Minor debug log message improvements.
1069
1070
1071 ccache 3.1
1072 ----------
1073 Release date: 2010-09-16
1074
1075
1076 New features and enhancements
1077 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1078
1079 - Added support for hashing the output of a custom command (e.g. `%compiler%
1080   --version`) to identify the compiler instead of stat-ing or hashing the
1081   compiler binary. This can improve robustness when the compiler (as seen by
1082   ccache) actually isn't the real compiler but another compiler wrapper.
1083
1084 - Added support for caching compilations that use precompiled headers. (See the
1085   manual for important instructions regarding this.)
1086
1087 - Locking of the files containing statistics counters is now done using
1088   symlinks instead of POSIX locks. This should make ccache behave a lot better
1089   on file systems where POSIX locks are slow or broken (e.g. NFS on some
1090   systems).
1091
1092 - Manifest files are now updated without the need of taking locks.
1093
1094 - Updates of statistics counters are now always done in one of the sub-level
1095   statistics files. This reduces lock contention, which especially improves
1096   performance on slow NFS mounts.
1097
1098 - Reading and writing of statistics counters has been made forward-compatible
1099   (unknown counters are retained).
1100
1101 - Files are now read without using `mmap()`. This has two benefits: it's more
1102   robust against file changes during reading and it improves performance on
1103   poor systems where `mmap()` doesn't use the disk cache.
1104
1105 - Added `.cp` and `.CP` as known C++ suffixes.
1106
1107 - Improved logging.
1108
1109 - Added `-install_name` as an option known to take an argument. (This improves
1110   statistics when using the Darwin linker.)
1111
1112
1113 Bug fixes
1114 ~~~~~~~~~
1115
1116 - Non-fatal error messages are now never printed to stderr but logged instead.
1117
1118 - Fixed a bug affecting failing commands when `--ccache-skip` is used.
1119
1120 - Made `--ccache-skip` work for all options.
1121
1122 - EINTR is now handled correctly.
1123
1124
1125 Other
1126 ~~~~~
1127
1128 - Work on porting ccache to win32 (native), mostly done by Ramiro Polla. The
1129   port is not yet finished, but will hopefully be complete in some subsequent
1130   release.
1131
1132 - Added a `--nostats` flag to the performance benchmark program.
1133
1134 - Made the performance benchmark program more accurate when measuring cache
1135   hits.
1136
1137 - Added a new test framework for unit tests written in C.
1138
1139 - Got rid of `configure-dev`; dev mode is now given by `dev.mk.in` presence.
1140
1141 - Improved documentation on how to combine ccache with other compiler wrappers
1142   (like `distcc`).
1143
1144 - New `LICENSE.txt` file with licensing and copyright details about bundled
1145   source code.
1146
1147 - New `AUTHORS.txt` file with a list of ccache contributors.
1148
1149 - New `HACKING.txt` file with some notes about ccache code conventions.
1150
1151
1152 ccache 3.0.1
1153 ------------
1154 Release date: 2010-07-15
1155
1156
1157 Bug fixes
1158 ~~~~~~~~~
1159
1160 - The statistics counter ``called for link'' is now correctly updated when
1161   linking with a single object file.
1162
1163 - Fixed a problem with out-of-source builds.
1164
1165
1166 ccache 3.0
1167 ----------
1168 Release date: 2010-06-20
1169
1170
1171 General
1172 ~~~~~~~
1173
1174 - ccache is now licensed under the GNU General Public License (GPL) version 3
1175   or later.
1176
1177
1178 Upgrade notes
1179 ~~~~~~~~~~~~~
1180
1181 - The way the hashes are calculated has changed, so you won't get cache hits
1182   for compilation results stored by older ccache versions. Because of this, you
1183   might as well clear the old cache directory with `ccache --clear` if you
1184   want, unless you plan to keep using an older ccache version.
1185
1186
1187 New features and enhancements
1188 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1189
1190 - ccache now has a ``direct mode'' where it computes a hash of the source code
1191   (including all included files) and compiler options without running the
1192   preprocessor. By not running the preprocessor, CPU usage is reduced; the
1193   speed is somewhere between 1 and 5 times that of ccache running in
1194   traditional mode, depending on the circumstances. The speedup will be higher
1195   when I/O is fast (e.g., when files are in the disk cache). The direct mode
1196   can be disabled by setting +CCACHE_NODIRECT+.
1197
1198 - Support has been added for rewriting absolute paths to relative paths when
1199   hashing, in order to increase cache hit rate when building the same source
1200   code in different directories even when compiling with `-g` and when using
1201   absolute include directory paths. This is done by setting the
1202   `CCACHE_BASEDIR` environment variable to an absolute path that specifies
1203   which paths to rewrite.
1204
1205 - Object files are now optionally stored compressed in the cache. The runtime
1206   cost is negligible, and more files will fit in the ccache directory and in
1207   the disk cache. Set `CCACHE_COMPRESS` to enable object file compression. Note
1208   that you can't use compression in combination with the hard link feature.
1209
1210 - A `CCACHE_COMPILERCHECK` option has been added. This option tells ccache what
1211   compiler-identifying information to hash to ensure that results retrieved
1212   from the cache are accurate. Possible values are: none (don't hash anything),
1213   mtime (hash the compiler's mtime and size) and content (hash the content of
1214   the compiler binary). The default is mtime.
1215
1216 - It is now possible to specify extra files whose contents should be included
1217   in the hash sum by setting the `CCACHE_EXTRAFILES` option.
1218
1219 - Added support for Objective-C and Objective-C\+\+. The statistics counter
1220   ``not a C/C++ file'' has been renamed to ``unsupported source language''.
1221
1222 - Added support for the `-x` compiler option.
1223
1224 - Added support for long command-line options.
1225
1226 - A `CACHEDIR.TAG` file is now created in the cache directory. See
1227   <http://www.brynosaurus.com/cachedir/>.
1228
1229 - Messages printed to the debug log (specified by `CCACHE_LOGFILE`) have been
1230   improved.
1231
1232 - You can relax some checks that ccache does in direct mode by setting
1233   `CCACHE_SLOPPINESS`. See the manual for more information.
1234
1235 - `CCACHE_TEMPDIR` no longer needs to be on the same filesystem as
1236   `CCACHE_DIR`.
1237
1238 - The default value of `CCACHE_TEMPDIR` has been changed to `$CCACHE_DIR/tmp`
1239   to avoid cluttering the top directory.
1240
1241 - Temporary files that later will be moved into the cache are now created in
1242   the cache directory they will end up in. This makes ccache more friendly to
1243   Linux's directory layout.
1244
1245 - Improved the test suite and added tests for most of the new functionality.
1246   It's now also possible to specify a subset of tests to run.
1247
1248 - Standard error output from the compiler is now only stored in the cache if
1249   it's non-empty.
1250
1251 - If the compiler produces no object file or an empty object file, but gives a
1252   zero exit status (could be due to a file system problem, a buggy program
1253   specified by `CCACHE_PREFIX`, etc.), ccache copes with it properly.
1254
1255 - Added `installcheck` and `distcheck` make targets.
1256
1257 - Clarified cache size limit options' and cleanup semantics.
1258
1259 - Improved display of cache max size values.
1260
1261 - The following options are no longer hashed in the preprocessor mode:
1262   `-imacros`, `-imultilib`, `-iprefix`, `-iquote`, `-isysroot`, `-iwithprefix`,
1263   `-iwithprefixbefore`, `-nostdinc`, `-nostdinc++` and `-U`.
1264
1265
1266 Bug fixes
1267 ~~~~~~~~~
1268
1269 - Various portability improvements.
1270
1271 - Improved detection of home directory.
1272
1273 - User-defined `CPPFLAGS` and `LDFLAGS` are now respected in the Makefile.
1274
1275 - Fixed NFS issues.
1276
1277 - Computation of the hash sum has been improved to decrease the risk of hash
1278   collisions. For instance, the compiler options `-X -Y` and `-X-Y` previously
1279   contributed equally to the hash sum.
1280
1281 - Bail out on too hard compiler options `--coverage`, `-fprofile-arcs`,
1282   `-fprofile-generate`, `-fprofile-use`, `-frepo`, `-ftest-coverage` and
1283   `-save-temps`. Also bail out on `@file` style options.
1284
1285 - Errors when using multiple `-arch` compiler options are now noted as
1286   ``unsupported compiler option''.
1287
1288 - `-MD`/`-MMD` options without `-MT`/`-MF` are now handled correctly.
1289
1290 - The `-finput-charset` option is now handled correctly.
1291
1292 - Added support for `-Wp,-MD` and `-Wp,-MMD` options.
1293
1294 - The compiler options `-Xassembler`, `-b`, `-G` and `-V` are now correctly
1295   recognized as taking an argument.
1296
1297 - Debug information containing line numbers of predefined and command-line
1298   macros (enabled with the compiler option `-g3`) will now be correct.
1299
1300 - Corrected LRU cleanup handling of object files.
1301
1302 - `utimes()` is now used instead of `utime()` when available.
1303
1304 - Non-writable cache directories are now handled gracefully.
1305
1306 - Corrected documentation about sharing the cache directory.
1307
1308 - Fixed compilation warnings from GCC 4.3.
1309
1310 - The command specified by `CCACHE_PREFIX` is no longer part of the hash.
1311
1312 - Fixed bad memory access spotted by Valgrind.
1313
1314 - Fixed a bug in `x_realloc`.
1315
1316 - Freed memory is no longer referenced when compiling a `.i`/`.ii` file and
1317   falling back to running the real compiler.
1318
1319 - The test suite is now immune to external values of the `CCACHE_*` environment
1320   variables.
1321
1322 - Improved detection of recursive invocation.
1323
1324 - The ccache binary is now not unconditionally stripped when installing.
1325
1326 - Statistics counters are now correctly updated for -E option failures and
1327   internal errors.