fastr

by oracle

oracle / fastr

A high-performance implementation of the R programming language, built on GraalVM.

472 Stars 53 Forks Last release: 2 months ago (vm-20.2.0) Other 13.4K Commits 50 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

A high-performance implementation of the R programming language, built on GraalVM.

FastR aims to be: * efficient: executing R language scripts faster than any other R runtime and as fast as

Rcpp
* polyglot: allowing fast polyglot interoperability with other languages in the GraalVM ecosystem. * compatible: with the reference R implementation including the R extensions C API * embeddable: allowing integration using the R embedding API or the GraalVM polyglot embedding SDK for Java

The screenshot below shows Java application with embedded FastR engine. The plot below was generated by

ggplot2
running on FastR and it shows peak performance of the raytracing example. The measurements were reproduced independently.

Java embedding Speedup

## Getting Started See the documentation on the GraalVM website on how to get GraalVM and install and use FastR.

$ $GRAALVM/bin/R
Type 'q()' to quit R.
> print("Hello R!")
[1] "Hello R!"
>

Current Status

The goal of FastR is to be a drop-in replacement for GNU-R, the reference implementation of the R language, including the R extensions C API. FastR faithfully implements the R language, and any difference in behavior is considered to be a bug.

CRAN Packages

FastR can currently install and run basic examples of many of the popular R packages, such as

ggplot2
,
jsonlite
,
testthat
,
assertthat
,
dplyr
,
knitr
,
Shiny
,
Rcpp
,
quantmod
and more… However, one should take into account the experimental state of FastR, there can be packages that are not compatible yet, and if you try FastR on a complex R application, it can stumble on those. If this happens please submit an issue on GitHub.

To provide better stability, FastR uses by default a fixed snapshot of CRAN (via MRAN). Function

install.packages
therefore does not install the latest versions. This can be overridden by passing
repos
argument to
install.packages
pointing to CRAN.

FastR supports R graphics via custom implementation of the grid package. Packages based on grid, like lattice and ggplot2, can therefore work in FastR. There is an experimental support for the base

graphics
and
grDevices
packages (
--R.UseInternalGridGraphics=false
).

FastR provides its own replacements for

rJava
and
data.table
packages, which can be installed with
install.fastr.packages(c("rJava", "data.table"))
.

Native extensions performance

Packages that use the R extensions C API in hot paths, especially via

Rcpp
, may exhibit slower performance on FastR due to the high cost of transitions between the native and managed code. This can be mitigated by using the Graal LLVM runtime. Preview of the support is available via the
--R.BackEnd=llvm
option. Note that most of the times FastR running R code equivalent to given
Rcpp
code is as fast as GNU-R/Rcpp and sometimes even faster because of the advanced optimizations of the GraalVM dynamic compiler.

Documentation

The reference manual for FastR, which explains its advantages, its current limitations, compatibility and additional functionality is available on the GraalVM website.

Further documentation, including contributor/developer-oriented information, is in the documentation folder of this repository.

Stay connected with the community

See graalvm.org/community on how to stay connected with the development community. The discussion on Slack is a good way to get in touch with us.

We would like to grow the FastR open-source community to provide a free R implementation atop the Truffle/Graal stack. We encourage contributions, and invite interested developers to join in. Prospective contributors need to sign the Oracle Contributor Agreement (OCA). The access point for contributions, issues and questions about FastR is the GitHub repository.

Authors

FastR is developed by Oracle Labs and is based on the GNU-R runtime. It contains contributions by researchers at Purdue University (purdue-fastr), Northeastern University, JKU Linz, TU Dortmund and TU Berlin.

License

FastR is available under a GPLv3 license.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.