              Apache Commons BCEL 6.0 RELEASE NOTES

The Apache Commons team is pleased to announce the release of 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. It requires Java 5 or higher to run.


Compatibility with 5.2
----------------------

Binary compatible - Yes

Source compatible - Yes, except for org.apache.bcel.classfile.Visitor (see below)

Semantic compatible - Yes

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.


Enhancements from 5.2
---------------------

[BCEL-76]  Add parent type processing for ClassPath class.
[BCEL-83]  Add support for getResource and getResourceAsStream to ClassPath
[BCEL-92]  Properly parse StackMapTable attributes in Java 6 classfiles
[BCEL-104] Javadoc overhaul
[BCEL-119] BCEL is unnecessarily slow
[BCEL-157] Add support for INVOKEDYNAMIC and MethodHandles 
[BCEL-160] Why using unstable sort at MethodGen.getLocalVariables() ?
[BCEL-163] Incorporate patch file from Findbugs
[BCEL-175] Implement the MethodParameters attribute


Bug fixes from 5.2
------------------

[BCEL-28]  Mistake in "Peephole optimizer" example at http://commons.apache.org/bcel/manual.html
[BCEL-74]  BCEL cannot be used as java.system.class.loader
[BCEL-77]  XSLT transforms broken in Turkish Locale.
[BCEL-79]  java.lang.ClassFormatError: LVTT entry for 'local' in class file org/shiftone/jrat/test/dummy/CrashTestDummy does not match any LVT entry
[BCEL-81]  ClassParser.parse() throws NullPointerException if class does not exist and ClassParser(String) constructor is used
[BCEL-85]  ArrayOutOfBoundsException in InstructionFinder
[BCEL-87]  Website: Incorrect URL for source; version 5.2 is not in the bug page
[BCEL-88]  bcelified method doesn't pass verification
[BCEL-89]  return type not verified by JustIce
[BCEL-94]  @since tag incorrect for Annotation classes in BCEL trunk
[BCEL-95]  InstructionFactory missing % operator for Float, Double
[BCEL-96]  Fields in Annotations and AnnotationEntry are inaccessible to subclasses
[BCEL-97]  Add support for getResources to ClassPath
[BCEL-98]  Two source files in repository are empty
[BCEL-99]  Maven POM file calls in apache regex but code does not use it
[BCEL-100] ClassParser throws unintelligible Exception
[BCEL-101] verifier raises ....AssertionViolatedException when done against Java5 files with generics/annotations
[BCEL-102] Verifier fails in pass 2 with "Number of LocalVariableTable attributes of Code attribute" on static methods.
[BCEL-107] ParameterAnnotationEntries are read not dumped
[BCEL-108] RuntimeVisible Annotations duplicated
[BCEL-112] ARRAYLENGTH incorrectly not StackConsumer
[BCEL-114] Error in method search() defined in org.apache.bcel.util.InstructionFinder
[BCEL-115] Deleting all instructions of a list shows wrong behaviour
[BCEL-120] Make BCEL JAR OSGi compatible
[BCEL-122] ArrayIndexOutOfBoundsException thrown from TABLESWITCH.initFromFile
[BCEL-124] tableswitch/lookupswitch invalid alignment of 4-byte operands
[BCEL-125] Incorrect size calculation in InstructionFinder
[BCEL-130] Class files containing "ParameterAnnotations" are dumped incorrectly
[BCEL-131] Class files containing "StackMapTable" attributes (on method code) are dumped incorrectly
[BCEL-132] org.apache.bcel.classfile.ClassParser: NullPointerException caused by fileopen failed
[BCEL-133] org.apache.bcel.classfile.ClassParser: NullPointerException caused by invalid filename
[BCEL-134] ExecutionVisitor doesn't support Class constant type for LDC and LDC_W
[BCEL-135] BCELifier issue: BCELFactory fails to handle float and long constants
[BCEL-137] "Invalid method signature: TT;" when using MethodGen for a method having a generic parameter
[BCEL-138] FieldInstruction.getFieldSize() doesn't decode Type.getTypeSize() output
[BCEL-140] org.apache.bcel.generic.Instruction.equals(Object) does not follow Object.equals(Object) rules
[BCEL-141] Select instructions should implement StackConsumer instead of StackProducer
[BCEL-143] Fix CPL License issues with EnclosingMethod.java and LocalVariableTypeTable.java
[BCEL-145] Type.getReturnTypeSize() doesn't decode Type.getTypeSize() output
[BCEL-146] SyntheticRepository.loadClass() fails to close the inputStream
[BCEL-148] BCELifier produces incorrect code for methods containing loads of class literals from constant pool
[BCEL-151] Code attribute size not updated
[BCEL-152] Incorrect link for Jasmin assembler language
[BCEL-153] Examples not present in source or binary downloads
[BCEL-154] ClassParser.parse() generates NPE if it cannot open the file
[BCEL-155] InstConstraintVisitor does not handle class constants
[BCEL-156] Pass3bVerifier crashes on empty methods
[BCEL-159] LocalVariableGen.getLocalVariable() computes incorrect length
[BCEL-164] Method does not have a method to access parameter annotations
[BCEL-167] ClassPath.getResource does not correctly perform URL escaping
[BCEL-173] ClassParser fails to parse JDK classes in Java 8: ClassFormatException: Invalid byte tag in constant pool
[BCEL-174] Verification of interfaces with default methods fails with Java 8
[BCEL-177] MethodParameters should read 1 byte not two for parameter count

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
