The following applications are written in the Soufflé Language. Some are open source and the source code is accessible:
Java
- Doop is a pointer analysis framework for Java programs. Doop implements a range of points-to algorithms, including context insensitive, call-site sensitive, and object-sensitive analyses. The source code can be found here.
- Java JDK Security Analysis: Soufflé was initially used to find security vulnerabilities in the Java JDK library. This project was conducted by Oracle Labs, Brisbane.
Solidity / EVM
- A binary lifter (and related framework) from low-level EVM code to a higher-level function-based three-address representation, similar to LLVM IR or Jimple. The source code can be found here.
- Securify 2.0 is a security scanner for the Solidity language. The source code can be found here.
- Vandal is a static program analysis framework for Ethereum smart contract bytecode, developed at The University of Sydney. The source code can be found here.
C/C++
- Insieme project is a research compiler for automatically optimizing parallel programs for homogeneous and heterogeneous multi-core architectures. It is a source-to-source compiler. The source code can be found here.
- MATE tool for interactive exploration of potential software vulnerabilities in C/C++ source code uses a context-sensitive pointer analysis cclyzer++ implemented using Soufflé.
Binary code
- GrammaTech’s DDisasm is a disassembler for multiple platforms (x86_32, x86_64, ARM32, ARM64, and MIPS32). The source code can be found here.
Haskell
- There is a Haskell/Soufflé interface written by Luc Tielen. You can find the source code here.
- GRIN is a Haskell backend that uses Soufflé. The source code can be found here.