Mark, This is awesome info. Thank you for taking the time to compile it.
My preference would be to finalize and cut 6.0 ASAP, then start a new cycle. I am a RERO proponent. The only caveat here, since we are going for a major version bump is whether you have some proposal for changes that would be binary incompatible with 5.x, which we should therefore consider for 6.0. Gary On Mon, Jan 26, 2015 at 1:02 PM, Mark Roberts <mar...@cs.washington.edu> wrote: > I'm currently not familiar with your release process and, hence, not sure > what sorts of changes you are willing to consider at this time. I thought > I would start with a rough outline of all of our changes and then the group > could suggest which ones I should open in JIRA. > > We cloned a version of the BCEL sources at Revision 1514334. > We updated to Revision 1646789 (2014-12-19) week of January 19-23, 2015. > > Here is a list of files and reasons we differ from standard BCEL: > (The 'reason' codes in left hand column are enumerated below the file > list.) > > C /bcel/classfile/AnnotationDefault.java > I /bcel/classfile/AnnotationEntry.java > D,I /bcel/classfile/Attribute.java > I /bcel/classfile/AttributeReader.java > BM,JD /bcel/classfile/BootstrapMethod.java > BM,JD /bcel/classfile/BootstrapMethods.java > I /bcel/classfile/ClassParser.java > I /bcel/classfile/Code.java > BM,ID,TS /bcel/classfile/ConstantCP.java > ID /bcel/classfile/ConstantInvokeDynamic.java > P /bcel/classfile/Constant.java > T /bcel/classfile/ConstantLong.java > BM,ID,TS /bcel/classfile/ConstantPool.java > BM,ID /bcel/classfile/DescendingVisitor.java > BM,ID /bcel/classfile/EmptyVisitor.java > C /bcel/classfile/EnclosingMethod.java > I /bcel/classfile/Field.java > I /bcel/classfile/FieldOrMethod.java > TS /bcel/classfile/InnerClasses.java > TS /bcel/classfile/InnerClass.java > T /bcel/classfile/JavaClass.java > JD /bcel/classfile/LineNumber.java > JD /bcel/classfile/LineNumberTable.java > TS /bcel/classfile/LocalVariable.java > TS /bcel/classfile/LocalVariableTypeTable.java > I /bcel/classfile/Method.java > T /bcel/classfile/RuntimeInvisibleParameterAnnotations.java > T /bcel/classfile/RuntimeVisibleParameterAnnotations.java > TS /bcel/classfile/SourceFile.java > S,I /bcel/classfile/StackMapTableEntry.java > I /bcel/classfile/StackMapTable.java > V,I,ID /bcel/classfile/Utility.java > BM,ID /bcel/classfile/Visitor.java > T /bcel/Constants.java > TS /bcel/generic/BranchInstruction.java > ID /bcel/generic/ConstantPoolGen.java > ID /bcel/generic/EmptyVisitor.java > P,ID /bcel/generic/FieldOrMethod.java > ID /bcel/generic/GETFIELD.java > ID /bcel/generic/GETSTATIC.java > ID /bcel/generic/InstructionFactory.java > P,U /bcel/generic/Instruction.java > ID /bcel/generic/INVOKEDYNAMIC.java > ID /bcel/generic/INVOKEINTERFACE.java > ID /bcel/generic/INVOKESPECIAL.java > ID /bcel/generic/INVOKESTATIC.java > ID /bcel/generic/INVOKEVIRTUAL.java > ID /bcel/generic/InvokeInstruction.java > D /bcel/generic/LineNumberGen.java > H /bcel/generic/LocalVariableGen.java > B,LV,TS /bcel/generic/MethodGen.java > ID /bcel/generic/PUTFIELD.java > ID /bcel/generic/PUTSTATIC.java > ID /bcel/generic/Visitor.java > M /bcel/PLSEMarker.java (new file) > P,TS /bcel/util/BCELifier.java > ID /bcel/util/CodeHTML.java > ID /bcel/util/InstructionFinder.java > D /bcel/util/SyntheticRepository.java > D /bcel/verifier/statics/Pass1Verifier.java > ID /bcel/verifier/statics/Pass3aVerifier.java > ID /bcel/verifier/structurals/ExecutionVisitor.java > P /bcel/verifier/structurals/Frame.java > D,ID,UT /bcel/verifier/structurals/InstConstraintVisitor.java > C,P,ML /bcel/verifier/structurals/LocalVariables.java > P /bcel/verifier/structurals/OperandStack.java > RS /bcel/verifier/structurals/Subroutines.java > > > B - BCEL bug #39695 (and #44083) (now BCEL-79) > BM - add support for BootstrapMethod(s) > C - better support for clone/copy methods > D - add some debugging code > H - fix problem with hash function > I - finish/complete change from DataInputStream to DataInput > ID - add/improve support for InvokeDynamic > JD - javadoc additions > LV - correct problem with missing local vars to anonymous init methods > M - marked class to identify our version of BCEL > ML - deal with superclass of type Object in merge of local variables > P - make some methods public (or not deprecated) for our use > RS - reduce JustIce restrictions on subroutines > S - improve StackMap support > T - fix typo, source formatting or cut/paste error > TS - improve toString or other output formatting > U - we need instructions to be unique > UT - allow unitialized types in PUTFIELD (can happen in a constructor) > V - add support for TypeVariable Signature > > > A few additional thoughts: > > You will definitely not want change 'M', probably not change 'P' either. > > I was surprised by 'U' as that change had a huge side effect, possibly due > to a design flaw in how Targeters work; I was unable to find any discussion > in your archives. > > During the past year, both the Apache Commons BCEL team and our group here > at UW independently completed the support for InvokeDynamic . Some things > we chose to do the same way, but there are a few items that are quite > different. Trying not to be too biased, I believe our method is better. > One of the larger differences is your decision to add the abstract class > NameSignatureMethod between FieldOrMethod and CPInstruction and then have > InvokeDynamic extend from that instead of from InvokeInstruction. To me > this seems wrong. In addition to forcing InvokeDynamic to duplicate all > the methods from InvokeInstruction and FieldOrMethod, it is awkward that it > is the only form of the Invoke Instruction that doesn't derive from > InvokeInstruction. (‘ID’ and ‘BM’ as well.) > > ‘B’, ‘H’, and ‘LV’ are important bug fixes. > > I not sure why you chose not to complete the change from DataInputStream > to DataInput (‘I’). This was another item we did here at PLSE independent > of your work. Going all the way is nice, because tools that use BCEL can > then backup and reprocess the input class file. > > A lot of the ‘TS’ changes were to make the BCEL output look more like the > ‘javap’ output; you may not care, but this was useful to some of our > clients. > > Sorry for length of post and amount of information. We can divide into > separate threads If you wish. > > Mark > > > -----Original Message----- > From: Emmanuel Bourg [mailto:emmanuel.bo...@gmail.com] On Behalf Of > Emmanuel Bourg > Sent: Friday, January 23, 2015 2:11 PM > To: Commons Developers List > Subject: Re: [bcel] new to list - introduction > > Le 23/01/2015 20:55, Mark Roberts a écrit : > > My name is Mark Roberts and I work in the Programming Languages and > > Software Engineering group (PLSE) at the University of Washington. > > (http://www.cs.washington.edu/research/plse) > > > > Our team develops and supports a number of open source tools. One of > the main ones, Daikon (http://plse.cs.washington.edu/daikon/) makes > extensive use of BCEL to manipulate Java class files. We have been using > BCEL since 2001 and have made a few changes along the way. I have just > completed re-merging our BCEL source tree with a fairly recent mainline > version (r1646789 2014-12-19). > > > > I have exchanged email with Torsten Curdt and he suggested I join this > mailing list as a first step in sharing our changes and fixes. > > Hi Mark and welcome to Apache Commons. We are about to release BCEL 6.0 > but it's still time to commit some minor changes. I plan to merge the > recent verifier improvement contributed by Jérôme Leroux and cut a new > release candidate shortly after. > > What kind of improvements would you like to contribute? We can start > discussing them on the list and then open related issues in JIRA. > > Emmanuel Bourg > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > For additional commands, e-mail: dev-h...@commons.apache.org > > -- E-Mail: garydgreg...@gmail.com | ggreg...@apache.org Java Persistence with Hibernate, Second Edition <http://www.manning.com/bauer3/> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> Spring Batch in Action <http://www.manning.com/templier/> Blog: http://garygregory.wordpress.com Home: http://garygregory.com/ Tweet! http://twitter.com/GaryGregory