- Notifications
You must be signed in to change notification settings - Fork66
A high-performance implementation of the R programming language, built on GraalVM.
License
Unknown, GPL-3.0 licenses found
Licenses found
oracle/fastr
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
FastR is 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 fastpolyglot interoperability with other languages in the GraalVM ecosystem.
- compatible: with the reference R implementation including theR 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 byggplot2
running on FastR and it shows peak performance of theraytracing example.The measurements werereproduced independently.
See the documentation on the GraalVM website on how toget GraalVM andinstall and use FastR.
$JAVA_HOME/bin/RType 'q()' to quit R.> print("Hello R!")[1] "Hello R!">
The goal of FastR is to be a drop-in replacement for GNU-R, the reference implementation of the R language,including theR extensions C API.FastR faithfully implements the R language, and any difference in behavior is considered to be a bug.
FastR can currently install and run basic examples of many of the popular R packages, such asggplot2
,jsonlite
,testthat
,assertthat
,dplyr
,knitr
,Shiny
,Rcpp
,quantmod
, and more.However, one should take into accountthe 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 afixed snapshot of CRAN (viaMRAN).Functioninstall.packages
therefore does not install the latest versions.This can be overridden by passingrepos
argument toinstall.packages
pointing to CRAN.
FastR provides its own replacements forrJava
anddata.table
packages, which can be installed withinstall.fastr.packages(c("rJava", "data.table"))
.
Packages that use theR extensions C API in hot paths, especially viaRcpp
,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 theGraalVm 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 givenRcpp
code is asfast as GNU-R/Rcpp and sometimes even faster because of the advanced optimizations of the Graal dynamic compiler.
FastR reference documentation which explains its advantages, its current limitations, compatibility, and additional functionality is available on theGraalVM website.
Further documentation, including contributor and developer-oriented information, is in thedocumentation folder of this repository.
Seegraalvm.org/community on how to stay connected with the development community.The discussion onSlack 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 theOracle Contributor Agreement (OCA).The access point for contributions, issues and questions about FastR is theGitHub repository.
FastR is developed by Oracle Labs and is based onthe GNU-R runtime.It contains contributions by researchers at Purdue University (purdue-fastr), Northeastern University, JKU Linz, TU Dortmund and TU Berlin.
This project welcomes contributions from the community. Before submitting a pull request, pleasereview our contribution guide
Please consult thesecurity guide for our responsible security vulnerability disclosure process
FastR is available under a GPLv3 license.
About
A high-performance implementation of the R programming language, built on GraalVM.