🚀 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!"