bloom-lang / bud

Prototype Bud runtime (Bloom Under Development)
http://bloom-lang.net
Other
854 stars 60 forks source link

budplot should mark scratches as non-monotonic #265

Open neilconway opened 12 years ago

palvaro commented 12 years ago

I see your point that the analysis is not currently sound due to scratch semantics. however, this change is likely to cause most (or all) existing programs to be flagged as divergent. we want something much more specific: 'unguarded asynchrony' is nonmonotonic. we would need to define this as something like: a path from a channel to another channel (or any sideeffect) that does not include at least one persisted table, and DOES include at least one join...

neilconway commented 12 years ago

Well, if this motivates us to make our program analysis more accurate, then so much the better -- I've been advocating for that for a while :) The current situation absolutely needs improvement though.

re: channel => channel, I don't think we need two channels or a join: e.g., count() of a channel being stored into a table is divergent (due to batching).