Frequently Asked Questions
- What license does Eclair have?
The Eclair compiler itself is licensed under a BSD-3 license, a permissive open-source license. You can find the license here. Note that the license only applies to the compiler; you are free to license the generated code however you see fit.
- Where does the name come from?
Eclair is heavily inspired by Soufflé, another high-performance Datalog that compiles to C++. Because of the similarities, another kind of pastry was chosen to stay in the same food theme. Besides, an eclair contains both chocolate and pudding, what’s not to like?
- Can I use Eclair by itself?
No, Eclair is not a general purpose programming language; it’s only made for querying data. Eclair will always depend on another “host” language for interacting with the outside world, just like when you would write an application that makes use of SQL. You can start using Eclair from another language by making use of one of the provided language bindings.
- What languages is Eclair itself written in?
The Eclair compiler is written in a mix of Haskell and Datalog. Using higher level languages makes the code easier to maintain, adapt and extend. The LLVM compiler framework is used for achieving fast query times.
- What architectures are supported by Eclair?
Because Eclair compiles to LLVM IR, any supported architecture by LLVM is a possible compilation target for Eclair. Eclair can compile both to native machine code or WebAssembly, which means you can run it almost anywhere!
- Why is there no direct support for 64-bit integers?
Eclair runs its queries 100% in-memory (RAM), and uses datastructures that are optimized to use as little memory as possible. Internally, this means that everything is represented by 32-bit integers. Using 64-bit integers would roughly double the RAM usage for a query (and perform slower too!).
In practice, the lack of 64-bit integers usually doesn’t end up being a problem for search-based problems, or you could use some simple workarounds. If you do encounter a situation where a 64-bit mode would help considerably, consider opening an issue on Github.