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