[R-pkg-devel] What counts as an API change?

Duncan Murdoch murdoch@dunc@n @end|ng |rom gm@||@com
Thu Sep 26 11:59:05 CEST 2019


On 26/09/2019 4:22 a.m., neonira Arinoem wrote:
> Very interesting thread.
> 
> Indeed just got one question in relationship with SEMVER and API.
> For a given package, does CRAN adapt the control and acceptance processes
> according to SEMVER, when submitting a new package  version ?
> Any reference material about CRAN control and acceptance processes are
> welcome. Haven't found any yet online.

CRAN requires that your new version is greater than the existing one; it 
also flags high version numbers, e.g. those that follow Hadley's 
recommendation of using 9000 to signal "in-development".  I imagine it 
would also flag non-standard version numbers, i.e. ones that the 
package_version(strict = TRUE) function doesn't accept.  Other than 
that, it more or less ignores the version number.

I'm not sure what you mean by "control and acceptance processes".  Do 
you mean internal processes, or the rules submitters need to follow? 
The latter are documented in the CRAN policies document.

Duncan Murdoch

> 
> Neonira
> 
> Le jeu. 26 sept. 2019 à 01:24, Hugh Parsonage <hugh.parsonage using gmail.com> a
> écrit :
> 
>>> The approach I take is a major version increment is required if it
>>> requires an existing unit test to be changed or if it requires a reverse
>>> dependency to change a unit test.
>>>
>>> (With the exception of tests marked explicitly as unstable.)
>>>
>>> In my view the test suite is a good way to advertise exactly what
>>> developers can rely on in minor version upgrades.
>>>
>>> On Wed, 25 Sep 2019 at 11:52 pm, David Hugh-Jones <
>>> davidhughjones using gmail.com> wrote:
>>>
>>>> Hi all,
>>>>
>>>> Philosophical question. My package follows semantic versioning (
>>>> https://semver.org). Incompatible API changes should trigger a major
>>>> version upgrade. OK, but what counts as an incompatible change to an R
>>>> API?
>>>> Suppose my current function signature is
>>>>
>>>> foo <- function (a, b, c, d)
>>>>
>>>> and the new one is
>>>>
>>>> foo <- function (a, b, c, d, e)
>>>>
>>>> is that compatible? What if I add an argument, but not at the end:
>>>>
>>>> foo <- function (a, b, c, e, d)
>>>>
>>>> That would be incompatible if people have been calling the arguments by
>>>> order rather than by name. But sometimes that is unlikely: I doubt if
>> many
>>>> people write
>>>>
>>>> lm(y ~ x, mydata, z==3, f, na.omit, "qr", FALSE, FALSE, TRUE, TRUE,
>> FALSE)
>>>>
>>>> Should I be strict or relaxed about this?
>>>>
>>>> Cheers,
>>>> David
>>>>
>>>>          [[alternative HTML version deleted]]
>>>>
>>>> ______________________________________________
>>>> R-package-devel using r-project.org mailing list
>>>> https://stat.ethz.ch/mailman/listinfo/r-package-devel
>>>>
>>>
>>
>>          [[alternative HTML version deleted]]
>>
>> ______________________________________________
>> R-package-devel using r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-package-devel
>>
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> R-package-devel using r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-package-devel
>



More information about the R-package-devel mailing list