Probably the most popular implementation is datomic and its free variants. Which has a lot of convenience to it as you can embed custom java functions.
It's not datalog but cypher has a lot of amazing ideas like easily combining algorithms to potentially recursive relationship queries, eg, "Give me the all shortest paths between these two peoples where there's at most 6 hops" -> allShortestPaths((n1:Person)-[*..6]->(n2:Person)) .
We don't have online REPL just yet but Nextjournal is pretty great if you want to play through the tutorials interactively [1]. The other unique angle is that Crux gives you "bitemporal" Datalog queries. Oh and the MIT license :)
https://souffle-lang.github.io/
Some benchmarks here showing it beating a lot of other engines:
https://souffle-lang.github.io/pdf/cc.pdf (this paper also cites LogixBlox)
They translate datalog into a straightforward relational bytecode, then use Futamura projections to compile that bytecode into a template-heavy "monolithic" C++ program.
As far as I remember one of use of C++ templates is to specialize for different sizes of tuples, so fast assembly is generated for particular queries/facts. They are doing at least 3 nontrivial transformations, and the last step really leverages C++.
The generated C++ is also multi-threaded, which is a big win.
I watched a talk on Rust where Niko M said he prototyped the new borrow checker with Souffle I believe. It's somewhere on YouTube.
"I'm casually involved,"
Humble understatement of the year! Thank you for your work!