A high-performance implementation of the R programming language, built on GraalVM.
Clone or download
Latest commit df18819 Dec 14, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
ci_common Add ninja_syntax to CI Dec 13, 2018
com.oracle.truffle.r.agents/src/com/oracle/truffle/r/agents/objsize Update GPL version in source headers Apr 13, 2018
com.oracle.truffle.r.engine/src Get rid of String concatenation in checkAndRunStartupShutdownFunction Dec 13, 2018
com.oracle.truffle.r.ffi.codegen/src/com/oracle/truffle/r/ffi/codegen Use ReferenceQueue instead of finalizer in NativeMirror. Oct 8, 2018
com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl Ignore hacks packages do with SET_NAMED Dec 14, 2018
com.oracle.truffle.r.ffi.processor/src Fixed: Objects returned from upcalls are gc'd indeterministically Oct 11, 2018
com.oracle.truffle.r.launcher/src/com/oracle/truffle/r/launcher Revive StartupTiming Dec 13, 2018
com.oracle.truffle.r.legacylauncher/src/com/oracle/truffle/r/legacylauncher Fix LegacyLauncher copyright header. May 4, 2018
com.oracle.truffle.r.library.fastrGrid.server/src/com/oracle/truffle/r/library/fastrGrid/server Implemented grid-device server. Aug 27, 2018
com.oracle.truffle.r.library/src/com/oracle/truffle/r/library Use TruffleFile and FileSystem in FastR instead of standard Java IO. Dec 6, 2018
com.oracle.truffle.r.native.recommended rpath set in captured and package libs Nov 6, 2018
com.oracle.truffle.r.native Several fixes of issues related to CRAN explorer Dec 4, 2018
com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin Fix the `exists` builtin Dec 12, 2018
com.oracle.truffle.r.nodes.test/src/com/oracle/truffle/r/nodes run R test with a longer timeout then the default Nov 28, 2018
com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes Fix: range with lists Dec 10, 2018
com.oracle.truffle.r.parser.processor/src Update GPL version in source headers Apr 13, 2018
com.oracle.truffle.r.parser/src/com/oracle/truffle/r/parser Use TruffleFile and FileSystem in FastR instead of standard Java IO. Dec 6, 2018
com.oracle.truffle.r.pkgs Replace unsafe usages of memcpy in data.table Dec 14, 2018
com.oracle.truffle.r.release Update copyrights Aug 7, 2018
com.oracle.truffle.r.runtime Ignore hacks packages do with SET_NAMED Dec 14, 2018
com.oracle.truffle.r.test.native RList can fully operate with native data (rebased) Dec 3, 2018
com.oracle.truffle.r.test.packages.analyzer/src/com/oracle/truffle/r/test/packages/analyzer Allow include list to be package version list. Jun 18, 2018
com.oracle.truffle.r.test.packages Make RcppBDT gated Nov 29, 2018
com.oracle.truffle.r.test.tck/src Update copyrights Aug 7, 2018
com.oracle.truffle.r.test/src Fix the `exists` builtin Dec 12, 2018
documentation Update CHANGELOG and README Nov 7, 2018
mx.fastr Patch data.table sources Dec 5, 2018
.gitignore Add omitted data.table files due to .gitignore Dec 5, 2018
.travis.yml use eclipse.org instead of lafo URL Jun 26, 2018
3rd_party_licenses.txt Licensing information for 3rd party components used by FastR. May 22, 2018
CHANGELOG.md Fix: range with lists Dec 10, 2018
COPYING Fix COPYING file. May 4, 2018
LICENSE Added header so license is distinguishable in Graal install among oth… May 29, 2018
README.md Update CHANGELOG and README Nov 7, 2018
ci.hocon Temporarily disable rbcheck on gate Oct 12, 2018

README.md

Join the chat at https://gitter.im/graalvm/graal-core

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
  • polyglot: allowing 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

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, rJava, quantmod and more…

Moreover, support for dplyr and data.table are on the way. We are actively monitoring and improving FastR support for the most popular packages published on CRAN including all the tidyverse packages. However, one should take into account the experimental state of FastR, there can be packages that are not compatible yet, and if you try it on a complex R application, it can stumble on those.

Stay connected with the community

See graalvm.org/community on how to stay connected with the development community. The discussion on gitter 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.