No description, website, or topics provided.
Switch branches/tags
Nothing to show
Clone or download
Failed to load latest commit information.
bench Add allocator benchmarks + more benchmark options (#110) Aug 3, 2016
doc Re-add the png version of the rho logo. May 20, 2016
etc Merge r-source until the R 3.3 branchpoint. Apr 6, 2016
m4 Merge wch/r-source/trunk into CXXR Feb 23, 2016
po Remove the bytecode compiler and interpreter. Dec 18, 2015
share Improve compatibility for packages using the C API Jun 23, 2016
src Make more builtins use varargs. Mar 16, 2017
tests Simplify code around Expression::evaluateFunctionCall. Mar 15, 2017
tools Merge wch/r-source/trunk into CXXR Feb 23, 2016
.clang-format Add a .clang-format file that matches the existing CXXR style fairly … Jul 10, 2014
.gitignore Rename project from CXXR to rho. Mar 26, 2016
.travis.yml Run rho under 'catchsegv' on travis. Oct 7, 2016
.ubsan_suppressions Support and test more compilers (#52) Apr 29, 2016
COPYING Importing R-2.5.0 May 23, 2007
ChangeLog Merge wch/r-source/trunk into CXXR Feb 23, 2016
INSTALL First phase of upgrade to parallel CR 3.0.2. Jan 21, 2014 Check return value of posix_memalign Aug 12, 2016
Makefile.fw Update Makefiles for R -> rho renaming. Apr 1, 2016 Changes missing from the previous commit. May 7, 2016
README update README Jul 7, 2014 Rho development suspended. Jun 30, 2017
VERSION Merge wch/r-source/trunk into CXXR Feb 23, 2016
VERSION-NICK First phase of upgrade to parallel CR 3.0.2. Jan 21, 2014
acinclude.m4 First stage in reintegrating Chris Silles' configure branch into Aug 16, 2013
aclocal.m4 Merge wch/r-source/trunk into CXXR Feb 23, 2016 Merge wch/r-source/trunk into CXXR Feb 23, 2016
configure Another attempt to fix compiler flags. Oct 4, 2016 Another attempt to fix compiler flags. Oct 4, 2016

Development on Rho has been suspended indefinitely.

If you are interested in resuming development, please contact

Rho logo

Build Status Coverage Status


The goal of the Rho project is to refactor the interpreter of the R language into a fully-compatible, efficient, VM for R using modern software engineering techniques. Rho is being carried out independently of the main R development and maintenance effort.

Currently the rho codebase is based off R-devel.

Build Requirements

Compiling rho requires a GCC or Clang compiler with C++ 11 support and fortran support. In addition the following libraries must be installed:

  • boost >= 1.48.0
  • libcurl >= 7.28.0
  • zlib >= 1.2.5
  • libbzip2 >= 1.0.6
  • liblzma >= 5.0.3
  • pcre >= 8.10
  • libedit

Compilation of the LLVM JIT requires clang 3.4 or later and the matching version of the LLVM library (except building on clang 3.7 is currently broken).

Rho has been tested to compile on both Linux and Mac OSX systems.

Configuration and Compilation

To build with the LLVM JIT enabled:

./configure --enable-llvm-jit --enable-maintainer-mode
make check

For development builds, it is useful to set CFLAGS and CXXFLAGS to -Wall -DNO_CELLPOOLS -DCHECKED_SEXP_DOWNCAST -fsanitize=address -O1 in order to find bugs more easily.

The configure call may complain about missing recommended packages. The recommended packages can be obtained by running the script tools/rsync-recommended.

Building on OSX

It is tricky to build rho with JIT support on OSX. The following steps show how to build without JIT support.

First, you will need the XCode command line tools which provide clang and clang++. Additional dependencies you need are:

  • Fortran compiler
  • XZ library (liblzma)
  • PCRE library
  • Boost C++ library

The above dependencies can be installed with e.g. Homebrew:

brew install gcc # Provides gfortran.
brew install xz
brew install pcre
brew install boost

After fetching the dependencies you should be able to build. If your Homebrew folder is in your home directory you will need to add ~/homebrew/include and ~/homebrew/lib as include/library directories:

CC=clang CXX=clang++ \
    CFLAGS='-I/Users/me/homebrew/include -g -O2' \
    CXXFLAGS='-I/Users/me/homebrew/include -g -O2' \
    CPPFLAGS='-I/Users/me/homebrew/include' \
    LDFLAGS='-L/Users/me/homebrew/lib' \
    ./configure --with-x=no

Notable Known Issues

  • Currently rho doesn't support packages that contain native code that uses the USE_RINTERNALS macro. This includes Rcpp, rJava, data.table, xts and all the packages that depend on them.
  • Our testing on different platforms is currently very limited. We currently test on Ubuntu trusty with gcc 4.9, gcc 5.3, gcc 6.1, clang 3.5, clang 3.6 and clang 3.8, so those should always work. OSX and other linux distros are also supported, but aren't regularly tested.

Rho Discussion Mailing List.!forum/rho-devel