The short answer is that there are no known (i.e. documented) differences,
and no examples on CRAN which do not work with lazy-loading (except party,
which loads the saved image in a test). And that includes examples of
packages which share S4 classes. But my question was to tease things like
this out.
You do need either SaveImage or LazyLoad in a package that defines S4
classes and methods, since SetClass etc break the `rules' for R files in
packages in `Writing R Extensions'.
When I have time I will take a closer look at this example.
On Fri, 3 Feb 2006, Martin Maechler wrote:
"Seth" == Seth Falcon <sfalcon at fhcrc.org>
on Thu, 02 Feb 2006 11:32:42 -0800 writes:
Seth> Thanks for the explaination of LazyLoad, that's very helpful.
Seth> On 1 Feb 2006, ripley at stats.ox.ac.uk wrote:
>> There is no intention to withdraw SaveImage: yes. Rather, if
>> lazy-loading is not doing a complete job, we could see if it could
>> be improved.
Seth> It seems to me that LazyLoad does something different with respect to
Seth> packages listed in Depends and/or how it interacts with namespaces.
Seth> I'm testing using the Bioconductor package graph and find that if I
Seth> change SaveImage to LazyLoad I get the following:
Interesting.
I had also the vague feeling that saveImage was said to be
important when using S4 classes and methods; particularly when
some methods are for generics from a different package/Namespace
and other methods for `base' classes (or other classes defined
elsewhere).
This is the case of 'Matrix', my primary experience here.
OTOH, we now only use 'LazyLoad: yes' , not (any more?)
'SaveImage: yes' -- and honestly I don't know / remember why.
Martin
Seth> ** preparing package for lazy loading
Seth> Error in makeClassRepresentation(Class, properties, superClasses, prototype, :
Seth> couldn't find function "getuuid"
Seth> Looking at the NAMESPACE for the graph package, it looks like it is
Seth> missing some imports. I added lines:
Seth> import(Ruuid)
Seth> exportClasses(Ruuid)
Seth> Aside: am I correct in my reading of the extension manual that if one
Seth> uses S4 classes from another package with a namespace, one
Seth> must import the classes and *also* export them?
Seth> Now I see this:
Seth> ** preparing package for lazy loading
Seth> Error in getClass("Ruuid") : "Ruuid" is not a defined class
Seth> Error: unable to load R code in package 'graph'
Seth> Execution halted
Seth> But Ruuid _is_ defined and exported in the Ruuid package.
Seth> Is there a known difference in how dependencies and imports are
Seth> handled with LazyLoad as opposed to SaveImage?
Seth> Thanks,
Seth> + seth