On Oct 7, 2013, at 7:35 PM, Gábor Csárdi wrote:

> On Mon, Oct 7, 2013 at 6:32 PM, Simon Urbanek <simon.urba...@r-project.org> 
> wrote:
> On Oct 5, 2013, at 9:19 PM, Gábor Csárdi <csardi.ga...@gmail.com> wrote:
> [...] 
> e.g. quoting the spec: "Build metadata SHOULD be ignored when determining 
> version precedence."
> 
> Indeed, although 'SHOULD' means that it is only a recommendation. And the 
> build metadata is the stuff after the plus sign, so the -alpha, -beta, etc. 
> is still used to determine precedence.
> 
> > I fear that the scheme as described in semver.org is incompatible with the 
> > scheme used by R,
> >
> > I believe that they are fully compatible. In the sense that the current R 
> > package versioning is a subset of the one at semver.org. In other words, 
> > the current compareVersion only gives results that are valid according to 
> > semver.org.
> >
> 
> Nope, e.g. the most commonly used format 1.0-0 is not even allowed by semver.
> 
> Indeed again, I overlooked that the three numbers are required. This is 
> something that should be relaxed for R packages, the patch level can be 
> omitted.
> 

That's not what it means in R - the number after the dash *is* the patch level. 
The point is that the semantics of the dash are different in the two standards 
and so is the interpretation of the components. That's why I said earlier (in 
the part that you cut out) that probably the only viable option is to enhance 
the R handling to add some handling of non-integer components.


> You are right, maybe semver.org is something that is appropriate for R 
> packages, as it is. But I guess, my feature request still makes sense. I just 
> want to be able to use more flexible version strings, and I think semver.org 
> is a good starting point, nevertheless.
> 
> Again, I understand if you say, that it would cause too much trouble for CRAN 
> for not too much benefit. I cannot estimate the amount of extra work 
> required. As for updating the compareVersion function, that is probably not 
> too bad, there is an existing Python package for it called semver, so that 
> could be the starting point.
> 

Updating compareVersion() is the least problem - tools that handle package 
files often use regexps which will fail once non-intergers are allowed.

Cheers,
Simon


> [...]
> > compareVersion("1.0.0", "1.0.0-alpha")
> > # [1] -1
> > # Warning message:
> > # In compareVersion("1.0.0", "1.0.0-alpha") : NAs introduced by coercion
> >
> 
> 
> It doesn't fail - just the order inverse to that defined by semver, because R 
> treats all parts as integers, regardless of how many exist, and the existence 
> of any additional components has higher precedence than the lack thereof 
> (assuming full match on existing ones).
> 
> Well, there are surely some for which it fails, e.g.:
> 
> compareVersion("1.0-alpha", "1.0-beta")
> # Error in if (a[k] > b[k]) return(1) else if (a[k] < b[k]) return(-1L) : 
> #   missing value where TRUE/FALSE needed
> # In addition: Warning messages:
> # 1: In compareVersion("1.0-alpha", "1.0-beta") : NAs introduced by coercion
> # 2: In compareVersion("1.0-alpha", "1.0-beta") : NAs introduced by coercion
> 
> Thanks for taking the time to discuss this issue!
> 
> Best,
> Gabor
>  
> 
> Cheers,
> Simon
> 
> [...] 

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to