Skip to content

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

License

Notifications You must be signed in to change notification settings

ceresek/fork-oracle-fastr

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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: providing support for existing packages and the R native interface
  • 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!"
>

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.

Current Status

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

FastR is capable of running binary R packages built for GNU-R as long as those packages properly use the R extensions C API (for best results, it is recommended to install R packages from source). FastR supports R graphics via the grid package and packages based on grid (like lattice and ggplot2). We are currently working towards support for the base graphics package. FastR currently supports many of the popular R packages, such as ggplot2, jsonlite, testthat, assertthat, knitr, Shiny, Rcpp, quantmod and more… dplyr and other tidyverse packages mostly work on FastR but not all of their tests pass yet. We are actively monitoring and improving FastR support for the most popular packages published on CRAN. 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.

FastR provides its own replacements for rJava and data.table packages, which can be installed with install.fastr.packages(c("rJava", "data.table")).

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 will be mitigated by using the Graal LLVM interpreter. The support is available in the development version 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 and sometimes even faster because the GraalVM dynamic compiler can optimize the program as a whole.

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.

About

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

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 65.9%
  • C 16.7%
  • R 10.9%
  • Fortran 2.7%
  • Objective-C 0.9%
  • M4 0.8%
  • Other 2.1%