Coder Social home page Coder Social logo

michealray / rho Goto Github PK

View Code? Open in Web Editor NEW

This project forked from rho-devel/rho

0.0 2.0 0.0 303.41 MB

License: GNU General Public License v2.0

Makefile 1.03% Python 0.48% C++ 18.94% R 36.06% Shell 1.01% M4 1.07% Groff 0.10% TeX 0.45% Fortran 18.45% C 20.94% CMake 0.07% HTML 0.89% Assembly 0.02% Batchfile 0.01% Objective-C 0.30% CSS 0.01% Java 0.05% Inno Setup 0.10% Perl 0.02% TypeScript 0.01%

rho's Introduction

Rho logo

Build Status Coverage Status

Rho

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
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.

https://groups.google.com/forum/#!forum/rho-devel

rho's People

Contributors

arunchauhan avatar droptablestar avatar edzer avatar jeffreyhorner avatar kmillar avatar llbit avatar lukaszdaniel avatar o- avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.