Stream: t-compiler/wg-polonius

Topic: datalog-to-datafrog


lqd (Oct 04 2019 at 02:18, on Zulip):

Ok here's the datalog-to-datafrog "prototyping compiler" PR I mentioned before: https://github.com/rust-lang/polonius/pull/132 it does help when trying out rules (or doing Demand Transformation)
I've been bitten by weirdness around write!, rustfmt and whitespace line-endings inside the macro, so I'm not sure it'll pass CI. (It does pass locally, but was having random whitespace added/removed). It's not supposed to be especially robust or anything, just giving it valid decls and rules, and it should work. (It's also inefficient & cloning strings left and right but oh well :)

let me know what you think

Albin Stjerna (Oct 04 2019 at 19:53, on Zulip):

I think it’s pretty gosh damned cool is what I think

lqd (Oct 04 2019 at 20:07, on Zulip):

(it's still very buggy but I'll fix it over time, add tests etc)

lqd (Oct 06 2019 at 17:58, on Zulip):

(yeah, maybe that should be in its own repo temporarily, until it's more stable and better tested, before being upstreamed in datafrog, so I'll close the PR for now and move it to a more appropriate location)

Albin Stjerna (Oct 07 2019 at 08:51, on Zulip):

There might even be a case for it being its own crate perhaps?

Albin Stjerna (Oct 07 2019 at 08:52, on Zulip):

That way, it could be used for code-generation as a dev-dependency like for example lalrpop

lqd (Oct 07 2019 at 13:57, on Zulip):

maybe. Although it's not a complete solution that will take all datalog programs and spit out a perfect datafrog computation (datafrog has its own limitations and API requirements), I'm mostly interested in making it easy for us to test out things in polonius. I'll put it in its own "utils" crate for the time being, maybe with some of the other hacky things from my datafrog fork (eg "datalog provenance" AKA a println for every rule firing, and a function that extracts some target tuple's provenance from this log)

lqd (Oct 07 2019 at 18:03, on Zulip):

datafrog generator moved here https://github.com/lqd/datapond @Vytautas Astrauskas

lqd (Oct 07 2019 at 18:05, on Zulip):

(I hope it helps but it's likely not going to work 100%, it's really only intended in the limited context of polonius, not every datalog computation; and even then only gets you part of the way there, you still need to know datafrog and how to set it up etc)

lqd (Oct 08 2019 at 00:47, on Zulip):

of course as soon as I add why-provenance, I actually also need why-not-provenance to understand what is going on in the flow sensitive equality variant :sweat:

Vytautas Astrauskas (Oct 08 2019 at 08:27, on Zulip):

datafrog generator moved here https://github.com/lqd/datapond Vytautas Astrauskas (I plan to dogfood it there for a while, maybe add DT to it, etc, and then see what Niko and Frank think about upstreaming those to datafrog directly)

Thanks!

Last update: Nov 15 2019 at 20:05UTC