π Blazingly Fast & User-friendly R extensions using Rust π¦
extendr brings the performance, safety, and reliability of Rust to R. Write fast and scalable R packages without worrying about R's C API.
- Website: https://extendr.github.io/
- User Guide: https://extendr.github.io/user-guide/
- API Documentation: https://docs.rs/extendr-api/
- R Package Docs: https://extendr.github.io/rextendr/
| Repository | Description |
|---|---|
extendr |
π¦ extendr's source code |
rextendr |
π¦ Create and manage your Rust-based R packages |
awesome-extendr |
β Curated list of extendr packages |
extendr.github.io |
π Documentation website source |
- Discord: Join our community discussions π¬ (Discord invite)
- Issues: Report bugs and request features in individual repositories π
- Contributions: See CONTRIBUTING.md in each repository π€
Rust workspace π¦ with battle-tested crates:
extendr-api- ergonomic, opinionated, and safe interface between R and Rustextendr-engine- launch R sessions from Rustextendr-ffi- hand-crafted bindings to R's C-API
R package π¦ for seamless development:
rextendr- a{usethis}-like package that scaffolds extendr-powered R packages
- R (β₯ 4.2)
cargoandrustc(β₯ 1.65) - install via rustup
We recommend using the development version of {rextendr} from GitHub.
# Install from CRAN
install.packages("rextendr")
# Development version
remotes::install_github("extendr/rextendr")
usethis::create_package("helloextendr")
rextendr::use_extendr()
rextendr::document()
hello_world()
#> [1] "Hello, world!"