Skip to content

Commit bd64ad6

Browse files
committed
040 release post
1 parent 713e246 commit bd64ad6

File tree

2 files changed

+103
-0
lines changed

2 files changed

+103
-0
lines changed
14.6 KB
Loading
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
---
2+
title: "rextendr 0.4.0"
3+
description: |
4+
A new version of rextendr has arrived.
5+
author: Blake Vernon
6+
date: "2025/08/26"
7+
image: images/extendr-release-040.png
8+
image-alt: "The rextendr logo, letter R in middle of gears."
9+
categories: [Release, Updates]
10+
---
11+
12+
The extendr team is excited to announce the release of
13+
[rextendr](https://extendr.github.io/rextendr/dev) `0.4.0`, along with two
14+
follow-up patch releases, that bring significant improvements to the R package
15+
ecosystem for Rust integration. Those include enhanced CRAN compatibility,
16+
improved developer experience, and streamlined package scaffolding. A great deal
17+
of work also went into re-factoring code, focusing support on later versions of
18+
R, and reducing package dependencies to streamline maintenance and ensure the
19+
long-term viability of the project.
20+
21+
::: callout-note
22+
## What is rextendr?
23+
24+
For those new to the project, rextendr is an R package similar to `usethis` and
25+
`devtools` for supporting development of Rust-powered R packages, with the Rust
26+
crate `extendr` handling most of the heavy lifting behind the scenes.
27+
:::
28+
29+
## CRAN compatibility
30+
31+
The standout feature of the current release is found in rextendr's workhorse
32+
function `use_extendr()`, which now provides CRAN-ready scaffolding out of the
33+
box. This is achieved through a set of targeted updates.
34+
35+
- **Enhanced build configuration** - `use_extendr()` now creates
36+
`tools/msrv.R` to ensure that developers have a CRAN compatible version of
37+
Rust installed. It also provides updated `configure` scripts for
38+
pre-compilation checks and setup on various operating systems.
39+
- **Explicit system requirements** - `use_extendr()` now sets the package
40+
`DESCRIPTION`'s `SystemRequirements` field to "Cargo (Rust's package
41+
manager), rustc" per CRAN requirements. It also adds `xz` so packages can
42+
build on Posit Package Manger.
43+
- **Friendly updating** - `use_extendr()` can now be called on existing
44+
extendr-powered R packages to update or generate new scaffolding. Prompts
45+
allow the user to specify which updates or changes to accept or reject. This
46+
is especially useful as rextendr continues to adapt to developer needs and
47+
evolving CRAN policies.
48+
49+
## Developer tools
50+
51+
Release of 0.4.0 and its patches also comes with a host of new developer
52+
tooling.
53+
54+
- **Greater IDE support** - new functions `use_vscode()` and `use_positron()`
55+
generate `.vscode/settings.json` with suitable defaults, thus enhancing
56+
developer experience in VSCode and Positron. One of the big ones here is the
57+
addition of `rust-analyzer.linkedProjects`, which ensures that rust analyzer
58+
can find the Rust project inside the R package directory.
59+
- **Cargo functions** - rextendr added or updated a few helper functions to
60+
invoke Cargo commands from R. These include `rust_sitrep()` to provide Rust
61+
toolchain diagnostics, `use_crate()` to add dependencies to `Cargo.toml`,
62+
and `read_cargo_metadata()` to fetch project information.
63+
64+
## WebR support
65+
66+
A very exciting development in the project is greater support for WebR, with
67+
extendr-powered R packages now compatible with WASM, meaning the packages can be
68+
used in the browser without an R installation. A nice side-effect of these
69+
enhancements is that compiled extendr-packages are now substantially reduced in
70+
size.
71+
72+
## A new extendr badge!
73+
74+
The extendr community has grown quite a bit in the last two years, maybe as much
75+
as the codebase! We wanted to make sure that new developers could boast about
76+
their extendr-powered packages - and, if we're being honest, increase visibility
77+
for the project - by adding an extendr badge to their README files, which can
78+
now be done with `use_extendr_badge()`. This results in:
79+
80+
[![](https://img.shields.io/badge/extendr-%5E0.8.0-276DC2)](https://extendr.rs/extendr/extendr_api/)
81+
82+
## What These Changes Mean for Developers
83+
84+
These improvements provide a host benefits to new developers:
85+
86+
- **Simplified CRAN submission process** - Running `use_extendr()` now creates
87+
package scaffolding that's ready for CRAN submission with minimal additional
88+
configurations. Invariably, developers in the R community will experience
89+
many frictions and pain points on the way to publishing on CRAN, but
90+
rextendr will not be one of them.
91+
- **Reduced maintenance overhead** - The new updating mechanism provided by
92+
`use_extendr()` means that developers can now generally count on the extendr
93+
team to help implement changes that meet CRAN requirements and take
94+
advantage of new developments in Rust.
95+
- **Better integration with R infrastructure** - Developers can now build with
96+
confidence knowing that their packages will be robust across platforms and
97+
package managers.
98+
99+
## To learn more...
100+
101+
Check out our recently updated \[website\](<https://extendr.rs/>) and
102+
documentation! We are still a ways away from having complete documentation, but
103+
we're getting there! Did you notice our new domain?

0 commit comments

Comments
 (0)