resetting manifest requested domain to floor
[platform/upstream/ccache.git] / NEWS.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
2     "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
3 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
4 <head>\r
5 <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
6 <meta name="generator" content="AsciiDoc 8.6.3" />\r
7 <title>ccache news</title>\r
8 <style type="text/css">\r
9 /* Sans-serif font. */\r
10 h1, h2, h3, h4, h5, h6,\r
11 div.title, caption.title,\r
12 thead, p.table.header,\r
13 div#toctitle,\r
14 span#author, span#revnumber, span#revdate, span#revremark,\r
15 div#footer {\r
16   font-family: Arial,Helvetica,sans-serif;\r
17 }\r
18 \r
19 /* Serif font. */\r
20 div.sectionbody {\r
21   font-family: Georgia,"Times New Roman",Times,serif;\r
22 }\r
23 \r
24 /* Monospace font. */\r
25 tt {\r
26   font-size: inherit;\r
27 }\r
28 \r
29 body {\r
30   margin: 1em 5% 1em 5%;\r
31 }\r
32 \r
33 a {\r
34   color: blue;\r
35   text-decoration: underline;\r
36 }\r
37 a:visited {\r
38   color: fuchsia;\r
39 }\r
40 \r
41 em {\r
42   font-style: italic;\r
43   color: navy;\r
44 }\r
45 \r
46 strong {\r
47   font-weight: bold;\r
48   color: #083194;\r
49 }\r
50 \r
51 tt {\r
52   font-size: inherit;\r
53   color: navy;\r
54 }\r
55 \r
56 h1, h2, h3, h4, h5, h6 {\r
57   color: #527bbd;\r
58   margin-top: 1.2em;\r
59   margin-bottom: 0.5em;\r
60   line-height: 1.3;\r
61 }\r
62 \r
63 h1, h2, h3 {\r
64   border-bottom: 2px solid silver;\r
65 }\r
66 h2 {\r
67   padding-top: 0.5em;\r
68 }\r
69 h3 {\r
70   float: left;\r
71 }\r
72 h3 + * {\r
73   clear: left;\r
74 }\r
75 \r
76 div.sectionbody {\r
77   margin-left: 0;\r
78 }\r
79 \r
80 hr {\r
81   border: 1px solid silver;\r
82 }\r
83 \r
84 p {\r
85   margin-top: 0.5em;\r
86   margin-bottom: 0.5em;\r
87 }\r
88 \r
89 ul, ol, li > p {\r
90   margin-top: 0;\r
91 }\r
92 ul > li     { color: #aaa; }\r
93 ul > li > * { color: black; }\r
94 \r
95 pre {\r
96   padding: 0;\r
97   margin: 0;\r
98 }\r
99 \r
100 span#author {\r
101   color: #527bbd;\r
102   font-weight: bold;\r
103   font-size: 1.1em;\r
104 }\r
105 span#email {\r
106 }\r
107 span#revnumber, span#revdate, span#revremark {\r
108 }\r
109 \r
110 div#footer {\r
111   font-size: small;\r
112   border-top: 2px solid silver;\r
113   padding-top: 0.5em;\r
114   margin-top: 4.0em;\r
115 }\r
116 div#footer-text {\r
117   float: left;\r
118   padding-bottom: 0.5em;\r
119 }\r
120 div#footer-badges {\r
121   float: right;\r
122   padding-bottom: 0.5em;\r
123 }\r
124 \r
125 div#preamble {\r
126   margin-top: 1.5em;\r
127   margin-bottom: 1.5em;\r
128 }\r
129 div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
130 div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
131 div.admonitionblock {\r
132   margin-top: 1.0em;\r
133   margin-bottom: 1.5em;\r
134 }\r
135 div.admonitionblock {\r
136   margin-top: 2.0em;\r
137   margin-bottom: 2.0em;\r
138   margin-right: 10%;\r
139   color: #606060;\r
140 }\r
141 \r
142 div.content { /* Block element content. */\r
143   padding: 0;\r
144 }\r
145 \r
146 /* Block element titles. */\r
147 div.title, caption.title {\r
148   color: #527bbd;\r
149   font-weight: bold;\r
150   text-align: left;\r
151   margin-top: 1.0em;\r
152   margin-bottom: 0.5em;\r
153 }\r
154 div.title + * {\r
155   margin-top: 0;\r
156 }\r
157 \r
158 td div.title:first-child {\r
159   margin-top: 0.0em;\r
160 }\r
161 div.content div.title:first-child {\r
162   margin-top: 0.0em;\r
163 }\r
164 div.content + div.title {\r
165   margin-top: 0.0em;\r
166 }\r
167 \r
168 div.sidebarblock > div.content {\r
169   background: #ffffee;\r
170   border: 1px solid #dddddd;\r
171   border-left: 4px solid #f0f0f0;\r
172   padding: 0.5em;\r
173 }\r
174 \r
175 div.listingblock > div.content {\r
176   border: 1px solid #dddddd;\r
177   border-left: 5px solid #f0f0f0;\r
178   background: #f8f8f8;\r
179   padding: 0.5em;\r
180 }\r
181 \r
182 div.quoteblock, div.verseblock {\r
183   padding-left: 1.0em;\r
184   margin-left: 1.0em;\r
185   margin-right: 10%;\r
186   border-left: 5px solid #f0f0f0;\r
187   color: #777777;\r
188 }\r
189 \r
190 div.quoteblock > div.attribution {\r
191   padding-top: 0.5em;\r
192   text-align: right;\r
193 }\r
194 \r
195 div.verseblock > pre.content {\r
196   font-family: inherit;\r
197   font-size: inherit;\r
198 }\r
199 div.verseblock > div.attribution {\r
200   padding-top: 0.75em;\r
201   text-align: left;\r
202 }\r
203 /* DEPRECATED: Pre version 8.2.7 verse style literal block. */\r
204 div.verseblock + div.attribution {\r
205   text-align: left;\r
206 }\r
207 \r
208 div.admonitionblock .icon {\r
209   vertical-align: top;\r
210   font-size: 1.1em;\r
211   font-weight: bold;\r
212   text-decoration: underline;\r
213   color: #527bbd;\r
214   padding-right: 0.5em;\r
215 }\r
216 div.admonitionblock td.content {\r
217   padding-left: 0.5em;\r
218   border-left: 3px solid #dddddd;\r
219 }\r
220 \r
221 div.exampleblock > div.content {\r
222   border-left: 3px solid #dddddd;\r
223   padding-left: 0.5em;\r
224 }\r
225 \r
226 div.imageblock div.content { padding-left: 0; }\r
227 span.image img { border-style: none; }\r
228 a.image:visited { color: white; }\r
229 \r
230 dl {\r
231   margin-top: 0.8em;\r
232   margin-bottom: 0.8em;\r
233 }\r
234 dt {\r
235   margin-top: 0.5em;\r
236   margin-bottom: 0;\r
237   font-style: normal;\r
238   color: navy;\r
239 }\r
240 dd > *:first-child {\r
241   margin-top: 0.1em;\r
242 }\r
243 \r
244 ul, ol {\r
245     list-style-position: outside;\r
246 }\r
247 ol.arabic {\r
248   list-style-type: decimal;\r
249 }\r
250 ol.loweralpha {\r
251   list-style-type: lower-alpha;\r
252 }\r
253 ol.upperalpha {\r
254   list-style-type: upper-alpha;\r
255 }\r
256 ol.lowerroman {\r
257   list-style-type: lower-roman;\r
258 }\r
259 ol.upperroman {\r
260   list-style-type: upper-roman;\r
261 }\r
262 \r
263 div.compact ul, div.compact ol,\r
264 div.compact p, div.compact p,\r
265 div.compact div, div.compact div {\r
266   margin-top: 0.1em;\r
267   margin-bottom: 0.1em;\r
268 }\r
269 \r
270 div.tableblock > table {\r
271   border: 3px solid #527bbd;\r
272 }\r
273 thead, p.table.header {\r
274   font-weight: bold;\r
275   color: #527bbd;\r
276 }\r
277 tfoot {\r
278   font-weight: bold;\r
279 }\r
280 td > div.verse {\r
281   white-space: pre;\r
282 }\r
283 p.table {\r
284   margin-top: 0;\r
285 }\r
286 /* Because the table frame attribute is overriden by CSS in most browsers. */\r
287 div.tableblock > table[frame="void"] {\r
288   border-style: none;\r
289 }\r
290 div.tableblock > table[frame="hsides"] {\r
291   border-left-style: none;\r
292   border-right-style: none;\r
293 }\r
294 div.tableblock > table[frame="vsides"] {\r
295   border-top-style: none;\r
296   border-bottom-style: none;\r
297 }\r
298 \r
299 \r
300 div.hdlist {\r
301   margin-top: 0.8em;\r
302   margin-bottom: 0.8em;\r
303 }\r
304 div.hdlist tr {\r
305   padding-bottom: 15px;\r
306 }\r
307 dt.hdlist1.strong, td.hdlist1.strong {\r
308   font-weight: bold;\r
309 }\r
310 td.hdlist1 {\r
311   vertical-align: top;\r
312   font-style: normal;\r
313   padding-right: 0.8em;\r
314   color: navy;\r
315 }\r
316 td.hdlist2 {\r
317   vertical-align: top;\r
318 }\r
319 div.hdlist.compact tr {\r
320   margin: 0;\r
321   padding-bottom: 0;\r
322 }\r
323 \r
324 .comment {\r
325   background: yellow;\r
326 }\r
327 \r
328 .footnote, .footnoteref {\r
329   font-size: 0.8em;\r
330 }\r
331 \r
332 span.footnote, span.footnoteref {\r
333   vertical-align: super;\r
334 }\r
335 \r
336 #footnotes {\r
337   margin: 20px 0 20px 0;\r
338   padding: 7px 0 0 0;\r
339 }\r
340 \r
341 #footnotes div.footnote {\r
342   margin: 0 0 5px 0;\r
343 }\r
344 \r
345 #footnotes hr {\r
346   border: none;\r
347   border-top: 1px solid silver;\r
348   height: 1px;\r
349   text-align: left;\r
350   margin-left: 0;\r
351   width: 20%;\r
352   min-width: 100px;\r
353 }\r
354 \r
355 div.colist td {\r
356   padding-right: 0.5em;\r
357   padding-bottom: 0.3em;\r
358   vertical-align: top;\r
359 }\r
360 div.colist td img {\r
361   margin-top: 0.3em;\r
362 }\r
363 \r
364 @media print {\r
365   div#footer-badges { display: none; }\r
366 }\r
367 \r
368 div#toc {\r
369   margin-bottom: 2.5em;\r
370 }\r
371 \r
372 div#toctitle {\r
373   color: #527bbd;\r
374   font-size: 1.1em;\r
375   font-weight: bold;\r
376   margin-top: 1.0em;\r
377   margin-bottom: 0.1em;\r
378 }\r
379 \r
380 div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {\r
381   margin-top: 0;\r
382   margin-bottom: 0;\r
383 }\r
384 div.toclevel2 {\r
385   margin-left: 2em;\r
386   font-size: 0.9em;\r
387 }\r
388 div.toclevel3 {\r
389   margin-left: 4em;\r
390   font-size: 0.9em;\r
391 }\r
392 div.toclevel4 {\r
393   margin-left: 6em;\r
394   font-size: 0.9em;\r
395 }\r
396 \r
397 </style>\r
398 <script type="text/javascript">\r
399 /*<![CDATA[*/\r
400 window.onload = function(){asciidoc.footnotes(); asciidoc.toc(2);}\r
401 var asciidoc = {  // Namespace.\r
402 \r
403 /////////////////////////////////////////////////////////////////////\r
404 // Table Of Contents generator\r
405 /////////////////////////////////////////////////////////////////////\r
406 \r
407 /* Author: Mihai Bazon, September 2002\r
408  * http://students.infoiasi.ro/~mishoo\r
409  *\r
410  * Table Of Content generator\r
411  * Version: 0.4\r
412  *\r
413  * Feel free to use this script under the terms of the GNU General Public\r
414  * License, as long as you do not remove or alter this notice.\r
415  */\r
416 \r
417  /* modified by Troy D. Hanson, September 2006. License: GPL */\r
418  /* modified by Stuart Rackham, 2006, 2009. License: GPL */\r
419 \r
420 // toclevels = 1..4.\r
421 toc: function (toclevels) {\r
422 \r
423   function getText(el) {\r
424     var text = "";\r
425     for (var i = el.firstChild; i != null; i = i.nextSibling) {\r
426       if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.\r
427         text += i.data;\r
428       else if (i.firstChild != null)\r
429         text += getText(i);\r
430     }\r
431     return text;\r
432   }\r
433 \r
434   function TocEntry(el, text, toclevel) {\r
435     this.element = el;\r
436     this.text = text;\r
437     this.toclevel = toclevel;\r
438   }\r
439 \r
440   function tocEntries(el, toclevels) {\r
441     var result = new Array;\r
442     var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');\r
443     // Function that scans the DOM tree for header elements (the DOM2\r
444     // nodeIterator API would be a better technique but not supported by all\r
445     // browsers).\r
446     var iterate = function (el) {\r
447       for (var i = el.firstChild; i != null; i = i.nextSibling) {\r
448         if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {\r
449           var mo = re.exec(i.tagName);\r
450           if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {\r
451             result[result.length] = new TocEntry(i, getText(i), mo[1]-1);\r
452           }\r
453           iterate(i);\r
454         }\r
455       }\r
456     }\r
457     iterate(el);\r
458     return result;\r
459   }\r
460 \r
461   var toc = document.getElementById("toc");\r
462   var entries = tocEntries(document.getElementById("content"), toclevels);\r
463   for (var i = 0; i < entries.length; ++i) {\r
464     var entry = entries[i];\r
465     if (entry.element.id == "")\r
466       entry.element.id = "_toc_" + i;\r
467     var a = document.createElement("a");\r
468     a.href = "#" + entry.element.id;\r
469     a.appendChild(document.createTextNode(entry.text));\r
470     var div = document.createElement("div");\r
471     div.appendChild(a);\r
472     div.className = "toclevel" + entry.toclevel;\r
473     toc.appendChild(div);\r
474   }\r
475   if (entries.length == 0)\r
476     toc.parentNode.removeChild(toc);\r
477 },\r
478 \r
479 \r
480 /////////////////////////////////////////////////////////////////////\r
481 // Footnotes generator\r
482 /////////////////////////////////////////////////////////////////////\r
483 \r
484 /* Based on footnote generation code from:\r
485  * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html\r
486  */\r
487 \r
488 footnotes: function () {\r
489   var cont = document.getElementById("content");\r
490   var noteholder = document.getElementById("footnotes");\r
491   var spans = cont.getElementsByTagName("span");\r
492   var refs = {};\r
493   var n = 0;\r
494   for (i=0; i<spans.length; i++) {\r
495     if (spans[i].className == "footnote") {\r
496       n++;\r
497       // Use [\s\S] in place of . so multi-line matches work.\r
498       // Because JavaScript has no s (dotall) regex flag.\r
499       note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];\r
500       noteholder.innerHTML +=\r
501         "<div class='footnote' id='_footnote_" + n + "'>" +\r
502         "<a href='#_footnoteref_" + n + "' title='Return to text'>" +\r
503         n + "</a>. " + note + "</div>";\r
504       spans[i].innerHTML =\r
505         "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +\r
506         "' title='View footnote' class='footnote'>" + n + "</a>]";\r
507       var id =spans[i].getAttribute("id");\r
508       if (id != null) refs["#"+id] = n;\r
509     }\r
510   }\r
511   if (n == 0)\r
512     noteholder.parentNode.removeChild(noteholder);\r
513   else {\r
514     // Process footnoterefs.\r
515     for (i=0; i<spans.length; i++) {\r
516       if (spans[i].className == "footnoteref") {\r
517         var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");\r
518         href = href.match(/#.*/)[0];  // Because IE return full URL.\r
519         n = refs[href];\r
520         spans[i].innerHTML =\r
521           "[<a href='#_footnote_" + n +\r
522           "' title='View footnote' class='footnote'>" + n + "</a>]";\r
523       }\r
524     }\r
525   }\r
526 }\r
527 \r
528 }\r
529 /*]]>*/\r
530 </script>\r
531 </head>\r
532 <body class="article">\r
533 <div id="header">\r
534 <h1>ccache news</h1>\r
535 <span id="revnumber">version 3.1.6</span>\r
536 <div id="toc">
537   <div id="toctitle">Table of Contents</div>
538   <noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
539 </div>\r
540 </div>\r
541 <div id="content">\r
542 <div class="sect1">\r
543 <h2 id="_ccache_3_1_6">ccache 3.1.6</h2>\r
544 <div class="sectionbody">\r
545 <div class="paragraph"><p>Release date: 2011-08-21</p></div>\r
546 <div class="sect2">\r
547 <h3 id="_new_features_and_improvements">New features and improvements</h3>\r
548 <div class="ulist"><ul>\r
549 <li>\r
550 <p>\r
551 Rewrite argument to --sysroot if CCACHE_BASEDIR is used.\r
552 </p>\r
553 </li>\r
554 </ul></div>\r
555 </div>\r
556 <div class="sect2">\r
557 <h3 id="_bug_fixes">Bug fixes</h3>\r
558 <div class="ulist"><ul>\r
559 <li>\r
560 <p>\r
561 Don&#8217;t crash if getcwd() fails.\r
562 </p>\r
563 </li>\r
564 <li>\r
565 <p>\r
566 Fixed alignment of "called for preprocessing" counter.\r
567 </p>\r
568 </li>\r
569 </ul></div>\r
570 </div>\r
571 </div>\r
572 </div>\r
573 <div class="sect1">\r
574 <h2 id="_ccache_3_1_5">ccache 3.1.5</h2>\r
575 <div class="sectionbody">\r
576 <div class="paragraph"><p>Release date: 2011-05-29</p></div>\r
577 <div class="sect2">\r
578 <h3 id="_new_features_and_improvements_2">New features and improvements</h3>\r
579 <div class="ulist"><ul>\r
580 <li>\r
581 <p>\r
582 Added a new statistics counter named &#8220;called for preprocessing&#8221;.\r
583 </p>\r
584 </li>\r
585 <li>\r
586 <p>\r
587 The original command line is now logged to the file specified with\r
588       <tt>CCACHE_LOGFILE</tt>.\r
589 </p>\r
590 </li>\r
591 <li>\r
592 <p>\r
593 Improved error logging when system calls fail.\r
594 </p>\r
595 </li>\r
596 <li>\r
597 <p>\r
598 Added support for rewriting absolute paths in <tt>-F</tt>/<tt>-iframework</tt> GCC\r
599       options.\r
600 </p>\r
601 </li>\r
602 <li>\r
603 <p>\r
604 Improved order of statistics counters in <tt>ccache -s</tt> output.\r
605 </p>\r
606 </li>\r
607 </ul></div>\r
608 </div>\r
609 <div class="sect2">\r
610 <h3 id="_bug_fixes_2">Bug fixes</h3>\r
611 <div class="ulist"><ul>\r
612 <li>\r
613 <p>\r
614 The <tt>-MF</tt>/<tt>-MT</tt>/<tt>-MQ</tt> options with concatenated argument are now handled\r
615       correctly when they are last on the command line.\r
616 </p>\r
617 </li>\r
618 <li>\r
619 <p>\r
620 ccache is now bug compatible with GCC for the <tt>-MT</tt>/<tt>-MQ</tt> options with\r
621       concatenated arguments.\r
622 </p>\r
623 </li>\r
624 <li>\r
625 <p>\r
626 Fixed a minor memory leak.\r
627 </p>\r
628 </li>\r
629 <li>\r
630 <p>\r
631 Systems that lack (and don&#8217;t need to be linked with) libm are now\r
632       supported.\r
633 </p>\r
634 </li>\r
635 </ul></div>\r
636 </div>\r
637 </div>\r
638 </div>\r
639 <div class="sect1">\r
640 <h2 id="_ccache_3_1_4">ccache 3.1.4</h2>\r
641 <div class="sectionbody">\r
642 <div class="paragraph"><p>Release date: 2011-01-09</p></div>\r
643 <div class="sect2">\r
644 <h3 id="_bug_fixes_3">Bug fixes</h3>\r
645 <div class="ulist"><ul>\r
646 <li>\r
647 <p>\r
648 Made a work-around for a bug in gzputc() in zlib 1.2.5.\r
649 </p>\r
650 </li>\r
651 <li>\r
652 <p>\r
653 Corrupt manifest files are now removed so that they won&#8217;t block direct\r
654       mode hits.\r
655 </p>\r
656 </li>\r
657 <li>\r
658 <p>\r
659 ccache now copes with file systems that don&#8217;t know about symbolic links.\r
660 </p>\r
661 </li>\r
662 <li>\r
663 <p>\r
664 The file handle in now correctly closed on write error when trying to\r
665       create a cache dir tag.\r
666 </p>\r
667 </li>\r
668 </ul></div>\r
669 </div>\r
670 </div>\r
671 </div>\r
672 <div class="sect1">\r
673 <h2 id="_ccache_3_1_3">ccache 3.1.3</h2>\r
674 <div class="sectionbody">\r
675 <div class="paragraph"><p>Release date: 2010-11-28</p></div>\r
676 <div class="sect2">\r
677 <h3 id="_bug_fixes_4">Bug fixes</h3>\r
678 <div class="ulist"><ul>\r
679 <li>\r
680 <p>\r
681 The -MFarg, -MTarg and -MQarg compiler options (i.e, without space\r
682       between option and argument) are now handled correctly.\r
683 </p>\r
684 </li>\r
685 </ul></div>\r
686 </div>\r
687 <div class="sect2">\r
688 <h3 id="_other">Other</h3>\r
689 <div class="ulist"><ul>\r
690 <li>\r
691 <p>\r
692 Portability fixes for HP-UX 11.00 and other esoteric systems.\r
693 </p>\r
694 </li>\r
695 </ul></div>\r
696 </div>\r
697 </div>\r
698 </div>\r
699 <div class="sect1">\r
700 <h2 id="_ccache_3_1_2">ccache 3.1.2</h2>\r
701 <div class="sectionbody">\r
702 <div class="paragraph"><p>Release date: 2010-11-21</p></div>\r
703 <div class="sect2">\r
704 <h3 id="_bug_fixes_5">Bug fixes</h3>\r
705 <div class="ulist"><ul>\r
706 <li>\r
707 <p>\r
708 Bail out on too hard compiler options <tt>-fdump-*</tt>.\r
709 </p>\r
710 </li>\r
711 <li>\r
712 <p>\r
713 NULL return values from malloc/calloc of zero bytes are now handled\r
714       correctly.\r
715 </p>\r
716 </li>\r
717 <li>\r
718 <p>\r
719 Fixed issue when parsing precompiler output on AIX.\r
720 </p>\r
721 </li>\r
722 </ul></div>\r
723 </div>\r
724 <div class="sect2">\r
725 <h3 id="_other_2">Other</h3>\r
726 <div class="ulist"><ul>\r
727 <li>\r
728 <p>\r
729 Improved documentation on which information is included in the hash sum.\r
730 </p>\r
731 </li>\r
732 <li>\r
733 <p>\r
734 Made the &#8220;too new header file&#8221; test case work on file systems with\r
735       unsynchronized clocks.\r
736 </p>\r
737 </li>\r
738 <li>\r
739 <p>\r
740 The test suite now also works on systems that lack a /dev/zero.\r
741 </p>\r
742 </li>\r
743 </ul></div>\r
744 </div>\r
745 </div>\r
746 </div>\r
747 <div class="sect1">\r
748 <h2 id="_ccache_3_1_1">ccache 3.1.1</h2>\r
749 <div class="sectionbody">\r
750 <div class="paragraph"><p>Release date: 2010-11-07</p></div>\r
751 <div class="sect2">\r
752 <h3 id="_bug_fixes_6">Bug fixes</h3>\r
753 <div class="ulist"><ul>\r
754 <li>\r
755 <p>\r
756 ccache now falls back to preprocessor mode when a non-regular include\r
757       file (device, socket, etc) has been detected so that potential hanging\r
758       due to blocking reads is avoided.\r
759 </p>\r
760 </li>\r
761 <li>\r
762 <p>\r
763 CRC errors are now detected when decompressing compressed files in the\r
764       cache.\r
765 </p>\r
766 </li>\r
767 <li>\r
768 <p>\r
769 Fixed potential object file corruption race on NFS.\r
770 </p>\r
771 </li>\r
772 <li>\r
773 <p>\r
774 Minor documentation corrections.\r
775 </p>\r
776 </li>\r
777 <li>\r
778 <p>\r
779 Fixed configure detection of ar.\r
780 </p>\r
781 </li>\r
782 <li>\r
783 <p>\r
784 ccache development version (set by dev.mk) now works with gits whose\r
785       <tt>describe</tt> command doesn&#8217;t understand <tt>--dirty</tt>.\r
786 </p>\r
787 </li>\r
788 </ul></div>\r
789 </div>\r
790 <div class="sect2">\r
791 <h3 id="_other_3">Other</h3>\r
792 <div class="ulist"><ul>\r
793 <li>\r
794 <p>\r
795 Minor debug log message improvements.\r
796 </p>\r
797 </li>\r
798 </ul></div>\r
799 </div>\r
800 </div>\r
801 </div>\r
802 <div class="sect1">\r
803 <h2 id="_ccache_3_1">ccache 3.1</h2>\r
804 <div class="sectionbody">\r
805 <div class="paragraph"><p>Release date: 2010-09-16</p></div>\r
806 <div class="sect2">\r
807 <h3 id="_new_features_and_improvements_3">New features and improvements</h3>\r
808 <div class="ulist"><ul>\r
809 <li>\r
810 <p>\r
811 Added support for hashing the output of a custom command (e.g.\r
812       <tt>%compiler% --version</tt>) to identify the compiler instead of stat-ing or\r
813       hashing the compiler binary. This can improve robustness when the\r
814       compiler (as seen by ccache) actually isn&#8217;t the real compiler but another\r
815       compiler wrapper.\r
816 </p>\r
817 </li>\r
818 <li>\r
819 <p>\r
820 Added support for caching compilations that use precompiled headers. (See\r
821       the manual for important instructions regarding this.)\r
822 </p>\r
823 </li>\r
824 <li>\r
825 <p>\r
826 Locking of the files containing statistics counters is now done using\r
827       symlinks instead of POSIX locks. This should make ccache behave a lot\r
828       better on file systems where POSIX locks are slow or broken (e.g. NFS on\r
829       some systems).\r
830 </p>\r
831 </li>\r
832 <li>\r
833 <p>\r
834 Manifest files are now updated without the need of taking locks.\r
835 </p>\r
836 </li>\r
837 <li>\r
838 <p>\r
839 Updates of statistics counters are now always done in one of the\r
840       sub-level statistics files. This reduces lock contention, which\r
841       especially improves performance on slow NFS mounts.\r
842 </p>\r
843 </li>\r
844 <li>\r
845 <p>\r
846 Reading and writing of statistics counters has been made\r
847       forward-compatible (unknown counters are retained).\r
848 </p>\r
849 </li>\r
850 <li>\r
851 <p>\r
852 Files are now read without using mmap(). This has two benefits: it&#8217;s more\r
853       robust against file changes during reading and it improves performance on\r
854       poor systems where mmap() doesn&#8217;t use the disk cache.\r
855 </p>\r
856 </li>\r
857 <li>\r
858 <p>\r
859 Added <tt>.cp</tt> and <tt>.CP</tt> as known C++ suffixes.\r
860 </p>\r
861 </li>\r
862 <li>\r
863 <p>\r
864 Improved logging.\r
865 </p>\r
866 </li>\r
867 <li>\r
868 <p>\r
869 Added <tt>-install_name</tt> as an option known to take an argument. (This\r
870       improves statistics when using the Darwin linker.)\r
871 </p>\r
872 </li>\r
873 </ul></div>\r
874 </div>\r
875 <div class="sect2">\r
876 <h3 id="_bug_fixes_7">Bug fixes</h3>\r
877 <div class="ulist"><ul>\r
878 <li>\r
879 <p>\r
880 Non-fatal error messages are now never printed to stderr but logged\r
881       instead.\r
882 </p>\r
883 </li>\r
884 <li>\r
885 <p>\r
886 Fixed a bug affecting failing commands when <tt>--ccache-skip</tt> is used.\r
887 </p>\r
888 </li>\r
889 <li>\r
890 <p>\r
891 Made <tt>--ccache-skip</tt> work for all options.\r
892 </p>\r
893 </li>\r
894 <li>\r
895 <p>\r
896 EINTR is now handled correctly.\r
897 </p>\r
898 </li>\r
899 </ul></div>\r
900 </div>\r
901 <div class="sect2">\r
902 <h3 id="_other_4">Other</h3>\r
903 <div class="ulist"><ul>\r
904 <li>\r
905 <p>\r
906 Work on porting ccache to win32 (native), mostly done by Ramiro Polla.\r
907       The port is not yet finished, but will hopefully be complete in some\r
908       subsequent release.\r
909 </p>\r
910 </li>\r
911 <li>\r
912 <p>\r
913 Added a <tt>--nostats</tt> flag to the performance benchmark program.\r
914 </p>\r
915 </li>\r
916 <li>\r
917 <p>\r
918 Made the performance benchmark program more accurate when measuring cache\r
919       hits.\r
920 </p>\r
921 </li>\r
922 <li>\r
923 <p>\r
924 Added a new test framework for unit tests written in C.\r
925 </p>\r
926 </li>\r
927 <li>\r
928 <p>\r
929 Got rid of <tt>configure-dev</tt>; dev mode is now given by <tt>dev.mk.in</tt>\r
930       presence.\r
931 </p>\r
932 </li>\r
933 <li>\r
934 <p>\r
935 Improved documentation on how to combine ccache with other compiler\r
936       wrappers (like <tt>distcc</tt>).\r
937 </p>\r
938 </li>\r
939 <li>\r
940 <p>\r
941 New <tt>LICENSE.txt</tt> file with licensing and copyright details about bundled\r
942       source code.\r
943 </p>\r
944 </li>\r
945 <li>\r
946 <p>\r
947 New <tt>AUTHORS.txt</tt> file with a list of ccache contributors.\r
948 </p>\r
949 </li>\r
950 <li>\r
951 <p>\r
952 New <tt>HACKING.txt</tt> file with some notes about ccache code conventions.\r
953 </p>\r
954 </li>\r
955 </ul></div>\r
956 </div>\r
957 </div>\r
958 </div>\r
959 <div class="sect1">\r
960 <h2 id="_ccache_3_0_1">ccache 3.0.1</h2>\r
961 <div class="sectionbody">\r
962 <div class="paragraph"><p>Release date: 2010-07-15</p></div>\r
963 <div class="sect2">\r
964 <h3 id="_bug_fixes_8">Bug fixes</h3>\r
965 <div class="ulist"><ul>\r
966 <li>\r
967 <p>\r
968 The statistics counter &#8220;called for link&#8221; is now correctly updated when\r
969       linking with a single object file.\r
970 </p>\r
971 </li>\r
972 <li>\r
973 <p>\r
974 Fixed a problem with out-of-source builds.\r
975 </p>\r
976 </li>\r
977 </ul></div>\r
978 </div>\r
979 </div>\r
980 </div>\r
981 <div class="sect1">\r
982 <h2 id="_ccache_3_0">ccache 3.0</h2>\r
983 <div class="sectionbody">\r
984 <div class="paragraph"><p>Release date: 2010-06-20</p></div>\r
985 <div class="sect2">\r
986 <h3 id="_general">General</h3>\r
987 <div class="ulist"><ul>\r
988 <li>\r
989 <p>\r
990 ccache is now licensed under the GNU General Public License (GPL) version\r
991       3 or later.\r
992 </p>\r
993 </li>\r
994 </ul></div>\r
995 </div>\r
996 <div class="sect2">\r
997 <h3 id="_upgrade_notes">Upgrade notes</h3>\r
998 <div class="ulist"><ul>\r
999 <li>\r
1000 <p>\r
1001 The way the hashes are calculated has changed, so you won&#8217;t get cache\r
1002       hits for compilation results stored by older ccache versions. Because of\r
1003       this, you might as well clear the old cache directory with <tt>ccache\r
1004       --clear</tt> if you want, unless you plan to keep using an older ccache\r
1005       version.\r
1006 </p>\r
1007 </li>\r
1008 </ul></div>\r
1009 </div>\r
1010 <div class="sect2">\r
1011 <h3 id="_new_features_and_improvements_4">New features and improvements</h3>\r
1012 <div class="ulist"><ul>\r
1013 <li>\r
1014 <p>\r
1015 ccache now has a &#8220;direct mode&#8221; where it computes a hash of the source\r
1016       code (including all included files) and compiler options without\r
1017       running the preprocessor. By not running the preprocessor, CPU usage is\r
1018       reduced; the speed is somewhere between 1 and 5 times that of ccache\r
1019       running in traditional mode, depending on the circumstances. The speedup\r
1020       will be higher when I/O is fast (e.g., when files are in the disk cache).\r
1021       The direct mode can be disabled by setting <tt>CCACHE_NODIRECT</tt>.\r
1022 </p>\r
1023 </li>\r
1024 <li>\r
1025 <p>\r
1026 Support has been added for rewriting absolute paths to relative paths\r
1027       when hashing, in order to increase cache hit rate when building the same\r
1028       source code in different directories even when compiling with <tt>-g</tt> and\r
1029       when using absolute include directory paths. This is done by setting the\r
1030       <tt>CCACHE_BASEDIR</tt> environment variable to an absolute path that specifies\r
1031       which paths to rewrite.\r
1032 </p>\r
1033 </li>\r
1034 <li>\r
1035 <p>\r
1036 Object files are now optionally stored compressed in the cache. The\r
1037       runtime cost is negligible, and more files will fit in the ccache\r
1038       directory and in the disk cache. Set <tt>CCACHE_COMPRESS</tt> to enable object\r
1039       file compression. Note that you can&#8217;t use compression in combination with\r
1040       the hard link feature.\r
1041 </p>\r
1042 </li>\r
1043 <li>\r
1044 <p>\r
1045 A <tt>CCACHE_COMPILERCHECK</tt> option has been added. This option tells ccache\r
1046       what compiler-identifying information to hash to ensure that results\r
1047       retrieved from the cache are accurate. Possible values are: none (don&#8217;t\r
1048       hash anything), mtime (hash the compiler&#8217;s mtime and size) and content\r
1049       (hash the content of the compiler binary). The default is mtime.\r
1050 </p>\r
1051 </li>\r
1052 <li>\r
1053 <p>\r
1054 It is now possible to specify extra files whose contents should be\r
1055       included in the hash sum by setting the <tt>CCACHE_EXTRAFILES</tt> option.\r
1056 </p>\r
1057 </li>\r
1058 <li>\r
1059 <p>\r
1060 Added support for Objective-C and Objective-C++. The statistics counter\r
1061       &#8220;not a C/C++ file&#8221; has been renamed to &#8220;unsupported source language&#8221;.\r
1062 </p>\r
1063 </li>\r
1064 <li>\r
1065 <p>\r
1066 Added support for the <tt>-x</tt> compiler option.\r
1067 </p>\r
1068 </li>\r
1069 <li>\r
1070 <p>\r
1071 Added support for long command-line options.\r
1072 </p>\r
1073 </li>\r
1074 <li>\r
1075 <p>\r
1076 A <tt>CACHEDIR.TAG</tt> file is now created in the cache directory. See\r
1077       <a href="http://www.brynosaurus.com/cachedir/">http://www.brynosaurus.com/cachedir/</a>.\r
1078 </p>\r
1079 </li>\r
1080 <li>\r
1081 <p>\r
1082 Messages printed to the debug log (specified by <tt>CCACHE_LOGFILE</tt>) have\r
1083       been improved.\r
1084 </p>\r
1085 </li>\r
1086 <li>\r
1087 <p>\r
1088 You can relax some checks that ccache does in direct mode by setting\r
1089       <tt>CCACHE_SLOPPINESS</tt>. See the manual for more information.\r
1090 </p>\r
1091 </li>\r
1092 <li>\r
1093 <p>\r
1094 <tt>CCACHE_TEMPDIR</tt> no longer needs to be on the same filesystem as\r
1095       <tt>CCACHE_DIR</tt>.\r
1096 </p>\r
1097 </li>\r
1098 <li>\r
1099 <p>\r
1100 The default value of <tt>CCACHE_TEMPDIR</tt> has been changed to\r
1101       <tt>$CCACHE_DIR/tmp</tt> to avoid cluttering the top directory.\r
1102 </p>\r
1103 </li>\r
1104 <li>\r
1105 <p>\r
1106 Temporary files that later will be moved into the cache are now created\r
1107       in the cache directory they will end up in. This makes ccache more\r
1108       friendly to Linux&#8217;s directory layout.\r
1109 </p>\r
1110 </li>\r
1111 <li>\r
1112 <p>\r
1113 Improved the test suite and added tests for most of the new\r
1114       functionality. It&#8217;s now also possible to specify a subset of tests to\r
1115       run.\r
1116 </p>\r
1117 </li>\r
1118 <li>\r
1119 <p>\r
1120 Standard error output from the compiler is now only stored in the cache\r
1121       if it&#8217;s non-empty.\r
1122 </p>\r
1123 </li>\r
1124 <li>\r
1125 <p>\r
1126 If the compiler produces no object file or an empty object file, but\r
1127       gives a zero exit status (could be due to a file system problem, a buggy\r
1128       program specified by <tt>CCACHE_PREFIX</tt>, etc.), ccache copes with it\r
1129       properly.\r
1130 </p>\r
1131 </li>\r
1132 <li>\r
1133 <p>\r
1134 Added <tt>installcheck</tt> and <tt>distcheck</tt> make targets.\r
1135 </p>\r
1136 </li>\r
1137 <li>\r
1138 <p>\r
1139 Clarified cache size limit options' and cleanup semantics.\r
1140 </p>\r
1141 </li>\r
1142 <li>\r
1143 <p>\r
1144 Improved display of cache max size values.\r
1145 </p>\r
1146 </li>\r
1147 <li>\r
1148 <p>\r
1149 The following options are no longer hashed in the preprocessor mode:\r
1150       <tt>-imacros</tt>, <tt>-imultilib</tt>, <tt>-iprefix</tt>, <tt>-iquote</tt>, <tt>-isysroot</tt>,\r
1151       <tt>-iwithprefix</tt>, <tt>-iwithprefixbefore</tt>, <tt>-nostdinc</tt>, <tt>-nostdinc++</tt> and\r
1152       <tt>-U</tt>.\r
1153 </p>\r
1154 </li>\r
1155 </ul></div>\r
1156 </div>\r
1157 <div class="sect2">\r
1158 <h3 id="_bug_fixes_9">Bug fixes</h3>\r
1159 <div class="ulist"><ul>\r
1160 <li>\r
1161 <p>\r
1162 Various portability improvements.\r
1163 </p>\r
1164 </li>\r
1165 <li>\r
1166 <p>\r
1167 Improved detection of home directory.\r
1168 </p>\r
1169 </li>\r
1170 <li>\r
1171 <p>\r
1172 User-defined <tt>CPPFLAGS</tt> and <tt>LDFLAGS</tt> are now respected in the Makefile.\r
1173 </p>\r
1174 </li>\r
1175 <li>\r
1176 <p>\r
1177 Fixed NFS issues.\r
1178 </p>\r
1179 </li>\r
1180 <li>\r
1181 <p>\r
1182 Computation of the hash sum has been improved to decrease the risk of\r
1183       hash collisions. For instance, the compiler options <tt>-X -Y</tt> and <tt>-X-Y</tt>\r
1184       previously contributed equally to the hash sum.\r
1185 </p>\r
1186 </li>\r
1187 <li>\r
1188 <p>\r
1189 Bail out on too hard compiler options <tt>--coverage</tt>, <tt>-fprofile-arcs</tt>,\r
1190       <tt>-fprofile-generate</tt>, <tt>-fprofile-use</tt>, <tt>-frepo</tt>, <tt>-ftest-coverage</tt> and\r
1191       <tt>-save-temps</tt>. Also bail out on <tt>@file</tt> style options.\r
1192 </p>\r
1193 </li>\r
1194 <li>\r
1195 <p>\r
1196 Errors when using multiple <tt>-arch</tt> compiler options are now noted as\r
1197       &#8220;unsupported compiler option&#8221;.\r
1198 </p>\r
1199 </li>\r
1200 <li>\r
1201 <p>\r
1202 <tt>-MD</tt>/<tt>-MMD</tt> options without <tt>-MT</tt>/<tt>-MF</tt> are now handled correctly.\r
1203 </p>\r
1204 </li>\r
1205 <li>\r
1206 <p>\r
1207 The <tt>-finput-charset</tt> option is now handled correctly.\r
1208 </p>\r
1209 </li>\r
1210 <li>\r
1211 <p>\r
1212 Added support for <tt>-Wp,-MD</tt> and <tt>-Wp,-MMD</tt> options.\r
1213 </p>\r
1214 </li>\r
1215 <li>\r
1216 <p>\r
1217 The compiler options <tt>-Xassembler</tt>, <tt>-b</tt>, <tt>-G</tt> and <tt>-V</tt> are now correctly\r
1218       recognized as taking an argument.\r
1219 </p>\r
1220 </li>\r
1221 <li>\r
1222 <p>\r
1223 Debug information containing line numbers of predefined and command-line\r
1224       macros (enabled with the compiler option <tt>-g3</tt>) will now be correct.\r
1225 </p>\r
1226 </li>\r
1227 <li>\r
1228 <p>\r
1229 Corrected LRU cleanup handling of object files.\r
1230 </p>\r
1231 </li>\r
1232 <li>\r
1233 <p>\r
1234 <tt>utimes()</tt> is now used instead of <tt>utime()</tt> when available.\r
1235 </p>\r
1236 </li>\r
1237 <li>\r
1238 <p>\r
1239 Non-writable cache directories are now handled gracefully.\r
1240 </p>\r
1241 </li>\r
1242 <li>\r
1243 <p>\r
1244 Corrected documentation about sharing the cache directory.\r
1245 </p>\r
1246 </li>\r
1247 <li>\r
1248 <p>\r
1249 Fixed compilation warnings from GCC 4.3.\r
1250 </p>\r
1251 </li>\r
1252 <li>\r
1253 <p>\r
1254 The command specified by <tt>CCACHE_PREFIX</tt> is no longer part of the hash.\r
1255 </p>\r
1256 </li>\r
1257 <li>\r
1258 <p>\r
1259 Fixed bad memory access spotted by Valgrind.\r
1260 </p>\r
1261 </li>\r
1262 <li>\r
1263 <p>\r
1264 Fixed a bug in <tt>x_realloc</tt>.\r
1265 </p>\r
1266 </li>\r
1267 <li>\r
1268 <p>\r
1269 Freed memory is no longer referenced when compiling a <tt>.i</tt>/<tt>.ii</tt> file and\r
1270       falling back to running the real compiler.\r
1271 </p>\r
1272 </li>\r
1273 <li>\r
1274 <p>\r
1275 The test suite is now immune to external values of the <tt>CCACHE_*</tt>\r
1276       environment variables.\r
1277 </p>\r
1278 </li>\r
1279 <li>\r
1280 <p>\r
1281 Improved detection of recursive invocation.\r
1282 </p>\r
1283 </li>\r
1284 <li>\r
1285 <p>\r
1286 The ccache binary is now not unconditionally stripped when installing.\r
1287 </p>\r
1288 </li>\r
1289 <li>\r
1290 <p>\r
1291 Statistics counters are now correctly updated for -E option failures and\r
1292       internal errors.\r
1293 </p>\r
1294 </li>\r
1295 </ul></div>\r
1296 </div>\r
1297 </div>\r
1298 </div>\r
1299 </div>\r
1300 <div id="footnotes"><hr /></div>\r
1301 <div id="footer">\r
1302 <div id="footer-text">\r
1303 Version 3.1.6<br />\r
1304 Last updated 2011-08-21 16:34:07 CEST\r
1305 </div>\r
1306 </div>\r
1307 </body>\r
1308 </html>\r