blob: e5838a9ac4caa561b7ebed10905d274e6f0a5d10 [file] [log] [blame]
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