extendr
🚀 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.
Documentation & Resources
- 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/
Key Repositories
| 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 |
Community
- Discord: Join our community discussions 💬 (Discord invite)
- Issues: Report bugs and request features in individual repositories 🐛
- Contributions: See CONTRIBUTING.md in each repository 🤝
Core Components
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
Getting Started
Prerequisites
- R (≥ 4.2)
cargoandrustc(≥ 1.65) - install via rustup
Get Started
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!"