1<?xml version="1.0" encoding="UTF-8"?>
2<!--
3
4   Licensed to the Apache Software Foundation (ASF) under one or more
5   contributor license agreements.  See the NOTICE file distributed with
6   this work for additional information regarding copyright ownership.
7   The ASF licenses this file to You under the Apache License, Version 2.0
8   (the "License"); you may not use this file except in compliance with
9   the License.  You may obtain a copy of the License at
10
11       http://www.apache.org/licenses/LICENSE-2.0
12
13   Unless required by applicable law or agreed to in writing, software
14   distributed under the License is distributed on an "AS IS" BASIS,
15   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16   See the License for the specific language governing permissions and
17   limitations under the License.
18
19-->
20<!--
21This file is also used by the maven-changes-plugin to generate the release notes.
22Useful ways of finding items to add to this file are:
23
241.  Add items when you fix a bug or add a feature (this makes the
25release process easy :-).
26
272.  Do a JIRA search for tickets closed since the previous release.
28
293.  Use the report generated by the maven-changelog-plugin to see all
30SVN commits. TBA how to use this with SVN.
31
32To generate the release notes from this file:
33
34mvn changes:announcement-generate -Prelease-notes [-Dchanges.version=nnn]
35
36then tweak the formatting if necessary
37and commit
38
39The <action> type attribute can be add,update,fix,remove.
40-->
41
42<document>
43  <properties>
44    <title>Changes</title>
45    <author email="dev@commons.apache.org">Apache Commons developers</author>
46  </properties>
47
48  <!-- NOTE:
49  The description below is specially formatted so as to improve the layout of the generated release notes:
50  The parsing process removes all line feeds, replacing them with a single space.
51  The Velocity template in resources/templates has been enhanced to replace pairs of adjacent spaces
52  with a new-line in the release notes. (These spaces are ignored when displaying HTML).
53  If the output is not quite correct, check for invisible trailing spaces!
54
55  N.B. The release notes template groups actions by type, and only extracts data for the current release.
56  The changes report outputs actions in the order they appear in this file.
57
58  To regenerate the release notes:
59  mvn changes:announcement-generate -Prelease-notes [-Dchanges.version=nnn]
60
61  Defining changes.version allows one to create the RN without first removing the SNAPSHOT suffix.
62   -->
63
64  <body>
65    <release version="6.2" date="2017-12-DD" description="Experimental Java 9 Support">
66      <action issue="BCEL-294" type="fix" dev="britter" due-to="Mark Roberts">Incorrect comment in StackMap.java</action>
67      <action issue="BCEL-296" type="fix" dev="ggregory" due-to="Mark Roberts">Incorrect comment in several classes.</action>
68      <action issue="BCEL-295" type="fix" dev="ggregory" due-to="Mark Roberts">Fix local variable live range length; add test case.</action>
69      <action issue="BCEL-300" type="fix" dev="ggregory">org.apache.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 19.</action>
70      <action issue="BCEL-301" type="fix" dev="ggregory">org.apache.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 20.</action>
71    </release>
72
73    <release version="6.1" date="2017-09-14" description="Experimental Java 9 Support">
74      <action issue="BCEL-293" type="add" dev="britter">Add Automatic-Module-Name MANIFEST entry for Java 9 compatibility</action>
75      <action issue="BCEL-292" type="add" dev="markt">Add minimal Java 9 support</action>
76      <action issue="BCEL-286" type="fix" dev="britter" due-to="Mark Roberts">Utility.signatureToString fails if a method has multiple type arguments</action>
77      <action issue="BCEL-287" type="fix" dev="britter" due-to="Mark Roberts">IINC does not handle -128 properly</action>
78      <action issue="BCEL-283" type="fix" dev="britter" due-to="Mark Roberts">Support for StackMap should be different from StackMapTable</action>
79      <action issue="BCEL-289" type="fix" dev="kinow">Crash when parsing constructor of inner classes with parameters annotated</action>
80      <action issue="BCEL-276" type="fix" dev="britter" due-to="Sam Yoon, Mark Roberts">LocalVariableTypeTable is not updated.</action>
81      <action issue="BCEL-277" type="fix" dev="britter" due-to="Sam Yoon">Resolving the String representation of a constant throws NoSuchElementException in case of CONSTANT_NameAndType constant.</action>
82    </release>
83
84    <release version="6.0" date="2016-07-10" description="Apache Commons BCEL 6.0 is a major release supporting the new features
85 introduced in Java 6, 7 and 8.
86
87
88 It requires Java 7 or higher to run.
89
90
91COMPATIBILITY with 5.2
92 ======================
93
94
95 Binary compatible - not strictly compatible
96 - The constant interface org.apache.bcel.Constants has been deprecated. Classes
97  which implemented this interface in 5.2 now use the constants defined in the
98  org.apache.bcel.Const class.
99 - The constant interface org.apache.bcel.generic.InstructionConstants has been
100  deprecated. Classes which implemented this interface in 5.2 now use the
101  constants defined in the org.apache.bcel.generic.InstructionConsts class.
102 - Return type of method 'public java.lang.Object getElementAt(int)' in
103  org.apache.bcel.verifier.VerifierFactoryListModel has been changed to
104  java.lang.String.
105 - The BCEL classes do no longer implement java.io.Serializable.
106
107
108
109Source compatible - Yes, sort of;
110  - The org.apache.bcel.classfile.Visitor interface has been enhanced with
111  additional methods. If you implemented it directly instead of extending
112  the EmptyVisitor class you'll have to implement the new methods.
113  - The org.apache.bcel.generic.Visitor interface has been enhanced with an
114  additional method. If you implemented it directly instead of extending
115  the EmptyVisitor class you'll have to implement the new methods.
116
117
118 Semantic compatible - Yes, except:
119  - BCEL 6.0 handles new attributes such as code annotations that could only
120  be processed by implementing a custom AttributeReader in the previous
121  versions. Code relying on this behavior will have to be adjusted since
122  the AttributeReader will no longer be called in these cases.
123
124
125
126For full information about API changes please see the extended Clirr report:
127
128    http://commons.apache.org/bcel/clirr-report.html">
129      <action issue="BCEL-262" type="update" dev="britter" due-to="Mark Roberts">InvokeInstruction.getClassName(ConstantPoolGen)
130                                          should not throw an exception when it detects an array.</action>
131      <action issue="BCEL-237" type="fix" dev="sebb">non-empty final arrays should be private as they are mutable.</action>
132      <action issue="BCEL-230" type="update" dev="britter">Document the Java platform requirement clearly and early.</action>
133      <action issue="BCEL-243" type="fix">Type.getType() needs to understand TypeVariableSignature(s).</action>
134      <action issue="BCEL-272" type="add">Add constants for Java 9 class file version 53.</action>
135      <action issue="BCEL-271" type="fix">FCONST pattern does not include FCONST_2.</action>
136      <action issue="BCEL-264" type="fix">Add missing Node.accept() implementations (ConstantMethodHandle,
137                                          ConstantMethodType, ParameterAnnotationEntry).</action>
138      <action issue="BCEL-221" type="fix">BCELifier is not working for Java8Example (incomplete).</action>
139      <action issue="BCEL-195" type="fix">Addition of hashCode() to generic/Instruction.java breaks Targeters.
140                                          Never make distinct BranchInstructions compare equal.</action>
141      <action issue="BCEL-261" type="fix">Select constructor allows partially constructed instance to escape.
142                                          Re-ordered code to delay the escape.</action>
143      <action issue="BCEL-259" type="fix">Minor doc error in BranchInstruction.java.</action>
144      <action issue="BCEL-260" type="fix">ClassDumper example duplicates field attribute types.</action>
145      <action issue="BCEL-258" type="fix">No tests to check the output of dump methods.</action>
146      <action issue="BCEL-257" type="fix">INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL need to define dump()
147                                          methods.</action>
148      <action issue="BCEL-254" type="fix">Two more methods that would be nice to be public.</action>
149      <action issue="BCEL-245" type="fix">Type class includes constants that reference subclasses.</action>
150      <action issue="BCEL-253" type="fix">Pass 3b verifier is too strict.</action>
151      <action issue="BCEL-248" type="fix">StackMapTable[Entry] should be removed and improvements merged into
152                                          StackMap[Entry].</action>
153      <action issue="BCEL-202" type="fix">StackMap[Table]Entry.copy() needs to be deep; Improved support for
154                                          StackMaps.</action>
155      <action issue="BCEL-251" type="fix">Pass3aVerifier visitANEWARRAY() does not allow 255 array dimensions.</action>
156      <action issue="BCEL-211" type="update">Some additional clone methods should be public.</action>
157      <action issue="BCEL-249" type="fix">Check for max Short seems wrong.</action>
158      <action issue="BCEL-127" type="update">Document that Instruction Factory returns singleton instances.</action>
159      <action issue="BCEL-198" type="update">better support for clone/copy methods.</action>
160      <action issue="BCEL-242" type="remove">Remove Serializable.</action>
161      <action issue="BCEL-110" type="remove">Problem with JAXB if the bcel classloader is used; remove the broken
162      ClassLoader class.</action>
163      <action issue="BCEL-201" type="update">modify several toString methods to make output similar to "javap".</action>
164      <action issue="BCEL-205" type="update">add javadoc comments to LineNumber.java and LineNumberTable.java.</action>
165      <action issue="BCEL-208" type="fix">Need to check for an empty InstructionList.</action>
166      <action issue="BCEL-212" type="update">Inconsistent toString() results.</action>
167      <action issue="BCEL-217" type="fix">long type instructions are not searched by InstructionFinder using
168                                          regular expression.</action>
169      <action issue="BCEL-244" type="update" dev="ggregory">Update Java requirement from 5 to 7.</action>
170      <action issue="BCEL-239" type="fix">Interfaces should not be used to define constants.</action>
171      <action issue="BCEL-234" type="fix">Code must not swallow Throwable.</action>
172      <action issue="BCEL-219" type="update" due-to="Maxim Degtyarev">
173        Make org.apache.bcel.classfile.ConstantPool.ConstantPool(DataInput)
174        public.
175      </action>
176      <action issue="BCEL-209" type="fix" due-to="Mark Roberts">
177        Bug fixes and improvements to InvokeDynamic and BootStrapMethods
178        implementation.
179      </action>
180      <action issue="BCEL-187" type="fix" due-to="Jérôme Leroux">
181        Verification error when an invoke references a method defined in
182        superclass.
183      </action>
184      <action issue="BCEL-218" type="fix" due-to="chas">
185        Remove ObjectType cache.
186      </action>
187      <action issue="BCEL-184" type="fix" due-to="Jérôme Leroux">
188        The verifier now checks if methods with a void return type attempt
189        to return an object.
190      </action>
191      <action issue="BCEL-207" type="fix" due-to="Mark Roberts">
192        MethodGen.removeLocalVariable now properly unreference the removed
193        variable from the targetters of the instruction handlers delimiting
194        the scope of the variable.
195      </action>
196      <action issue="BCEL-197" type="fix" due-to="Mark Roberts">
197        Utility.signatureToString() no longer throws a ClassFormatException
198        on TypeVariables found in generic signatures.
199      </action>
200      <action issue="BCEL-194" type="fix" due-to="Mark Roberts">
201        Removed the 'index' variable from the LocalVariableGen's hash code.
202      </action>
203      <action issue="BCEL-193" type="fix" dev="markt" due-to="Jérôme Leroux">
204        The verifier should not check for run time compatibility of objects
205        assigned to arrays.
206      </action>
207      <action issue="BCEL-188" type="fix" dev="markt" due-to="Jérôme Leroux">
208        Correct verification of the return value of a method.
209      </action>
210      <action issue="BCEL-186" type="fix" dev="sebb">
211        Performance degradation with the UTF8 cache. getInstance no longer
212        uses cache.
213      </action>
214      <action issue="BCEL-181" type="fix" dev="ggregory">
215        org.apache.bcel.util.ClassLoaderRepository.loadClass(String) leaks
216        input streams.
217      </action>
218      <action issue="BCEL-76" type="update">
219        Add parent type processing for ClassPath class.
220      </action>
221      <action issue="BCEL-83" type="update">
222        Add support for getResource and getResourceAsStream to ClassPath.
223      </action>
224      <action issue="BCEL-92" type="update">
225        Properly parse StackMapTable attributes in Java 6 classfiles.
226      </action>
227      <action issue="BCEL-104" type="update">
228        Javadoc overhaul.
229      </action>
230      <action issue="BCEL-119" type="update">
231        BCEL is unnecessarily slow.
232      </action>
233      <action issue="BCEL-157" type="update">
234        Add support for INVOKEDYNAMIC and MethodHandles.
235      </action>
236      <action issue="BCEL-160" type="update" dev="sebb">
237        Why using unstable sort at MethodGen.getLocalVariables() ?
238      </action>
239      <action issue="BCEL-163" type="update">
240        Incorporate patch file from Findbugs.
241      </action>
242      <action issue="BCEL-175" type="update">
243        Implement the MethodParameters attribute.
244      </action>
245      <action issue="BCEL-28" type="fix">
246        Mistake in "Peephole optimizer" example
247        at http://commons.apache.org/bcel/manual.html
248      </action>
249      <action issue="BCEL-74" type="fix">
250        BCEL cannot be used as java.system.class.loader.
251      </action>
252      <action issue="BCEL-77" type="fix">
253        XSLT transforms broken in Turkish Locale.
254      </action>
255      <action issue="BCEL-79" type="fix">
256        java.lang.ClassFormatError: LVTT entry for 'local' in class file
257        org/shiftone/jrat/test/dummy/CrashTestDummy does not match any LVT
258        entry
259      </action>
260      <action issue="BCEL-81" type="fix">
261        ClassParser.parse() throws NullPointerException if class does not
262        exist and ClassParser(String) constructor is used.
263      </action>
264      <action issue="BCEL-85" type="fix">
265        ArrayOutOfBoundsException in InstructionFinder.
266      </action>
267      <action issue="BCEL-87" type="fix">
268        Website: Incorrect URL for source; version 5.2 is not in the bug
269        page
270      </action>
271      <action issue="BCEL-88" type="fix">
272        bcelified method doesn't pass verification.
273      </action>
274      <action issue="BCEL-89" type="fix">
275        return type not verified by JustIce.
276      </action>
277      <action issue="BCEL-94" type="fix">
278        @since tag incorrect for Annotation classes in BCEL trunk.
279      </action>
280      <action issue="BCEL-95" type="fix">
281        InstructionFactory missing % operator for Float, Double.
282      </action>
283      <action issue="BCEL-96" type="fix">
284        Fields in Annotations and AnnotationEntry are inaccessible to
285        subclasses
286      </action>
287      <action issue="BCEL-97" type="fix">
288        Add support for getResources to ClassPath.
289      </action>
290      <action issue="BCEL-98" type="fix">
291        Two source files in repository are empty.
292      </action>
293      <action issue="BCEL-99" type="fix">
294        Maven POM file calls in apache regex but code does not use it.
295      </action>
296      <action issue="BCEL-100" type="fix">
297        ClassParser throws unintelligible Exception.
298      </action>
299      <action issue="BCEL-101" type="fix">
300        verifier raises an AssertionViolatedException when done against
301        Java 5 files with generics/annotations.
302      </action>
303      <action issue="BCEL-102" type="fix">
304        Verifier fails in pass 2 with "Number of LocalVariableTable
305        attributes of Code attribute" on static methods.
306      </action>
307      <action issue="BCEL-107" type="fix">
308        ParameterAnnotationEntries are read not dumped.
309      </action>
310      <action issue="BCEL-108" type="fix">
311        RuntimeVisible Annotations duplicated.
312      </action>
313      <action issue="BCEL-112" type="fix">
314        ARRAYLENGTH incorrectly not StackConsumer.
315      </action>
316      <action issue="BCEL-114" type="fix">
317        Error in method search() defined in
318        org.apache.bcel.util.InstructionFinder
319      </action>
320      <action issue="BCEL-115" type="fix">
321        Deleting all instructions of a list shows wrong behaviour.
322      </action>
323      <action issue="BCEL-120" type="fix">
324        Make BCEL JAR OSGi compatible.
325      </action>
326      <action issue="BCEL-122" type="fix">
327        ArrayIndexOutOfBoundsException thrown from TABLESWITCH.initFromFile.
328      </action>
329      <action issue="BCEL-124" type="fix">
330        tableswitch/lookupswitch invalid alignment of 4-byte operands.
331      </action>
332      <action issue="BCEL-125" type="fix">
333        Incorrect size calculation in InstructionFinder.
334      </action>
335      <action issue="BCEL-130" type="fix">
336        Class files containing "ParameterAnnotations" are dumped
337        incorrectly.
338      </action>
339      <action issue="BCEL-131" type="fix">
340        Class files containing "StackMapTable" attributes (on method code)
341        are dumped incorrectly.
342      </action>
343      <action issue="BCEL-132" type="fix">
344        org.apache.bcel.classfile.ClassParser: NullPointerException caused
345        by fileopen failed.
346      </action>
347      <action issue="BCEL-133" type="fix">
348        org.apache.bcel.classfile.ClassParser: NullPointerException caused
349        by invalid filename.
350      </action>
351      <action issue="BCEL-134" type="fix">
352        ExecutionVisitor doesn't support Class constant type for LDC and
353        LDC_W.
354      </action>
355      <action issue="BCEL-135" type="fix">
356        BCELifier issue: BCELFactory fails to handle float and long
357        constants.
358      </action>
359      <action issue="BCEL-137" type="fix">
360        "Invalid method signature: TT;" when using MethodGen for a method
361        having a generic parameter.
362      </action>
363      <action issue="BCEL-138" type="fix">
364        FieldInstruction.getFieldSize() doesn't decode Type.getTypeSize()
365        output.
366      </action>
367      <action issue="BCEL-140" type="fix">
368        org.apache.bcel.generic.Instruction.equals(Object) does not follow
369        Object.equals(Object) rules.
370      </action>
371      <action issue="BCEL-141" type="fix">
372        Select instructions should implement StackConsumer instead of
373        StackProducer.
374      </action>
375      <action issue="BCEL-143" type="fix">
376        Fix CPL License issues with EnclosingMethod.java and
377        LocalVariableTypeTable.java.
378      </action>
379      <action issue="BCEL-145" type="fix">
380        Type.getReturnTypeSize() doesn't decode Type.getTypeSize() output.
381      </action>
382      <action issue="BCEL-146" type="fix">
383        SyntheticRepository.loadClass() fails to close the inputStream.
384      </action>
385      <action issue="BCEL-148" type="fix">
386        BCELifier produces incorrect code for methods containing loads of
387        class literals from constant pool.
388      </action>
389      <action issue="BCEL-151" type="fix">
390        Code attribute size not updated.
391      </action>
392      <action issue="BCEL-152" type="fix">
393        Incorrect link for Jasmin assembler language.
394      </action>
395      <action issue="BCEL-153" type="fix" dev="sebb">
396        Examples not present in source or binary downloads.
397      </action>
398      <action issue="BCEL-154" type="fix">
399        ClassParser.parse() generates NPE if it cannot open the file.
400      </action>
401      <action issue="BCEL-155" type="fix">
402        InstConstraintVisitor does not handle class constants.
403      </action>
404      <action issue="BCEL-156" type="fix">
405        Pass3bVerifier crashes on empty methods.
406      </action>
407      <action issue="BCEL-159" type="fix">
408        LocalVariableGen.getLocalVariable() computes incorrect length.
409      </action>
410      <action issue="BCEL-164" type="fix">
411        Method does not have a method to access parameter annotations.
412      </action>
413      <action issue="BCEL-167" type="fix">
414        ClassPath.getResource does not correctly perform URL escaping.
415      </action>
416      <action issue="BCEL-173" type="fix">
417        ClassParser fails to parse JDK classes in Java 8:
418        ClassFormatException: Invalid byte tag in constant pool.
419      </action>
420      <action issue="BCEL-174" type="fix">
421        Verification of interfaces with default methods fails with Java 8.
422      </action>
423      <action issue="BCEL-177" type="fix" dev="markt">
424        When reading the number of parameters in a MethodParameters
425        structure only read a single byte as per the JVM specification.
426      </action>
427    </release>
428  </body>
429</document>
430