diff --git a/CHANGES b/CHANGES index f199a086356..8a806fa7c93 100644 --- a/CHANGES +++ b/CHANGES @@ -1,4 +1,4 @@ -Improvements and API changes in version 2.3.1 +Improvements and API changes in version 2.4.0 1. Deprecated class StronglyConnectedComponents because it is inefficient. There is a new class StronglyConnectedComponentsFast @@ -13,6 +13,8 @@ Improvements and API changes in version 2.3.1 4. Added new phase option "reflection-log" to support TamiFlex reflection log files. This option allows Spark to construct sound call graphs and points-to sets even for programs that use reflection. + More information is available at: + http://code.google.com/p/tamiflex/wiki/DaCapoAndSoot Improvements and API changes in version 2.3.0 diff --git a/Release_Notice b/Release_Notice index 96426f6af5f..184ed486cf7 100644 --- a/Release_Notice +++ b/Release_Notice @@ -1,43 +1,21 @@ Dear Soot Users, -We are pleased to announce that Soot version 2.3.0 is now available +We are pleased to announce that Soot version 2.4.0 is now available at: http://www.sable.mcgill.ca/soot/ 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 - soot.jimple.toolkits.annotation.j5anno.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 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. +1. Hossein Sadat-Mohtasham's implementation of program dependency graphs + +2. Support for creating sound call graphs even for programs that use + reflection, custom class loaders and runtime-generated classes. + For this purpose, Soot uses TamiFlex to create a runtime log file that + contains information about how refleciton is being used. Spark then + uses the log file during call-graph and points-to graph construction. + See http://code.google.com/p/tamiflex/wiki/DaCapoAndSoot for details. Also we incorporated fixes to numerous bugs. Thanks for reporting bugs -and/or prividing fixes! +and/or providing fixes! See http://www.sable.mcgill.ca/soot/CHANGES for details. @@ -53,4 +31,4 @@ like to know what's going on look there. Regards, Eric Bodden -Sable Research Group, McGill University \ No newline at end of file +Software Technology Group, Technische UniversitŠt Darmstadt \ No newline at end of file diff --git a/credits b/credits index 8486eb3f489..6b362540810 100644 --- a/credits +++ b/credits @@ -23,6 +23,7 @@ Eric Bodden - Instance Keys - Local must-alias analysis - Integration of JastAdd frontend + - TamiFlex support for reflection Phong Co (phong@hasc.com) - Jimple scalar optimizations diff --git a/index.html b/index.html index 3ed5073c96c..14e398ff6a8 100644 --- a/index.html +++ b/index.html @@ -1,261 +1,264 @@ + -Soot: a Java Optimization Framework - - - - - - - - - - - - - - + +
- -

Soot Home - -

-Introduction
-Obtaining Soot
-Resources
-Credits
-Soot Users
- -

Sable Home - -

-
-Soot: a Java Optimization Framework

-
-Latest version: 2.2.3 (Mar 18, 2006)


- -Need help using Soot? See the Soot tutorials.

- - - - - -
Introductiontop
- -
- -Soot is a Java optimization framework. It provides four intermediate + + + Soot: a Java Optimization Framework + + + + + + + - - +
    +
  • Our publication +page has several conference papers describing Soot.
  • +
  • A set of tutorials describing +Soot, both as a Java application optimizer and +as a compiler framework.
  • +
  • The Soot API. Most of the +functionality is self-explanatory. This API is included in the Soot +distribution.
  • +
  • The Soot source itself. It is full of examples on how to +use the API.
  • +
+ +
+

Mailing List:

+

If you have questions about Soot use the Soot +Mailing List. Note: You must subscribe before +posting and you must +post from the same address with which you used to subscribe.

+

You can also view the +recent list archives. +

+
+
+

Wiki:

