From guillaume.yziquel at citycable.ch  Sun Jan 31 19:01:36 2010
From: guillaume.yziquel at citycable.ch (Guillaume Yziquel)
Date: Sun, 31 Jan 2010 19:01:36 +0100
Subject: [Rd] Stop packages and datasets to be loaded on startup.
In-Reply-To: <19300.28162.914589.289379@ron.nulle.part>
References: <4B645975.5040101@citycable.ch>
	<19300.28162.914589.289379@ron.nulle.part>
Message-ID: <4B65C580.7010605@citycable.ch>

Dirk Eddelbuettel a ?crit :
>
> | I've been looking at littler's code (so this is partly a question to 
> | Dirk Eddelbuettel...):
> 
> Credit where credit is due. Littler is a project by Jeff Horner and myself
> building on Jeff's work with rapache which is another industry-strength use
> of embedding of the R engine.

No harm intended.

> | >         /* We don't require() default packages upon startup; rather, we
> | >          * set up delayedAssign's instead. see autoloads().
> | >          */
> | >         if (setenv("R_DEFAULT_PACKAGES","NULL",1) != 0){
> | >                 perror("ERROR: couldn't set/replace R_DEFAULT_PACKAGES");
> | >                 exit(1);
> | >         }
> | 
> | The code above happens before Rf_initEmbeddedR in littler.
> | 
> | So I gather that just setting R_DEFAULT_PACKAGES to NULL should be OK. 
> 
> Yes, see Simon's reply.
> 
> | But then, what is the rather complicated stuff in the autoload() 
> | function in littler.c for?
> 
> We load what we need for littler. And nothing more. See autoloads.h which is
> autogenerated by make using autoloads.R during the build process.

I had a look at help(Autoload):

> On-demand Loading of Packages
> 
> Description:
> 
>      ?autoload? creates a promise-to-evaluate ?autoloader? and stores
>      it with name ?name? in ?.AutoloadEnv? environment.  When R
>      attempts to evaluate ?name?, ?autoloader? is run, the package is
>      loaded and ?name? is re-evaluated in the new package's
>      environment.  The result is that R behaves as if ?file? was loaded
>      but it does not occupy memory.
> 
>      ?.Autoloaded? contains the names of the packages for which
>      autoloading has been promised.

But I do not understand a few things about it:

-1- If I do not want autoloading, I should simply remove the 
.AutoloadEnv environment? Or keep it empty?

-2- How is this environment populated at startup? How can I ensure that 
it be empty?

> | And concerning datasets, how do you avoid loading them?
> 
> Maybe by not loading the datasets package?  But note that packages may fail
> their examples.

Thanks a lot.

-- 
      Guillaume Yziquel
http://yziquel.homelinux.org/



[Rd] Stop packages and datasets to be loaded on startup.
Guillaume Yziquel