This release includes many bug fixes and new features; in particular,
it introduces some syntax sugar to simplify common programs.
Highlights:
* New update/upsert operator (<+-): this simplifies the common pattern
of deleting an old version of a fact via <- and calculating a new
version of the fact to replace it via <+
* New "with" statement that introduces a temporary collection within a
limited program scope. This is similar to the "let" statement in Lisp;
the idea is you can name a temporary collection and then refer to it
within a nested program scope, but not in the rest of the program.
* New, better syntax for anti-joins (negation)
* Support for Bloom rules that handle OS signals
* Support for Bloom rules that halt the execution of the current Bud interpreter
* Rework the implementation of "single-step mode" (running Bud
timesteps by calling tick() manually). Single-step mode now starts
EventMachine, allowing a much broader range of Bloom programs to be
executed.
* Reorganize the naming of persistent collections. "sync" is now a
generic name for a persistent collection with synchronous semantics
(it takes a parameter describing the backing store to use; currently,
can be "dbm" or "tokyo"). "store" is a generic name for a persistent
collection with asynchronous semantics; the only store right now is
"zookeeper".
* Fix bugs in outer joins, self joins, and signal handling.
On behalf of the Bloom folks:
Peter Alvaro
Peter Bailis
Neil Conway
Joe Hellerstein
Bill Marczak
Thanks also to Michael Ficarra for submitting some pull requests.
thx bloom folks :)
Joe