blob: 7bed4a81dba9be1c058204d2e66436dbb3f22856 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!--
This file is also used by the maven-changes-plugin to generate the release notes.
Useful ways of finding items to add to this file are:
1. Add items when you fix a bug or add a feature (this makes the
release process easy :-).
2. Do a JIRA search for tickets closed since the previous release.
3. Use the report generated by the maven-changelog-plugin to see all
SVN commits. TBA how to use this with SVN.
To generate the release notes from this file:
mvn changes:announcement-generate -Prelease-notes [-Dchanges.version=nnn]
then tweak the formatting if necessary
and commit
The <action> type attribute can be add,update,fix,remove.
-->
<document xmlns="http://maven.apache.org/changes/2.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/changes/2.0.0 https://maven.apache.org/xsd/changes-2.0.0.xsd">
<properties>
<title>Apache Commons BCEL Release Notes</title>
<author email="dev@commons.apache.org">Apache Commons developers</author>
</properties>
<!-- NOTE:
The description below is specially formatted so as to improve the layout of the generated release notes:
The parsing process removes all line feeds, replacing them with a single space.
The Velocity template in resources/templates has been enhanced to replace pairs of adjacent spaces
with a new-line in the release notes. (These spaces are ignored when displaying HTML).
If the output is not quite correct, check for invisible trailing spaces!
The release notes template groups actions by type, and only extracts data for the current release.
The changes report outputs actions in the order they appear in this file.
To regenerate the release notes:
mvn changes:announcement-generate -Prelease-notes [-Dchanges.version=nnn]
Defining changes.version allows one to create the RN without first removing the SNAPSHOT suffix.
-->
<body>
<release version="6.11.0" date="YYYY-MM-DD" description="This is a feature and maintenance release. Java 8 or later is required.">
<!-- FIX -->
<action type="fix" dev="ggregory" due-to="Gary Gregory">Replace internal use of Locale.ENGLISH with Locale.ROOT.</action>
<action issue="BCEL-375" type="fix" dev="ggregory" due-to="J. Lewis Muir, Gary Gregory">Wrong permissions on bcel .jar file in binary .tar.gz distribution file.</action>
<action issue="BCEL-376" type="fix" dev="ggregory" due-to="Dominik Stadler, Gary Gregory">ClassPath.close() throws UnsupportedOperationException when created with system-classpath.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">ClassPath.getResources(String) can use an ArrayList instead of a Vector.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Fix SpotBugs [ERROR] Medium: Operation on the "created" shared variable in "ConstantUtf8" class is not atomic [org.apache.bcel.classfile.ConstantUtf8] At ConstantUtf8.java:[line 119] AT_NONATOMIC_OPERATIONS_ON_SHARED_VARIABLE.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Fix SpotBugs [ERROR] Medium: Operation on the "considered" shared variable in "ConstantUtf8" class is not atomic [org.apache.bcel.classfile.ConstantUtf8] At ConstantUtf8.java:[line 137] AT_NONATOMIC_OPERATIONS_ON_SHARED_VARIABLE.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Fix SpotBugs [ERROR] Medium: Operation on the "skipped" shared variable in "ConstantUtf8" class is not atomic [org.apache.bcel.classfile.ConstantUtf8] At ConstantUtf8.java:[line 134] AT_NONATOMIC_OPERATIONS_ON_SHARED_VARIABLE.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.bcel.util.ClassPath.addJdkModules(String, List&lt;String&gt;) now reads the system property "jdk.module.path" instead of "java.modules.path"; see https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/System.html#jdk.module.path.</action>
<!-- ADD -->
<action type="add" dev="ggregory" due-to="Gary Gregory">Add Const.MAJOR_25.</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add Const.MINOR_25.</action>
<action type="add" dev="ggregory" due-to="Piotr P. Karwasz, Gary Gregory">Add experimental CycloneDX VEX file #446.</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Refactor to use new Maven POM variable ecj.version.</action>
<!-- UPDATE -->
<action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump org.apache.commons:commons-parent from 72 to 88 #346, #349, #559, #364, #368, #378, #464.</action>
<action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump org.apache.commons:commons-lang3 from 3.14.0 to 3.18.0 #334, #341, #351, #444.</action>
<action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump org.jetbrains.kotlin:kotlin-stdlib from 2.0.0 to 2.2.20 #340, #347, #369, #390, #407, #422, #434, #441, #452, #462.</action>
<action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump commons-io:commons-io from 2.16.1 to 2.20.0 #357, #387.</action>
<action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump jna.version from 5.14.0 to 5.17.0 #358, #399.</action>
<action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump org.codehaus.mojo:taglist-maven-plugin from 3.1.0 to 3.2.1 #376.</action>
<action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump org.apache.commons:commons-collections4 from 4.5.0-M2 to 4.5.0 #395.</action>
<action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump org.apache.commons:commons-exec from 1.4.0 to 1.5.0.</action>
</release>
<release version="6.10.0" date="2024-07-13" description="Maintenance and bug fix release. Requires a minimum of Java 8.">
<!-- FIX -->
<action type="update" dev="ggregory" due-to="Gary Gregory">Fix PMD UnnecessaryFullyQualifiedName.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Fix PMD EmptyCatchBlock by allowing commented blocks.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Fix PMD EmptyControlStatement by allowing commented blocks.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Fix SpotBugs RV_RETURN_VALUE_IGNORED_BAD_PRACTICE in JasminVisitor.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">SpotBugs checks should ignore code generated by JavaCC.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Fix SpotBugs URF_UNREAD_FIELD in ClassDumper.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Fix SpotBugs DM_DEFAULT_ENCODING in JasminVisitor.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Fix SpotBugs RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE in ASTFunAppl.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Fix SpotBugs RV_ABSOLUTE_VALUE_OF_HASHCODE in Mini.Environment.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Fix SpotBugs DM_DEFAULT_ENCODING in Mini.MiniC.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Fix SpotBugs WMI_WRONG_MAP_ITERATOR in Package.go(String[]).</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Deprecate TransitiveHull.INGORED in favor of TransitiveHull.getIgnored().</action>
<!-- ADD -->
<action type="update" dev="ggregory" due-to="nbauma109, Gary Gregory, Mark Roberts">Add accessors to model and unit tests, Javadoc #183.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Add Const.MAJOR_22.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Add Const.MINOR_22.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Add Const.MAJOR_23.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Add Const.MINOR_23.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Add Const.MAJOR_24.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Add Const.MINOR_24.</action>
<!-- UPDATE -->
<action type="update" dev="ggregory" due-to="Dependabot">Bump tests from org.assertj:assertj-core 3.25.3 to 3.26.3 #322, #332.</action>
<action type="update" dev="ggregory" due-to="Dependabot">Bump tests from org.jetbrains.kotlin:kotlin-stdlib 1.9.23 to 2.0.0 #309, #318.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Bump tests from org.apache.commons:commons-collections4 4.4 to 4.5.0-M2.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Bump org.apache.commons:commons-parent from 69 to 72 #336.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Bump org.codehaus.mojo:taglist-maven-plugin from 3.0.0 to 3.1.0 #331.</action>
</release>
<release version="6.9.0" date="2024-04-21" description="Maintenance and bug fix release.">
<!-- ADD -->
<action type="update" dev="ggregory" due-to="Pablo Nicolas Diaz, Gary Gregory, Paul King, Mark Roberts">Add Support for Java 16 records #290.</action>
<!-- FIX -->
<action type="update" dev="ggregory" due-to="Heewon Lee">Add null guard for InstructionFactory.createInvoke() #289.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Avoid possible NullPointerException in org.apache.bcel.classfile.DescendingVisitor.accept(E[]).</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Avoid possible NullPointerException in AnnotationEntryGen.getAnnotationAttributes(ConstantPoolGen, AnnotationEntryGen[]).</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Avoid possible NullPointerException in AnnotationEntryGen.copyValues(ElementValuePair[], ConstantPoolGen, boolean).</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Avoid possible NullPointerException in ArrayElementValueGen.ArrayElementValueGen(int, ElementValue[], ConstantPoolGen).</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Avoid possible NullPointerException in org.apache.bcel.generic.ClassGen.setMethods(Method[]).</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Avoid possible NullPointerException in org.apache.bcel.generic.ClassGen.unpackAnnotations(Attribute[]).</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Avoid possible NullPointerException in org.apache.bcel.classfile.ParameterAnnotationEntry.createParameterAnnotationEntries(Attribute[]).</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Avoid possible NullPointerException in org.apache.bcel.generic.ClassGen.ClassGen(JavaClass).</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Avoid possible NullPointerException in org.apache.bcel.generic.FieldGenOrMethodGen.addAll(Attribute[]).</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Avoid possible NullPointerException in org.apache.bcel.classfile.ParameterAnnotationEntry.createParameterAnnotationEntries(Attribute[]).</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Avoid NullPointerException after calling org.apache.bcel.classfile.MethodParameters.setParameters(MethodParameter[]) with null.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Avoid NullPointerException after calling org.apache.bcel.classfile.ParameterAnnotations.setParameterAnnotationTable(ParameterAnnotationEntry[]) with null.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Avoid NullPointerException after calling org.apache.bcel.classfile.LocalVariableTypeTable.setLocalVariableTable(LocalVariable[]) with null.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Avoid NullPointerException after calling org.apache.bcel.classfile.LocalVariableTable.setLocalVariableTable(LocalVariable[]) with null.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Avoid NullPointerException after calling org.apache.bcel.classfile.LineNumberTable.setLineNumberTable(LineNumber[]) with null.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Avoid NullPointerException after calling org.apache.bcel.classfile.JavaClass.setMethods(Method[] with null.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Avoid NullPointerException after calling org.apache.bcel.classfile.JavaClass.setInterfaces(int[]) with null.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Avoid NullPointerException after calling org.apache.bcel.classfile.JavaClass.setInterfaceNames(String[]) with null.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Avoid NullPointerException after calling org.apache.bcel.classfile.JavaClass.setFields(Field[]) with null.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Avoid NullPointerException after calling org.apache.bcel.classfile.JavaClass.setAttributes(Attribute[]) with null.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Avoid NullPointerException after calling org.apache.bcel.classfile.ConstantPool.setConstantPool(Constant[]) with null.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Avoid NullPointerException after calling org.apache.bcel.classfile.FieldOrMethod.setAttributes(Attribute[]) with null.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Avoid NullPointerException after calling org.apache.bcel.classfile.Annotations.setAnnotationTable(AnnotationEntry[]) with null.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Avoid NullPointerException after calling org.apache.bcel.classfile.ArrayElementValue.ArrayElementValue(int, ElementValue[], ConstantPool) with null.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Avoid NullPointerException after calling org.apache.bcel.classfile.BootstrapMethod.BootstrapMethod(int, int[]) with null.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Avoid NullPointerException after calling org.apache.bcel.classfile.BootstrapMethod.setBootstrapArguments(int[]) with null.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Avoid NullPointerException after calling org.apache.bcel.classfile.BootstrapMethods.BootstrapMethods(int, int, BootstrapMethod[], ConstantPool) with null.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Avoid NullPointerException after calling org.apache.bcel.classfile.BootstrapMethods.setBootstrapMethods(BootstrapMethod[]) with null.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Avoid NullPointerException calling org.apache.bcel.generic.InstructionList.redirectLocalVariables(LocalVariableGen[], InstructionHandle, InstructionHandle) with null.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Avoid NullPointerException calling org.apache.bcel.generic.InstructionList.redirectExceptionHandlers(CodeExceptionGen[], InstructionHandle, InstructionHandle) with null.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Avoid NullPointerException calling org.apache.bcel.generic.InstructionList.findHandle(InstructionHandle[], int[], int, int) with null.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Avoid NullPointerException calling org.apache.bcel.generic.MethodGen.setArgumentTypes(Type[]) with null.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Avoid NullPointerException calling org.apache.bcel.generic.MethodGen.setArgumentNames(String[]) with null.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Avoid NullPointerException calling org.apache.bcel.generic.MethodGen.removeRuntimeAttributes(Attribute[]) with null.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Avoid NullPointerException calling org.apache.bcel.generic.MethodGen.makeMutableVersion(AnnotationEntry[]) with null.</action>
<!-- UPDATE -->
<action type="update" dev="ggregory" due-to="Dependabot">Bump org.apache.commons:commons-parent from 66 to 69 #283, #297.</action>
<action type="update" dev="ggregory" due-to="Dependabot">Bump org.jetbrains.kotlin:kotlin-stdlib from 1.9.22 to 1.9.23 #284.</action>
<action type="update" dev="ggregory" due-to="Dependabot">Bump commons-io:commons-io from 2.15.1 to 2.16.1 #295, #300.</action>
</release>
<release version="6.8.2" date="2024-02-21" description="Maintenance and bug fix release.">
<!-- FIX -->
<action type="add" dev="ggregory" due-to="Guillaume Nodet">Fix ConcurrentModificationException in org.apache.bcel.util.SyntheticRepository.getInstance() #275.</action>
<!-- ADD -->
<action type="add" dev="ggregory" due-to="Gary Gregory">Add Maven property project.build.outputTimestamp for build reproducibility.</action>
<!-- UPDATE -->
<action type="update" dev="ggregory" due-to="Dependabot">Bump GitHub various actions for CI builds.</action>
<action type="update" dev="ggregory" due-to="Dependabot">Bump org.assertj:assertj-core from 3.25.1 to 3.25.2.</action>
<action type="update" dev="ggregory" due-to="Dependabot">Bump org.apache.commons:commons-parent from 65 to 66.</action>
</release>
<release version="6.8.1" date="2024-01-07" description="Maintenance and bug fix release.">
<!-- FIX -->
<action type="fix" dev="ggregory" due-to="Gary Gregory">Replace internal use of StringBuffer with StringBuilder.</action>
<action issue="BCEL-370" type="fix" dev="ggregory" due-to="Gary Gregory">CONSTANT_Dynamic is not handled in LDC #254.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">BCELComparator now uses generics.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Avoid NullPointerException in ClassGen.BCELComparator#equals() and ClassGen.BCELComparator#hashCode().</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Avoid NullPointerException in Constant.BCELComparator#equals() and Constant.BCELComparator#hashCode().</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Avoid NullPointerException in Field.BCELComparator#equals() and Field.BCELComparator#hashCode().</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Avoid NullPointerException in FieldGen.BCELComparator#equals() and FieldGen.BCELComparator#hashCode().</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Avoid NullPointerException in JavaClass.BCELComparator#equals() and JavaClass.BCELComparator#hashCode().</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Avoid NullPointerException in Method.BCELComparator#equals() and Method.BCELComparator#hashCode().</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Avoid NullPointerException in MethodGen.BCELComparator#equals() and MethodGen.BCELComparator#hashCode().</action>
<!-- UPDATE -->
<action type="update" dev="ggregory" due-to="Dependabot">Bump GitHub various actions for CI builds.</action>
<action type="update" dev="ggregory" due-to="Dependabot">Bump jna.version from 5.13.0 to 5.14.0 #250.</action>
<action type="update" dev="ggregory" due-to="Dependabot">Bump org.jetbrains.kotlin:kotlin-stdlib from 1.9.21 to 1.9.22 #252.</action>
<action type="update" dev="ggregory" due-to="Dependabot">Bump org.apache.commons:commons-exec from 1.3 to 1.4.0 #255.</action>
</release>
<release version="6.8.0" date="2023-12-03" description="Maintenance and bug fix release.">
<!-- ADD -->
<action type="add" dev="ggregory" due-to="Gary Gregory">Add and use InvalidMethodSignatureException extending ClassFormatException.</action>
<action type="add" dev="ggregory" due-to="nbauma109">Increase code coverage in Class2HTMLTestCase with new test input Java4Example #186.</action>
<action type="add" dev="ggregory" due-to="nbauma109">Add verifier tests on some opcodes #180.</action>
<action type="add" dev="ggregory" due-to="nbauma109">Added signature test cases for class/method, and bad signatures #182.</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add Const.MAJOR_20.</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add Const.MINOR_20.</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add Const.MAJOR_21.</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add Const.MINOR_21.</action>
<action type="add" dev="ggregory" due-to="nbauma109, Gary Gregory, Mark Roberts">[Bcelifier] stackmap support to pass JDK verifier #177.</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Fix SpotBugs [ERROR] Class org.apache.bcel.util.ClassVector defines non-transient non-serializable instance field vec [org.apache.bcel.util.ClassVector] In ClassVector.java SE_BAD_FIELD.</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Fix SpotBugs [ERROR] Switch statement found in org.apache.bcel.util.BCELFactory.visitAllocationInstruction(AllocationInstruction) where one case falls through to the next case [org.apache.bcel.util.BCELFactory, org.apache.bcel.util.BCELFactory] At BCELFactory.java:[lines 188-191]Another occurrence at BCELFactory.java:[lines 192-196] SF_SWITCH_FALLTHROUGH.</action>
<!-- FIX -->
<action type="fix" dev="markt" due-to="OSS-Fuzz">When parsing an class with an invalid constant reference, ensure ClassParser.parse() throws ClassFormatException, not NullPointerException.</action>
<action type="fix" dev="markt" due-to="OSS-Fuzz">Ensure that references to a constant pool entry with index zero trigger a ClassFormatException, not a NullPointerException.</action>
<action type="fix" dev="markt" due-to="OSS-Fuzz">Ensure that references to the unused constant pool entry after a long/double entry triggers a ClassFormatException, not a NullPointerException.</action>
<action type="fix" dev="markt" due-to="nbauma109">Test and coverage of InstructionFactory #190.</action>
<action type="fix" dev="ggregory" due-to="nbauma109">Verifier: test and coverage for SWAP instruction #188.</action>
<action type="fix" dev="ggregory" due-to="Jason Copenhaver, Gary Gregory">Exception parsing Kotlin class with 'fun `method name with () in it`()' #205.</action>
<action type="fix" dev="ggregory" due-to="nbauma109, Gary Gregory">Fix null pointers in AnnotationEntry #213.</action>
<action type="fix" dev="ggregory" due-to="nbauma109">Field not found, search field in both super class and implemented interfaces (5x duplicated code to find field by name and type is refactored to a new method and now supports package-private) #181.</action>
<action issue="BCEL-366" type="fix" dev="ggregory" due-to="Slawomir Jaranowski">Use alternative name for broken classes under test #220.</action>
<action issue="BCEL-367" type="fix" dev="ggregory" due-to="Katherine Hough, Gary Gregory">Fixes java.lang.IndexOutOfBoundsException for ATHROW on empty stack #223.</action>
<action issue="BCEL-368" type="fix" dev="ggregory" due-to="Katherine Hough, Gary Gregory">Fixes java.lang.StackOverflowError in Select#toString(boolean) #229.</action>
<action type="fix" dev="ggregory" due-to="nbauma109, Judit Knoll, Gary Gregory">Fix for type.getType(...) use on non-signature type names #221.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Fix EmptyVisitorTestCase on Java 21.</action>
<!-- UPDATE -->
<action type="update" dev="ggregory" due-to="Gary Gregory, Dependabot">Bump commons-parent from 54 to 65 #189, #198, #222.</action>
<action type="update" dev="ggregory" due-to="Dependabot">Bump jna.version from 5.12.1 to 5.13.0 #203.</action>
<action type="update" dev="ggregory" due-to="Dependabot">Bump kotlin-stdlib from 1.8.10 to 1.9.21 #217, #219, #227, #231, #235, #245, #247.</action>
<action type="update" dev="ggregory" due-to="Dependabot">Bump commons-io from 2.11.0 to 2.15.1.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Bump commons-lang3 from 3.12.0 to 3.14.0.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Bump org.codehaus.mojo:exec-maven-plugin from 3.1.0 to 3.1.1 #246.</action>
</release>
<release version="6.7.0" date="2022-11-28" description="Maintenance and bug fix release.">
<!-- ADD -->
<action type="add" dev="ggregory" due-to="Gary Gregory">Add org.apache.bcel.classfile.ClassFormatException.ClassFormatException(Throwable).</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add org.apache.bcel.classfile.JavaClass.EXTENSION.</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add org.apache.bcel.classfile.Module.EXTENSION.</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add org.apache.bcel.util.Args.</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add org.apache.bcel.generic.ArrayType.getClassName().</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add org.apache.bcel.generic.Type.getClassName().</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add org.apache.bcel.classfile.Utility.packageToPath(String).</action>
<action type="add" dev="ggregory" due-to="Gary Gregory, Mark Roberts">org.apache.bcel.classfile.MethodParameter now implements org.apache.bcel.classfile.Node.</action>
<action type="add" dev="ggregory" due-to="nbauma109, Gary Gregory">Add org.apache.bcel.classfile.JavaClass.getSourceFilePath().</action>
<action type="add" dev="ggregory" due-to="nbauma109, Gary Gregory">Add org.apache.bcel.generic.PUSH.PUSH(ConstantPoolGen, ArrayType).</action>
<!-- FIX -->
<action type="fix" dev="ggregory" due-to="Gary Gregory">Avoid internal NPE in org.apache.bcel.util.ClassPath.getInputStream(String, String).</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">InstructionConstants.ALOAD_0 value is wrong (regression from 6.6.0).</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">InstructionConstants.DCONST_0 value is wrong (regression from 6.6.0).</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.bcel.classfile.Attribute constructors now throw ClassFormatException on invalid name index input.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.bcel.classfile.CodeException constructors now throw ClassFormatException on invalid input.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.bcel.classfile.ConstantInvokeDynamic.ConstantInvokeDynamic(DataInput).</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.bcel.classfile.ConstantValue constructors now throw ClassFormatException on invalid length input.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.bcel.classfile.Deprecated constructors now throw ClassFormatException on invalid length input.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.bcel.classfile.EnclosingMethod constructors now throw ClassFormatException on invalid length, class index, or method index input.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.bcel.classfile.ExceptionTable constructors now throw ClassFormatException on invalid input.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.bcel.classfile.InnerClasses constructors now throw ClassFormatException on invalid input.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.bcel.classfile.LineNumber constructors now throw ClassFormatException on invalid input.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.bcel.classfile.LocalVariable constructors now throw ClassFormatException on invalid input.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.bcel.classfile.LocalVariableTable constructors now throw ClassFormatException on invalid input.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.bcel.classfile.LocalVariableTypeTable constructors now throw ClassFormatException on invalid input.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.bcel.classfile.ModuleMainClass constructors now throw ClassFormatException on invalid input.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.bcel.classfile.ModulePackages constructors now throw ClassFormatException on invalid input.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.bcel.classfile.NestHost constructors now throw ClassFormatException on invalid input.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.bcel.classfile.NestMembers constructors now throw ClassFormatException on invalid input.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.bcel.classfile.Signature constructors now throw ClassFormatException on invalid input.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.bcel.classfile.SourceFile constructors now throw ClassFormatException on invalid input.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.bcel.classfile.StackMap constructors now throw ClassFormatException on invalid input.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.bcel.classfile.StackMapEntry.StackMapEntry(DataInput, ConstantPool) reads signed instead of unsigned shorts from its DataInput.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.bcel.classfile.StackMapType.StackMapType(DataInput, ConstantPool) reads signed instead of unsigned shorts from its DataInput.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.bcel.classfile.Synthetic constructors now throw ClassFormatException on invalid length input.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.bcel.util.ClassPath hashCode() and equals() don't match.</action>
<action type="fix" dev="ggregory" due-to="Mark Roberts, Gary Gregory">Fix code duplication in org.apache.bcel.verifier.structurals.ExceptionHandlers.ExceptionHandlers(MethodGen).</action>
<action type="fix" dev="ggregory" due-to="Sam Ng, Gary Gregory">Improve test coverage to bcel/generic and UtilityTest #162.</action>
<action type="fix" dev="ggregory" due-to="nbauma109, Gary Gregory">Code coverage and bug fixes for bcelifier #171.</action>
<action type="fix" dev="ggregory" due-to="nbauma109, Gary Gregory">Code coverage and unit tests on the verifier #166.</action>
<action type="fix" dev="ggregory" due-to="nbauma109, Gary Gregory">Typo in SimpleElementValue error message #161.</action>
<action type="fix" dev="markt" due-to="Mark Thomas, Gary Gregory">org.apache.bcel.classfile.Attribute constructors now throw ClassFormatException on invalid length input.</action>
<action type="fix" dev="markt" due-to="OSS-Fuzz">References to constant pool entries that are not of the expected type should throw ClassFormatException, not ClassCastException.</action>
<action type="fix" dev="markt" due-to="OSS-Fuzz">When parsing an invalid class, ensure ClassParser.parse() throws ClassFormatException, not IllegalArgumentException.</action>
<action type="fix" dev="markt" due-to="OSS-Fuzz">org.apache.bcel.classfile.Code constructors now throw ClassFormatException on invalid input.</action>
<action type="fix" dev="markt" due-to="OSS-Fuzz">org.apache.bcel.classfile.StackMapType constructors now throw ClassFormatException on invalid input.</action>
<action type="fix" dev="markt" due-to="OSS-Fuzz">When parsing class files, limit arrays to no more than 255 dimensions as per section 4.4.1 of the JVM specification.</action>
<action type="fix" dev="ggregory" due-to="nbauma109">Tests and coverage for Utility class #175.</action>
<action type="fix" dev="ggregory" due-to="nbauma109">Unit tests and coverage for binary operations #174.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Fix possible NullPointerException in org.apache.bcel.classfile.StackMap.setStackMap(StackMapEntry[]).</action>
<!-- UPDATE -->
<action type="update" dev="ggregory" due-to="Gary Gregory">Bump spotbugs-maven-plugin from 4.7.2.2 to 4.7.3.0 #167.</action>
<action type="update" dev="ggregory" due-to="Dependabot">Bump jmh.version from 1.35 to 1.36 #170.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Bump pmd from 6.51.0 to 6.52.0.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Bump japicmp from 0.16.0 to 0.17.1.</action>
</release>
<release version="6.6.1" date="2022-10-29" description="Maintenance and bug fix release.">
<!-- FIX -->
<action type="fix" dev="ggregory" due-to="Kengo TODA, Gary Gregory">Keep ConstantPool.getConstant(int) backward compatible with 6.5.0 #157.</action>
<!-- UPDATE -->
<action type="update" dev="ggregory" due-to="Dependabot">Bump actions/setup-java from 3.5.1 to 3.7.0 #159, #179.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Bump spotbugs from 4.7.2 to 4.7.3.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Bump spotbugs-maven-plugub from 4.7.2.1 to 4.7.2.2.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Bump pmd from 6.50.0 to 6.51.0.</action>
</release>
<release version="6.6.0" date="2022-10-08" description="Minor feature and bug fix release.">
<!-- FIX -->
<action type="fix" dev="ggregory" due-to="Mark Roberts, Gary Gregory">Improve test case coverage; fix Utility.encode bug #46.</action>
<action issue="BCEL-342" type="fix" dev="ggregory" due-to="Allon Murienik, Gary Gregory">Migrate test suite to JUnit Jupiter #68.</action>
<action issue="BCEL-343" type="fix" dev="ggregory" due-to="Allon Murienik, Gary Gregory">JUnit Assertion improvement #69.</action>
<action type="fix" dev="ggregory" due-to="Mark Roberts">Minor improvements to comments and toString() methods #71.</action>
<action type="fix" dev="ggregory" due-to="Arturo Bernal">Minor Improvements #83.</action>
<action type="fix" dev="ggregory" due-to="Arturo Bernal">Inline variable and avoid unnecessary variable. #94.</action>
<action type="fix" dev="ggregory" due-to="Mark Roberts, Gary Gregory">Formalize PerformanceTest #168.</action>
<action type="fix" dev="ggregory" due-to="Arturo Bernal">Java 8 improvements #95.</action>
<action issue="BCEL-345" type="fix" dev="ggregory" due-to="Christine Poerschke">Make documentation wording more inclusive #98.</action>
<action type="fix" dev="ggregory" due-to="Mark Roberts, Gary Gregory">Force unsigned short for LineNumber.toString() #118.</action>
<action type="fix" dev="ggregory" due-to="Tim Boudreau, Gary Gregory">Fix IllegalStateException when calling toString(ConstantPool) on a Module or ModuleRequires #125.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Generate HTML in UTF-8 instead of whatever happens to be the default platform encoding.</action>
<action issue="BCEL-303" type="fix" dev="ggregory" due-to="Mark Roberts, Gary Gregory">Several fixes to the verifier #117.</action>
<action issue="BCEL-307" type="fix" dev="ggregory" due-to="Mark Roberts, Gary Gregory">Several fixes to the verifier #117.</action>
<action issue="BCEL-308" type="fix" dev="ggregory" due-to="Mark Roberts, Gary Gregory">Several fixes to the verifier #117.</action>
<action issue="BCEL-309" type="fix" dev="ggregory" due-to="Mark Roberts, Gary Gregory">Several fixes to the verifier #117.</action>
<action issue="BCEL-311" type="fix" dev="ggregory" due-to="Mark Roberts, Gary Gregory">Several fixes to the verifier #117.</action>
<action issue="BCEL-312" type="fix" dev="ggregory" due-to="Mark Roberts, Gary Gregory">Several fixes to the verifier #117.</action>
<action issue="BCEL-313" type="fix" dev="ggregory" due-to="Mark Roberts, Gary Gregory">Several fixes to the verifier #117.</action>
<action issue="BCEL-337" type="fix" dev="ggregory" due-to="Mark Roberts, Gary Gregory">Several fixes to the verifier #117.</action>
<action type="fix" dev="ggregory" due-to="Michael Ernst, Gary Gregory">Close resources #138.</action>
<action type="fix" dev="ggregory" due-to="Alexander Kriegisch, Gary Gregory">Improve condy (constant dynamic) support #139.</action>
<action type="fix" dev="ggregory" due-to="Michael Ernst">Fix typos #140.</action>
<action issue="BCEL-363" type="fix" dev="ggregory" due-to="Richard Atkins, Gary Gregory">Enforce MAX_CP_ENTRIES in ConstantPoolGen and ConstantPool.dump #147.</action>
<action type="fix" dev="ggregory" due-to="Arturo Bernal, Gary Gregory">Minor Changes #99.</action>
<action type="fix" dev="ggregory" due-to="Arturo Bernal">Simplify boolean expressions #152.</action>
<action type="fix" dev="ggregory" due-to="Arturo Bernal">Use Math.max #151.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.bcel.classfile.Signature.translate(String) does not detect EOF correctly.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Fix SpotBugs [ERROR] High: Found reliance on default encoding in new org.apache.bcel.util.BCELifier(JavaClass, OutputStream): new java.io.PrintWriter(OutputStream) [org.apache.bcel.util.BCELifier] At BCELifier.java:[line 169] DM_DEFAULT_ENCODING.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Fix SpotBugs [ERROR] Medium: Unread field: org.apache.bcel.verifier.GraphicalVerifier.packFrame; should this field be static? [org.apache.bcel.verifier.GraphicalVerifier] At GraphicalVerifier.java:[line 43] SS_SHOULD_BE_STATIC.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Fix SpotBugs [ERROR] Medium: new org.apache.bcel.util.ModularRuntimeImage(String) creates a java.net.URLClassLoader classloader, which should be performed within a doPrivileged block [org.apache.bcel.util.ModularRuntimeImage] At ModularRuntimeImage.java:[line 68] DP_CREATE_CLASSLOADER_INSIDE_DO_PRIVILEGED.</action>
<!-- ADD -->
<action type="add" dev="ggregory">Add github/codeql-action.</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Make Annotations implement Iterable&lt;AnnotationEntry&gt;.</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Make BootstrapMethods implement Iterable&lt;BootstrapMethod&gt;.</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Make ConstantPool implement Iterable&lt;Constant&gt;.</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Make InnerClasses implement Iterable&lt;InnerClass&gt;.</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Make LineNumberTable implement Iterable&lt;LineNumber&gt;.</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Make LocalVariableTable implement Iterable&lt;LocalVariable&gt;.</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Make LocalVariableTypeTable implement Iterable&lt;LocalVariable&gt;.</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Make MethodParameters implement Iterable&lt;MethodParameter&gt;.</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Make ParameterAnnotations implement Iterable&lt;ParameterAnnotationEntry&gt;.</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add Const.MAJOR_15</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add Const.MAJOR_16</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add Const.MAJOR_17</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add Const.MAJOR_18</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add Const.MAJOR_19</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add Const.MINOR_15</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add Const.MINOR_16</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add Const.MINOR_17</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add Const.MINOR_18</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add Const.MINOR_19</action>
<!-- UPDATES -->
<action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump actions/cache from 2 to 3.0.11 #88, #93, #110, #119, #149, #154, #156.</action>
<action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump actions/checkout from 2.3.1 to 3.1.0 #59, #66, #73, #108, #115, #153.</action>
<action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump actions/setup-java from 1.4.0 to 3.5.1 #62, #67.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Bump tests from Apache Commons Lang 3.10 to 3.12.0</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Bump commons-parent from 50 to 54.</action>
<action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump biz.aQute.bndlib from 5.1.0 to 6.3.1, #54, #72, #81, #111.</action>
<action type="update" dev="ggregory" due-to="Dependabot">Bump maven-surefire-plugin from 3.0.0-M4 to 3.0.0-M7 #53, #124, #129.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory, Dependabot">Bump maven-checkstyle-plugin from 3.1.0 to 3.2.0, #77, #141.</action>
<action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump Jacoco from 0.8.5 to 0.8.8.</action>
<action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump commons-io from 2.7 to 2.11.0 #65, #96.</action>
<action type="update" dev="ggregory" due-to="Dependabot">Bump exec-maven-plugin from 1.6.0 to 3.1.0 #51, #134.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Bump commons.japicmp.version from 0.14.3 to 0.16.0.</action>
<action type="update" dev="ggregory" due-to="Dependabot">Bump maven-pmd-plugin from 3.13.0 to 3.19. #74, #103, #116, #130, #142, #144.</action>
<action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump pmd from 6.44.0 to 6.50.0.</action>
<action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump junit-jupiter from 5.7.0 to 5.9.1 #78, #90, #101, #112, #135.</action>
<action type="update" dev="ggregory" due-to="Dependabot">Bump jna.version from 5.6.0 to 5.12.1 #84, #102, #109, #120, #131.</action>
<action type="update" dev="ggregory" due-to="Dependabot">Bump jmh.version from 1.19 to 1.35 #92, #100, #122.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Bump maven-javadoc-plugin from 3.2.0 to 3.4.1.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Bump maven-bundle-plugin from 5.1.1 to 5.1.8.</action>
<action type="update" dev="ggregory" due-to="Dependabot">Bump taglist-maven-plugin from 2.4 to 3.0.0 #114.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory, Dependabot">Bump spotbugs-maven-plugin from 4.5.3.0 to 4.7.2.1 #128, #132, #136, #144, #155.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Bump spotbugs from 4.5.3 to 4.7.1.</action>
</release>
<release version="6.5.0" date="2020-06-05" description="Minor feature and bug fix release.">
<action issue="BCEL-330" type="update" dev="ggregory" due-to="Mark Roberts">Remove unnecessary references to Constants.</action>
<action issue="BCEL-329" type="fix" dev="ggregory" due-to="Gary Gregory, Mark Roberts">MethodGen duplicates some attributes.</action>
<action issue="BCEL-336" type="update" dev="ggregory" due-to="Tomo Suzuki, Gary Gregory">MethodGen throws NullPointerException upon Invalid Class File Missing Constructor Body.</action>
<action type="update" dev="ggregory" due-to="Michael Ernst">Improve documentation of Pass3bVerifier (#37).</action>
<action type="update" dev="ggregory" due-to="Arthur Kupriyanov">Replaced deprecated constants in examples (#38).</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Update tests from JNA 5.4.0 to 5.5.0.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Update tests JUnit from 4.12 to 4.13.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Update tests from Apache Commons Lang 3.9 to 3.10.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Update build maven-pmd-plugin 3.12.0 -> 3.13.0.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Update tests maven-surefire-plugin 3.0.0-M3 -> 3.0.0-M4.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Update build japicmp-maven-plugin 0.14.1 -> 0.14.3.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Update build jacoco-maven-plugin 0.8.4 -> 0.8.5.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Update tests from commons-io:commons-io 2.6 to 2.7.</action>
<action type="update" dev="ggregory" due-to="Mark Roberts">Add support for invokestatic of an InterfaceMethodref #39.</action>
<action type="update" dev="ggregory" due-to="Mark Roberts">Add attribute name(s) to Code.toString() #40.</action>
<action issue="BCEL-338" type="update" dev="ggregory" due-to="Gary Gregory">org.apache.bcel.generic.InstructionFactory.createInvoke() populates its internal ConstantPoolGen on bad input, then throws exception.</action>
<action issue="BCEL-339" type="update" dev="ggregory" due-to="Gary Gregory">Throw IllegalArgumentException, IllegalStateException, UnsupportedOperationException instead of RuntimeException.</action>
<action type="update" dev="ggregory" due-to="Mark Roberts">Make some annotation methods public (#45).</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Fix ConcurrentModificationException in the maven-bundle-plugin:4.2.1:manifest on Java 15-ea.</action>
</release>
<release version="6.4.1" date="2019-09-26" description="Bug fix release.">
<action issue="BCEL-328" type="fix" dev="ggregory" due-to="Gary Gregory, Mark Roberts">java.util.EmptyStackException at org.apache.bcel.classfile.DescendingVisitor.visitModule (DescendingVisitor.java:592).</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Update build from Checkstyle Maven Plugin 3.0.0 to 3.1.0.</action>
</release>
<release version="6.4.0" date="2019-09-20" description="Feature and bug fix release.">
<action issue="BCEL-316" type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.bcel.classfile.Attribute class and subclasses should NOT log to the console by default.</action>
<action issue="BCEL-278" type="fix" dev="ggregory" due-to="Valery Barysoky">InvokeInstruction.toString(final ConstantPool cp) throws NoSuchElementException #11.</action>
<action issue="BCEL-318" type="add" dev="ggregory" due-to="Gary Gregory">Add method org.apache.bcel.classfile.ConstantUtf8.clearCache().</action>
<action issue="BCEL-317" type="update" dev="ggregory" due-to="Tomo Suzuki, Gary Gregory">Pluggable cache for ConstantUtf8.</action>
<action issue="BCEL-320" type="add" dev="ggregory" due-to="Tomo Suzuki, Gary Gregory">Add LruCacheClassPathRepository that can scan many JAR files without OutOfMemoryError.</action>
<action issue="BCEL-299" type="update" dev="ggregory" due-to="Gary Gregory, zhangminglei">Fix example src/examples/ClassDumper.java ClassDumper.processID().</action>
<action issue="BCEL-322" type="add" dev="ggregory" due-to="Gary Gregory">Add constants to org.apache.bcel.Const for Java 14.</action>
<action issue="BCEL-270" type="fix" dev="ggregory" due-to="Alexandru-Constantin Bledea">Calling toString(ConstantPool) on InvokeInstruction throws NullPointerException.</action>
<action issue="BCEL-321" type="add" dev="ggregory" due-to="Tomo Suzuki">Refactor subclasses of ClassPathRepository for differences in underlying cache.</action>
<action issue="BCEL-323" type="fix" dev="ggregory" due-to="Tomo Suzuki">org.apache.bcel.util.BCELifier to set major and minor versions.</action>
<action issue="BCEL-326" type="fix" dev="ggregory" due-to="Mark Roberts">Add missing Java 9 and Java 11 class file attributes. #33</action>
<action issue="BCEL-325" type="fix" dev="ggregory" due-to="Mark Roberts">ClassDumper crashes on a module-info.class. #33</action>
<action issue="BCEL-327" type="fix" dev="ggregory" due-to="Mark Roberts">Update signature scanning in Utility to support TypeParameters. #32</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Update tests from JNA 4.5.0 to 5.3.1.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Update tests from JNA 5.3.1. to 5.4.0.</action>
</release>
<release version="6.3.1" date="2019-03-20" description="Bug fix release">
<action issue="BCEL-267" type="fix" dev="ggregory" due-to="Stephan Herrmann, Sebb, Gary Gregory, Torsten Curdt">Race conditions on static fields in BranchHandle and InstructionHandle.</action>
<action issue="BCEL-297" type="fix" dev="ggregory" due-to="Mark Roberts, mingleizhang">Possible NPE in override implementation of Object.equals (#20)</action>
<action issue="BCEL-298" type="update" dev="ggregory" due-to="mingleizhang">Add some files to .gitignore (#19)</action>
<action issue="BCEL-315" type="fix" dev="ggregory" due-to="Gary Gregory">NullPointerException at org.apache.bcel.classfile.FieldOrMethod.dump().</action>
</release>
<release version="6.3" date="2019-01-23" description="Experimental Java 9, 10, 11, 12-EA, and 13-EA Support">
<action issue="BCEL-304" type="fix" dev="ggregory" due-to="Gary Gregory, Ed Pavlak">ClassPath.getClassFile() and friends do not work with JDK 9 and higher (PR #22.)</action>
<action issue="BCEL-305" type="fix" dev="ggregory" due-to="Gary Gregory">ClassPath.getClassFile() and friends do not work with JRE 9 and higher</action>
<action type="update" dev="ggregory" due-to="Mark Thomas, Gary Gregory">Initial support for Java 11</action>
<action type="add" dev="ggregory" due-to="Mark Thomas">Added org.apache.bcel.classfile.Visitor.visitConstantDynamic(ConstantDynamic)</action>
<action type="add" dev="ggregory" due-to="Mark Thomas">Added org.apache.bcel.classfile.ConstantDynamic</action>
<action type="add" dev="ggregory" due-to="Mark Thomas">Added fields in org.apache.bcel.Const for Java 9, 10, and 11.</action>
<action type="add" dev="ggregory" due-to="Mark Thomas">Added fields in org.apache.bcel.Const for Java 12 and 13 based on Java Early Access releases.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Update Java requirement from Java 7 to Java 8.</action>
</release>
<release version="6.2" date="2017-12-08" description="Experimental Java 9 Support">
<action issue="BCEL-294" type="fix" dev="britter" due-to="Mark Roberts">Incorrect comment in StackMap.java</action>
<action issue="BCEL-296" type="fix" dev="ggregory" due-to="Mark Roberts">Incorrect comment in several classes.</action>
<action issue="BCEL-295" type="fix" dev="ggregory" due-to="Mark Roberts">Fix local variable live range length; add test case.</action>
<action issue="BCEL-300" type="fix" dev="ggregory">org.apache.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 19.</action>
<action issue="BCEL-301" type="fix" dev="ggregory">org.apache.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 20.</action>
</release>
<release version="6.1" date="2017-09-14" description="Experimental Java 9 Support">
<action issue="BCEL-293" type="add" dev="britter">Add Automatic-Module-Name MANIFEST entry for Java 9 compatibility</action>
<action issue="BCEL-292" type="add" dev="markt">Add minimal Java 9 support</action>
<action issue="BCEL-286" type="fix" dev="britter" due-to="Mark Roberts">Utility.signatureToString fails if a method has multiple type arguments</action>
<action issue="BCEL-287" type="fix" dev="britter" due-to="Mark Roberts">IINC does not handle -128 properly</action>
<action issue="BCEL-283" type="fix" dev="britter" due-to="Mark Roberts">Support for StackMap should be different from StackMapTable</action>
<action issue="BCEL-289" type="fix" dev="kinow">Crash when parsing constructor of inner classes with parameters annotated</action>
<action issue="BCEL-276" type="fix" dev="britter" due-to="Sam Yoon, Mark Roberts">LocalVariableTypeTable is not updated.</action>
<action issue="BCEL-277" type="fix" dev="britter" due-to="Sam Yoon">Resolving the String representation of a constant throws NoSuchElementException in case of CONSTANT_NameAndType constant.</action>
</release>
<release version="6.0" date="2016-07-10" description="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:
https://commons.apache.org/bcel/clirr-report.html">
<action issue="BCEL-262" type="update" dev="britter" due-to="Mark Roberts">InvokeInstruction.getClassName(ConstantPoolGen)
should not throw an exception when it detects an array.</action>
<action issue="BCEL-237" type="fix" dev="sebb">non-empty final arrays should be private as they are mutable.</action>
<action issue="BCEL-230" type="update" dev="britter">Document the Java platform requirement clearly and early.</action>
<action issue="BCEL-243" type="fix">Type.getType() needs to understand TypeVariableSignature(s).</action>
<action issue="BCEL-272" type="add">Add constants for Java 9 class file version 53.</action>
<action issue="BCEL-271" type="fix">FCONST pattern does not include FCONST_2.</action>
<action issue="BCEL-264" type="fix">Add missing Node.accept() implementations (ConstantMethodHandle,
ConstantMethodType, ParameterAnnotationEntry).</action>
<action issue="BCEL-221" type="fix">BCELifier is not working for Java8Example (incomplete).</action>
<action issue="BCEL-195" type="fix">Addition of hashCode() to generic/Instruction.java breaks Targeters.
Never make distinct BranchInstructions compare equal.</action>
<action issue="BCEL-261" type="fix">Select constructor allows partially constructed instance to escape.
Re-ordered code to delay the escape.</action>
<action issue="BCEL-259" type="fix">Minor doc error in BranchInstruction.java.</action>
<action issue="BCEL-260" type="fix">ClassDumper example duplicates field attribute types.</action>
<action issue="BCEL-258" type="fix">No tests to check the output of dump methods.</action>
<action issue="BCEL-257" type="fix">INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL need to define dump()
methods.</action>
<action issue="BCEL-254" type="fix">Two more methods that would be nice to be public.</action>
<action issue="BCEL-245" type="fix">Type class includes constants that reference subclasses.</action>
<action issue="BCEL-253" type="fix">Pass 3b verifier is too strict.</action>
<action issue="BCEL-248" type="fix">StackMapTable[Entry] should be removed and improvements merged into
StackMap[Entry].</action>
<action issue="BCEL-202" type="fix">StackMap[Table]Entry.copy() needs to be deep; Improved support for
StackMaps.</action>
<action issue="BCEL-251" type="fix">Pass3aVerifier visitANEWARRAY() does not allow 255 array dimensions.</action>
<action issue="BCEL-211" type="update">Some additional clone methods should be public.</action>
<action issue="BCEL-249" type="fix">Check for max Short seems wrong.</action>
<action issue="BCEL-127" type="update">Document that Instruction Factory returns singleton instances.</action>
<action issue="BCEL-198" type="update">better support for clone/copy methods.</action>
<action issue="BCEL-242" type="remove">Remove Serializable.</action>
<action issue="BCEL-110" type="remove">Problem with JAXB if the bcel classloader is used; remove the broken
ClassLoader class.</action>
<action issue="BCEL-201" type="update">modify several toString methods to make output similar to "javap".</action>
<action issue="BCEL-205" type="update">add javadoc comments to LineNumber.java and LineNumberTable.java.</action>
<action issue="BCEL-208" type="fix">Need to check for an empty InstructionList.</action>
<action issue="BCEL-212" type="update">Inconsistent toString() results.</action>
<action issue="BCEL-217" type="fix">long type instructions are not searched by InstructionFinder using
regular expression.</action>
<action issue="BCEL-244" type="update" dev="ggregory">Update Java requirement from 5 to 7.</action>
<action issue="BCEL-239" type="fix">Interfaces should not be used to define constants.</action>
<action issue="BCEL-234" type="fix">Code must not swallow Throwable.</action>
<action issue="BCEL-219" type="update" due-to="Maxim Degtyarev">
Make org.apache.bcel.classfile.ConstantPool.ConstantPool(DataInput)
public.
</action>
<action issue="BCEL-209" type="fix" due-to="Mark Roberts">
Bug fixes and improvements to InvokeDynamic and BootStrapMethods
implementation.
</action>
<action issue="BCEL-187" type="fix" due-to="Jérôme Leroux">
Verification error when an invoke references a method defined in
superclass.
</action>
<action issue="BCEL-218" type="fix" due-to="chas">
Remove ObjectType cache.
</action>
<action issue="BCEL-184" type="fix" due-to="Jérôme Leroux">
The verifier now checks if methods with a void return type attempt
to return an object.
</action>
<action issue="BCEL-207" type="fix" due-to="Mark Roberts">
MethodGen.removeLocalVariable now properly unreference the removed
variable from the targetters of the instruction handlers delimiting
the scope of the variable.
</action>
<action issue="BCEL-197" type="fix" due-to="Mark Roberts">
Utility.signatureToString() no longer throws a ClassFormatException
on TypeVariables found in generic signatures.
</action>
<action issue="BCEL-194" type="fix" due-to="Mark Roberts">
Removed the 'index' variable from the LocalVariableGen's hash code.
</action>
<action issue="BCEL-193" type="fix" dev="markt" due-to="Jérôme Leroux">
The verifier should not check for run time compatibility of objects
assigned to arrays.
</action>
<action issue="BCEL-188" type="fix" dev="markt" due-to="Jérôme Leroux">
Correct verification of the return value of a method.
</action>
<action issue="BCEL-186" type="fix" dev="sebb">
Performance degradation with the UTF8 cache. getInstance no longer
uses cache.
</action>
<action issue="BCEL-181" type="fix" dev="ggregory">
org.apache.bcel.util.ClassLoaderRepository.loadClass(String) leaks
input streams.
</action>
<action issue="BCEL-76" type="update">
Add parent type processing for ClassPath class.
</action>
<action issue="BCEL-83" type="update">
Add support for getResource and getResourceAsStream to ClassPath.
</action>
<action issue="BCEL-92" type="update">
Properly parse StackMapTable attributes in Java 6 classfiles.
</action>
<action issue="BCEL-104" type="update">
Javadoc overhaul.
</action>
<action issue="BCEL-119" type="update">
BCEL is unnecessarily slow.
</action>
<action issue="BCEL-157" type="update">
Add support for INVOKEDYNAMIC and MethodHandles.
</action>
<action issue="BCEL-160" type="update" dev="sebb">
Why using unstable sort at MethodGen.getLocalVariables() ?
</action>
<action issue="BCEL-163" type="update">
Incorporate patch file from Findbugs.
</action>
<action issue="BCEL-175" type="update">
Implement the MethodParameters attribute.
</action>
<action issue="BCEL-28" type="fix">
Mistake in "Peephole optimizer" example
at https://commons.apache.org/bcel/manual.html
</action>
<action issue="BCEL-74" type="fix">
BCEL cannot be used as java.system.class.loader.
</action>
<action issue="BCEL-77" type="fix">
XSLT transforms broken in Turkish Locale.
</action>
<action issue="BCEL-79" type="fix">
java.lang.ClassFormatError: LVTT entry for 'local' in class file
org/shiftone/jrat/test/dummy/CrashTestDummy does not match any LVT
entry
</action>
<action issue="BCEL-81" type="fix">
ClassParser.parse() throws NullPointerException if class does not
exist and ClassParser(String) constructor is used.
</action>
<action issue="BCEL-85" type="fix">
ArrayOutOfBoundsException in InstructionFinder.
</action>
<action issue="BCEL-87" type="fix">
Website: Incorrect URL for source; version 5.2 is not in the bug
page
</action>
<action issue="BCEL-88" type="fix">
bcelified method doesn't pass verification.
</action>
<action issue="BCEL-89" type="fix">
return type not verified by JustIce.
</action>
<action issue="BCEL-94" type="fix">
@since tag incorrect for Annotation classes in BCEL trunk.
</action>
<action issue="BCEL-95" type="fix">
InstructionFactory missing % operator for Float, Double.
</action>
<action issue="BCEL-96" type="fix">
Fields in Annotations and AnnotationEntry are inaccessible to
subclasses
</action>
<action issue="BCEL-97" type="fix">
Add support for getResources to ClassPath.
</action>
<action issue="BCEL-98" type="fix">
Two source files in repository are empty.
</action>
<action issue="BCEL-99" type="fix">
Maven POM file calls in apache regex but code does not use it.
</action>
<action issue="BCEL-100" type="fix">
ClassParser throws unintelligible Exception.
</action>
<action issue="BCEL-101" type="fix">
verifier raises an AssertionViolatedException when done against
Java 5 files with generics/annotations.
</action>
<action issue="BCEL-102" type="fix">
Verifier fails in pass 2 with "Number of LocalVariableTable
attributes of Code attribute" on static methods.
</action>
<action issue="BCEL-107" type="fix">
ParameterAnnotationEntries are read not dumped.
</action>
<action issue="BCEL-108" type="fix">
RuntimeVisible Annotations duplicated.
</action>
<action issue="BCEL-112" type="fix">
ARRAYLENGTH incorrectly not StackConsumer.
</action>
<action issue="BCEL-114" type="fix">
Error in method search() defined in
org.apache.bcel.util.InstructionFinder
</action>
<action issue="BCEL-115" type="fix">
Deleting all instructions of a list shows wrong behavior.
</action>
<action issue="BCEL-120" type="fix">
Make BCEL JAR OSGi compatible.
</action>
<action issue="BCEL-122" type="fix">
ArrayIndexOutOfBoundsException thrown from TABLESWITCH.initFromFile.
</action>
<action issue="BCEL-124" type="fix">
tableswitch/lookupswitch invalid alignment of 4-byte operands.
</action>
<action issue="BCEL-125" type="fix">
Incorrect size calculation in InstructionFinder.
</action>
<action issue="BCEL-130" type="fix">
Class files containing "ParameterAnnotations" are dumped
incorrectly.
</action>
<action issue="BCEL-131" type="fix">
Class files containing "StackMapTable" attributes (on method code)
are dumped incorrectly.
</action>
<action issue="BCEL-132" type="fix">
org.apache.bcel.classfile.ClassParser: NullPointerException caused
by fileopen failed.
</action>
<action issue="BCEL-133" type="fix">
org.apache.bcel.classfile.ClassParser: NullPointerException caused
by invalid filename.
</action>
<action issue="BCEL-134" type="fix">
ExecutionVisitor doesn't support Class constant type for LDC and
LDC_W.
</action>
<action issue="BCEL-135" type="fix">
BCELifier issue: BCELFactory fails to handle float and long
constants.
</action>
<action issue="BCEL-137" type="fix">
"Invalid method signature: TT;" when using MethodGen for a method
having a generic parameter.
</action>
<action issue="BCEL-138" type="fix">
FieldInstruction.getFieldSize() doesn't decode Type.getTypeSize()
output.
</action>
<action issue="BCEL-140" type="fix">
org.apache.bcel.generic.Instruction.equals(Object) does not follow
Object.equals(Object) rules.
</action>
<action issue="BCEL-141" type="fix">
Select instructions should implement StackConsumer instead of
StackProducer.
</action>
<action issue="BCEL-143" type="fix">
Fix CPL License issues with EnclosingMethod.java and
LocalVariableTypeTable.java.
</action>
<action issue="BCEL-145" type="fix">
Type.getReturnTypeSize() doesn't decode Type.getTypeSize() output.
</action>
<action issue="BCEL-146" type="fix">
SyntheticRepository.loadClass() fails to close the inputStream.
</action>
<action issue="BCEL-148" type="fix">
BCELifier produces incorrect code for methods containing loads of
class literals from constant pool.
</action>
<action issue="BCEL-151" type="fix">
Code attribute size not updated.
</action>
<action issue="BCEL-152" type="fix">
Incorrect link for Jasmin assembler language.
</action>
<action issue="BCEL-153" type="fix" dev="sebb">
Examples not present in source or binary downloads.
</action>
<action issue="BCEL-154" type="fix">
ClassParser.parse() generates NPE if it cannot open the file.
</action>
<action issue="BCEL-155" type="fix">
InstConstraintVisitor does not handle class constants.
</action>
<action issue="BCEL-156" type="fix">
Pass3bVerifier crashes on empty methods.
</action>
<action issue="BCEL-159" type="fix">
LocalVariableGen.getLocalVariable() computes incorrect length.
</action>
<action issue="BCEL-164" type="fix">
Method does not have a method to access parameter annotations.
</action>
<action issue="BCEL-167" type="fix">
ClassPath.getResource does not correctly perform URL escaping.
</action>
<action issue="BCEL-173" type="fix">
ClassParser fails to parse JDK classes in Java 8:
ClassFormatException: Invalid byte tag in constant pool.
</action>
<action issue="BCEL-174" type="fix">
Verification of interfaces with default methods fails with Java 8.
</action>
<action issue="BCEL-177" type="fix" dev="markt">
When reading the number of parameters in a MethodParameters
structure only read a single byte as per the JVM specification.
</action>
</release>
</body>
</document>