1This backend integrates the R environment into Cantor.
2
3The design of the R backend is different from the other backends:
4As R offers a C API, there is no necesity for parsing output.
5As the R API is not thread-save and to not let the backend freeze
6Cantors ui, the backend is implemented as 2 parts:
7
8- The RServer:
9  This is a separate application, that uses the R-API to run commands,
10  and exposes it's functionality over DBUS
11
12- The R backend:
13  This implements the Cantor interfaces, and starts the RServer. It delivers
14  the commands to the server over DBUS, and connects to it's signals to get
15  the result.
16
17To embed plots, the RServer creates a png paint device, and checks if it gets
18changed while a computation is running. If so, the url of the png is delivered
19as result, and a new png-device is created, with a new temporary file.
20(NOTE: instead of png, eps should be used, but there were some problems when I first
21tried)
22
23The Code to access the R-API is heavily based on the RInside library
24by Dirk Eddelbuettel, see http://dirk.eddelbuettel.com/code/rinside.html
25