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.