From: "James M. Lawrence" Date: 2010-01-08T23:43:01+09:00 Subject: Re: RCR: fork(n) {|n| } Roger Pack wrote: > >> From there, processes may be abstracted away by replacing the back end: >> >> http://tiamat.rubyforge.org > > Interesting--language level multiprocessing. I guess this isn't quite > like shared mutexes across processes but it seems very interesting. > Does it use fork for its backend? Fork is not used. You have the option of distributing with threads, with local processes, or by connecting to an existing pool of (local or remote) processes. Process communication is handled with DRb. > Can it cross machines? Yes. A few selling points: * Built on the foundation of lazy evaluation and pure functions (efficient; ease of refactoring). * You have a general call graph at your disposal rather than a flat array (though arrays are just as easy to use). * Your code exists independently of how it gets distributed: threads, local processes, remote processes. * Pluggable back-end for future distribution options. Anti-selling points: * Requires a little understanding of pure functional programming (basically just writing functions without side-effects). * Some syntax restrictions apply for distribution across multiple machines (due to ruby_parser/ruby2ruby being at present the only complete AST toolchain for Ruby). -- Posted via http://www.ruby-forum.com/.