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