+
  • See the new Soot Wiki +for up-to-date information. The Soot team will be using this site for +discussing upcoming work, so if you would like to know what is going on +look there.
  • +
    +
    +

    Bugzilla:

    +
  • Use new Soot +Bugzilla. We encourage you to add any Soot bugs there.
  • +
    + +
    +

    Soot Home +

    +

    Introduction
    + Obtaining +Soot
    + Resources
    + Credits
    + Soot Users
    +

    +

    Sable Home

    +
    +
    Soot: +a +Java +Optimization +Framework
    +
    +
    Latest +version: +2.4.0 +(March, +2010)
    +
    +
    +Need help using Soot? See the Soot +tutorials. +Or have a loot at Arni Einarsson's and Janus Dam Nielsen's marvelous Soot Survivor's guide!
    +
    + + + + + + + + +
    Introductiontop
    +
    Soot is a Java optimization framework. It provides +four intermediate representations for analyzing and transforming Java bytecode: - -
      -
    1. Baf: a streamlined representation of bytecode which is simple to -manipulate. - -
    2. Jimple: a typed 3-address intermediate representation suitable for -optimization. - -
    3. Shimple: an SSA variation of Jimple. - -
    4. Grimp: an aggregated version of Jimple suitable for decompilation and -code inspection. -
    - -Soot can be used as a stand alone tool to optimize or inspect class files, as well +
      +
    1. Baf: a streamlined representation of bytecode +which is simple to +manipulate.
    2. +
    3. Jimple: a typed 3-address intermediate +representation suitable for +optimization.
    4. +
    5. Shimple: an SSA variation of Jimple.
    6. +
    7. Grimp: an aggregated version of Jimple suitable +for decompilation and +code inspection.
    8. +
    +Soot can be used as a stand alone tool to optimize or inspect class +files, as well as a framework to develop optimizations or transformations on Java bytecode. - -

    Soot is free software and is licensed under the GNU Lesser General Public -License. - -

    - -
    -

    Release Status:

    -

    The Soot Framework is an evolving research project. Our goal is to produce a -robust, easy-to-use research framework for optimizing Java bytecode. - -

    -The latest release is version 2.2.3 The new features since 2.2.2 are described in detail here: new features. - -

    - -

    - -
    -

    Eclipse Plugin:

    -Since version 2.0, Soot includes a plugin that makes it +

    Soot is free software and is licensed under the GNU Lesser General +Public +License.

    +
    +
    +

    Release Status:

    +

    The Soot Framework is an evolving research project. Our goal +is to produce a +robust, easy-to-use research framework for optimizing Java bytecode.

    +

    The latest release is version 2.4.0. The new features are +described in detail here: new features.

    +
    +
    +

    Eclipse Plugin:

    +Since version 2.0, Soot includes a plugin +that makes it possible to use Soot from Eclipse. -We have a separate web page with instructions for -installing and using the plugin. -
    -

    You may also want to develop Soot within the Eclipse environment. Instructions for setting up Soot within Eclipse can be found here: Setting Up Soot in Eclipse.

    -
    - - - - -
    Obtaining Soottop
    - -
    -

    Downloads:

    - -Get Soot from our download page a
    Soot Downloads. - -

    -To install it you must unjar(untar) it, and add the classes directory -soot-2.2.3/soot/classes to your CLASSPATH. The Jasmin and Polyglot -classes jar files, or classes directories, must also be added to your CLASSPATH.If you are using the classes directories on your CLASSPATH, you must also add the Polyglot cup-classes directory (included in this distribution) to your CLASSPATH. - -To test your installation of Soot, try: - -

    - -java soot.Main --help - - -

    for some options on processing classfiles. They are documented in more detail in the -usage document.

    - -Note that Soot requires at least JDK 1.3. -The Eclipse plugin requires at least JDK 1.4. -Soot now has partial support for JDK 1.5. -

    - -
    -

    Repository Access:

    -

    We are using Subversion for +We +have +a +separate web page with +instructions for +installing and using the plugin.
    +

    You may also want to develop Soot within the Eclipse +environment. Instructions for setting up Soot within Eclipse can be +found here: Setting Up Soot in +Eclipse.

    +

    If you want to develop with Soot in Eclipse and use SVN +here is another set of instructios Setting Up Soot in +Eclipse using SVN.
    +

    +

    This is the plugins's update site:
    +

    +
    http://www.sable.mcgill.ca/soot/eclipse/updates/
    +
    + + + + + + + + +
    Obtaining Soottop
    +
    +

    Downloads:

    +Get Soot from our download page a Soot +Downloads. +

    You can simply run Soot using the following command:

    +

    java -jar soot-2.4.0.jar

    +

    To get help on the command-line options, use:

    +

    java -jar soot-2.4.0.jar -help
    +
    +
    The usage document gives +more information about these options.
    +

    +

    Note that Soot requires at least JDK 1.5. +The Eclipse plugin requires at least JDK 1.5. +Soot now has virtually complete support for JDK 1.5. +(Missing is support for package-level and local-variable annotations.)

    +
    +
    +

    Repository Access:

    +

    We are using Subversion +for revision control.

    - -

    With a Subversion client, you can obtain a copy of the +

    With a Subversion client, you can obtain a copy of the development version of Soot, as well as any old versions. To obtain the latest development version of Soot, use one of the following commands:
    -svn checkout https://svn.sable.mcgill.ca/soot/soot/trunk soot-dev
    -svn export https://svn.sable.mcgill.ca/soot/soot/trunk soot-dev

    - -

    The checkout version records additional information required + svn checkout https://svn.sable.mcgill.ca/soot/soot/trunk +soot-dev
    + svn export https://svn.sable.mcgill.ca/soot/soot/trunk +soot-dev

    +

    The checkout version records additional +information required to update your checked out version of Soot with the repository at a later time (with the svn update command). The export version provides a "clean" copy of only the Soot files themselves.

    - -

    In order to compile Soot from source, you will also need a copy of -the Jasmin and Polyglot classes, available from the -download page. -Moreover, the Java VM that ant allocates by default when compiling Soot -may have too small a heap to compile a project as large as Soot. If you -get an OutOfMemoryError, you will need to create a file called .antrc -in your home directory containing the following line: -

    -
    -ANT_OPTS="$ANT_OPTS -Xmx700m"
    -
    - -

    From time to time we update Jasmin. If something Jasmin related seems broken you may need to get the latest Jasmin from the subversion repository:
    -svn checkout https://svn.sable.mcgill.ca/soot/jasmin/trunk jasmin-dev
    -svn export https://svn.sable.mcgill.ca/soot/jasmin/trunk jasmin-dev

    - -

    You can also browse our latest version of the Soot repository, as well as a ViewCVS history, using -just a web browser. For further instructions, please see -http://svn.sable.mcgill.ca/.

    -
    -
    -

    Nightly Builds:

    -

    With release 2.2.1 we started to build Soot and Jasmin every night. To get the latest nightly build see: Nightly Builds. -

    - - - - - -
    Resourcestop
    - -
    -

    Documentation:

    -We have developed a number of documents describing Soot. Your main +

    In order to compile Soot from source, you will also need a +copy of +the Jasmin and Polyglot classes, available from the download page.

    +

    From time to time we update Jasmin. If something Jasmin +related seems broken you may need to get the latest Jasmin from the +subversion repository:
    + svn checkout https://svn.sable.mcgill.ca/soot/jasmin/trunk +jasmin-dev
    + svn export https://svn.sable.mcgill.ca/soot/jasmin/trunk +jasmin-dev

    +

    You can also browse our latest version of the Soot +repository, as well as a ViewCVS history, using +just a web browser. For further instructions, please see http://svn.sable.mcgill.ca/.

    +
    +
    +

    Nightly Builds:

    +

    With release 2.2.1 we started to build Soot and Jasmin every +night. To get the latest nightly build see: Nightly Builds.

    +
    + + + + + + + + +
    Resourcestop
    +
    +

    Documentation:

    +We have developed a number of documents describing Soot. Your main current sources of information are: - -
      -
    • Our publication page -has several conference papers describing Soot. - -
    • A set of tutorials describing Soot, both as a Java application optimizer and -as a compiler framework. - -
    • The Soot API. Most of the -functionality is self-explanatory. This API is included in the Soot -distribution. - -
    • The Soot source itself. It is full of examples on how to use the API. - -
    -
    -

    Mailing List:

    -

    If you have questions about Soot use the Soot Mailing List. Note: You must subscribe before posting and you must post from the same address with which you used to subscribe.

    - -

    You can also view the recent list archives. - - -

    -
    -

    Wiki:

    -
  • See the new Soot Wiki for up-to-date information. The Soot team will be using this site for discussing upcoming work, so if you would like to know what is going on look there. - -
  • -
    -

    Bugzilla:

    -
  • Use new Soot Bugzilla. We encourage you to add any Soot bugs there. - -
  • - - - - - - -
    Creditstop
    - -
    - -Click here for the complete list of contributors and acknowledgements. -
    - - - - - - -
    Soot Userstop
    - -
    - - -

    -We maintain a list of people and projects that are making use of Soot: -HTML -PDF -

    - -

    -Please let us know if you would like to be added to this list or have -the description of your project updated. -

    - -
    -
    - - -

    - -
    -
    - - Last updated on Mar 18, 2006
    - -
    - - -
    + + + + + + +
    Creditstop
    +
    Click here for the complete +list of contributors and acknowledgements.
    + + + + + + + + +
    Soot Userstop
    +
    +

    We maintain a list of +people and projects that are making +use of Soot. If you are not on the list please add yourself!

    +
    +
    +
    - + diff --git a/soot_download.html b/soot_download.html index de45d49f36a..c3920ef3512 100644 --- a/soot_download.html +++ b/soot_download.html @@ -1,264 +1,339 @@ -Soot Downloads - - - - - - - - - + + +
    - -

    -

    Soot Downloads - -

    -Summary
    -Downloads
    - -

    Sable Home

    -

    Soot Home -

    - - - -

    - -
    Soot Software


    - - - - - - -
    Soot, a Java Bytecode Analysis and Transformation Framework
    -

    Summary:
    -Soot is a Java bytecode analysis and transformation framework. -It provides a Java API for building intermediate representations (IRs), -analyses and transformations; also it supports class file annotation.

    - - -

    Downloads:
    -

    Release 2.2.3
    - - - - + + + + + + + + + +
    -If you download the full files, you will get the Java source and class + + + + + Soot Downloads + + + + + + + - -
    +

    Soot Downloads +

    +

    Summary
    + Downloads
    +

    +

    Sable Home

    +

    Soot Home

    +
    +
    Soot Software
    +

    +
    + + + + + + + + +
    Soot, a Java Bytecode Analysis and Transformation Framework
    +
    +

    Summary:
    +Soot is a Java bytecode analysis and transformation framework. It +provides a Java API for building intermediate representations (IRs), +analyses and transformations; also it supports class file annotation.

    +

    +

    Downloads:
    +

    +

    Nightly build

    +

    We often fix bugs in Soot as they are reported. Hence, we +encourage users to download the latest nightly build +from Ondrej Lhotak's webpage instead of the release version. Before +you report a bug against the release version please first try the +nightly build to see if the bug is still present there.

    +
    +
    +
    +
    +

    Release 2.4.0
    +
    + + + + - - - - - + + + + + - - - - - - - - + + + + + + + + + + - - - - - - - -
    If you download the full files, you will get the Java +source and class files for Soot, Jasmin, Polyglot, Soot tutorials, Javadoc documentation for Soot, source and compiled forms of the Eclipse plugin. This is the easiest way to get Soot and we recommend the full download. -This will unpack into three directories soot-2.2.3, jasmin-2.2.3 and -polyglot-1.3.2 - -Complete Package
    -sootall-2.2.3.jar -
    -sootall-2.2.3.tar.gz -
    -

    The following three files are jars containing just the -classes directory from Soot, Jasmin, and Polyglot. They can be +This will unpack into three directories soot-2.4.0, jasmin-2.4.0 and +polyglot-1.3.5


    +
    Complete Package
    + sootall-2.4.0.jar +
    + sootall-2.4.0.tar.gz +
    +

    The following three files are jars containing just the classes +directory from Soot, Jasmin, and Polyglot. +They can be added to one's CLASSPATH -and, from there, executed directly. - -

    -Pre-compiled Jar
    -sootclasses-2.2.3.jar -
    -jasminclasses-2.2.3.jar -
    -polyglotclasses-1.3.2.jar -
    -
    -

    The Soot-Eclipse plugin can no longer be installed by simply unpacking the quickstart jar inside your Eclipse plugins directory. For Soot-Eclipse plugin installation instructions see: http:/www.sable.mcgill.ca/soot/eclipse/updates/. -

    -No longer available in a jar format. -
    -Finally, if you have a slow connection you may want to download +

    +

    +
    Pre-compiled Jar
    + sootclasses-2.4.0.jar +
    + jasminclasses-2.4.0.jar +
    + polyglotclasses-1.3.5.jar +
    +
    +

    The Soot-Eclipse plugin can no longer be installed by +simply unpacking the quickstart jar inside your Eclipse plugins +directory. For Soot-Eclipse plugin installation instructions see: http:/www.sable.mcgill.ca/soot/eclipse/updates/. + + + + +

    +

    +
    No longer available in a jar format.
    Finally, if you have a slow connection you may want to +download only the source code for Soot, or Jasmin or Polyglot. From these jars you can generate the Javadoc and the class files (including the Eclipse plugin), -using the enclosed instructions. - -Soot Source
    -sootsrc-2.2.3.jar -
    -sootsrc-2.2.3.tar.gz -
    -Jasmin Source
    -jasminsrc-2.2.3.jar -
    -jasminsrc-2.2.3.tar.gz -
    -Polyglot Source -polyglotsrc-1.3.2.jar -
    -polyglotsrc-1.3.2.tar.gz -
    -The tutorials are also available for separate download. They are -contained in the full package above. - -Tutorials Only
    -soot-tutorial-2.2.3.jar -
    -soot-tutorial-2.2.3.tar.gz -
    - - -

    Older Releases
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -Release 2.2.2 - -Download .jar file -
    -Download .tar.gz -
    -Release 2.2.1 - -Download .jar file -
    -Download .tar.gz -
    -Release 2.2.0 - -Download .jar file -
    -Download .tar.gz -
    -Release 2.1.0 - -Download .jar file -
    -Download .tar.gz -
    -Release 2.0.1 - -Download .jar file -
    -Download .tar.gz -
    -Release 2.0 - -Download .jar file -
    -Download .tar.gz -
    -Release 1.2.5 - -Download .jar file -
    -Download .tar.gz -
    -Release 1.2.4 - -Download .jar file -
    -Download .tar.gz -
    -Release 1.2.3 - -Download .jar file (7.9M) -
    -Download .tar.gz (4.4M) -
    -Release 1.2.2 - -Download .jar file (7.34M) -
    -Download .tar.gz (4.08M) -
    -Release 1.2.1 - -Download .jar file (7.2M) -
    -Download .tar.gz (3.9M) -
    -Release 1.2.0 - -Download .jar file (7.54M) -
    -Download the .tar.gz (4.11M) -       -
    -Release 1.0.0 - -Download .jar file (5.4M) -
    -Download the .tar.gz (2.57M) -
    - -

    -
    - - -
    - +using the enclosed instructions.

    +
    Soot Source
    + sootsrc-2.4.0.jar +
    + sootsrc-2.4.0.tar.gz +
    + Jasmin Source
    + jasminsrc-2.4.0.jar +
    + jasminsrc-2.4.0.tar.gz +
    + Polyglot Source
    + polyglotsrc-1.3.5.jar +
    + polyglotsrc-1.3.5.tar.gz +
    The tutorials are also available for separate download. +They are +contained in the full package above.
    +
    Tutorials Only
    + soot-tutorial-2.4.0.jar +
    + soot-tutorial-2.4.0.tar.gz +
    +

    +

    Older Releases
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Release 2.3.0Download +.jar file
    + Download +.tar.gz
    Release 2.2.5Download +.jar file
    + Download +.tar.gz
    Release 2.2.4Download +.jar file
    + Download +.tar.gz
    Release 2.2.3 Download +.jar file
    + Download +.tar.gz
    Release 2.2.2 Download +.jar file
    + Download +.tar.gz
    Release 2.2.1 Download +.jar file
    + Download +.tar.gz
    Release 2.2.0 Download +.jar file
    + Download +.tar.gz
    Release 2.1.0 Download +.jar file
    + Download +.tar.gz
    Release 2.0.1 Download +.jar file
    + Download +.tar.gz
    Release 2.0 Download +.jar file
    + Download +.tar.gz
    Release 1.2.5 Download +.jar file
    + Download +.tar.gz
    Release 1.2.4 Download +.jar file
    + Download +.tar.gz
    Release 1.2.3 Download +.jar file (7.9M)
    + Download +.tar.gz (4.4M)
    Release 1.2.2 Download +.jar file (7.34M)
    + Download +.tar.gz (4.08M)
    Release 1.2.1 Download +.jar file (7.2M)
    + Download +.tar.gz (3.9M)
    Release 1.2.0 Download +.jar file (7.54M)
    + Download +the .tar.gz (4.11M) +      
    Release 1.0.0 Download +.jar file (5.4M)
    + Download +the .tar.gz (2.57M)
    +

    +
    +
    + +