{"id":13399351,"url":"https://github.com/oracle/fastr","last_synced_at":"2025-04-14T06:49:19.904Z","repository":{"id":45508177,"uuid":"43068034","full_name":"oracle/fastr","owner":"oracle","description":"A high-performance implementation of the R programming language, built on GraalVM.","archived":false,"fork":false,"pushed_at":"2024-10-21T17:40:08.000Z","size":586953,"stargazers_count":626,"open_issues_count":81,"forks_count":64,"subscribers_count":63,"default_branch":"master","last_synced_at":"2024-10-22T08:07:14.911Z","etag":null,"topics":["graalvm","r","r-language"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/oracle.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-09-24T13:20:14.000Z","updated_at":"2024-10-21T19:13:31.000Z","dependencies_parsed_at":"2023-10-15T14:20:19.291Z","dependency_job_id":"08c79a24-d175-4bc3-8002-188a4f3d8500","html_url":"https://github.com/oracle/fastr","commit_stats":null,"previous_names":[],"tags_count":85,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oracle%2Ffastr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oracle%2Ffastr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oracle%2Ffastr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oracle%2Ffastr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oracle","download_url":"https://codeload.github.com/oracle/fastr/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248837273,"owners_count":21169373,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["graalvm","r","r-language"],"created_at":"2024-07-30T19:00:36.676Z","updated_at":"2025-04-14T06:49:19.875Z","avatar_url":"https://github.com/oracle.png","language":"Java","funding_links":[],"categories":["Java"],"sub_categories":[],"readme":"# FastR\n\nFastR is a high-performance implementation of the R programming language, built on GraalVM.\n\nFastR aims to be:\n* [efficient](https://medium.com/graalvm/faster-r-with-fastr-4b8db0e0dceb#4ab6): executing R language scripts faster than any other R runtime and as fast as `Rcpp`\n* [polyglot](https://medium.com/graalvm/faster-r-with-fastr-4b8db0e0dceb#0f5c): allowing fast [polyglot interoperability](https://www.graalvm.org/22.3/reference-manual/embed-languages/) with other languages in the GraalVM ecosystem.\n* [compatible](https://medium.com/graalvm/faster-r-with-fastr-4b8db0e0dceb#fff5): with the reference R implementation including the [R extensions C API](https://cran.r-project.org/doc/manuals/r-release/R-exts.html)\n* [embeddable](https://github.com/graalvm/examples/tree/master/r_java_embedding): allowing integration using the R embedding API or the GraalVM polyglot embedding SDK for Java\n\nThe screenshot below shows Java application with embedded FastR engine.\nThe plot below was generated by `ggplot2` running on FastR and it shows peak performance of the [raytracing example](http://www.tylermw.com/throwing-shade/).\nThe measurements were [reproduced independently](https://web.archive.org/web/20181017111641/https://nextjournal.com/sdanisch/fastr-benchmark).\n\n![Java embedding](documentation/assets/javaui.png)\n![Speedup](documentation/assets/speedup.png)\n\n ## Getting Started\n\nSee the documentation on the GraalVM website on how to [get GraalVM](https://www.graalvm.org/22.3/docs/getting-started/) and [install and use FastR](https://www.graalvm.org/22.3/reference-manual/r/).\n\n```\n$JAVA_HOME/bin/R\nType 'q()' to quit R.\n\u003e print(\"Hello R!\")\n[1] \"Hello R!\"\n\u003e\n```\n\n## Current Status\n\nThe goal of FastR is to be a drop-in replacement for GNU-R, the reference implementation of the R language,\nincluding the [R extensions C API](https://cran.r-project.org/doc/manuals/r-release/R-exts.html).\nFastR faithfully implements the R language, and any difference in behavior is considered to be a bug.\n\n### CRAN Packages\n\nFastR 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. \nHowever, 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. \nIf this happens, please submit an issue on GitHub.\n\nTo provide better stability, FastR uses by default a [fixed snapshot](https://github.com/oracle/fastr/blob/master/com.oracle.truffle.r.native/Makefile#L37) of CRAN (via [MRAN](https://mran.microsoft.com/)). \nFunction `install.packages` therefore does not install the latest versions. \nThis can be overridden by passing `repos` argument to `install.packages` pointing to CRAN.\n\nFastR provides its own replacements for `rJava` and `data.table` packages, which can be installed with `install.fastr.packages(c(\"rJava\", \"data.table\"))`.\n\n### Native Extensions Performance\n\nPackages that use the [R extensions C API](https://cran.r-project.org/doc/manuals/r-release/R-exts.html) 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.\nThis can be mitigated by using the [GraalVm LLVM runtime](https://www.graalvm.org/22.3/reference-manual/llvm/). \nPreview of the support is available via the `--R.BackEnd=llvm` option.\nNote that most of the times FastR running R code equivalent to given `Rcpp` code is as\nfast as GNU-R/Rcpp and sometimes even faster because of the advanced optimizations of the Graal dynamic compiler.\n\n## Documentation\n\nFastR reference documentation which explains its advantages, its current limitations, compatibility, and additional functionality is available on the [GraalVM website](https://www.graalvm.org/22.3/reference-manual/r/).\n\nFurther documentation, including contributor and developer-oriented information, is in the [documentation folder](documentation/Index.md) of this repository.\n\n## Stay Connected with the Community\n\nSee [graalvm.org/community](https://www.graalvm.org/community/) on how to stay connected with the development community.\nThe discussion on [Slack](https://www.graalvm.org/slack-invitation/) is a good way to get in touch with us.\n\nWe would like to grow the FastR open-source community to provide a free R implementation atop the Truffle/Graal stack.\nWe encourage contributions, and invite interested developers to join in.\nProspective contributors need to sign the [Oracle Contributor Agreement (OCA)](https://oca.opensource.oracle.com/).\nThe access point for contributions, issues and questions about FastR is the [GitHub repository](https://github.com/oracle/fastr).\n\n## Authors\n\nFastR is developed by Oracle Labs and is based on [the GNU-R runtime](http://www.r-project.org/).\nIt contains contributions by researchers at Purdue University ([purdue-fastr](https://github.com/allr/purdue-fastr)), Northeastern University, JKU Linz, TU Dortmund and TU Berlin.\n\n## Contributing\n\nThis project welcomes contributions from the community. Before submitting a pull request, please [review our contribution guide](./CONTRIBUTING.md)\n\n## Security\n\nPlease consult the [security guide](./SECURITY.md) for our responsible security vulnerability disclosure process\n\n## License\n\nFastR is available under a GPLv3 license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foracle%2Ffastr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foracle%2Ffastr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foracle%2Ffastr/lists"}