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 specify the messages between (and the behavior of) dynamically configured actors. Humus is an attempt to express the essential semantic elements of the Actor Model with as little extra mechanism as possible.

Actor behaviors are composed of concurrent, rather than sequential, primitive operations. Groups of actors, called configurations, may also be composed without affecting their meaning. 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.

Note: The original implementation is archived here.

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

8 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
  5. It's Actors All The Way Down » Serializers Revisited

    […] Humus all values are immutable. The only mutation that exists is actor behavior replacement (with […]

  6. It's Actors All The Way Down » “Same Fringe” Revisited

    […] necessary [3]. We have previously explored how to solve this problem using actors written in Humus. Now we revisit the problem considering both functional and actor-based solutions in […]

  7. Steve Biedermann


    I’m a huge proponent of the actor model and stumbled across your blog today. Humus looks really cool, so I was wondering if there is source code somewhere to check out?


  8. Dale Schumacher

    The most-complete implementation is probably in the browser-based simulator

Leave a Reply

Your comment