Bloom: a language for disorderly distributed programming

Bloom attempts to remove traditional mismatches between distributed software and platforms. Definitely a systems-oriented programming language (in the sense that this is what systems does these days). Interesting features copied and summarized from their site:

  • disorderly programming: Much of the pain in traditional distributed programming comes from programmers bridging from an ordered von Neumann programming model into a disordered distributed systems reality that executes their code. Bloom was designed to match–and exploit–the disorderly reality of distributed systems. Bloom programmers write programs made up of unordered collections of statements, and are given constructs to impose order when needed.
  • a collected approach: Taking a cue from successfully-parallelized models like MapReduce, SQL, and Key/Value stores, the standard data structures in Bloom are disorderly collections, rather than scalar variables and structures. These data structures reflect the realities of non-deterministic ordering inherent in distributed systems. Bloom provides simple, familiar syntax for manipulating these structures.
  • CALM consistency: Bloom enables powerful compiler analysis techniques to reason about the consistency of distributed code; e.g. it can point out lines of code where a coordination library should be plugged in if you want to ensure distributed consistency.

Currently realized as an embedded Ruby DSL.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

a little history and grounding in theory as well

Q: What is Dedalus and how does it relate to Bloom?

The formal basis of Bloom is a temporal logic programming language called Dedalus, described here. Dedalus simplifies many challenges in specifying and analyzing programs, but it is not intended for general use as a practical programming language. Dedalus grew out of our earlier work on Declarative Networking, including a language called Overlog, which was in turn based on a language from database theory called Datalog. (If you’re curious about the origin of the name Dedalus, see footnote 1 in the technical report.)