Build 'Rust' Powered 'R' Packages
Overview
Provides a framework for creating high-performance 'R' packages powered by the 'Rust' programming language using the 'extendr' Rust crate. It offers 'usethis'-like functions to scaffold and develop 'Rust' powered 'R' packages, including utilities for publishing to CRAN, managing dependencies, configuring development environments, and rendering 'Rust' code in 'knitr' documents. Additionally, it provides functions to compile and evaluate 'Rust' code directly from 'R' for interactive development.
Added
use_extendr()now generatescleanupandcleanup.win. (#473)- Refactor of
rust_source()andrust_function()(#478) - Adds
opts = extendr_options()to simplifyrust_source()API with...to maintain backwards compatibility - Adds rlang standalone type checks to
rust_source()andrust_function() - Replaces internal
invoke_cargo()withrun_cargo()inrust_source() - Simplifies handling of macro options in
rust_function(extendr_fn_options = list()) - Unknown macro options in dev and release now throw errors instead of warnings
vendor_pkgs()now has acleanargument to remove thesrc/rust/vendordirectory after creating thevendor.tar.xzfile. (#479)- Added
update_scaffold()to overwrite scaffolding, making it easier to update packages to track developments in extendr and rextendr. (#493)
Show all changes in 0.5.0Hide the rest of the changes in 0.5.0
write_license_note()is now marked as experimental. Theauthorsfield in Cargo metadata is deprecated upstream (<https://github.com/rust-lang/cargo/issues/16458>) and crates may stop populating it, leading to incomplete author information.
Deprecated
vendor_pkgs()has been renamed tovendor_crates()to better reflect that it vendors Rust crates.vendor_pkgs()is soft-deprecated and will be removed in a future release.- Complete overhaul of wrapper-generation. (#491)
rextendr::document()is now a thin wrapper arounddevtools::document()and is soft deprecated. Packages created withuse_extendr()no longer require it. It is retained for backwards compatibility.register_extendr()is no longer called inrextendr::document()and is soft deprecated. The function itself is no-op and now returns a lifecycle warning.- Deprecating
register_extendr()effectively nullifies the PkgGen CI tests, so those have been removed.
Breaking
- Complete overhaul of wrapper-generation. (#491)
use_extendr()now generatessrc/rust/document.rsand adds a[[bin]]target toCargo.tomlwithcrate-type = ["rlib", "staticlib"].rust_eval()now returnsextendr_api::error::Result<Robj>.- The header in
R/extendr-wrappers.Rhas also been updated to reflect these changes, which required a concurrent PR to extendr (extendr/extendr#1048). - CI now uses the development version of extendr-api on GitHub.
- Snapshot and other tests now reflect these changes.
- Substantial updates to Roxygen documentation.
Fixed
Makevars(.win) now uses thevendor/, if it exists, before unzipping the tarball. (#479)entrypoint.cnow registers extendr's panic handler. (#499)
Changed
callrhas been removed as a dependency.
From NEWS.md in the release
Install
Health
- OK13 OK2026-08-05
- NOTE12 OK, 1 NOTE2026-08-01
- OK13 OK2026-06-09
- NOTE12 OK, 1 NOTE2026-06-08
- ERROR12 OK, 1 ERROR2026-06-07
Show 1 earlier changeHide 1 earlier change
- OK14 OK2026-03-10
Documentation
- Help pages
- 22 (4 internal)includes a package overview page
- Examples that run
- 18%2 run in a plain check (1 of them under a condition) · 9 never run
- Exported functions with examples
- 56%
- Documented parameters
- 100%
- Return-value docs
- 94%
- Help pages citing references
- 0%
Downloads
Repository
- PRs merged (all time)
- 87%
- Median days to close, 50 most recently updated closed issues
- 164
- Median days to close, 50 most recently updated closed PRs
- 1
Stars over time
Forks over time
Releases over time
Issues over time
PRs over time
Commits over time
Commit identities over time
12 development-tooling and community-health practices detected across 5 families in the upstream repository
Checks run against github.com/extendr/rextendr on 2026-10-18.
The R CMD check workflow runs on Linux, macOS and Windows, and on R-devel
GitHub Pages site last deployed 2026-09-25 · The repository has a site deploy workflow
Show all practicesHide 1 practice
This repository shows signs of AI coding tools.
- Claude Codefirst seen on or before 2026-05-18Pull request it wrote: opened by a project memberCommits: at least 3 crediting it in the message
- Claude CodePull requests: 2 from outside contributors, first on 2026-05-01, 2 from forks
- Claude Opus 4.72 commits · May 2026
- Claude Opus 4.81 commit · Jun 2026
Dependencies
Installing rextendr adds 25 packages (14 with compiled code, 18 MB of source tarballs). Heaviest: stringi 11 MB, jsonlite 1.0 MB, vctrs 1.0 MB.
Code & Tests
People & History
Previously maintained by Ilia Kosenkov (0.3.0 to 0.4.2) and Claus O. Wilke (0.2.0).
Pick two releases to compare their code metrics.
- RR 4.6.0 released · 2026-04-24
- 0.5.0Latest2026-04-18 · current release · diff ↗ ·
added 3 exports
extendr_options, update_scaffold, vendor_crates - 0.4.2
- unarchivedReturned to CRAN2025-06-19
- 0.4.12025-06-19 · diff ↗
- archivedRemoved from CRAN2025-05-16issues were not corrected in time
- 0.4.0
- RR 4.5.0 released · 2025-04-11
- RR 4.4.0 released · 2024-04-24
- 0.3.12023-06-20 · diff ↗
- 0.3.0
- RR 4.3.0 released · 2023-04-21
- RR 4.2.0 released · 2022-04-22
- 0.2.02021-06-15
- RR 4.1.0 released · 2021-05-18
Package metadata
- First published
- 2021-06-15
- Total releases
- 7 / 5 yrs
- License
- MIT + file LICENSE OSI
- Minimum R
- ≥ 4.2
- Download size
- 344 KB
Cite
Cite this package
Run in R for the authors' preferred citation:
citation("rextendr")This package has no citation file, so citation() returns this entry built from DESCRIPTION.
Cite the R Observatory
For a number measured here: a download total, a coverage figure, an archival date.
From data release v2026-10-22, which the citation names so these numbers can be found later. More on citing and the projects behind them.