• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<?xml version="1.0" encoding="UTF-8" ?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
4<head>
5  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
6  <link rel="stylesheet" href="resources/doc.css" charset="UTF-8" type="text/css" />
7  <link rel="shortcut icon" href="resources/report.gif" type="image/gif" />
8  <title>JaCoCo - Change History</title>
9</head>
10<body>
11
12<div class="breadcrumb">
13  <a href="../index.html" class="el_report">JaCoCo</a> &gt;
14  <a href="index.html" class="el_group">Documentation</a> &gt;
15  <span class="el_source">Change History</span>
16</div>
17<div id="content">
18
19<h1>Change History</h1>
20
21<h2>Release 0.8.4 (2019/05/08)</h2>
22
23<h3>New Features</h3>
24<ul>
25  <li>JaCoCo now officially supports Java 12</li>
26  <li>Instrumentation does not add synthetic field to Java 11+ class files,
27      however still adds synthetic method
28      (GitHub <a href="https://github.com/jacoco/jacoco/issues/845">#845</a>).</li>
29  <li>Branches added by the Kotlin compiler version 1.3.30 for suspending lambdas
30      and functions are filtered out during generation of report
31      (GitHub <a href="https://github.com/jacoco/jacoco/issues/849">#849</a>).</li>
32</ul>
33
34<h3>Fixed bugs</h3>
35<ul>
36  <li>Fixed incorrect update of frames caused by bug in ASM library in case of
37      arrays with more than 7 dimensions
38      (GitHub <a href="https://github.com/jacoco/jacoco/issues/839">#839</a>).</li>
39  <li>Fixed regression, which was introduced in 0.8.3 -
40      <code>module-info.class</code> should be excluded from analysis to not cause
41      <code>IllegalStateException</code>
42      (GitHub <a href="https://github.com/jacoco/jacoco/issues/859">#859</a>).</li>
43</ul>
44
45<h3>API Changes</h3>
46<ul>
47    <li>Methods <code>Instrumenter.instrument(org.objectweb.asm.ClassReader)</code>
48        and <code>Analyzer.analyzeClass(org.objectweb.asm.ClassReader)</code>
49        were removed
50        (GitHub <a href="https://github.com/jacoco/jacoco/issues/850">#850</a>).</li>
51</ul>
52
53<h3>Non-functional Changes</h3>
54<ul>
55  <li>JaCoCo now depends on ASM 7.1
56      (GitHub <a href="https://github.com/jacoco/jacoco/issues/851">#851</a>).</li>
57</ul>
58
59<h2>Release 0.8.3 (2019/01/23)</h2>
60
61<h3>New Features</h3>
62<ul>
63  <li>jacoco-maven-plugin now requires at least Maven 3.0
64      (GitHub <a href="https://github.com/jacoco/jacoco/issues/821">#821</a>).</li>
65  <li>JaCoCo now officially supports Java 11
66      (GitHub <a href="https://github.com/jacoco/jacoco/issues/760">#760</a>).</li>
67  <li>Experimental support for Java 13 class files
68      (GitHub <a href="https://github.com/jacoco/jacoco/issues/835">#835</a>).</li>
69  <li>Branch added by the Kotlin compiler for "unsafe" cast operator is filtered
70      out during generation of report
71      (GitHub <a href="https://github.com/jacoco/jacoco/issues/761">#761</a>).</li>
72  <li>Branch added by the Kotlin compiler for not-null assertion operator is
73      filtered out during generation of report
74      (GitHub <a href="https://github.com/jacoco/jacoco/issues/815">#815</a>).</li>
75  <li>Instructions inlined by Kotlin compiler are filtered out during generation
76      of report
77      (GitHub <a href="https://github.com/jacoco/jacoco/issues/764">#764</a>).</li>
78  <li>Branches added by the Kotlin compiler for suspending lambdas and functions
79      are filtered out during generation of report
80      (GitHub <a href="https://github.com/jacoco/jacoco/issues/802">#802</a>,
81      <a href="https://github.com/jacoco/jacoco/issues/803">#803</a>,
82      <a href="https://github.com/jacoco/jacoco/issues/809">#809</a>).</li>
83  <li>Classes and methods annotated by annotation whose retention policy is
84      <code>runtime</code> or <code>class</code> and whose simple name contains
85      "Generated" (previously equality was required) are filtered out during
86      generation of report
87      (GitHub <a href="https://github.com/jacoco/jacoco/issues/822">#822</a>).</li>
88  <li>HTML report shows message when source file can't be found
89      (GitHub <a href="https://github.com/jacoco/jacoco/issues/801">#801</a>).</li>
90  <li>HTML report shows message when class has no debug information
91      (GitHub <a href="https://github.com/jacoco/jacoco/issues/818">#818</a>).</li>
92  <li>HTML report shows message when analyzed class does not match executed
93      (GitHub <a href="https://github.com/jacoco/jacoco/issues/819">#819</a>).</li>
94  <li>HTML report shows message when no class files specified and when
95      none of the analyzed classes contain code relevant for code coverage
96      (GitHub <a href="https://github.com/jacoco/jacoco/issues/833">#833</a>).</li>
97  <li>Empty class and sourcefile nodes are preserved and available in XML report
98      (GitHub <a href="https://github.com/jacoco/jacoco/issues/817">#817</a>).</li>
99  <li>Agent avoids conflicts with other agents when running on Java 9+
100      (GitHub <a href="https://github.com/jacoco/jacoco/issues/829">#829</a>).</li>
101</ul>
102
103<h3>Fixed Bugs</h3>
104<ul>
105  <li><code>synthetic</code> methods that contain values of default arguments
106      in Kotlin should not be ignored
107      (GitHub <a href="https://github.com/jacoco/jacoco/issues/774">#774</a>).</li>
108  <li><code>synthetic</code> methods that represent <code>suspend</code>
109      functions in Kotlin should not be ignored
110      (GitHub <a href="https://github.com/jacoco/jacoco/issues/804">#804</a>).</li>
111  <li>Removed misleading parameters <code>includes</code> and
112      <code>excludes</code> from <code>dump</code>, <code>merge</code> and
113      <code>restore-instrumented-classes</code> goals of jacoco-maven-plugin,
114      because they have no effect
115      (GitHub <a href="https://github.com/jacoco/jacoco/issues/827">#827</a>).</li>
116</ul>
117
118<h3>Non-functional Changes</h3>
119<ul>
120  <li>JaCoCo now depends on ASM 7.0
121      (GitHub <a href="https://github.com/jacoco/jacoco/issues/760">#760</a>).</li>
122</ul>
123
124<h2>Release 0.8.2 (2018/08/21)</h2>
125
126<h3>New Features</h3>
127<ul>
128  <li>Experimental support for Java 11 and Java 12 class files, including
129      JEP 12 "preview features"
130      (GitHub <a href="https://github.com/jacoco/jacoco/issues/719">#719</a>,
131      <a href="https://github.com/jacoco/jacoco/issues/738">#738</a>,
132      <a href="https://github.com/jacoco/jacoco/issues/743">#743</a>).</li>
133  <li>Branches and instructions generated by javac 11 for try-with-resources
134      statement are filtered out
135      (GitHub <a href="https://github.com/jacoco/jacoco/issues/669">#669</a>).</li>
136  <li>Synthetic classes are filtered out during generation of report
137      (GitHub <a href="https://github.com/jacoco/jacoco/issues/668">#668</a>).</li>
138  <li>Part of bytecode generated by ECJ for <code>switch</code> statements on
139      <code>java.lang.String</code> values is filtered out during generation of
140      report
141      (GitHub <a href="https://github.com/jacoco/jacoco/issues/735">#735</a>,
142      <a href="https://github.com/jacoco/jacoco/issues/741">#741</a>,
143      <a href="https://github.com/jacoco/jacoco/issues/746">#746</a>).</li>
144  <li>Methods added by the Kotlin compiler that do not have line numbers are
145      filtered out during generation of report. Idea and implementation by
146      Nikolay Krasko
147      (GitHub <a href="https://github.com/jacoco/jacoco/issues/689">#689</a>).</li>
148  <li>Branch added by the Kotlin compiler for reading from <code>lateinit</code>
149      property is filtered out during generation of report. Implementation by
150      Fabian Mastenbroek
151      (GitHub <a href="https://github.com/jacoco/jacoco/issues/707">#707</a>).</li>
152  <li>Bytecode generated by Kotlin compiler for implicit <code>else</code> of
153      <code>when</code> expressions that list all cases of <code>enum</code> or
154      <code>sealed class</code> is filtered out during generation of report
155      (GitHub <a href="https://github.com/jacoco/jacoco/issues/721">#721</a>,
156      <a href="https://github.com/jacoco/jacoco/issues/729">#729</a>,
157      <a href="https://github.com/jacoco/jacoco/issues/749">#749</a>).</li>
158  <li>Additional bytecode generated by Kotlin compiler for <code>when</code>
159      expressions on <code>kotlin.String</code> values is filtered out during
160      generation of report
161      (GitHub <a href="https://github.com/jacoco/jacoco/issues/737">#737</a>,
162      <a href="https://github.com/jacoco/jacoco/issues/746">#746</a>).</li>
163  <li>Classes and methods annotated with annotation whose retention policy
164      is <code>runtime</code> or <code>class</code> and whose simple name
165      is <code>Generated</code> are filtered out during generation of report
166      (GitHub <a href="https://github.com/jacoco/jacoco/issues/731">#731</a>).</li>
167  <li>Maven goal <code>report-aggregate</code> now also considers dependencies
168      specified using version range. Idea and implementation by Lukas Krejc
169      (GitHub <a href="https://github.com/jacoco/jacoco/issues/658">#658</a>).</li>
170</ul>
171
172<h3>Fixed Bugs</h3>
173<ul>
174  <li>Don't insert stackmap frames into class files with version &lt; 1.6,
175      this fixes regression which was introduced in version 0.6.5
176      (GitHub <a href="https://github.com/jacoco/jacoco/issues/667">#667</a>).</li>
177  <li>Question mark in filter expressions now correctly matches exactly one character
178      (GitHub <a href="https://github.com/jacoco/jacoco/issues/672">#672</a>).</li>
179  <li>Part of bytecode that javac generates for <code>switch</code> statement on
180      <code>java.lang.String</code> values with a small number cases is now correctly
181      filtered out during generation of report
182      (GitHub <a href="https://github.com/jacoco/jacoco/issues/730">#730</a>).</li>
183</ul>
184
185<h3>Non-functional Changes</h3>
186<ul>
187  <li>JaCoCo now depends on ASM 6.2.1
188      (GitHub <a href="https://github.com/jacoco/jacoco/issues/706">#706</a>,
189      <a href="https://github.com/jacoco/jacoco/issues/725">#725</a>).</li>
190  <li>Improved error message when already instrumented classes are used for
191      instrumentation or analysis
192      (GitHub <a href="https://github.com/jacoco/jacoco/issues/703">#703</a>).</li>
193  <li>JaCoCo build now requires at least Maven 3.3.9 and JDK 8
194      (GitHub <a href="https://github.com/jacoco/jacoco/issues/711">#711</a>).</li>
195</ul>
196
197<h3>API Changes</h3>
198<ul>
199  <li>The XML report now has an optional attribute <code>sourcefilename</code>
200      on the <code>class</code> element to allow unambiguously relate classes
201      to source files. The JaCoCo DTD version has been updated to 1.1
202      (GitHub <a href="https://github.com/jacoco/jacoco/issues/702">#702</a>).</li>
203</ul>
204
205<h2>Release 0.8.1 (2018/03/21)</h2>
206
207<h3>New Features</h3>
208<ul>
209  <li>JaCoCo now supports Java 10
210      (GitHub <a href="https://github.com/jacoco/jacoco/issues/629">#629</a>).</li>
211  <li>Empty constructor without parameters in enum is filtered out during
212      generation of report
213      (GitHub <a href="https://github.com/jacoco/jacoco/issues/649">#649</a>).</li>
214</ul>
215
216<h2>Release 0.8.0 (2018/01/02)</h2>
217
218<h3>New Features</h3>
219<ul>
220  <li>JaCoCo now officially supports Java 9
221      (GitHub <a href="https://github.com/jacoco/jacoco/issues/600">#600</a>).</li>
222  <li>JaCoCo now comes with a simple command line interface
223      (GitHub <a href="https://github.com/jacoco/jacoco/issues/525">#525</a>).</li>
224  <li>Limit configuration of Maven <code>check</code> goal and Ant
225      <code>check</code> element now also supports percentage values
226      (GitHub <a href="https://github.com/jacoco/jacoco/issues/534">#534</a>).</li>
227  <li>Manifests of JAR files now have <code>Automatic-Module-Name</code> for Java 9
228      (GitHub <a href="https://github.com/jacoco/jacoco/issues/565">#565</a>).</li>
229  <li>Maven aggregated reports will now also include modules of <code>runtime</code>
230      and <code>provided</code> dependencies
231      (GitHub <a href="https://github.com/jacoco/jacoco/issues/498">#498</a>,
232      <a href="https://github.com/jacoco/jacoco/issues/572">#572</a>).</li>
233</ul>
234
235<p>
236  During creation of reports various compiler generated artifacts are filtered
237  out, which otherwise require unnecessary and sometimes impossible tricks to
238  not have partial or missed coverage:
239</p>
240
241<ul>
242  <li>Methods <code>valueOf</code> and <code>values</code> of enum types
243      (GitHub <a href="https://github.com/jacoco/jacoco/issues/491">#491</a>).</li>
244  <li>Private empty no-argument constructors
245      (GitHub <a href="https://github.com/jacoco/jacoco/issues/529">#529</a>).</li>
246  <li>Methods annotated with <code>@lombok.Generated</code> to better integrate
247      with Lombok >= 1.16.14. Initial analysis and contribution by Rüdiger zu Dohna
248      (GitHub <a href="https://github.com/jacoco/jacoco/issues/513">#513</a>).</li>
249  <li>Methods annotated with <code>@groovy.transform.Generated</code> to better
250      integrate with Groovy >= 2.5.0. Thanks to Andres Almiray for adding the annotation to Groovy
251      (GitHub <a href="https://github.com/jacoco/jacoco/issues/610">#610</a>).</li>
252  <li>Part of bytecode for <code>synchronized</code> blocks
253      (GitHub <a href="https://github.com/jacoco/jacoco/issues/501">#501</a>).</li>
254  <li>Part of bytecode for try-with-resources statements
255      (GitHub <a href="https://github.com/jacoco/jacoco/issues/500">#500</a>).</li>
256  <li>Part of bytecode for <code>finally</code> blocks
257      (GitHub <a href="https://github.com/jacoco/jacoco/issues/604">#604</a>).</li>
258  <li>Part of bytecode for <code>switch</code> statements on
259      <code>java.lang.String</code> values
260      (GitHub <a href="https://github.com/jacoco/jacoco/issues/596">#596</a>).</li>
261</ul>
262
263<p>
264  Note: Tools that directly read <code>exec</code> files and embed JaCoCo for
265  this (such as SonarQube or Jenkins) will provide filtering functionality only
266  after they updated to this version of JaCoCo.
267</p>
268
269<h3>Fixed Bugs</h3>
270<ul>
271  <li>Fixed bug in instrumentation of exception handlers, which was causing damage
272      of structured locking in certain situations and as consequence poor
273      performance of instrumented methods, analysis and fix contributed by Allen Hair
274      (GitHub <a href="https://github.com/jacoco/jacoco/issues/627">#627</a>).</li>
275  <li><code>dump</code> commands now report error when server unexpectedly
276      closes connection without sending response
277      (GitHub <a href="https://github.com/jacoco/jacoco/issues/538">#538</a>).</li>
278  <li>Reduced chance of conflict with other agents
279      (GitHub <a href="https://github.com/jacoco/jacoco/issues/555">#555</a>).</li>
280  <li>Restored Maven <code>help</code> goal that was missing in version 0.7.9
281      (GitHub <a href="https://github.com/jacoco/jacoco/issues/559">#559</a>).</li>
282  <li><code>NullPointerException</code> during offline instrumentation of
283      <code>module-info.class</code>
284      (GitHub <a href="https://github.com/jacoco/jacoco/issues/600">#600</a>,
285      GitHub <a href="https://github.com/jacoco/jacoco/issues/634">#634</a>).</li>
286  <li>Incorrect update of frames caused by bug in ASM library
287      (GitHub <a href="https://github.com/jacoco/jacoco/issues/600">#600</a>).</li>
288  <li>Loss of <code>InnerClasses</code> attribute caused by bug in ASM library
289      (GitHub <a href="https://github.com/jacoco/jacoco/issues/600">#600</a>).</li>
290  <li><code>NegativeArraySizeException</code> during instrumentation caused by bug
291      in ASM library
292      (GitHub <a href="https://github.com/jacoco/jacoco/issues/600">#600</a>).</li>
293</ul>
294
295<h3>Non-functional Changes</h3>
296<ul>
297  <li>JaCoCo now depends on ASM 6.0
298      (GitHub <a href="https://github.com/jacoco/jacoco/issues/600">#600</a>).</li>
299  <li>More information about context is provided when unable to read input during
300      instrumentation
301      (GitHub <a href="https://github.com/jacoco/jacoco/issues/527">#527</a>).</li>
302  <li>More information about context is provided when unable to read stream during
303      analysis
304      (GitHub <a href="https://github.com/jacoco/jacoco/issues/541">#541</a>).</li>
305</ul>
306
307<h2>Release 0.7.9 (2017/02/05)</h2>
308
309<h3>Fixed Bugs</h3>
310<ul>
311  <li>"<code>java.lang.ClassFormatError: Short length on BootstrapMethods in class file</code>"
312      caused by bug in ASM library
313      (GitHub <a href="https://github.com/jacoco/jacoco/issues/462">#462</a>).</li>
314  <li>Do not recompute frames in case of large methods, otherwise
315      <code>java.lang.ClassNotFoundException</code> might be thrown
316      (GitHub <a href="https://github.com/jacoco/jacoco/issues/177">#177</a>).</li>
317  <li><code>ExecutionDataWriter.FORMAT_VERSION</code> is not a compile-time constant
318      (GitHub <a href="https://github.com/jacoco/jacoco/issues/474">#474</a>).</li>
319  <li>Maven goal "prepare-agent" should not overwrite existing property value if execution was skipped
320      (GitHub <a href="https://github.com/jacoco/jacoco/issues/486">#486</a>).</li>
321</ul>
322
323<h3>API Changes</h3>
324<ul>
325  <li><code>JaCoCo.ASM_API_VERSION</code> removed
326      (GitHub <a href="https://github.com/jacoco/jacoco/issues/474">#474</a>).</li>
327</ul>
328
329<h3>Non-functional Changes</h3>
330<ul>
331  <li>JaCoCo now depends on ASM 5.2.</li>
332  <li>OSGi metadata now generated automatically and additionally include
333      <code>uses</code> directives, <code>Require-Capability</code> attribute,
334      and export of all internal packages with <code>x-internal:=true</code> directive
335      (GitHub <a href="https://github.com/jacoco/jacoco/issues/211">#211</a>).</li>
336  <li>Removed OSGi attributes that were mistakenly added in version 0.6.1 into
337      <code>jacocoant.jar</code> that contains all dependencies
338      (GitHub <a href="https://github.com/jacoco/jacoco/issues/211">#211</a>).</li>
339</ul>
340
341<h2>Release 0.7.8 (2016/12/09)</h2>
342
343<h3>New Features</h3>
344<ul>
345  <li>User property <code>jacoco.dataFile</code> for parameter <code>dataFile</code>
346      of Maven <code>report</code> goal
347      (GitHub <a href="https://github.com/jacoco/jacoco/issues/322">#322</a>).</li>
348</ul>
349
350<h3>Fixed Bugs</h3>
351<ul>
352  <li>Use <code>RoundingMode#FLOOR</code> instead of
353      <code>RoundingMode#HALF_EVEN</code> for percentages in HTML report, so that
354      "99.5" is displayed as "99%", not as "100%"
355      (GitHub <a href="https://github.com/jacoco/jacoco/issues/452">#452</a>).</li>
356  <li>Do not add useless members into Java 8 interfaces that have only interface
357      initialization and abstract methods
358      (GitHub <a href="https://github.com/jacoco/jacoco/issues/441">#441</a>).</li>
359  <li>Fix instrumentation to not violate Java Virtual Machine Specification regarding
360      initialization of final fields, otherwise <code>IllegalAccessError</code>
361      will be thrown starting from OpenJDK 9 EA b127
362      (GitHub <a href="https://github.com/jacoco/jacoco/issues/434">#434</a>).</li>
363  <li>Fix instrumentation of interfaces with default methods to not create incorrect
364      constant pool entries, which lead to <code>IncompatibleClassChangeError</code>
365      starting from OpenJDK 9 EA b122
366      (GitHub <a href="https://github.com/jacoco/jacoco/issues/428">#428</a>).</li>
367  <li>Add Maven goal <code>report-aggregate</code> to lifecycle-mapping-metadata.xml
368      (GitHub <a href="https://github.com/jacoco/jacoco/issues/427">#427</a>).</li>
369</ul>
370
371<h3>Non-functional Changes</h3>
372<ul>
373  <li>Released JaCoCo JARs are not signed any more. Signed versions of JaCoCo are
374      now available from the Eclipse Orbit project
375      (GitHub <a href="https://github.com/jacoco/jacoco/issues/466">#466</a>).</li>
376  <li>Simplified numbering of versions - JaCoCo JARs in Maven Central repository
377      do not have qualifier any more
378      (GitHub <a href="https://github.com/jacoco/jacoco/issues/468">#468</a>).</li>
379</ul>
380
381<h2>Release 0.7.7 (2016/06/06)</h2>
382
383<h3>New Features</h3>
384<ul>
385  <li>New Maven goal <code>report-aggregate</code> to create reports for
386      multi-module projects
387      (GitHub <a href="https://github.com/jacoco/jacoco/issues/388">#388</a>).</li>
388  <li>New parameters <code>title</code> and <code>footer</code> for Maven
389      reporting goals allow customization of generated reports.</li>
390  <li>Renamed "dot" resources in generated HTML reports to become more web
391      hosting friendly
392      (GitHub <a href="https://github.com/jacoco/jacoco/issues/401">#401</a>).</li>
393  <li>Experimental support for Java 9 class files
394      (GitHub <a href="https://github.com/jacoco/jacoco/issues/406">#406</a>).</li>
395</ul>
396
397<h3>Fixed Bugs</h3>
398<ul>
399  <li>Don't suppress EOF errors in case of truncated execution data files
400      (GitHub <a href="https://github.com/jacoco/jacoco/issues/397">#397</a>).</li>
401</ul>
402
403<h3>Non-functional Changes</h3>
404<ul>
405  <li>JaCoCo now depends on ASM 5.1.</li>
406  <li>Empty probe arrays are not written to execution data files any more. This
407      reduces exec file size significantly for per-test data dumps.
408      (GitHub <a href="https://github.com/jacoco/jacoco/issues/387">#387</a>).</li>
409  <li>More information about context is provided when unable to read input during
410      analysis.
411      (GitHub <a href="https://github.com/jacoco/jacoco/issues/400">#400</a>).</li>
412  <li>Require at least Maven 3.0 for build of JaCoCo.</li>
413</ul>
414
415
416<h2>Release 0.7.6 (2016/02/18)</h2>
417
418<h3>New Features</h3>
419<ul>
420  <li>New agent option <code>inclnolocationclasses</code> to support execution
421      environments like Android where no source location is provided with classes
422      (GitHub <a href="https://github.com/jacoco/jacoco/issues/288">#288</a>).</li>
423  <li>Improved error message in case of incompatible execution data files.
424      (GitHub <a href="https://github.com/jacoco/jacoco/issues/319">#319</a>).</li>
425  <li>Command line agent options now supports comma in file names. Contributed
426      by Jochen Berger.
427      (GitHub <a href="https://github.com/jacoco/jacoco/issues/358">#358</a>).</li>
428</ul>
429
430<h3>Fixed Bugs</h3>
431<ul>
432  <li>Fix <code>MBeanClient</code> example
433      (GitHub <a href="https://github.com/jacoco/jacoco/issues/333">#333</a>).</li>
434  <li>Avoid <code>ConcurrentModificationException</code> during shutdown
435      (GitHub <a href="https://github.com/jacoco/jacoco/issues/364">#364</a>).</li>
436</ul>
437
438<h3>API Changes</h3>
439<ul>
440  <li>In case of incompatible execution data formats read from another JaCoCo
441  version <code>ExecutionDataReader.read()</code> now throws a
442  <code>IncompatibleExecDataVersionException</code>.</li>
443</ul>
444
445<h3>Non-functional Changes</h3>
446<ul>
447  <li>JaCoCo now depends on ASM 5.0.4.</li>
448</ul>
449
450
451<h2>Release 0.7.5 (2015/05/24)</h2>
452
453<h3>New Features</h3>
454<ul>
455  <li>Better detection of coverage in code blocks with implicit exceptions.
456      (GitHub <a href="https://github.com/jacoco/jacoco/issues/310">#310</a>).</li>
457  <li>Added lifecycle-mapping-metadata.xml for M2E
458      (GitHub <a href="https://github.com/jacoco/jacoco/issues/203">#203</a>).</li>
459  <li>Allow locales with country and variant for Ant report task
460      (GitHub <a href="https://github.com/jacoco/jacoco/issues/289">#289</a>).</li>
461</ul>
462
463<h3>Fixed Bugs</h3>
464<ul>
465  <li>For the Ant tasks <code>coverage</code> and <code>agent</code> the
466      <code>destfile</code> attribute is now passed as an absolute path also in
467      the default case
468      (GitHub <a href="https://github.com/jacoco/jacoco/issues/301">#301</a>).</li>
469</ul>
470
471<h3>API Changes</h3>
472<ul>
473  <li>The exec file version has been updated and is not compatible with previous
474      versions.</li>
475</ul>
476
477<h2>Release 0.7.4 (2015/02/26)</h2>
478
479<h3>Fixed Bugs</h3>
480<ul>
481  <li>Restored exec file compatibility with version 0.7.2 by fixing missing
482      probes in case of try/catch blocks which are jump targets.
483      (GitHub <a href="https://github.com/jacoco/jacoco/issues/286">#286</a>).</li>
484</ul>
485
486
487<h2>Release 0.7.3 (2015/02/19)</h2>
488
489<h3>New Features</h3>
490<ul>
491  <li>For offline instrumemtation agent configuration supports system properties
492      replacements. Implementation based on pull request of GitHub user 'debugger'
493      (GitHub <a href="https://github.com/jacoco/jacoco/issues/262">#262</a>).</li>
494  <li>Exclude dynamically generated classes from instrumentation for better
495      interoperability with JMockit, analysis contributed by Rogério Liesenfeld
496      (GitHub <a href="https://github.com/jacoco/jacoco/issues/272">#272</a>).</li>
497</ul>
498
499<h3>Fixed Bugs</h3>
500<ul>
501  <li>Instrumented bytecode now compatible with Android ART runtime, analysis
502      and fix contributed by Allen Hair
503      (GitHub <a href="https://github.com/jacoco/jacoco/issues/265">#265</a>).</li>
504</ul>
505
506<h2>Release 0.7.2 (2014/09/12)</h2>
507
508<h3>Fixed Bugs</h3>
509<ul>
510  <li>Do not ignore synthetic lambda methods to get code coverage for Java 8
511      lambda expressions
512      (GitHub <a href="https://github.com/jacoco/jacoco/issues/232">#232</a>).</li>
513</ul>
514
515<h3>New Features</h3>
516<ul>
517  <li>New configuration option for the JaCoCo agent
518      <code>inclbootstrapclasses</code> to also instrument classes from the
519      bootstrap class loader
520      (GitHub <a href="https://github.com/jacoco/jacoco/issues/49">#49</a>).</li>
521  <li>Agent uses unique file names to dump class files
522      (GitHub <a href="https://github.com/jacoco/jacoco/issues/225">#225</a>).</li>
523</ul>
524
525<h2>Release 0.7.1 (2014/05/08)</h2>
526
527<h3>Fixed Bugs</h3>
528<ul>
529  <li>Fixed failure with default methods in Java 8 interfaces
530      (GitHub <a href="https://github.com/jacoco/jacoco/issues/201">#201</a>).</li>
531  <li>Better interoperability with JMockit, analysis and fix contributed by Rogério
532      Liesenfeld (GitHub <a href="https://github.com/jacoco/jacoco/issues/35">#35</a>
533      and <a href="https://github.com/jacoco/jacoco/issues/54">#54</a>).</li>
534</ul>
535
536<h3>Non-functional Changes</h3>
537<ul>
538  <li>JaCoCo now depends on ASM 5.0.1
539      (GitHub <a href="https://github.com/jacoco/jacoco/issues/201">#201</a>).</li>
540</ul>
541
542<h2>Release 0.7.0 (2014/03/18)</h2>
543
544<h3>New Features</h3>
545<ul>
546  <li>JaCoCo now supports Java 8
547      (GitHub <a href="https://github.com/jacoco/jacoco/issues/74">#74</a>).</li>
548</ul>
549
550<h3>Non-functional Changes</h3>
551<ul>
552  <li>JaCoCo now depends on ASM 5.0 using asm-debug-all instead of asm-all
553      (GitHub <a href="https://github.com/jacoco/jacoco/issues/199">#199</a>).</li>
554</ul>
555
556<h2>Release 0.6.5 (2014/03/03)</h2>
557
558<h3>New Features</h3>
559<ul>
560  <li>Warnings are logged during report generation if different versions of
561      classes are used than at runtime (GitHub <a href="https://github.com/jacoco/jacoco/issues/185">#185</a>).</li>
562  <li>Signatures are removed from instrumented JAR files
563      (GitHub <a href="https://github.com/jacoco/jacoco/issues/186">#186</a>).</li>
564</ul>
565
566<h3>Fixed Bugs</h3>
567<ul>
568  <li>Skip jacoco instrumentation for mvn modules with package type ear (GitHub <a href="https://github.com/jacoco/jacoco/issues/169">#169</a>).</li>
569  <li>Align skip conditions and messages for Maven goals and give reasons. This
570      includes removal of the specific skip condition for packages e.g. POMs and
571      instead checks existence of <tt>target/classes</tt> in appropriate goals
572      (GitHub <a href="https://github.com/jacoco/jacoco/issues/171">#171</a>).</li>
573  <li>GitHub #44: (Regression) Agent Mojo should set empty property, if execution was skipped
574      (GitHub <a href="https://github.com/jacoco/jacoco/issues/192">#192</a>).</li>
575</ul>
576
577<h3>API Changes</h3>
578<ul>
579  <li>Restrict visibility of methods in abstract classes of jacoco-maven-plugin (GitHub <a href="https://github.com/jacoco/jacoco/issues/175">#175</a>).</li>
580</ul>
581
582<h2>Release 0.6.4 (2013/12/10)</h2>
583
584<h3>New Features</h3>
585<ul>
586  <li>Support for Android <i>Strict Mode</i> (GitHub <a href="https://github.com/jacoco/jacoco/issues/113">#113</a>).</li>
587  <li>New dump Mojo for Maven plug-in (GitHub <a href="https://github.com/jacoco/jacoco/issues/107">#107</a>).</li>
588  <li>New merge Mojo for Maven plug-in, contributed by Mads Mohr Christensen
589      (GitHub <a href="https://github.com/jacoco/jacoco/issues/126">#126</a>).</li>
590  <li>Additional list of source files for every package in HTML report
591      (GitHub <a href="https://github.com/jacoco/jacoco/issues/142">#142</a>).</li>
592  <li>Additional report-integration and prepare-agent-integration goals for
593      integration tests. (GitHub <a href="https://github.com/jacoco/jacoco/issues/152">#152</a>, <a href="https://github.com/jacoco/jacoco/issues/161">#161</a>).</li>
594</ul>
595
596<h3>Fixed Bugs</h3>
597<ul>
598  <li>Multiple executions of Maven goal "prepare-agent" should not lead to
599      incorrect configuration (GitHub <a href="https://github.com/jacoco/jacoco/issues/40">#40</a>).</li>
600  <li>Avoid direct dependency on java.lang.management APIs to allow usage on
601      Android (GitHub <a href="https://github.com/jacoco/jacoco/issues/150">#150</a>).</li>
602  <li>All JaCoCo Maven goals are marked as thread-safe (GitHub <a href="https://github.com/jacoco/jacoco/issues/133">#133</a>).</li>
603  <li>check and merge goal failures in jacoco-maven-plugin with Maven 2.2.1
604      due to incompatible configuration (GitHub <a href="https://github.com/jacoco/jacoco/issues/129">#129</a>).</li>
605</ul>
606
607<h3>API Changes</h3>
608<ul>
609  <li>New API package <code>org.jacoco.core.tools</code> for shared high-level
610      tools. (GitHub <a href="https://github.com/jacoco/jacoco/issues/159">#159</a>).</li>
611</ul>
612
613<h2>Release 0.6.3 (2013/06/03)</h2>
614
615<h3>New Features</h3>
616<ul>
617  <li>Support for archives in Pack200 format (GitHub <a href="https://github.com/jacoco/jacoco/issues/91">#91</a>).</li>
618  <li>The coverage check has been reworked to allow checks on all counter values
619      on all element types (GitHub <a href="https://github.com/jacoco/jacoco/issues/106">#106</a>).</li>
620  <li>Coverage checks are now also available in Ant (GitHub <a href="https://github.com/jacoco/jacoco/issues/106">#106</a>).</li>
621</ul>
622
623<h3>Fixed Bugs</h3>
624<ul>
625  <li>Fixed inconsistent stackmap frames when instrumenting class files produced
626      by certain tools like ProGuard (GitHub <a href="https://github.com/jacoco/jacoco/issues/85">#85</a>).</li>
627</ul>
628
629<h3>Non-functional Changes</h3>
630<ul>
631  <li>More context information when exceptions occur during analysis or
632      instrumentation (GitHub <a href="https://github.com/jacoco/jacoco/issues/104">#104</a>).</li>
633  <li>If analysis is performed on offline instrumented classes - which is an
634      build configuration error - an exception is now thrown (GitHub <a href="https://github.com/jacoco/jacoco/issues/108">#108</a>).</li>
635</ul>
636
637<h3>API Changes</h3>
638<ul>
639  <li>The configuration of the Maven check goal has been reworked to support
640      checks on any element type (GitHub <a href="https://github.com/jacoco/jacoco/issues/106">#106</a>).</li>
641  <li><code>Analyzer</code> and <code>Instrumenter</code> expect resource name
642      as additional parameter for better error messages (GitHub <a href="https://github.com/jacoco/jacoco/issues/104">#104</a>).</li>
643</ul>
644
645<h2>Release 0.6.2 (2013/02/03)</h2>
646
647<h3>New Features</h3>
648<ul>
649  <li>Support for offline instrumentation (GitHub <a href="https://github.com/jacoco/jacoco/issues/4">#4</a>, <a href="https://github.com/jacoco/jacoco/issues/64">#64</a>).</li>
650  <li>JaCoCo agent exposes runtime API for direct integration with application
651      under test (GitHub <a href="https://github.com/jacoco/jacoco/issues/61">#61</a>).</li>
652  <li>Support for parallel test execution: Different agents can now safely write
653      to the same <code>*.exec</code> file (GitHub <a href="https://github.com/jacoco/jacoco/issues/52">#52</a>).</li>
654  <li>New output mode 'none' can be used when agent is only controlled via JMX
655      or its new runtime API (GitHub <a href="https://github.com/jacoco/jacoco/issues/63">#63</a>).</li>
656  <li>Better error message in case of invalid stackmap frames (GitHub <a href="https://github.com/jacoco/jacoco/issues/73">#73</a>).</li>
657  <li>jacoco-maven-plugin: default phase for goal "report" - "verify"
658      (GitHub <a href="https://github.com/jacoco/jacoco/issues/72">#72</a>).</li>
659</ul>
660
661<h3>Non-functional Changes</h3>
662<ul>
663  <li>For every build the corresponding Git commit hash is included as
664      <code>Eclipse-SourceReferences</code> manifest headers (GitHub <a href="https://github.com/jacoco/jacoco/issues/7">#7</a>, <a href="https://github.com/jacoco/jacoco/issues/59">#59</a>).</li>
665  <li>Adjust saturation of red source highlighting in HTML reports to make
666      JaCoCo reports more accessible to red/green blind users.</li>
667</ul>
668
669<h3>API Changes</h3>
670<ul>
671  <li>The <code>output</code> mode <code>mbean</code> of the agent has been
672      dropped in favor of the new boolean option <code>jmx</code>. This allows
673      to combine JMX access with any other output mode (GitHub <a href="https://github.com/jacoco/jacoco/issues/62">#62</a>).</li>
674</ul>
675
676<h2>Release 0.6.1 (2012/12/23)</h2>
677
678<h3>New Features</h3>
679<ul>
680  <li>Add a coverage check Mojo, contributed by Kyle Lieber (GitHub <a href="https://github.com/jacoco/jacoco/issues/6">#6</a>).</li>
681</ul>
682
683<h3>Fixed Bugs</h3>
684<ul>
685  <li>jacocoant.jar should not conflict with ASM 3.x (GitHub <a href="https://github.com/jacoco/jacoco/issues/39">#39</a>).</li>
686  <li>Agent Mojo should set empty property, if execution was skipped
687      (GitHub <a href="https://github.com/jacoco/jacoco/issues/44">#44</a>).</li>
688</ul>
689
690<h3>Non-functional Changes</h3>
691<ul>
692  <li>Upgrade to ASM 4.1 (GitHub <a href="https://github.com/jacoco/jacoco/issues/37">#37</a>).</li>
693  <li>Log location of merged execution data file in Ant <code>merge</code> task
694      (GitHub <a href="https://github.com/jacoco/jacoco/issues/29">#29</a>).</li>
695</ul>
696
697<h2>Release 0.6.0 (2012/10/06)</h2>
698
699<h3>New Features</h3>
700<ul>
701  <li>Full support for Java 7 including INVOKEDYNAMIC as JaCoCo is now based
702      on ASM 4.0 (GitHub <a href="https://github.com/jacoco/jacoco/issues/5">#5</a>).</li>
703</ul>
704
705<h3>Fixed Bugs</h3>
706<ul>
707  <li>Maven plugin should skip creation of report if the execution data file is
708      missing. This avoids appearance of stack traces in case when JVM was not
709      forked, e.g. if there are no tests to run (SF #3563431, GitHub <a href="https://github.com/jacoco/jacoco/issues/19">#19</a>).</li>
710  <li>Maven plugin should fail if unable to read execution data file or create
711      report (GitHub <a href="https://github.com/jacoco/jacoco/issues/19">#19</a>).</li>
712</ul>
713
714<h3>API Changes</h3>
715<ul>
716  <li>Only colon as separator character supported in agent parameters. The
717      deprecated pipe character is no longer supported.</li>
718</ul>
719
720<h2>Release 0.5.10 (2012/08/31)</h2>
721
722<h3>Fixed Bugs</h3>
723<ul>
724  <li>Correct stackmap frames for new <code>long[]</code> arrays (SF #3553210).</li>
725  <li>Properly resolve the <code>fork</code> variable for tasks wrapped by the
726      <code>coverage</code> Ant task (Trac #213).</li>
727</ul>
728
729<h3>Non-functional Changes</h3>
730<ul>
731  <li>Source tree has been migrated to Git and is now hosted on Github at
732  <a href="https://github.com/jacoco/jacoco">https://github.com/jacoco/jacoco</a>.</li>
733</ul>
734
735<h2>Release 0.5.9 (2012/07/30)</h2>
736
737<h3>Fixed Bugs</h3>
738<ul>
739  <li>Don't produce invalid class files in case of unexpected stackmap frames
740      (SF #3543758).</li>
741</ul>
742
743<h2>Release 0.5.8 (2012/07/11)</h2>
744
745<h3>New Features</h3>
746<ul>
747  <li>Support for parallel Maven builds (Trac #191).</li>
748  <li>New agent option <code>classdumpdir</code> to dump all class files seen
749      by the JaCoCo agent to disk. This option is also available for Ant and
750      Maven (Trac #208).</li>
751</ul>
752
753<h3>Fixed Bugs</h3>
754<ul>
755  <li>Allow instrumentation of classes with dead code (SF #3538112).</li>
756  <li>Reworked instrumentation strategy to avoid verifier error "Uninitialized
757      object exists on backward branch" with certain Java 7 class files
758      (Trac #154).</li>
759</ul>
760
761<h3>Non-functional Changes</h3>
762<ul>
763  <li>Documentation now includes Maven example and Maven goal documentation
764      (Trac #201, #202).</li>
765</ul>
766
767<h2>Release 0.5.7 (2012/04/19)</h2>
768
769<h3>New Features</h3>
770<ul>
771  <li>Support for class redefinitions by other agents like JMockit (SF #3509409).</li>
772  <li>Remove class file attributes with invalid code offsets caused by other
773      byte code processing tools to avoid verifier errors (Trac #196).</li>
774  <li>Improved logging for Ant tasks (SF #3518429).</li>
775</ul>
776
777<h3>Fixed Bugs</h3>
778<ul>
779  <li>In case of failures the agent should log the original exception.</li>
780</ul>
781
782<h2>Release 0.5.6 (2012/01/23)</h2>
783
784<h3>New Features</h3>
785<ul>
786  <li>jacoco-maven-plugin can be used together with maven-site-plugin (Trac #181).</li>
787  <li>The <code>report</code> Ant task now also supports directory resources to
788      specify source folders. This allows reading source files from multiple
789      directories. Contributed by Dominik Stadler (Trac #119).</li>
790</ul>
791
792<h3>Fixed Bugs</h3>
793<ul>
794  <li>Don't insert stackmap frames for class files before version 1.6.</li>
795  <li>Regression, which was introduced in 0.5.4 - restored compatibility of jacoco-maven-plugin with Maven 2 (Trac #182).</li>
796</ul>
797
798<h2>Release 0.5.5 (2011/12/15)</h2>
799
800<h3>Fixed Bugs</h3>
801<ul>
802  <li>Correct default value for the <code>append</code> property of the
803      <code>dump</code> Ant task is <code>true</code> (Trac #178).</li>
804  <li>Try/catch blocks must not be counted as instructions (Trac #179).</li>
805</ul>
806
807<h3>Non-functional Changes</h3>
808<ul>
809  <li>Upgrade to ASM 3.3.1.</li>
810</ul>
811
812<h2>Release 0.5.4 (2011/11/11)</h2>
813
814<h3>New Features</h3>
815<ul>
816  <li>Maven plug-in: respect <code>includes</code> and <code>excludes</code>
817      properties in report Mojo (Trac #160).
818      Also note that:
819<pre class="source lang-xml">
820&lt;configuration&gt;
821  &lt;includes&gt;org.foo.*:org.bar.*&lt;/includes&gt;
822  &lt;excludes&gt;com.foo.*:com.bar.*&lt;/excludes&gt;
823&lt;/configuration&gt;
824</pre>
825      must be replaced on:
826<pre class="source lang-xml">
827&lt;configuration&gt;
828  &lt;includes&gt;
829    &lt;include>org.foo.*&lt;/include&gt;
830    &lt;include>org.bar.*&lt;/include&gt;
831  &lt;/includes&gt;
832  &lt;excludes&gt;
833    &lt;exclude&gt;com.foo.*&lt;/exclude&gt;
834    &lt;exclude&gt;com.bar.*&lt;/exclude&gt;
835  &lt;/excludes&gt;
836&lt;/configuration&gt;
837</pre>
838  </li>
839</ul>
840
841<h3>API Changes</h3>
842<ul>
843  <li><code>Instrumenter</code> now only requires
844      <code>IExecutionDataAccessorGenerator</code> instead of
845      <code>IRuntime</code> (Trac #174).</li>
846  <li>Removed reference to internal implementation classes from
847      <code>CoverageBuilder</code> API.</li>
848</ul>
849
850<h3>Non-functional Changes</h3>
851<ul>
852  <li>Release bundles from now on signed again.</li>
853  <li>Several documentation updates.</li>
854</ul>
855
856<h2>Release 0.5.3 (2011/07/06)</h2>
857
858<h3>New Features</h3>
859<ul>
860  <li>New Maven plug-in for JaCoCo agent setup and basic reporting (Trac #25).</li>
861  <li>Additional output mode implementation for JaCoCo agent based on JMX.</li>
862</ul>
863
864<h3>Fixed Bugs</h3>
865<ul>
866  <li>Fixed problem with reporting of nested group structures (Trac #157).</li>
867</ul>
868
869<h3>Non-functional Changes</h3>
870<ul>
871  <li>JaCoCo build based on Maven (Trac #136).</li>
872  <li>JaCoCo published to Maven repository (Trac #149).</li>
873</ul>
874
875<h2>Release 0.5.2 (2011/05/19)</h2>
876
877<h3>New Features</h3>
878<ul>
879  <li>JaCoCo reports cyclomatic complexity numbers (Trac #129).</li>
880  <li>For HTML reports the tab width can be specified on the
881      <code>sourcefiles</code> attribute of the <code>report</code> Ant task
882      (Track #152).</li>
883</ul>
884
885<h3>Fixed Bugs</h3>
886<ul>
887  <li>Removed duplicate counters in the root node of XML reports (Trac #155).</li>
888  <li>Avoid <code>StackOverflowException</code> when analyzing methods with very
889      long instruction sequences (Trac #156). Many thanks to Jean-Eric Cuendet
890      for reporting and analyzing this!</li>
891</ul>
892
893<h3>API Changes</h3>
894<ul>
895  <li><code>ICoverageNode</code> API has been extended for cyclomatic
896      complexity (Trac #129).</li>
897  <li>XML and CSV report includes new counter type <code>COMPLEXITY</code>
898      (Trac #129).</li>
899  <li>New method <code>getTabWidth()</code> in callback interface
900      <code>ISourceFileLocator</code> instead of
901      <code>HTMLReportFormatter.setTabWidth()</code> which has been removed.
902      (Trac #152).</li>
903</ul>
904
905<h2>Release 0.5.1 (2011/03/21)</h2>
906
907<h3>New Features</h3>
908<ul>
909  <li>Duplicate classes with identical identifiers are now ignored during
910      analysis.</li>
911  <li>Added support for TestNG to Ant task Coverage (Track #144).</li>
912</ul>
913
914<h3>Fixed Bugs</h3>
915<ul>
916  <li>Calculate correct stackmap frames for Java 1.6 branches (Trac #139).</li>
917  <li>Link source files also for classes in default package (Trac #151).</li>
918</ul>
919
920<h3>Non-functional Changes</h3>
921<ul>
922  <li>API documentation cleanup (Track #140).</li>
923  <li>Removed obsolete examples from documentation (Trac #141).</li>
924  <li>Added reporting API example (Trac #146).</li>
925  <li>Reduced file size of HTML report source pages (Trac #148).</li>
926</ul>
927
928<h3>API Changes</h3>
929<ul>
930  <li>Simplified reporting API (Trac #53).</li>
931  <li>Use colon as separator character in agent parameters (Trac #143).</li>
932  <li>Now also empty files are accepted as <code>*.exec</code> files (Trac #150).</li>
933</ul>
934
935<h2>Release 0.5.0 (2011/01/19)</h2>
936
937<h3>New Features</h3>
938<ul>
939  <li>JaCoCo now reports branch coverage (Track #66).</li>
940</ul>
941
942<h3>Fixed Bugs</h3>
943<ul>
944  <li>Only process actual Java class files during analysis (SF #3106102).</li>
945  <li>Fix broken source links due to sort hash (Track #125).</li>
946  <li>Fixed invalid OSGi headers in MANIFEST.MF files (Track #127).</li>
947  <li>Try to avoid interference with Hibernate (SF #3134190).</li>
948  <li>Provide proper error message in case of duplicate class names in the same
949      group (SF #3110219).</li>
950  <li>Allow any number of probes in static interface initializers (SF #3161106).</li>
951</ul>
952
953<h3>API Changes</h3>
954<ul>
955  <li>All analysis specific APIs have been moved to package
956      <code>org.jacoco.core.analysis</code>.</li>
957  <li>The <code>IStructureVisitor</code> interface has been replaced by a
958      simplified version called <code>ICoverageVisitor</code> (Track #132).</li>
959  <li>All counter creation and update APIs now accept <i>missed items</i> and
960      <i>covered items</i> as parameters (Track #131).</li>
961  <li>Instructions are now counted on a per line basis. Therefore some
962      interfaces in the <code>org.jacoco.core.analysis</code> package have
963      changed as well as the <code>line</code> element in the XML report
964      (Track #130).</li>
965  <li>Several internal implementation classes have removed from the core APIs or
966      have been replaced by new interfaces (Track #133).</li>
967</ul>
968
969<h2>Release 0.4.1 (2010/10/07)</h2>
970
971<h3>New Features</h3>
972<ul>
973  <li>New attribute <code>line</code> for <code>method</code> elements in the
974      XML report containing the first source line number of the method.
975      (Track #120).</li>
976  <li>Optional <code>locale</code> attribute for number rendering HTML reports,
977      also available as an attribute of the <code>html</code> tag of the
978      <code>report</code> Ant task (Track #122).</li>
979  <li>Coverage tables in HTML report are now sortable (Track #98).</li>
980  <li>The <code>report</code> Ant task issues a warning if source files are
981      provided but class files do not contain debug information to collect line
982      numbers (SF #3024486).</li>
983</ul>
984
985<h3>Non-functional Changes</h3>
986<ul>
987  <li>Reduced memory footprint for coverage data by 30% (Track #106).</li>
988  <li>Moved to Eclipse 3.6.x as development environment (Trac #115).</li>
989  <li>All delivered bundles and JAR files are signed (Trac #118).</li>
990</ul>
991
992<h3>Fixed Bugs</h3>
993<ul>
994  <li>Better error message when multiple JaCoCo agents are specified
995      (Track #103).</li>
996  <li>Fixed potential NPE at shutdown when running agent in
997      <code>tcpserver</code> mode (Track #117).</li>
998  <li>Agent now fails at startup when execution data file can't be opened
999      (Track #121).</li>
1000</ul>
1001
1002<h2>Release 0.4.0 (2010/06/04)</h2>
1003
1004<h3>New Features</h3>
1005<ul>
1006  <li>Execution data now includes session information: an arbitrary identifier,
1007      the start time and dump time (Trac #88).</li>
1008  <li>Added session information to XML report (Trac #92).</li>
1009  <li>New "Sessions" page in the HTML report shows information about each
1010      sessions wherein execution data has been collected for the report
1011      (Trac #93). Additionally all classes with execution data available are
1012      listed on this page (Trac #94).</li>
1013  <li>The agent now supports remote dumps via TCP/IP connections (Trac #82).</li>
1014  <li>New Ant task <code>dump</code> to remotely collect coverage data from
1015      agents (Trac #100).</li>
1016</ul>
1017
1018<h3>API Changes</h3>
1019<ul>
1020  <li>Execution data file header is written and read in any case (Trac #72).</li>
1021  <li>Added <code>dumponexit</code> to agent options (Trac #82).</li>
1022  <li>Added <code>sessionid</code> to agent options (Trac #88).</li>
1023  <li>Added <code>output, address and port</code> to agent options (Trac #82).</li>
1024  <li>Additional and modified methods in <code>IRuntime</code> to produce
1025      session information (Trac #88).</li>
1026  <li>Coverage element type <code>SESSION</code> removed (Trac #95).</li>
1027  <li>Removed several internal APIs from package
1028      <code>org.jacoco.core.instr</code> used for class instrumentation.</li>
1029  <li>Renamed class <code>org.jacoco.report.csv.CsvFormatter</code> to
1030      <code>CSVFormatter</code> (upper case) for consistency with other
1031      formatters.</li>
1032</ul>
1033
1034<h2>Release 0.3.3 (2010/04/19)</h2>
1035
1036<h3>New Features</h3>
1037<ul>
1038  <li>Support for different archives (jar, war, ear etc.) and nested archives
1039      (Trac #78).</li>
1040  <li>XML report with line level coverage information (requested for Sonar).</li>
1041</ul>
1042
1043<h3>Fixed Bugs</h3>
1044<ul>
1045  <li>Correct stackmap frames for Java 1.6 class files. (Track #81).</li>
1046  <li>Avoid usage of <code>LocalVariableSorter</code> due to ASM bug #314563
1047      (Track #69).</li>
1048  <li>Nested Java/JUnit Ant tasks not being executed when coverage task disabled. (Track #85).</li>
1049</ul>
1050
1051<h2>Release 0.3.2 (2010/04/01)</h2>
1052
1053<h3>New Features</h3>
1054<ul>
1055  <li>New HTML report option to directly create a zip file containing the report
1056      (Trac #12).</li>
1057  <li>Code coverage for static initializers in interfaces (Trac #21).</li>
1058  <li>Better error handling for <code>report</code> Ant task (Trac #71).</li>
1059  <li>Classes without instructions are excluded from reports (Trac #73).</li>
1060</ul>
1061
1062<h3>Fixed Bugs</h3>
1063<ul>
1064  <li>XML and CSV report output now also works for structures without groups
1065      (Track #76).</li>
1066</ul>
1067
1068<h3>API Changes</h3>
1069<ul>
1070  <li>Consistent usage of the term "Missed" instead of "NotCovered" in all APIs
1071      (Trac #72).</li>
1072  <li>To support "off-line" instrumentation scenarios it is not required any
1073      more to register instrumented classes with the runtime (Trac #74).</li>
1074</ul>
1075
1076<h2>Release 0.3.1 (2010/02/09)</h2>
1077
1078<h3>Fixed Bugs</h3>
1079<ul>
1080  <li>Ant tasks broken on Linux (Trac #68).</li>
1081</ul>
1082
1083<h2>Release 0.3.0 (2010/02/02)</h2>
1084
1085<h3>New Features</h3>
1086<ul>
1087  <li>Report renders anonymous classes with type information (Trac #46).</li>
1088  <li><code>enabled</code> property added to <code>agent</code> and
1089      <code>coverage</code> Ant tasks (Trac #63).</li>
1090  <li>Ant task <code>merge</code> added (Trac #52).</li>
1091</ul>
1092
1093<h3>Fixed Bugs</h3>
1094<ul>
1095  <li>New <code>IRuntime</code> implementation enables JaCoCo usage for J2EE
1096  application servers like Glassfish.</li>
1097</ul>
1098
1099<h3>API Changes</h3>
1100<ul>
1101  <li>Agent option and Ant task parameter <code>file</code> changed to
1102      <code>destfile</code> (Trac #59).</li>
1103  <li>Agent option and Ant task parameter <code>merge</code> changed to
1104      <code>append</code> (Trac #51).</li>
1105</ul>
1106
1107<h2>Release 0.2.0 (2010/01/08)</h2>
1108
1109<h3>New Features</h3>
1110
1111<ul>
1112  <li>Simplified probe data structure reduces memory usage (Trac #47).</li>
1113  <li>Performance test becomes part of the build.</li>
1114  <li>New bundle <code>org.jacoco.agent</code> that provides the Java agent
1115      as a resource (Trac #50).</li>
1116</ul>
1117
1118<h3>Fixed Bugs</h3>
1119
1120<ul>
1121  <li><code>ArrayIndexOutOfBoundsException</code> due to inconsistent processing
1122      while instrumentation and analysis (Trac #44).</li>
1123</ul>
1124
1125<h2>Release 0.1.0 (2009/10/28)</h2>
1126
1127<p>
1128  The very first JaCoCo release.
1129</p>
1130
1131</div>
1132<div class="footer">
1133  <span class="right"><a href="@jacoco.home.url@">JaCoCo</a> @qualified.bundle.version@</span>
1134  <a href="license.html">Copyright</a> &copy; @copyright.years@ Mountainminds GmbH &amp; Co. KG and Contributors
1135</div>
1136
1137</body>
1138</html>
1139