Apr 23, 2013, 12:09:03 AM4/23/13
Bud 0.9.7 can be found on RubyGems. This release contains a lot of
bugfixes, a few optimizations, and further work on improving the
usability of Bud's support for lattice objects. The release notes are
On behalf of the Bloom team:
== 0.9.7 / 2013-04-22
* Avoid raising an exception when Bud is used with Ruby 2.0. There isn't
anything special that Bud itself needs to do to support Ruby 2.0, but
RubyParser doesn't properly support 2.0 yet. So using 2.0-only syntax in Bud
rules is unlikely to work (until RubyParser is updated), but no other problems
have been observed.
* Reject <= on collections from outside Bloom rules (#289, Aaron Davidson). The
previous behavior was error-prone: inserting into a scratch collection via <=
was not rejected but the inserted data would immediately be discarded at the
beginning of the next tick. Hence, it is simpler to require <+ or <~ for all
insertions from outside Bloom rules.
* Fix bug in join operators whose qualifiers reference collections defined
inside imported modules (#301)
* Fix bug in join operators when the same table and column name appears on the
LHS of multiple join predicates (#313)
* Fix bug in outer joins with multiple predicates (#315)
* Fix several bugs in rescan/invalidation logic for tables in the presence of
upstream deletions (#303)
* Fix regression in file_reader collections (#304)
* Improve chaining of notin operators
* Optimize join evaluation with multiple predicates
* Optimize notin self joins
* Improve error reporting for syntax errors on temp collections (#310)
* Add Travis CI integration hooks (#300, Josh Rosen)
* Rename lmap#apply_monotone to lmap#apply. Also, allow #apply to take either
monotone functions or morphisms, and improve error reporting.
* Add lmap#filter. This takes an lmap whose values are elements of the lbool
lattice and returns an lmap containing only those k/v pairs where the value is
* More intuitive lattice equi-join syntax (lset#eqjoin). Rather than specifying
the join predicate(s) using array indexes, instead allow them to be specified
using a hash of field names, as in traditional Bloom joins. This only works
when the lset contains Structs.
* Remove lset#project, and allow lset#eqjoin to take zero predicates; in the
latter case, eqjoin computes the Cartesian product.
* Support deletion rules (<-) with lattice values on the RHS