| Apache Commons BCEL |
| Version 6.2 |
| RELEASE NOTES |
| |
| |
| INTRODUCTION: |
| |
| The Apache Commons BCEL team is pleased to announce the release of |
| Apache Commons BCEL 6.2! |
| |
| 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. |
| |
| Experimental Java 9 Support |
| |
| FIXED BUGS: |
| =========== |
| |
| o BCEL-294: Incorrect comment in StackMap.java Thanks to Mark Roberts. |
| o BCEL-296: Incorrect comment in several classes. Thanks to Mark Roberts. |
| o BCEL-295: Fix local variable live range length; add test case. Thanks to Mark Roberts. |
| o BCEL-300: org.apache.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 19. |
| o BCEL-301: org.apache.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 20. |
| |
| |
| 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 |
| |
| ----------------------------------------------------------------------------- |
| |
| Apache Commons BCEL |
| Version 6.1 |
| RELEASE NOTES |
| |
| |
| INTRODUCTION: |
| |
| The Apache Commons BCEL team is pleased to announce the release of |
| Apache Commons BCEL 6.1! |
| |
| 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. |
| |
| Apache Commons BCEL 6.1 is a bugfix and feature release supporting bringing |
| experimental support for Java 9. |
| |
| It requires Java 7 or higher to run. |
| |
| |
| COMPATIBILITY with 6.1 |
| ====================== |
| |
| Binary compatible - Yes |
| |
| Source compatible - Yes, sort of; |
| - 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. |
| - The org.apache.bcel.generic.Visitor interface has been enhanced with an |
| additional method. If you implemented it directly instead of extending |
| the EmptyVisitor class you'll have to implement the new methods. |
| |
| Semantic compatible - Yes |
| |
| For full information about API changes please see the extended Clirr report: |
| |
| |
| http://commons.apache.org/bcel/clirr-report.html |
| |
| |
| COMPATIBILITY with Java 9 |
| ========================= |
| |
| The MANIFEST.MF now contains an additional entry: |
| |
| Automatic-Module-Name: org.apache.bcel |
| |
| This should make it possible to use Commons BCEL 6.1 as a module in the Java 9 |
| module system. For more information see the corresponding issue and the |
| referenced mailing list discussions: |
| |
| https://issues.apache.org/jira/browse/BCEL-293 |
| |
| The build currently on Java 9 fails with test failures related to Locales. We |
| are still working on this. For more information see: |
| |
| https://issues.apache.org/jira/browse/BCEL-275 |
| |
| |
| NEW FEATURES: |
| ============= |
| |
| o BCEL-293: Add Automatic-Module-Name MANIFEST entry for Java 9 compatibility. |
| o BCEL-292: Add minimal Java 9 support. |
| |
| FIXED BUGS: |
| =========== |
| |
| o BCEL-286: Utility.signatureToString fails if a method has multiple type |
| arguments. Thanks to Mark Roberts. |
| o BCEL-287: IINC does not handle -128 properly. Thanks to Mark Roberts. |
| o BCEL-283: Support for StackMap should be different from StackMapTable. |
| Thanks to Mark Roberts. |
| o BCEL-289: Crash when parsing constructor of inner classes with parameters |
| annotated. |
| o BCEL-276: LocalVariableTypeTable is not updated. |
| Thanks to Sam Yoon, Mark Roberts. |
| o BCEL-277: Resolving the String representation of a constant throws |
| NoSuchElementException in case of CONSTANT_NameAndType constant. |
| Thanks to Sam Yoon. |
| |
| |
| Have fun! |
| -Apache Commons BCEL team |
| |
| ----------------------------------------------------------------------------- |
| |
| Release Notes for 6.0 |
| |
| |
| INTRODUCTION: |
| |
| The Apache Commons BCEL team is pleased to announce the release of |
| Apache Commons 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. |
| |
| Apache Commons 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 - not strictly compatible |
| - The constant interface org.apache.bcel.Constants has been deprecated. Classes |
| which implemented this interface in 5.2 now use the constants defined in the |
| org.apache.bcel.Const class. |
| - The constant interface org.apache.bcel.generic.InstructionConstants has been |
| deprecated. Classes which implemented this interface in 5.2 now use the |
| constants defined in the org.apache.bcel.generic.InstructionConsts class. |
| - Return type of method 'public java.lang.Object getElementAt(int)' in |
| org.apache.bcel.verifier.VerifierFactoryListModel has been changed to |
| java.lang.String. |
| - The BCEL classes do no longer implement java.io.Serializable. |
| |
| Source compatible - Yes, sort of; |
| - 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. |
| - The org.apache.bcel.generic.Visitor interface has been enhanced with an |
| additional method. If you implemented it directly instead of extending |
| the EmptyVisitor class you'll have to implement the new methods. |
| |
| Semantic compatible - Yes, except: |
| - BCEL 6.0 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. |
| |
| For full information about API changes please see the extended Clirr report: |
| |
| |
| http://commons.apache.org/bcel/clirr-report.html |
| |
| NEW FEATURES: |
| ============= |
| |
| o BCEL-272: Add constants for Java 9 class file version 53. |
| |
| FIXED BUGS: |
| =========== |
| |
| o BCEL-237: non-empty final arrays should be private as they are mutable. |
| o BCEL-243: Type.getType() needs to understand TypeVariableSignature(s). |
| o BCEL-271: FCONST pattern does not include FCONST_2. |
| o BCEL-264: Add missing Node.accept() implementations (ConstantMethodHandle, |
| ConstantMethodType, ParameterAnnotationEntry). |
| o BCEL-221: BCELifier is not working for Java8Example (incomplete). |
| o BCEL-195: Addition of hashCode() to generic/Instruction.java breaks Targeters. |
| Never make distinct BranchInstructions compare equal. |
| o BCEL-261: Select constructor allows partially constructed instance to escape. |
| Re-ordered code to delay the escape. |
| o BCEL-259: Minor doc error in BranchInstruction.java. |
| o BCEL-260: ClassDumper example duplicates field attribute types. |
| o BCEL-258: No tests to check the output of dump methods. |
| o BCEL-257: INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL need to define dump() |
| methods. |
| o BCEL-254: Two more methods that would be nice to be public. |
| o BCEL-245: Type class includes constants that reference subclasses. |
| o BCEL-253: Pass 3b verifier is too strict. |
| o BCEL-248: StackMapTable[Entry] should be removed and improvements merged into |
| StackMap[Entry]. |
| o BCEL-202: StackMap[Table]Entry.copy() needs to be deep; Improved support for |
| StackMaps. |
| o BCEL-251: Pass3aVerifier visitANEWARRAY() does not allow 255 array dimensions. |
| o BCEL-249: Check for max Short seems wrong. |
| o BCEL-208: Need to check for an empty InstructionList. |
| o BCEL-217: long type instructions are not searched by InstructionFinder using |
| regular expression. |
| o BCEL-239: Interfaces should not be used to define constants. |
| o BCEL-234: Code must not swallow Throwable. |
| o BCEL-209: Bug fixes and improvements to InvokeDynamic and BootStrapMethods |
| implementation. Thanks to Mark Roberts. |
| o BCEL-187: Verification error when an invoke references a method defined in |
| superclass. Thanks to Jérôme Leroux. |
| o BCEL-218: Remove ObjectType cache. Thanks to chas. |
| o BCEL-184: The verifier now checks if methods with a void return type attempt |
| to return an object. Thanks to Jérôme Leroux. |
| o BCEL-207: MethodGen.removeLocalVariable now properly unreference the removed |
| variable from the targetters of the instruction handlers delimiting |
| the scope of the variable. Thanks to Mark Roberts. |
| o BCEL-197: Utility.signatureToString() no longer throws a ClassFormatException |
| on TypeVariables found in generic signatures. Thanks to Mark Roberts. |
| o BCEL-194: Removed the 'index' variable from the LocalVariableGen's hash code. Thanks to Mark Roberts. |
| o BCEL-193: The verifier should not check for run time compatibility of objects |
| assigned to arrays. Thanks to Jérôme Leroux. |
| o BCEL-188: Correct verification of the return value of a method. Thanks to Jérôme Leroux. |
| o BCEL-186: Performance degradation with the UTF8 cache. getInstance no longer |
| uses cache. |
| o BCEL-181: org.apache.bcel.util.ClassLoaderRepository.loadClass(String) leaks |
| input streams. |
| o BCEL-28: Mistake in "Peephole optimizer" example |
| at http://commons.apache.org/bcel/manual.html |
| o BCEL-74: BCEL cannot be used as java.system.class.loader. |
| o BCEL-77: XSLT transforms broken in Turkish Locale. |
| o BCEL-79: java.lang.ClassFormatError: LVTT entry for 'local' in class file |
| org/shiftone/jrat/test/dummy/CrashTestDummy does not match any LVT |
| entry |
| o BCEL-81: ClassParser.parse() throws NullPointerException if class does not |
| exist and ClassParser(String) constructor is used. |
| o BCEL-85: ArrayOutOfBoundsException in InstructionFinder. |
| o BCEL-87: Website: Incorrect URL for source; version 5.2 is not in the bug |
| page |
| o BCEL-88: bcelified method doesn't pass verification. |
| o BCEL-89: return type not verified by JustIce. |
| o BCEL-94: @since tag incorrect for Annotation classes in BCEL trunk. |
| o BCEL-95: InstructionFactory missing % operator for Float, Double. |
| o BCEL-96: Fields in Annotations and AnnotationEntry are inaccessible to |
| subclasses |
| o BCEL-97: Add support for getResources to ClassPath. |
| o BCEL-98: Two source files in repository are empty. |
| o BCEL-99: Maven POM file calls in apache regex but code does not use it. |
| o BCEL-100: ClassParser throws unintelligible Exception. |
| o BCEL-101: verifier raises an AssertionViolatedException when done against |
| Java 5 files with generics/annotations. |
| o BCEL-102: Verifier fails in pass 2 with "Number of LocalVariableTable |
| attributes of Code attribute" on static methods. |
| o BCEL-107: ParameterAnnotationEntries are read not dumped. |
| o BCEL-108: RuntimeVisible Annotations duplicated. |
| o BCEL-112: ARRAYLENGTH incorrectly not StackConsumer. |
| o BCEL-114: Error in method search() defined in |
| org.apache.bcel.util.InstructionFinder |
| o BCEL-115: Deleting all instructions of a list shows wrong behaviour. |
| o BCEL-120: Make BCEL JAR OSGi compatible. |
| o BCEL-122: ArrayIndexOutOfBoundsException thrown from TABLESWITCH.initFromFile. |
| o BCEL-124: tableswitch/lookupswitch invalid alignment of 4-byte operands. |
| o BCEL-125: Incorrect size calculation in InstructionFinder. |
| o BCEL-130: Class files containing "ParameterAnnotations" are dumped |
| incorrectly. |
| o BCEL-131: Class files containing "StackMapTable" attributes (on method code) |
| are dumped incorrectly. |
| o BCEL-132: org.apache.bcel.classfile.ClassParser: NullPointerException caused |
| by fileopen failed. |
| o BCEL-133: org.apache.bcel.classfile.ClassParser: NullPointerException caused |
| by invalid filename. |
| o BCEL-134: ExecutionVisitor doesn't support Class constant type for LDC and |
| LDC_W. |
| o BCEL-135: BCELifier issue: BCELFactory fails to handle float and long |
| constants. |
| o BCEL-137: "Invalid method signature: TT;" when using MethodGen for a method |
| having a generic parameter. |
| o BCEL-138: FieldInstruction.getFieldSize() doesn't decode Type.getTypeSize() |
| output. |
| o BCEL-140: org.apache.bcel.generic.Instruction.equals(Object) does not follow |
| Object.equals(Object) rules. |
| o BCEL-141: Select instructions should implement StackConsumer instead of |
| StackProducer. |
| o BCEL-143: Fix CPL License issues with EnclosingMethod.java and |
| LocalVariableTypeTable.java. |
| o BCEL-145: Type.getReturnTypeSize() doesn't decode Type.getTypeSize() output. |
| o BCEL-146: SyntheticRepository.loadClass() fails to close the inputStream. |
| o BCEL-148: BCELifier produces incorrect code for methods containing loads of |
| class literals from constant pool. |
| o BCEL-151: Code attribute size not updated. |
| o BCEL-152: Incorrect link for Jasmin assembler language. |
| o BCEL-153: Examples not present in source or binary downloads. |
| o BCEL-154: ClassParser.parse() generates NPE if it cannot open the file. |
| o BCEL-155: InstConstraintVisitor does not handle class constants. |
| o BCEL-156: Pass3bVerifier crashes on empty methods. |
| o BCEL-159: LocalVariableGen.getLocalVariable() computes incorrect length. |
| o BCEL-164: Method does not have a method to access parameter annotations. |
| o BCEL-167: ClassPath.getResource does not correctly perform URL escaping. |
| o BCEL-173: ClassParser fails to parse JDK classes in Java 8: |
| ClassFormatException: Invalid byte tag in constant pool. |
| o BCEL-174: Verification of interfaces with default methods fails with Java 8. |
| o BCEL-177: When reading the number of parameters in a MethodParameters |
| structure only read a single byte as per the JVM specification. |
| |
| CHANGES: |
| ======== |
| |
| o BCEL-262: InvokeInstruction.getClassName(ConstantPoolGen) should not throw |
| an exception when it detects an array. Thanks to Mark Roberts. |
| o BCEL-230: Document the Java platform requirement clearly and early. |
| o BCEL-211: Some additional clone methods should be public. |
| o BCEL-127: Document that Instruction Factory returns singleton instances. |
| o BCEL-198: better support for clone/copy methods. |
| o BCEL-201: modify several toString methods to make output similar to "javap". |
| o BCEL-205: add javadoc comments to LineNumber.java and LineNumberTable.java. |
| o BCEL-212: Inconsistent toString() results. |
| o BCEL-244: Update Java requirement from 5 to 7. |
| o BCEL-219: Make org.apache.bcel.classfile.ConstantPool.ConstantPool(DataInput) |
| public. Thanks to Maxim Degtyarev. |
| o BCEL-76: Add parent type processing for ClassPath class. |
| o BCEL-83: Add support for getResource and getResourceAsStream to ClassPath. |
| o BCEL-92: Properly parse StackMapTable attributes in Java 6 classfiles. |
| o BCEL-104: Javadoc overhaul. |
| o BCEL-119: BCEL is unnecessarily slow. |
| o BCEL-157: Add support for INVOKEDYNAMIC and MethodHandles. |
| o BCEL-160: Why using unstable sort at MethodGen.getLocalVariables() ? |
| o BCEL-163: Incorporate patch file from Findbugs. |
| o BCEL-175: Implement the MethodParameters attribute. |
| |
| REMOVED: |
| ======== |
| o BCEL-242: Remove Serializable. |
| o BCEL-110: Problem with JAXB if the bcel classloader is used; remove the broken |
| ClassLoader class. |
| |
| |
| 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 |