The FutureSoot project
FutureSoot is a three-years project, which started in 2018, and is funded by the DFG’s funding line on Research Software Sustainability. The project provides us funding to both give Soot a major architectural overhaul, and also to develop a sustainability plan that allows us to finance the further development and maintenance of Soot in the future.
What concrete goals do we have with FutureSoot?
We are currently developing a brand-new version of Soot, currently still in a private branch. This new version will enable people to use Soot in a much more flexible manner. Particularly, we are implementing the following major, breaking changes:
- We will get rid of most singletons, allowing for a much more decoupled, modular design.
- This, in turn, will allow us to parallelize certain operations, e.g. the conversion to Jimple, which will be realized through actors.
- We have teamed up with Julian Dolby to integrate Soot with WALA’s source code frontends. This will not only allow Soot to analyze more current Java code, but also JavaScript and Python.
- The Jimple IR will undergo slight changes to accommodate those different languages. Also we will make it immutable by design, such that currently expensive lookups can be more effectively cached. Jimple-modification will still be possible, though, when needed.
- When getting rid of singletons we will also abolish the concept of a single Scene. Instead one will have the opportunity to have different views on the code, that can reflect, for instance, different versions of the same code base, or a number of code bases, all in the same Soot instance. The various analyses can relate to those views.
- End users will be able to use Soot in two ways:
- As a library: by default, Soot will assume that it’s embedded in a client application that owns the thread of control. This analysis client can use off Soot whatever is needed. This new mode eases integration of Soot, e.g. into IDEs, but also into rich client analyses.
- As a command-line tool: as a modular component, we will implement a command-line client which implements a default control thread to load into Soot certain code projects, have them analyzed/transformed, similarly to how Soot can be used today. All functionality will be implemented through calls into the library.
- FutureSoot will assist end users by integrating with the Language Server Protocol. This allows Soot’s code-related messages to be directly displayed in various IDEs.
Principal investigators
- Eric Bodden, Chair of Software Engineering at Paderborn University
- Rüdiger Kabst, Chair of International Business at Paderborn University
Project team (alphabetized by surname)
- Manuel Benz, mbenz@uni-paderborn.de
- Christian Brüggemann, cbruegg@mail.upb.de
- Andreas Dann, andreas.dann@uni-paderborn.de
- Julian Dolby, dolby@us.ibm.com
- Ben Hermann, ben.hermann@uni-paderborn.de
- Linghui Luo, linghui.luo@uni-paderborn.de
- Jan Martin Persch, jmpersch@hni.upb.de
- Markus Schmidt, smarkus@mail.upb.de