SOTER overview ============== SOTER is an extensible static analysis and transformation tool that facilitates safe yet efficient message passing in actor programs. SOTER automatically infers ownership transfer of a message content, insuring that it can be safely passed by reference. SOTER serves as a message passing optimizer for actor model implementations with the pass-by-value default semantics (e.g. ActorFoundry) and as a message passing safety checker for actor model implementations with the pass-by-reference default semantics (e.g. Scala actors). To infer ownership transfer, SOTER performs a conservative and sound static analysis using IBM's WALA analysis toolkit. SOTER handles Java bytecode, and thus can be easily extended to support any actor language or framework that compiles to Java bytecode. The current implementation supports ActorFoundry actor framework and Scala actor library. For additional information about SOTER, its related publications and downloads, see http://osl.cs.uiuc.edu/soter/ Building SOTER ============== SOTER is provided as an Eclipse workspace, which can be built in Eclipse IDE. Also, SOTER is part of the special ActorFoundry distribution, where it comes as a pre-built library file soter.jar. This distribution can be downloaded from http://osl.cs.uiuc.edu/soter/ Running SOTER ============= SOTER can run in a batch mode as well as analyze a single actor program. As part of the special ActorFoundry distribution mentioned above, SOTER is executed in a batch mode as a build step, and thus is applied to every compiled actor program. Please refer to build.xml file in the root folder of this distribution, where you can see how SOTER is invoked by message_optimize ant target, and in particular, different options that configure SOTER's execution. SOTER can analyze individual actor program(s) both for ActorFoundry and Scala. In the SOTER's distribution you can find three launch configurations: for ActorFoundry actor programs, for Scala unannotated actor programs, and for Scala annotated actor programs. From these launch configurations you can notice that by default SOTER looks in the test_ActorFoundry folder for the analyzed ActorFoundry programs and in the test_Scala folder for the analyzed Scala programs. You need to copy the compiled code (Java bytecode) of the analyzed actor program in one of these folders, choose the appropriate launch configuration, and execute SOTER. Note that for this individual analysis you need to compile ActorFoundry actor programs without applying batch SOTER optimization and Kilim weaving (i.e. do not execute message_optimize and weave ant tasks from build.xml of the ActorFoundry distribution). You can compile Scala unannotated examples directly from Scala-2.7.7.final that you can download from http://osl.cs.uiuc.edu/soter/ It contains the 'test' folder with Scala unannotated examples and several .bat files to simplify their compilation and execution. To compile Scala annotated examples, please checkout the special Scala distribution that supports annotations from http://lampsvn.epfl.ch/trac/scala/browser/scala/branches/scala-unique The launch configuration for these examples expects to see this special Scala distribution in the Scala workspace, located in the same parent folder with the SOTER workspace. SOTER contacts ============== Stas Negara Rajesh Karmani Copyright Disclosure ==================== The SOTER software is distributed under the OSL license. See LICENSE-SOTER for details. The SOTER software depends on third-party software, which is covered by the corresponding licenses: - The ActorFoundry sotware and examples of ActorFoundry actor programs are distributed under the OSL license. See LICENSE-ACTORFOUNDRY for details. - The Scala library and examples of Scala actor programs are distributed under the EPFL license. See LICENSE-SCALA for details. - The WALA software is distributed under the Eclipse Public License - v 1.0. See LICENSE-WALA for details.