Humus
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.
- [1]
- G. Agha, I. Mason, S. Smith, and C. Talcott. A Foundation for Actor Computation. Journal of Functional Programming, Vol. 7, No. 1, January 1997.
[…] « Evaluating Expressions, part 6 – Actor […]
[…] implementation of the Observer pattern in Humus […]
[…] Humus programming language is built on the principle of separating values and effects. There are pure-functional expressions […]
[…] Humus http://www.dalnefre.com/wp/humus […]
[…] Humus all values are immutable. The only mutation that exists is actor behavior replacement (with […]
[…] 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 […]
Hi.
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?
Cheers,
Steve
The most-complete implementation is probably in the browser-based simulator https://github.com/dalnefre/humus_js