It would be really nice if the full semantic versioning spec was supported in R. I can understand why only major.minor.patch would be supported for CRAN. But for an R package in a development stage, it would be wonderful to support pre-release and build metadata.
Use of `-` in semver to determine pre-release: https://semver.org/#spec-item-9 The semver package does a pretty decent job of handling the semver spec: ver_str <- "1.0.0-alpha+commit-hash" package_version(ver_str) #> Error: invalid version specification '1.0.0-alpha+commit-hash' (sv <- semver::parse_version(ver_str)) #> [1] Maj: 1 Min: 0 Pat: 0 Pre: alpha Bld: commit-hash as.character(sv) #> [1] "1.0.0-alpha+commit-hash" On Sat, Jan 17, 2026 at 10:29 AM Henrik Bengtsson < [email protected]> wrote: > A possible solution could be to preserve the original version string > as an attribute, which then as.character() could use, e.g. > > > str(v) > List of 1 > $ :Classes 'package_version', 'numeric_version' hidden list of 1 > ..$ : int [1:3] 1 2 4 > - attr(*, "class")= chr [1:2] "package_version" "numeric_version" > - attr(*, "source")= chr "1.2-4" > > I don't want to divert this "feature request", but a related > discussion is whether we really need to support anything but x.y.z? > Would it make sense to deprecate support for hyphenated version > components? The one argument I recall for supporting hyphens was for > "date" versions, e.g. YYYY-MM-DD, but R has dropped leading zeros for > a while now; > > > package_version("2026-01-17") > [1] '2026.1.17' > > and CRAN doesn't accept them; > > * checking CRAN incoming feasibility (4.1s) > ... > Version contains leading zeroes (2026-01-17) > > /Henrik > > PS.I didn't know that > <https://CRAN.R-project.org/package=%s&version=%s> works -it downloads > <package>_<version>.tar.gz. Thanks. > > On Sat, Jan 17, 2026 at 4:10 AM Lluís Revilla <[email protected]> > wrote: > > > > Hi all, > > > > I was trying to download the source code of a package using the versioned > > urls (https://CRAN.R-project.org/package=%s&version=%s). I used > > packageVersion to get the version number but it failed because it uses > the > > function pacakge_version that replaces the "-" the version number had. > > > > Indeed, the examples show that package_version("1.2-4") represents it as > > "1.2.4". However, when converted back to characters (via as.character or > > similar approaches) it keeps the "." instead of reverting back to "-". > The > > work around is essay enough: packageVersion(pkg, field = "Version") so my > > code is fixed but it might not be obvious in other cases. > > > > Could the round trip revert to the original package version provided by > the > > maintainer ( so that identical(as.character(package_version("1.2-4")), > > "1.2-4") is TRUE) ? > > This would simplify manipulations of package versions (currently ~2000 > > packages on CRAN use "-" on their version). > > > > Cheers, > > > > Lluís Revilla > > > > PS: The description at the top of the help page ?download.packages > doesn't > > fully match the content. I think it refers to the functions documented on > > ?update.packages. Perhaps something from the first paragraph on details > can > > be moved to the description > > > > [[alternative HTML version deleted]] > > > > ______________________________________________ > > [email protected] mailing list > > https://stat.ethz.ch/mailman/listinfo/r-devel > > ______________________________________________ > [email protected] mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel > [[alternative HTML version deleted]] ______________________________________________ [email protected] mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
