Replies: 6 comments 9 replies
-
I think we can also discuss what we are doing and willing to do to help improve this story. To boot, we have put a lot of effort in creating developer tools that work meet CRAN's requirements in
Our goal with rextendr is to create a developer package like usethis but for extendr-powered R packages. We also acknowledge that CRAN is important to the R community and want to ensure that developers can publish there without adding undo strain on CRAN maintainers. |
Beta Was this translation helpful? Give feedback.
-
Would it be worth adding some detail about how these changes will or won't affect the standard of reproducibility that they are trying to maintain? Also, once you all have all the content worked out, I'm happy to take a pass on the text (style, grammar, formatting, etc.). |
Beta Was this translation helpful? Give feedback.
-
Another package was archived https://github.com/schochastics/timeless/ without informing the maintainer. For some additional context, my package {arcpbf} was archived in August without informing me. I resubmitted {arcpbf} on September 5th. On Sept. 12th I received the following message
I responded
The same day Dr. Brian Ripley messaged me that 4 additional packages will be removed from CRAN by Sept. 26th if the issues are not fixed. These packages require the same fix that is provided in {arcpbf} which is still in pending. It does not make sense to submit a fix that will not be accepted. I have sent the following email today
|
Beta Was this translation helpful? Give feedback.
-
Thanks for the comments so far! I believe we will write-up a proposal for change of CRAN policy in October/November. So please, give your thoughts then, so they can be included in the process. I'm happy that so many people have engaged with this post. To me, it is important that CRAN does not fall behind on Rust, as |
Beta Was this translation helpful? Give feedback.
-
Perhaps it can be of interest to note that Julia and Rust are distinct from say Python in that:
So while this can seem are breaking reproducibility from someone who is used to having R and G++ and related tools robustly available with dependencies by distributions, doing this for Rust and e.g. Julia would in fact break things more easily. Rust documentation does not even mention distribution installers: Same for Julia, who even explicitly discourage it I'm writing this as someone who swears by reroducibility, and I know this seems initially counterintuitive, but in practice X-up for these two cases is the better way. Note that neither require elevated privileges, which are needed for package managers (dnf/apt), and package manager based installation can lead to subtle breakage because of e.g. incompatible libraries (e.g. BLAS), which can be highly specialized for these use cases. |
Beta Was this translation helpful? Give feedback.
-
+1 to this, support for Rust in the R ecosystem, especially support from CRAN, which gives a level of confidence and indication of maturity, would be hugely useful for my work and others at the University of Leeds and in the Civil Service. |
Beta Was this translation helpful? Give feedback.
-
Hello everyone!
We have been thinking on the current state of publishing Rust powered R-packages on CRAN,
and we have a few things,
we would like to propose, on behalf of the greater extendr community. I hope this can be an opportunity to gather feedback, and present a case that works for everyone.
First and foremost, I would like to state, that we share the same concerns as CRAN, and we are very conscientious about insuring all concerns are addressed sufficiently.
R CMD check
a la RustWe would like to have a more close dialogue with CRAN team and the checks that are done on Rust-powered R-packages. As part of
{rextendr}
, we have added various functions to aid R package authors to set these checks upuse_cran_defaults()
vendor_pkgs()
use_msrv()
Also, a community member has already submitted a PR to checks, see r-devel/r-svn#182.
Rust version
CRAN machines have different versions of Rust tooling installed, and these rarely get updated.
We would like to suggest that CRAN maintainers use
rustup
, which is already available in all CRAN machines,in order to install various versions of
rustc
. All versions ofrustc
work withcargo
, so this will not require further configuration of the CRAN maintainers.The calls to rustup that we suggest is done once:
Then package authors are then supposed to choose either of these versions, as their chosen compiler
and amend their
Makevars
files, wherecargo
-commands are substituted, e.g,cargo +1.74.1 build
.rustup
ensures that these compilers are installed, and they do not conflict with each other, ensuring broadcompatability on CRAN machines.
End users
We'll make
configure
script that would tell the user,to add the appropriate rustc version (by invoking one of the calls above) to their system.
Most Rust users are likely to use latest stable version, thus they usually invoke
rustup update
,and a substantial number of Rust users are on
nightly
version, i.e. the daily development version.In the Annual Rust Survey 2023, 31.1% of the 10490 respondents said that they use "latest nightly".
Also, the issue is only when an old Rust compiler is used to compile, things that require the a new rust compiler.
Rust is backwards compatible, thus newer compiler versions would compile older versions, without any problem.
Minimal supported version of
rustc
on CRANWe also recommend that CRAN adopt
cargo
version1.70
as the minimum supported version,as this version is the one where
cargo
no longer uses GitHub.com for anything at all, not storage, nor indexing of packages. The Rust Foundation is the legal entity tasked with maintainingand hosting the storage of the contents for
rustup
downloads, and more importantly the crates.io content.This is a similar setup to the R Consortium.
This is to address a concern about availability of dependencies on crates.io.
Vendoring of Rust packages
We would propose to CRAN to revise their policy on vendoring Rust crates. While this policy seems harmless,
it does affect reverse dependencies authors, in that it takes away, from their notoriety, as that is in part determined via download numbers of their crates. Take https://crates.io/crates/arrow as an example, where the download numbers are visible at the bottom.
Beta Was this translation helpful? Give feedback.
All reactions