[R-SIG-Mac] A Preview of the R Execution Server

Byron Ellis byron.ellis at gmail.com
Sat Jun 30 07:31:48 CEST 2007


I've mentioned this little project to a few people off-list as
something I'd like to do for Leopard, but it occurred to me that there
is nothing particularly Leopard specific in this particular piece of
code. So, here we go:

RExecServer
http://www.stanford.edu/~bcellis/Homepage/R%20Execution%20Server.html

This project mostly comes out of a conversation I had with Stefano
about using multiple cores in the R GUI and Xgrid. The RExecServer is
a first step in that direction. It provides a true Cocoa application
that runs as a background server (so no Dock icon or menubar). The
user (that's you) communicates via either a normal stdio connection
(i.e. Terminal or ESS) or using Distributed Objects (for the GUI). In
this initial implementation only the stdio access is working.

To use it I recommend symlinking the shell script
RExecServer.app/Contents/Resources/RExecServer.sh to something handy
in either /usr/bin or /usr/local/bin so that you can get at it from
ESS or the Terminal. Then, just use as normal.

Things you get:

* Mostly a working, fully responsive, Quartz device. This Quartz
implementation is actually completely new so you may notice that
certain things are different. Particularly, the font metric
calculations are now improved---note the location of elements in
plotmath (particularly sum and product). Right now aliasing is turned
off, but that will be an option (I was experimenting with something).
It also doesn't update the screen until it's done processing so while
it feels slower it is actually much faster. There might be a few
clipping bugs, but we'll sort those out.

* A normal readline-based interface that can be used from ESS or
Terminal. You can also start multiple copies, though it presently
complains about Services. This is harmless though.

* Very low CPU usage when idle. I'm forced to use polling with
readline, but it doesn't appear to use very much. The event loop works
differently in this version so there is no need for a timer or
anything.

I'm not sure how much time I'll have, but here's what the design buys me:

* We can pipe bitmap and pdf output through the quartz device. This
means no more X11 required. Right now this isn't working, but the
infrastructure is in place.

* We can separate the GUI and R itself. This has pros and cons but I
think it will be a long term advantage, especially as we get more
cores.

Things I'd really like to do (again, time):

* Copy-n-paste objects between Servers. Using serialize/deserialize
and Distant Object or NSPasteboard connections

* Quicktime movie output device. This might wait for Leopard.

* If you poke around the link above you might find some other ideas. :-)

What this isn't:

* Intended as a complete GUI. That's mostly for the front-end
implementation which is a separate application. The graphics device is
intended to be very minimal for ESS users who want something better
than the old Aqua device.

* Anywhere near complete. You don't get lots of things right now. Like
command-line options. Any options at all really. Lots of safety things
aren't wired up either.


Let me know what you think and if you run into major trouble. The
build is Universal so it should also work on PPC.

-- 
Byron Ellis (byron.ellis at gmail.com)
"Oook" -- The Librarian



More information about the R-SIG-Mac mailing list