297 karma · joined August 10, 2010
It would be much easier to be able to go to my manager with that kind of information. Right now the conversation goes:
"Hey, this linker could save us quite a bit of time on our enormous executable." "Okay, how much will it cost us?" "Well, there is this site where you can donate on a regular basis."
Everyone seems to keep forgetting, there is already an option on iOS for developers not wanting to go through the App Store: web apps. I believe WASM can even be used these days. Except that Safari doesn't offer developers some privacy sensitive APIs other browsers do. The current side loading pressure has very little to do avoiding Apple's cut and everything to do with bypassing Apple's restrictions.
So I expect should Apple introduce a heavily sandboxed side-loading experience, we'd be seeing developers complain they are not adhering to the spirit or the law or lawsuit.
I can't find any mention of recursion on the original blog post or the GitHub page. Without recursion it isn't Datalog.
I can only speculate, so maybe someone who knows better can correct me, but I would be surprised if many kernel syscall implementations would actually stay in cache after a dwq context switches. Especially with recent timing channel mitigations. But I'm just guessing.
And even if there are architectural issues, with processors seeing less benefit from Moore's Law I would expect computer architects to be looking for ways to eek out more performance such that they'd find solutions.
DOOP actually used LogicBlox before Souffle existed, but it is difficult to be competitive when Souffle doesn't need things like transactions, ACID, datasets larger than memory, incremental evaluation, etc.
My understanding is that there are well understood definitions of soundness for dynamically typed languages. The soundness theorem will generally be weaker ("your program will evaluate to a value or abort on a type confusion") but it is certainly possible to be sure a given dynamically typed language definition will never make mistakes like confusing an integer for a pointer. Though in the scheme of things such theorems are not much weaker than what you get for a statically typed language with exceptions ("your program will evaluate to a value with the given type or throw some exception").
We also allow constraints over aggregations. Though our syntax does require giving the result of the aggregation a temporary "table" name so that it can be used as part of the constraint.
transfer_table(id, user, src, dest, amnt), amnt > 10000.0 -> auth_table(id, man), managed_by_table(user, man).
If you wanted to express that for a transfer involving more than 10,000 dollars that it must have been approved by the user's manager. Basically any logical formula can be used as a constraint. It's also possible to express basic temporal constraints like
+user_pass_table(user, pswd1), user_pass_table@prev(user, pswd2) -> pswd1 != pswd2.
So that says if the user's password has changed, and the user had a password in the previous transaction, they cannot be the same password.
The database I work on has had sophisticated integrity declarative integrity constraints for a decade now, so it seems surprising that this would be considered something new.
I also work on an industrial strength Datalog implementation and I can tell you unequivocally there is very little relationship with how a real Datalog engine is implemented and a Prolog implementation.
And no, learning Prolog will not help you learn Datalog. Unless you're going to always us tabling or demand transformations, the difference in evaluation model requires writing in a very different style.
To clarify, if you don't have recursion, you've just got a slightly different skin over relational algebra.
So really linking to a text on Prolog is not really relevant to a discussion of the merits of Datalog.