Search code examples
javascriptpythonrubyasynchronouslisp

List of evented / asynchronous languages


I'm working on a system than has to be pretty scalable from the beginning. I've started looking at / playing around with asynchronous/evented approaches to writing serverside code. I've played around with both ruby's EventMachine and node.js.

EventMachine is cool, but doesn't have asynchronous file I/O, which I need. The interface is kind of strange, too.

Node.js is awesome, but it's... uhh.. it's javascript.

Can the greater Stack Overflow community help me out by listing other languages that have strong asynchronous support? To qualify, the language would need to support both closures and have libraries for asynchronous file io, http, etc. It would be nice to have something like node.js that was written in a stronger language than javascript.

Lisp? Python has twisted, right?


Solution

  • Erlang may be the language with the highest intrinsic scalability for server-side code (it manages multiprocessing for you, mostly by doing async, cooperative task switching "under the covers") -- if you can stomach its peculiar syntax and (often) peculiar semantics.

    Python has twisted (very general purpose for all networking tasks), tornado (for server-side async specifically), and stackless (widely used in MMP online games), not to mention the old but usable asyncore that's in the standard library (and the even-older "Medusa" that sits on top of asyncore to enrich its functionality).

    Go has very light "stackless" goroutines and channels for synchronization purposes when needed.