From duncan at wald.ucdavis.edu  Fri Oct 22 18:18:08 2004
From: duncan at wald.ucdavis.edu (duncan@wald.ucdavis.edu)
Date: Fri Oct 22 18:18:11 2004
Subject: [Rd] Re: library.dynam() & .dynLibs() do not work as documented
	(PR#7305)
Message-ID: <20041022161808.C8BDA10E94@slim.kubism.ku.dk>


--d6Gm4EdcadzBjdND
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

Prof Brian Ripley wrote:
> nor in any sensible way we could document.
>=20
> In R 2.0.0 (and current R-patched and R-devel):
>=20
> > X11()
> > library.dynam()
>                                                 Filename Dynamic.Lookup
> base                                                base          FALSE
> stats       /usr/local/lib/R/library/stats/libs/stats.so           TRUE
> methods /usr/local/lib/R/library/methods/libs/methods.so           TRUE
> R_X11                  /usr/local/lib/R/modules/R_X11.so           TRUE
>=20
> whereas 1.9.1 gives
>=20
> > library.dynam()
> [1] "stats"   "methods"
>=20
> and the documentation says
>=20
>      If 'chname' is not specified, 'library.dynam' returns a character
>      vector with the names of packages which have used it in the
>      current R session to load shared libraries. This vector is
>      returned as 'invisible', unless  the 'chname' argument is missing.
>=20
> which is clearly no longer true.  I don't see why we want loaded modules=
=20
> in there that have nothing to do with packages, or even non-modules.


Before we try to simply match documentation which was written for
a simpler semantic,  let's think about what we actually require
in the context of versioned packages and where library.dynam()
is currently being used and so what is broken.

Returning a character vector with the names of packages which have used it
does not permit version information to be included (unless they are in the
package name).=20

For quite some time, I have wanted to move to package objects=20
and to return such self-describing objects which contain all
their own details such as name, version, DLL, etc.  Using names,
just   as using numbers of graphics devices, is a global mechanism
that leads to clumsy code.=20

We can make the code match the documentation, but only if
we still want what the documentation states.
When we introduce multiple evaluators in the future,
lots of things will "challenge" the current semantics
and many of them will be desirable. One of these potential changes
is the use of multiple concurrent versions of a package.

Comments, before we fix things?=20

 D.=20

>=20
> At that point .dynLibs() gave
>=20
> $base
> DLL name: base
> Filename: base
> Dynamic lookup: FALSE
>=20
> $stats
> DLL name: stats
> Filename: /usr/local/lib/R/library/stats/libs/stats.so
> Dynamic lookup: TRUE
>=20
> [[3]]
> [1] "methods"
>=20
> which seems useless for
>=20
>      '.dynLibs' is used for getting or setting the packages that have
>      loaded shared libraries (using 'library.dynam').
>=20
> One command later and we have
>=20
> > library(MASS)
> > .dynLibs()
> $base
> DLL name: base
> Filename: base
> Dynamic lookup: FALSE
>=20
> $stats
> DLL name: stats
> Filename: /usr/local/lib/R/library/stats/libs/stats.so
> Dynamic lookup: TRUE
>=20
> $methods
> DLL name: methods
> Filename: /usr/local/lib/R/library/methods/libs/methods.so
> Dynamic lookup: TRUE
>=20
> $R_X11
> DLL name: R_X11
> Filename: /usr/local/lib/R/modules/R_X11.so
> Dynamic lookup: TRUE
>=20
> [[5]]
> [1] "MASS"
>=20
> !
>=20
> --=20
> Brian D. Ripley,                  ripley@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

--=20
Duncan Temple Lang                duncan@wald.ucdavis.edu
Department of Statistics          work:  (530) 752-4782
371 Kerr Hall                     fax:   (530) 752-7099
One Shields Ave.
University of California at Davis
Davis, CA 95616, USA




--d6Gm4EdcadzBjdND
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (OSF1)

iD8DBQFBeTK29p/Jzwa2QP4RAkQ6AJwO+/Rk6+yPx5GRXwn+aJuTJnY3DACfa0Ze
+x+pi8+sTc006byhX2jlY5o=
=B3bf
-----END PGP SIGNATURE-----

--d6Gm4EdcadzBjdND--


[Rd] Re: library.dynam() & .dynLibs() do not work as documented (PR#7305)
duncan@wald.ucdavis.edu