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