2013-05-29

We are happy to announce the release of Marketplace, a new programming language for building functional network programs. Marketplace combines two fundamental ideas in a new way: nested virtual machines and publish/subscribe messaging. Nesting allows programs to isolate processes and to delimit conversations. While publish/subscribe generalizes point-to-point and broadcast messaging, it smoothly turns the appearance and disappearance of participants and resources into presence and absence messages. Such messages make it particularly easy to start and stop services and to manage resources based on demand.

The initial endpoint subscribes to TCP messages on port 5999. When a conversational partner appears, the endpoint spawns a new process that runs an echoer process. The latter is stateless and subscribes to TCP messages. When it gets messages with payload data, it sends them back out with the opposite addressing; when the TCP conversation disappears, it quits.

Thus far, we have built several real systems using Marketplace: a DNS server, a DNS proxy, and an SSH server. The DNS proxy has handled DNS traffic for ourselves and other members of our lab for the last several months.

Geoff, we haven't yet tried to optimize this for performance, but the DNS proxy built with Marketplace serves all the DNS traffic for a bunch of people in our lab. As for security, that's all about what application you write using it.

Jon, yes, Erlang is a big inspiration, among many other things. It's a language in the sense that it goes after `#lang`, and in the sense that it extends the programming model in a fundamental way. Ultimately, the distinction between framework, language, and library is fuzzy.