bloom-lang / bud

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

guarded joins of async inputs don't fire in the push-based runtime #281

Closed palvaro closed 11 years ago

palvaro commented 11 years ago
class Foo
  include Bud

  state do
    channel :l
    channel :r
    table :lside
    table :rside
    #scratch :rside
    scratch :result
  end

  bloom do
    lside <= l
    rside <= r
    result <= (lside * rside).lefts(:val => :val)
    stdio <~ result.inspected
  end
end

f = Foo.new(:port => 12345)
f.l <~ [["localhost:12345", 2]]
f.r <~ [["localhost:12345", 2]]
f.tick; f.tick

The program above produces no output. if rside is defined as a scratch instead of as a table, it does produce output.

neilconway commented 11 years ago

Almost certainly another bug in the rescan/invalidation logic. I'll look into it tomorrow.