-
Notifications
You must be signed in to change notification settings - Fork 70
Add datalog frontend via a proc macro #155
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
2e6adb9 to
6eebb2a
Compare
e54ada0 to
5c62cbe
Compare
6de39f3 to
3ef6e89
Compare
5f61d6e to
7b0f8a3
Compare
MingweiSamuel
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice!!
Couple comments before diving in:
let (in_send, in_recv) = tokio::sync::mpsc::unbounded_channel::<(usize, usize)>();
...
.input in
Wouldn't it make sense to make the input .input in_recv so no _send/_recv convention needs to be enforced?
- Snapshot testing will be fragile and the codegen will definitely change in the future so we should eventually find a better way to test
|
Yeah perhaps we should snashot test the surface syntax or something higher level. Since we do have runtime tests, snapshots are mostly for my sanity of manually inspecting how changes affect different examples. |
MingweiSamuel
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would be good to have some high-level comments through the big function. Or split into a few smaller functions if that makes sense.
got a bit nit-ey in the review :P
* Implement parser for datalog and set up proc macro infra * Eliminate boxing of fields in Datalog grammar * Allow Souffle style trailing dot * Update rust-sitter * Initial graph creation logic * Update snapshots * Update to latest main * cargo fmt * Initial hacked up join implementation * Properly handle target bindings * Fix rules without a join * Move grammar to separate file * Add tees so that relations can be used multiple times * Fix other tests * Tee all relations * Support multiple contributors to one relation * Add transitive closure test * Support single column relations * Emit outputs to mpsc * Don't augment input/output names * Expand transitive closure test * Add join-with-self test that requires deterministic codegen * Address feedback * Extract join generation logic to a separate function * Eliminate assumption of usize columns * Rename datalog_compiler => hydroflow_datalog
* Implement parser for datalog and set up proc macro infra * Eliminate boxing of fields in Datalog grammar * Allow Souffle style trailing dot * Update rust-sitter * Initial graph creation logic * Update snapshots * Update to latest main * cargo fmt * Initial hacked up join implementation * Properly handle target bindings * Fix rules without a join * Move grammar to separate file * Add tees so that relations can be used multiple times * Fix other tests * Tee all relations * Support multiple contributors to one relation * Add transitive closure test * Support single column relations * Emit outputs to mpsc * Don't augment input/output names * Expand transitive closure test * Add join-with-self test that requires deterministic codegen * Address feedback * Extract join generation logic to a separate function * Eliminate assumption of usize columns * Rename datalog_compiler => hydroflow_datalog
No description provided.