I've been working on some internal packages that take a dependecy on ggalluvial. My CI pipelines are failing on the devel pipelines and I used an AI to help me debug those errors.
ggalluvial lists lazyeval in its Imports, and lazyeval 0.2.2 (the current CRAN release) uses the C-level PREXPR symbol that has been removed from R-devel's C API. This causes lazyeval — and therefore ggalluvial — to fail to compile from source on R-devel.
Error from CI (R-devel, pak lockfile install):
Error in lazyeval_install / compilation:
'PREXPR' was not declared in this scope
Why this matters: lazyeval has been superseded by rlang and has not been updated since ~2019. It will not be fixed upstream. Packages that still import it will begin failing R CMD check on R-devel as R 4.6/next moves toward release.
Suggested fix: Replace the lazyeval import with rlang equivalents. In practice, lazyeval::lazy_eval() → rlang::eval_tidy(), lazyeval::lazy() → rlang::quo() / rlang::enquo(). Since ggalluvial already depends on ggplot2 which in turn depends on rlang, no new dependency is added — it's already in the transitive closure.
Downstream impact: Packages depending on ggalluvial (such as my internal packages) cannot pass R-devel CI without adding continue-on-error workarounds for the R-devel matrix entry.
I've been working on some internal packages that take a dependecy on
ggalluvial. My CI pipelines are failing on the devel pipelines and I used an AI to help me debug those errors.ggalluviallistslazyevalin its Imports, andlazyeval0.2.2 (the current CRAN release) uses the C-levelPREXPRsymbol that has been removed from R-devel's C API. This causeslazyeval— and thereforeggalluvial— to fail to compile from source on R-devel.Error from CI (R-devel, pak lockfile install):
Why this matters:
lazyevalhas been superseded byrlangand has not been updated since ~2019. It will not be fixed upstream. Packages that still import it will begin failingR CMD checkon R-devel as R 4.6/next moves toward release.Suggested fix: Replace the
lazyevalimport withrlangequivalents. In practice,lazyeval::lazy_eval()→rlang::eval_tidy(),lazyeval::lazy()→rlang::quo()/rlang::enquo(). Sinceggalluvialalready depends onggplot2which in turn depends onrlang, no new dependency is added — it's already in the transitive closure.Downstream impact: Packages depending on
ggalluvial(such as my internal packages) cannot pass R-devel CI without adding continue-on-error workarounds for the R-devel matrix entry.