Soufflé is a translator of declarative Datalog programs into the C++ language. Soufflé is used as a domain-specific language for static program analysis, over large code bases with millions of lines of code. Soufflé aims at producing high-performance C++ code that can be compiled with the native compiler on the target machine.
LVM segfault. (LVM segfault souffle-lang#964 in the main branch)
RAMI can also produce incosisnent results with some modification.
I don't know what is wrong yet. And I need to worry about other things for now. So I'm just gonna list all the information here for a future revisit.
LVM segfault. Very rarely. So rare that I can't produce it on any of my devices.
Running the tests on MacOS system always fail some tests randomly. (Happen to the compiler, RAMI and LVM. So may not be relevant to the interpreter)
If I use a single InterpreterCtxt for RAMI like I did in LVM (Instead of scoping). I get incosisent results for some test cases. Sometimes even crashes (I left the code in branch buggyInterpreter).
I suspect either some variables are left uninitialized or there is something wrong with InterpreterCtxt. Maybe I need to understand the mechanism behind translationUnit.