aboutsummaryrefslogtreecommitdiff
path: root/RELEASE-NOTES.txt
blob: e5838a9ac4caa561b7ebed10905d274e6f0a5d10 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
              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