You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
373 lines
16 KiB
373 lines
16 KiB
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
|