oracle / souffle

DEPRECATED. Soufflé is a translator of declarative Datalog programs into the C++ language.
https://github.com/souffle-lang
Universal Permissive License v1.0
49 stars 17 forks source link

Unable to build on older platforms (e.g. Ubuntu 12.04) #9

Open nkeynes-oracle opened 8 years ago

nkeynes-oracle commented 8 years ago

Known issues

b-scholz commented 8 years ago

Souffle uses extensively template code in C++ and GCC 4.6.x is not able to compile the data-structures. Rewriting the data-structure for old style C++ might not be possible. Similar with Bison - we use the latest C++ interface for bison. Older versions don't have this.

nkeynes-oracle commented 8 years ago

It may be difficult, but I don't believe it is impossible, and improving compatibility is useful both for us and for others.

b-scholz commented 8 years ago

We use advanced C++ template features to implement Futamura Projections/Partial Evaluation systems for data-structures. It will be very hard to achieve similar performance with an OO-style C++ program without partial evaluation.

If we don't use the latest bison C++ interface, the generated parser is an old-style C function instead of a modern C++ class linking via a driver the C++ class of the scanner.

If Oracle Labs (and other parties) may need a system which produces compatible code, we may want to divert the topic to building Soufflé as a library. Paul put a lot of effort into this / creating a JNI interface for Soufflé. There are other ideas related to the topic:

https://github.com/souffle-lang/souffle/issues/150 https://github.com/souffle-lang/souffle/issues/160

This might be a more productive/fruitful topic than porting Soufflé to old versions of C++/bison.