Soot 2.3.0 is available

Eric | June 3, 2008

image I am pleased to announce that Soot version 2.3.0 is now available.

This release contains the following additions and improvements:

  1. Integrated new JastAdd-based frontend with support for Java 5 source code. Thanks to Torbjorn Ekman for contributing his frontend and his implementation of Java2Jimple!
  2. At the very least if -validate is on, Soot now checks that @this is only assigned in the first statement of an instance method. This has always been an implicit assumption for Jimple code but up until now was not enforced.
  3. Integrated full support for preserving annotations in Jimple and writing them to bytecode. SOURCE level annotations are preserved if code is read from source and the flag -p jb preserve-source-annotations is given. (does not hold for package and local variable annotations) SOURCE level annotations are not written into bytecode by Soot. Annotations can easily be added to SootClass, SootMethod and SootField instances using the utility class AnnotationGenerator. Thanks to Will Benton!
  4. Java 5 Annotations for fields, classes, parameters and methods are now fully preserved in bytecode. Jasmin was changed to implement this support.
  5. Ben Bellamy from Oxford University contributed a new implementation for the type assigner. This is to be published under the title Efficient Local Type Inference at OOPSLA ’08. The new type assigner is usually faster (it is applied when processing bytecode), and sometimes more precise. In particular it should always infer the most narrow type possible. Ben has tested this code, and verified that it provides a typing that is at least as tight as the original algorithm (tighter in 2914 methods out of 295598) on a number of benchmarks. These are: abc-complete.jar, BlueJ, CSO (Scala code), Gant, Groovy, havoc.jar, Java 3D, jEdit, Java Grande Forum, Jigsaw, Jython, Kawa, rt.jar, Kawa, Scala and tools.jar. The mean execution time improvement is around 10 times, but for the longest methods (abc parser methods and havoc with >9000 statements) the improvement is between 200 and 500 times. There are new phase options in that allow to switch back to the old type assigner or to compare both implementations. The command line option -use-old-type-assigner was removed. It used to enabled an even older version of the type assigner (based on bit vectors) that was commented out any way. I flagged the appropriate code as deprecated. It may be removed in future versions of Soot. Thanks Ben!

Also we incorporated fixes to numerous bugs. Thanks for reporting bugs and/or providing fixes!

You can find more information in the full change log.