| Apache Commons BCEL 6.0 RELEASE NOTES |
| |
| The Apache Commons BCEL team is pleased to announce the commons-bcel6-6.0 release! |
| |
| 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. It requires Java 5 or higher to run. |
| |
| |
| Compatibility with 5.2 |
| ---------------------- |
| |
| Binary compatible - No |
| |
| 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 |
| 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 |
| 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. |
| |
| |
| Have fun! |
| -Apache Commons BCEL team |
| |
| Feedback |
| -------- |
| |
| Open source works best when you give feedback: |
| |
| http://commons.apache.org/bcel |
| |
| Please direct all bug reports to JIRA: |
| |
| https://issues.apache.org/jira/browse/BCEL |
| |
| Or subscribe to the commons-user mailing list |
| |
| The Apache Commons Team |