From ripley at stats.ox.ac.uk  Tue Dec 23 19:40:44 2008
From: ripley at stats.ox.ac.uk (Prof Brian Ripley)
Date: Tue, 23 Dec 2008 18:40:44 +0000 (GMT)
Subject: [Rd] rscproxy version conflict
In-Reply-To: <405593F1A35DDD11B2B4000C29F5CF53034642@exchange-server.ow.ks>
References: <405593F1A35DDD11B2B4000C29F5CF53034642@exchange-server.ow.ks>
Message-ID: <alpine.LFD.2.00.0812231836350.24495@gannet.stats.ox.ac.uk>

On Tue, 23 Dec 2008, Thomas Baier wrote:

> Simon Urbanek wrote:
>> FWIW: technically, you don't have to match the patch level version.
>> Although default DLL checks usually require perfect match, it should
>> be safe to require that R version lies in [x.y.z, x.y+1.0)  where
>> x.y.z is the R version that the interfacing DLL was compiled against.
>> (And hence it is safe to use R x.y.0 as the base for compilation until
>> R x.y+1.0 is released).
>
> The check that has been implemented works as:
>
>  snprintf(Rversion, 25, "%s.%s", R_MAJOR, R_MINOR);
>  if(strncmp(getDLLVersion(), Rversion, 25) != 0) {
>    ... check failed
>  }
>  ... check ok
>
> Quoting from http://cran.r-project.org/doc/manuals/R-exts.html
>
> int main (int argc, char **argv)
>     {
>         structRstart rp;
>         Rstart Rp = &rp;
>         char Rversion[25], *RHome;
>
>         sprintf(Rversion, "%s.%s", R_MAJOR, R_MINOR);
>         if(strcmp(getDLLVersion(), Rversion) != 0) {
>             fprintf(stderr, "Error: R.DLL version does not match\n");
>             exit(1);
>         }
>  ...
>
> this looks very similar. According to your message, full binary
> compatibility is given for same R (major.minor) versions, e.g. 2.8.0 is
> fully compatible with 2.8.1, but may not be fully compatible with 2.9.0.
>
> Is there a "compatible DLL version" that can be queried or is using
> getDLLVersion() the recommended approach and ignoring everything after the
> second '.'?

The latter.  It is expected that the C-level API is compatible 
throughout 2.8.x, but people do use non-API entry points, hence the more 
rigid check in this example.

> And if 2.8.0 and 2.8.1 are fully compatible, why is a warning issued, if a
> package built with R 2.8.1 is loaded in R 2.8.0?

They may not be compatible at R function level: new features are allowed, 
as well as bug fixes which code may rely on.

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595



[Rd] rscproxy version conflict
Prof Brian Ripley