Humus is a pure actor-based programming language that provides a foundation for software developers to build reliable concurrent computer systems.  It features a referentially transparent pure-functional core for defining values.  These values become the messages between (and specify the behavior of) dynamically configured actors.

Actor behaviors are composed of concurrent, rather than sequential, primitive operations.  Groups of actors, called configurations, may also be composed without affecting their operation.  This allows implementation of systems with high scalability and low latency in both multi-core and distributed execution environments.

The theoretical foundations of Humus have mathematically rigorous semantics [1].  Unlike Erlang or Scala, there are no blocking operations and all expressions are completely free of side-effects.  Mutable state is entirely encapsulated within actors and may be affected only by sending asynchronous messages. Humus is designed around the principle of separating values and effects.

For more information about Humus, please see the following:

If you would like to experiment with Humus, there is a Humus Simulator/Debugger environment available online. “Playing the Stooge with Humus” is a nice tutorial introduction to the language. The simulator is written in JavaScript and runs in your browser (tested in Firefox and Chrome). As the simulator is developed, more powerful debugging and visualization features will be offered. Please note that performance is not a goal of this implementation.

G. Agha, I. Mason, S. Smith, and C. Talcott. A Foundation for Actor Computation. Journal of Functional Programming, Vol. 7, No. 1, January 1997.

4 Responses to “Humus”

  1. Evaluating Expressions, part 7 – Transactions and Exceptions

    […] « Evaluating Expressions, part 6 – Actor […]

  2. Actors Make Better Observers

    […] implementation of the Observer pattern in Humus […]

  3. On Separating Values and Effects

    […] Humus programming language is built on the principle of separating values and effects. There are pure-functional expressions […]

  4. Giant List of Programming Languages – Vuild

Leave a Reply

Your comment