[erlang-questions] Go adding more Erlang style features - Go Circuit. yc

giovanni_re <>
Wed Apr 24 07:50:25 CEST 2013

Go Circuit – Distributed Go Programming Framework (gocircuit.org)
105 points by Rooki 19 hours ago | 23 comments

 davidw 16 hours ago | link Sounds like Go adding more Erlang style
 features. Off the top of my head, some nice things that Erlang lacks in
 that department might include:

* A bit more security by default. Erlang was built for something where
they presumed they were walled off from bad stuff.

* Some kind of routing mechanism, so that you could have A connected to
B, and B connected to C, and the system would be able to send messages
from A to C. I have no idea if this is actually a good idea, as this is
not the sort of thing I use Erlang for myself. But it seems like it
might be cool.


dualogy 13 hours ago | link > Sounds like Go adding more Erlang style

Nitpick: this is simply an independent 3rd -party package / external lib
for Go developers. Not a language or runtime feature or addition.


elviejo 3 hours ago | link So maybe like erlang's OTP ?


 Paradigm for developing and sustaining Big Data apps

The circuit reduces the human development and sustenance costs of
complex massively-scaled systems nearly to the level of their
single-process counterparts. It is a combination of proven ideas from
the Erlang ecosystem of distributed embedded devices and Go's ecosystem
of Internet application development. The circuit extends the reach of
Go's linguistic environment to multi-host/multi-process applications. In
simple terms, the Go Circuit was born from the desire to be able to

feedback := make(chan int) circuit.Spawn("host25.datacenter.net", func()
{ feedback <- 1 }) <-feedback println("Roundtrip complete.")

TheSpawn operator will start its argument function on a desired remote
host in a new goroutine, while making it possible to communicate between
the parent and child goroutines using the same Go code that you would
use to communicate between traditional goroutines. Above, the
channelfeedback is transparently “stretched” between the parent
goroutine, executing locally, and the child goroutine, executing
remotely and hosting the anonymous function execution. Using the circuit
one is able to write complex distributed applications — involving
multiple types of collaborating processes — within a single circuit
program. The circuit language used therein is syntactically identical to
Go while also: Providing facilities for spawning goroutines on remote
hardware, and Treating local and remote goroutines in the same manner,
both syntactically and semantically. As a result, distributed
application code becomes orders of magnitude shorter, as compared to
using traditional alternatives. For isntance, we have been able to write
large real-world cloud applications — e.g. streaming multi-stage
MapReduce pipelines — in as many as 200 lines of code from the ground
up. For lifecycle maintenance, the circuit provides a powerful toolkit
that can introspect into, control and modify various dynamic aspects of
a live circuit application. Robust networking protocols allow for
complex runtime maneuvers like, for instance, surgically replacing
components of running cloud applications with binaries from different
versions of the source tree, without causing service interruption.


---  Join the BerkeleyTIP-Global mail list -   http://groups.google.com/group/BerkTIPGlobal. All Freedom SW, HW & Culture.

More information about the erlang-questions mailing list