diff options
author | Benedikt Ritter <britter@apache.org> | 2016-06-18 13:36:50 +0000 |
---|---|---|
committer | Benedikt Ritter <britter@apache.org> | 2016-06-18 13:36:50 +0000 |
commit | da12cc07faea1045b8f0fbc46d7b5c1cbdfe7078 (patch) | |
tree | 890eda063d741a9aa3d23e9f9ef6b89f682a9e20 /RELEASE-NOTES.txt | |
parent | 97b832f49f21d24076e6e508fe9dfc3a10920c92 (diff) | |
download | apache-commons-bcel-da12cc07faea1045b8f0fbc46d7b5c1cbdfe7078.tar.gz |
Rewrite RELEASE-NOTES for upcoming release 6.0
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/bcel/trunk@1749018 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'RELEASE-NOTES.txt')
-rw-r--r-- | RELEASE-NOTES.txt | 335 |
1 files changed, 195 insertions, 140 deletions
diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index 0b4bd246..9b12c573 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -1,165 +1,220 @@ - Apache Commons BCEL 6.0 RELEASE NOTES + Apache Commons BCEL + Version 6.0 + RELEASE NOTES -The Apache Commons BCEL team is pleased to announce the commons-bcel6-6.0 release! + +INTRODUCTION: + +The Apache Commons team is pleased to announce the release of +Apache Commons BCEL 6.0! The Byte Code Engineering Library (BCEL) is intended to give users a convenient way to analyze, create, and manipulate compiled .class files. Classes are represented by objects containing all the symbolic information of the given class: methods, fields and byte code instructions. -BCEL 6.0 is a major release supporting the new features introduced in Java 6, 7 -and 8. +Apache Commons BCEL 6.0 is a major release supporting the new features +introduced in Java 6, 7 and 8. It requires Java 7 or higher to run. -Compatibility with 5.2 ----------------------- +COMPATIBILITY with 5.2 +====================== -Binary compatible - No +Binary compatible - not strictly compatible +- The constant interface org.apache.bcel.Constants has been deprecated. Classes + which implemented this interface in 5.2 now use the constants defined in the + org.apache.bcel.Const class. +- The constant interface org.apache.bcel.generic.InstructionConstants has been + deprecated. Classes which implemented this interface in 5.2 now use the + constants defined in the org.apache.bcel.generic.InstructionConsts class. +- Return type of method 'public java.lang.Object getElementAt(int)' in + org.apache.bcel.verifier.VerifierFactoryListModel has been changed to + java.lang.String. +- The BCEL classes do no longer implement java.io.Serializable. Source compatible - Yes, sort of; - - Maven coordinates update: - org.apache.bcel:bcel:5.2 -> org.apache.commons:commons-bcel6:6.0 - - - Rename package imports: - org.apache.bcel -> org.apache.commons.bcel6 - - - The org.apache.commons.bcel6.classfile.Visitor interface has been enhanced with + - The org.apache.bcel.classfile.Visitor interface has been enhanced with additional methods. If you implemented it directly instead of extending the EmptyVisitor class you'll have to implement the new methods. Semantic compatible - Yes, except: - - BCEL handles new attributes such as code annotations that could only + - BCEL 6.0 handles new attributes such as code annotations that could only be processed by implementing a custom AttributeReader in the previous versions. Code relying on this behavior will have to be adjusted since the AttributeReader will no longer be called in these cases. - -------------------------------------------------------------------------------- -Changes in this version include: - - -Fixed Bugs: -o Bug fixes and improvements to InvokeDynamic and BootStrapMethods implementation. - Issue: BCEL-209. Thanks to Mark Roberts. -o Verification error when an invoke references a method defined in superclass. - Issue: BCEL-187. Thanks to Jérôme Leroux. -o Remove ObjectType cache. Issue: BCEL-218. Thanks to chas. -o The verifier now checks if methods with a void return type attempt to return an - object. Issue: BCEL-184. Thanks to Jérôme Leroux. -o The verifier now checks if methods with a void return type attempt to return an - object. Issue: BCEL-184. Thanks to Jérôme Leroux. -o MethodGen.removeLocalVariable now properly unreference the removed variable - from the targetters of the instruction handlers delimiting the scope of - the variable. Issue: BCEL-207. Thanks to Mark Roberts. -o Utility.signatureToString() no longer throws a ClassFormatException on TypeVariables - found in generic signatures. Issue: BCEL-197. Thanks to Mark Roberts. -o Removed the 'index' variable from the LocalVariableGen's hash code. - Issue: BCEL-194. Thanks to Mark Roberts. -o The verifier should not check for run time compatibility of objects assigned to - arrays. Issue: BCEL-193. Thanks to Jérôme Leroux. -o Correct verification of the return value of a method. Issue: BCEL-188. Thanks - to Jérôme Leroux. -o Performance degradation with the UTF8 cache. getInstance no longer uses cache - Issue: BCEL-186. -o org.apache.bcel.util.ClassLoaderRepository.loadClass(String) leaks input streams. - Issue: BCEL-181. -o Mistake in "Peephole optimizer" example at http://commons.apache.org/bcel/manual.html - Issue: BCEL-28. -o BCEL cannot be used as java.system.class.loader Issue: BCEL-74. -o XSLT transforms broken in Turkish Locale. Issue: BCEL-77. -o java.lang.ClassFormatError: LVTT entry for 'local' in class file - org/shiftone/jrat/test/dummy/CrashTestDummy does not match any LVT entry - Issue: BCEL-79. -o ClassParser.parse() throws NullPointerException if class does not exist and - ClassParser(String) constructor is used Issue: BCEL-81. -o ArrayOutOfBoundsException in InstructionFinder Issue: BCEL-85. -o Website: Incorrect URL for source; version 5.2 is not in the bug page - Issue: BCEL-87. -o bcelified method doesn't pass verification Issue: BCEL-88. -o return type not verified by JustIce Issue: BCEL-89. -o @since tag incorrect for Annotation classes in BCEL trunk Issue: BCEL-94. -o InstructionFactory missing % operator for Float, Double Issue: BCEL-95. -o Fields in Annotations and AnnotationEntry are inaccessible to subclasses - Issue: BCEL-96. -o Add support for getResources to ClassPath Issue: BCEL-97. -o Two source files in repository are empty Issue: BCEL-98. -o Maven POM file calls in apache regex but code does not use it Issue: BCEL-99. -o ClassParser throws unintelligible Exception Issue: BCEL-100. -o verifier raises an AssertionViolatedException when done against Java 5 files - with generics/annotations Issue: BCEL-101. -o Verifier fails in pass 2 with "Number of LocalVariableTable attributes of - Code attribute" on static methods. Issue: BCEL-102. -o ParameterAnnotationEntries are read not dumped Issue: BCEL-107. -o RuntimeVisible Annotations duplicated Issue: BCEL-108. -o ARRAYLENGTH incorrectly not StackConsumer Issue: BCEL-112. -o Error in method search() defined in org.apache.bcel.util.InstructionFinder - Issue: BCEL-114. -o Deleting all instructions of a list shows wrong behaviour Issue: BCEL-115. -o Make BCEL JAR OSGi compatible Issue: BCEL-120. -o ArrayIndexOutOfBoundsException thrown from TABLESWITCH.initFromFile - Issue: BCEL-122. -o tableswitch/lookupswitch invalid alignment of 4-byte operands Issue: BCEL-124. -o Incorrect size calculation in InstructionFinder Issue: BCEL-125. -o Class files containing "ParameterAnnotations" are dumped incorrectly - Issue: BCEL-130. -o Class files containing "StackMapTable" attributes (on method code) are dumped - incorrectly Issue: BCEL-131. -o org.apache.bcel.classfile.ClassParser: NullPointerException caused by fileopen - failed Issue: BCEL-132. -o org.apache.bcel.classfile.ClassParser: NullPointerException caused by invalid - filename Issue: BCEL-133. -o ExecutionVisitor doesn't support Class constant type for LDC and LDC_W - Issue: BCEL-134. -o BCELifier issue: BCELFactory fails to handle float and long constants. - Issue: BCEL-135. -o "Invalid method signature: TT;" when using MethodGen for a method having a - generic parameter Issue: BCEL-137. -o FieldInstruction.getFieldSize() doesn't decode Type.getTypeSize() output. - Issue: BCEL-138. -o org.apache.bcel.generic.Instruction.equals(Object) does not follow - Object.equals(Object) rules Issue: BCEL-140. -o Select instructions should implement StackConsumer instead of StackProducer - Issue: BCEL-141. -o Fix CPL License issues with EnclosingMethod.java and - LocalVariableTypeTable.java Issue: BCEL-143. -o Type.getReturnTypeSize() doesn't decode Type.getTypeSize() output. - Issue: BCEL-145. -o SyntheticRepository.loadClass() fails to close the inputStream. - Issue: BCEL-146. -o BCELifier produces incorrect code for methods containing loads of class - literals from constant pool Issue: BCEL-148. -o Code attribute size not updated Issue: BCEL-151. -o Incorrect link for Jasmin assembler language Issue: BCEL-152. -o Examples not present in source or binary downloads Issue: BCEL-153. -o ClassParser.parse() generates NPE if it cannot open the file Issue: BCEL-154. -o InstConstraintVisitor does not handle class constants Issue: BCEL-155. -o Pass3bVerifier crashes on empty methods Issue: BCEL-156. -o LocalVariableGen.getLocalVariable() computes incorrect length Issue: BCEL-159. -o Method does not have a method to access parameter annotations Issue: BCEL-164. -o ClassPath.getResource does not correctly perform URL escaping Issue: BCEL-167. -o ClassParser fails to parse JDK classes in Java 8: ClassFormatException: Invalid - byte tag in constant pool Issue: BCEL-173. -o Verification of interfaces with default methods fails with Java 8 - Issue: BCEL-174. -o When reading the number of parameters in a MethodParameters structure - only read a single byte as per the JVM specification. Issue: BCEL-177. - -Changes: -o Major release of BCEL requires updating package name and maven coordinates. - Issue: BCEL-222. -o Make org.apache.bcel.classfile.ConstantPool.ConstantPool(DataInput) public. - Issue: BCEL-219. Thanks to Maxim Degtyarev. -o Add parent type processing for ClassPath class. Issue: BCEL-76. -o Add support for getResource and getResourceAsStream to ClassPath Issue: BCEL-83. -o Properly parse StackMapTable attributes in Java 6 classfiles Issue: BCEL-92. -o Javadoc overhaul Issue: BCEL-104. -o BCEL is unnecessarily slow Issue: BCEL-119. -o Add support for INVOKEDYNAMIC and MethodHandles Issue: BCEL-157. -o Why using unstable sort at MethodGen.getLocalVariables() ? Issue: BCEL-160. -o Incorporate patch file from Findbugs Issue: BCEL-163. -o Implement the MethodParameters attribute Issue: BCEL-175. +For full information about API changes please see the extended Clirr report: + + http://commons.apache.org/bcel/bcel5-bcel6-clirr-report.html + + +NEW FEATURES: +============= + +o BCEL-272: Add constants for Java 9 class file version 53. + +FIXED BUGS: +=========== + +o BCEL-243: Type.getType() needs to understand TypeVariableSignature(s). +o BCEL-271: FCONST pattern does not include FCONST_2. +o BCEL-264: Add missing Node.accept() implementations (ConstantMethodHandle, + ConstantMethodType, ParameterAnnotationEntry). +o BCEL-221: BCELifier is not working for Java8Example (incomplete). +o BCEL-195: Addition of hashCode() to generic/Instruction.java breaks Targeters. + Never make distinct BranchInstructions compare equal. +o BCEL-261: Select constructor allows partially constructed instance to escape. + Re-ordered code to delay the escape.. +o BCEL-259: Minor doc error in BranchInstruction.java. +o BCEL-260: ClassDumper example duplicates field attribute types. +o BCEL-258: No tests to check the output of dump methods. +o BCEL-257: INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL need to define dump() + methods. +o BCEL-254: Two more methods that would be nice to be public. +o BCEL-245: Type class includes constants that reference subclasses. +o BCEL-253: Pass 3b verifier is too strict. +o BCEL-248: StackMapTable[Entry] should be removed and improvements merged into + StackMap[Entry]. +o BCEL-202: StackMap[Table]Entry.copy() needs to be deep; Improved support for + StackMaps. +o BCEL-251: Pass3aVerifier visitANEWARRAY() does not allow 255 array dimensions. +o BCEL-249: Check for max Short seems wrong. +o BCEL-208: Need to check for an empty InstructionList. +o BCEL-217: long type instructions are not searched by InstructionFinder using + regular expression. +o BCEL-239: Interfaces should not be used to define constants. +o BCEL-234: Code must not swallow Throwable. +o BCEL-209: Bug fixes and improvements to InvokeDynamic and BootStrapMethods + implementation. Thanks to Mark Roberts. +o BCEL-187: Verification error when an invoke references a method defined in + superclass. Thanks to Jérôme Leroux. +o BCEL-218: Remove ObjectType cache. Thanks to chas. +o BCEL-184: The verifier now checks if methods with a void return type attempt + to return an object. Thanks to Jérôme Leroux. +o BCEL-184: The verifier now checks if methods with a void return type attempt + to return an object. Thanks to Jérôme Leroux. +o BCEL-207: MethodGen.removeLocalVariable now properly unreference the removed + variable from the targetters of the instruction handlers delimiting + the scope of the variable. Thanks to Mark Roberts. +o BCEL-197: Utility.signatureToString() no longer throws a ClassFormatException + on TypeVariables found in generic signatures. Thanks to + Mark Roberts. +o BCEL-194: Removed the 'index' variable from the LocalVariableGen's hash code. + Thanks to Mark Roberts. +o BCEL-193: The verifier should not check for run time compatibility of objects + assigned to arrays. Thanks to Jérôme Leroux. +o BCEL-188: Correct verification of the return value of a method. Thanks + to Jérôme Leroux. +o BCEL-186: Performance degradation with the UTF8 cache. getInstance no longer + uses cache. +o BCEL-181: org.apache.bcel.util.ClassLoaderRepository.loadClass(String) leaks + input streams. +o BCEL-28: Mistake in "Peephole optimizer" example + at http://commons.apache.org/bcel/manual.html +o BCEL-74: BCEL cannot be used as java.system.class.loader. +o BCEL-77: XSLT transforms broken in Turkish Locale. +o BCEL-79: java.lang.ClassFormatError: LVTT entry for 'local' in class file + org/shiftone/jrat/test/dummy/CrashTestDummy does not match any LVT + entry +o BCEL-81: ClassParser.parse() throws NullPointerException if class does not + exist and ClassParser(String) constructor is used. +o BCEL-85: ArrayOutOfBoundsException in InstructionFinder. +o BCEL-87: Website: Incorrect URL for source; version 5.2 is not in the bug + page +o BCEL-88: bcelified method doesn't pass verification. +o BCEL-89: return type not verified by JustIce. +o BCEL-94: @since tag incorrect for Annotation classes in BCEL trunk. +o BCEL-95: InstructionFactory missing % operator for Float, Double. +o BCEL-96: Fields in Annotations and AnnotationEntry are inaccessible to + subclasses +o BCEL-97: Add support for getResources to ClassPath. +o BCEL-98: Two source files in repository are empty. +o BCEL-99: Maven POM file calls in apache regex but code does not use it. +o BCEL-100: ClassParser throws unintelligible Exception. +o BCEL-101: verifier raises an AssertionViolatedException when done against + Java 5 files with generics/annotations. +o BCEL-102: Verifier fails in pass 2 with "Number of LocalVariableTable + attributes of Code attribute" on static methods. +o BCEL-107: ParameterAnnotationEntries are read not dumped. +o BCEL-108: RuntimeVisible Annotations duplicated. +o BCEL-112: ARRAYLENGTH incorrectly not StackConsumer. +o BCEL-114: Error in method search() defined in + org.apache.bcel.util.InstructionFinder +o BCEL-115: Deleting all instructions of a list shows wrong behaviour. +o BCEL-120: Make BCEL JAR OSGi compatible. +o BCEL-122: ArrayIndexOutOfBoundsException thrown from TABLESWITCH.initFromFile. +o BCEL-124: tableswitch/lookupswitch invalid alignment of 4-byte operands. +o BCEL-125: Incorrect size calculation in InstructionFinder. +o BCEL-130: Class files containing "ParameterAnnotations" are dumped + incorrectly. +o BCEL-131: Class files containing "StackMapTable" attributes (on method code) + are dumped incorrectly. +o BCEL-132: org.apache.bcel.classfile.ClassParser: NullPointerException caused + by fileopen failed. +o BCEL-133: org.apache.bcel.classfile.ClassParser: NullPointerException caused + by invalid filename. +o BCEL-134: ExecutionVisitor doesn't support Class constant type for LDC and + LDC_W. +o BCEL-135: BCELifier issue: BCELFactory fails to handle float and long + constants. +o BCEL-137: "Invalid method signature: TT;" when using MethodGen for a method + having a generic parameter. +o BCEL-138: FieldInstruction.getFieldSize() doesn't decode Type.getTypeSize() + output. +o BCEL-140: org.apache.bcel.generic.Instruction.equals(Object) does not follow + Object.equals(Object) rules. +o BCEL-141: Select instructions should implement StackConsumer instead of + StackProducer. +o BCEL-143: Fix CPL License issues with EnclosingMethod.java and + LocalVariableTypeTable.java. +o BCEL-145: Type.getReturnTypeSize() doesn't decode Type.getTypeSize() output. +o BCEL-146: SyntheticRepository.loadClass() fails to close the inputStream. +o BCEL-148: BCELifier produces incorrect code for methods containing loads of + class literals from constant pool. +o BCEL-151: Code attribute size not updated. +o BCEL-152: Incorrect link for Jasmin assembler language. +o BCEL-153: Examples not present in source or binary downloads. +o BCEL-154: ClassParser.parse() generates NPE if it cannot open the file. +o BCEL-155: InstConstraintVisitor does not handle class constants. +o BCEL-156: Pass3bVerifier crashes on empty methods. +o BCEL-159: LocalVariableGen.getLocalVariable() computes incorrect length. +o BCEL-164: Method does not have a method to access parameter annotations. +o BCEL-167: ClassPath.getResource does not correctly perform URL escaping. +o BCEL-173: ClassParser fails to parse JDK classes in Java 8: + ClassFormatException: Invalid byte tag in constant pool. +o BCEL-174: Verification of interfaces with default methods fails with Java 8. +o BCEL-177: When reading the number of parameters in a MethodParameters + structure only read a single byte as per the JVM specification. + +CHANGES: +======== + +o BCEL-211: Some additional clone methods should be public. +o BCEL-127: Document that Instruction Factory returns singleton instances. +o BCEL-198: better support for clone/copy methods. +o BCEL-201: modify several toString methods to make output similar to "javap". +o BCEL-205: add javadoc comments to LineNumber.java and LineNumberTable.java. +o BCEL-212: Inconsistent toString() results. +o BCEL-244: Update Java requirement from 5 to 7. +o BCEL-219: Make org.apache.bcel.classfile.ConstantPool.ConstantPool(DataInput) + public. Thanks to Maxim Degtyarev. +o BCEL-76: Add parent type processing for ClassPath class. +o BCEL-83: Add support for getResource and getResourceAsStream to ClassPath. +o BCEL-92: Properly parse StackMapTable attributes in Java 6 classfiles. +o BCEL-104: Javadoc overhaul. +o BCEL-119: BCEL is unnecessarily slow. +o BCEL-157: Add support for INVOKEDYNAMIC and MethodHandles. +o BCEL-160: Why using unstable sort at MethodGen.getLocalVariables() ? +o BCEL-163: Incorporate patch file from Findbugs. +o BCEL-175: Implement the MethodParameters attribute. + +REMOVED: +======== +o BCEL-242: Remove Serializable. +o BCEL-110: Problem with JAXB if the bcel classloader is used; remove the broken + ClassLoader class. Have fun! |