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