← Back to all sparks
R

rextendr

INFRA · APIS
Velocity0.0

Build 'Rust' Powered 'R' Packages

rextendr put Rust-backed R packages in the browser, then tore itself down for a 1.0.0 rebuild

rrustextendrwebassemblywebrcranbuild tooling
Current state
rextendr is the R-side toolchain for extendr, scaffolding and compiling R packages with Rust internals. The package is mid-teardown: the 0.4-final tag in October 2025 warns that main may not work as expected and directs users to install from that tag, and April 2026's release is titled as one more developer release before 1.0.0. Meanwhile the CRAN-facing 0.4.x line did the substantive work.
Where it's heading
Two threads run in parallel. The first is reach: 0.4.0 added WebR support out of the box for all extendr packages by enabling the wasm32-unknown-emscripten target, and 0.4.2 followed with the panic and link-time-optimization settings needed to make those builds actually work. The second is CRAN compliance — use_cran_defaults(), vendor_pkgs(), automatic SystemRequirements fields, and configure scripts, all aimed at getting Rust-powered packages accepted on CRAN. The rebuild announced in 0.4-final is a third thread whose shape the entries do not reveal.
Prediction
The stated destination is 1.0.0 built on the new Makevars-linked build process, so that release is the next milestone. What the revamp changes for existing extendr packages is not described in any entry here.

Recent moves

  1. 3mo ago

    New Makevars-linked build process ahead of 1.0.0

    A developer release introducing a build process that calls a linked document binary from Makevars, described as the last major change before 1.0.0. The revamp announced in 0.4-final continues, with the user-facing consequences still undescribed.

    View source ↗
  2. 9mo ago

    Final development tag before the rewrite; template and SystemRequirements changes

    Marks the last usable development version before the revamp, with an explicit instruction to install from this tag rather than main. Carries breaking changes that let use_extendr() overwrite existing templates and set SystemRequirements automatically, plus Windows and Rust 1.70 compile fixes.

    View source ↗
  3. 11mo ago

    extendr-api version pinning and WebR-compatible build profile

    Pins new packages to the latest stable extendr-api version fetched from crates.io instead of a wildcard, and sets lto=true with codegen-units=1 to shrink compiled size and produce WebR-compatible builds. Adds the panic=abort settings the emscripten target needs. The follow-through that makes 0.4.0's WebR support work in practice.

    View source ↗
  4. 1y ago

    Fix tests executed on CRAN

    CRAN test fixes only.

    View source ↗
  5. 1y ago

    WebR support out of the box for all extendr packages

    ⚡ SPARK

    Enables the wasm32-unknown-emscripten target for every extendr package by default, so Rust-backed R packages can build for WebR, with the caveat that not all Rust crates are wasm compatible. The same release adds use_cran_defaults() and vendor_pkgs() for CRAN publication, moves configure scripts into use_extendr(), sets SystemRequirements per CRAN policy, and drops purrr from Imports.

    View source ↗
  6. 3y ago

    Package templates updated for Rust 1.70

    Updates package templates to work with Rust 1.70 and later.

    View source ↗