ROMP is the Ruby Object Message Proxy. It is sort of like drb (distributed Ruby) in that it allows a Ruby client program to transparently talk to an object that is sitting on a server. Its features include:

  • Up to 40000 messages per second
  • Allows more than one object to reside on the server; supports a sort for naming service for retriving references to objects.
  • Fully thread-safe, provided the object sitting on the server is thread-safe.
  • Supports oneway calls, so the client does not have to block waiting for a response from the server.
  • Allows exceptions to be propogated from server to client; massages the backtrace to make debugging easier.

NEWS (Feb. 21, 2002) - The author of drb has done some performance tests comparing ROMP and drb. It looks like drb is a LOT faster than it used to be (but still not as fast as ROMP). You can see the results here:

You can download or browse the latest version of ROMP from here:

romp-0.2 - (click here to download) - ROMP with some patches from MoonWolf (see [ruby-talk:81812])

client.rb   download
extconf.rb   download
romp.rb   download
server.rb   download
romp_helper.c   download

romp-0.1 - (click here to download) - the original ROMP

client.rb   download
extconf.rb   download
romp.rb   download
server.rb   download
test.rb   download
romp_helper.c   download

You can also browse the Rubydoc documentation here.

ROMP was originally known as DRuby, but I changed the name so it wouldn't get confused with drb (which is sometimes called dRuby). You can download old versions of the source from below:


druby - The original DRuby, written in just over 100 lines of Ruby code

client.rb   download
druby.rb   download
server.rb   download

druby2 - A more advanced version that handles multiple objects and handles oneway calls

client.rb   download
druby2.rb   download
server.rb   download

druby3 - The last pure Ruby version of the program; this one adds object references

client.rb   download
druby3.rb   download
server.rb   download

[an error occurred while processing this directive]