The biggest difference is that Empirical is statically typed. Also, arbitrary expressions are allowed anywhere when dealing with Dataframes.
For example, I can sort by anything:
sort my_table by col1 - col2, foo(col3)
And I can aggregate by an external array as long as the lengths are the same:
from my_table select foo(col1) by some_array_with_repetition
As for performance, I've tried to make Empirical "reasonable" at this stage, though I haven't put too much effort into it beyond that. I'm more worried about the ergonomics of the language right now, so I don't have SIMD, dependency analysis, etc.
One of the biggest things Empirical lacks compared to q is nested arrays. That's a major issue I have to tackle in the virtual machine.
Can you compare/contrast this language with q? Can I write complex queries as I can do in q? How about performance?