pascal-lab / Tai-e

An easy-to-learn/use static analysis framework for Java
https://tai-e.pascal-lab.net/docs/index.html
GNU Lesser General Public License v3.0
1.45k stars 175 forks source link

Does Tai-e support SootUp or has any plan to support it? #27

Closed struce2 closed 1 year ago

struce2 commented 1 year ago

SootUp home page

SootUp Introduction

For more information

SootUp is more modern ?e.g.,

Suggested solution

Fully-Parallelizable Architecture

Alternative

No response

Additional context

No response

silverbullettt commented 1 year ago

No. Tai-e only uses soot as a temporary front end. We are developing our own front end. We aim to build a practical and powerful front end that is designed for program analysis, and will replace soot by it in the future.

struce2 commented 1 year ago

Does this new frontend support concurrency?

struce2 commented 1 year ago

"theWorld" is stored in a static variable, which is not supported by concurrency?

silverbullettt commented 1 year ago

"stored in a static variable" doesn't mean it is not supported by concurrency. We will take concurrency into account when developing new front end, e.g., building IR in parallel.

struce2 commented 1 year ago

Sorry, I didn't make it clear, I mean whether the whole Tai-e can be concurrent, e.g., pointer analysis.

silverbullettt commented 1 year ago

Well, it is non-trivial to make pointer analysis concurrent (parallelization of pointer analysis can be a research topic).

(BTW, SootUp claims "Fully-Parallelizable Architecture", but it doesn't mean that all its analyses are concurrent. Analyses are components of it, not architecture.)

When we design pointer analysis framework in Tai-e, a primary goal is extensibility, as we want to involve more developers to write analyses on top of it. That's why we compose Analysis Plugin System.

We have also considered to parallelize pointer analysis in Tai-e, but this will make it harder to write analysis plugins as the developers need to take synchronization into account. So currently we choose single-threading architecture for pointer analysis.

Tai's pointer analysis is already more efficient than the state-of-the-arts (see our technical report). If we encounter performance problems in the future, we may also consider parallelize it.

FYI, Tai-e already executes method- and class-level analyses in parallel.

struce2 commented 1 year ago

Thanks, looking forward to the new frontend, so far soot feels a little slow. Thanks Again.

silverbullettt commented 1 year ago

No worries ;-)