182 lines
8.9 KiB
Plaintext
182 lines
8.9 KiB
Plaintext
|
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 7 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
|