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