Portable Backend Layer for 'Stan' Models
Overview
Gives a 'Stan'-based R package one interface for fitting its models through either 'rstan' or 'cmdstanr', neither of which is required to install this package (install whichever you use). Collects and validates sampler options, guarding against mixing one backend's argument vocabulary into the other, dispatches the fit to the chosen backend, and exposes backend-agnostic accessors for reading posterior draws, extracting parameters, and running generated quantities. The host package supplies its own compiled models; flexstanr resolves them from the calling package at run time, so the same code works whichever backend is installed.
backend_extract()now states its return shape as a contract rather than leaving it to the backend (#34).parsdefaults toNULL, which extracts every parameter, and a newformatargument picks the representation:"list"(the default) isrstan::extract()-compatible,"draws"returns aposteriordraws array with the chain structure intact, and"matrix"returns a plain draws x variables matrix -- the shapebackend_generate_quantities()takes asdraws_mat. Each format has the same shape whichever backend produced the fit, so downstream code no longer has to branch on the backend. Existing calls are unaffected:formatdefaults to the shapebackend_extract()already returned.- Bug fix: the cmdstanr backend returned a scalar parameter as a dimensionless vector, while
rstan::extract()returns a 1-D array of lengthSfor a scalar in every call form. Code that reshapes offdim()(aperm()errors outright on a dimensionless vector) therefore behaved differently depending on which backend produced the fit. The cmdstanr path now matches rstan. Avector[1]is still kept as anS x 1matrix on both backends, as rstan does.
Show all changes in 0.2.0Hide the rest of the changes in 0.2.0
stan_options(threading = TRUE)turns on scheduler-aware threading (ported from hestia): flexstanr splits the cores the process is allowed to use -- detected withparallelly::availableCores(), respecting HPC schedulers and cgroup quotas -- between chain-parallelism and within-chain (reduce_sum) threads, using all available cores by default (cap withmax_cores), and reports what it chose.fit_model()applies the split per backend, compiling the cmdstanr model with threading enabled when needed. The new exportedtest_threaded()lets a host package's fit function warn when its model cannot use the offered threads. See the new "Parallel and threaded fitting" vignette.- rstan and cmdstanr are now equally optional backends. rstan moved from
ImportstoSuggests, so flexstanr installs and loads without either package; selecting a backend whose package is not installed fails with an actionable error, and an attach-time message points the way when neither is present. Install whichever backend you use (#30). use_flexstanr()now generates the host package's re-export file (with a do-not-edit banner) in addition to editing itsDESCRIPTION, and its signature mirrorsusethis::use_package()(min_version,remote). It wires in flexstanr only; pick and declare a backend (rstan or cmdstanr) yourself.
From NEWS.md in the release
Install
Health
- OK13 OK2026-08-05
- NOTE12 OK, 1 NOTE2026-08-01
- OK7 OK2026-07-18
Documentation
- Help pages
- 33 (25 internal)includes a package overview page
- Examples that run
- 38%3 run in a plain check (2 of them under a condition) · 5 never run
- Exported functions with examples
- 100%
- Documented parameters
- 100%
- Return-value docs
- 100%
- Help pages citing references
- 0%
Downloads
Repository
- PRs merged (all time)
- 89%
- Median days to close, 50 most recently updated closed issues
- 1
- Median days to close, 50 most recently updated closed PRs
- 1
Stars over time
Issues over time
PRs over time
Commits over time
9 development-tooling and community-health practices detected across 5 families in the upstream repository
Checks run against github.com/accidda/flexstanr on 2026-10-21.
The R CMD check workflow runs on Linux, macOS and Windows, and on R-devel
GitHub Pages site last deployed 2026-10-19 · The repository has a site deploy workflow
pkgdown site last built 2026-10-19
Show all practicesHide 1 practice
Dependencies
Installing flexstanr adds 1 package (1 with compiled code, 343 KB of source tarballs). Heaviest: parallelly 343 KB.
Code & Tests
People & History
Pick two releases to compare their code metrics.
- 0.2.0Latest
- 0.1.02026-07-17
- RR 4.6.0 released · 2026-04-24
Package metadata
- First published
- 2026-07-17
- Total releases
- 2 / 1 yrs
- License
- MIT + file LICENSE OSI
- Additional repositories
- stan-dev.r-universe.dev
- Minimum R
- ≥ 4.1.0
- Download size
- 56 KB
Cite
Cite this package
Run in R for the authors' preferred citation:
citation("flexstanr")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-23, which the citation names so these numbers can be found later. More on citing and the projects behind them.