English version
Accueil     À propos     Téléchargement     Ressources     Contactez-nous    

Ce site est rarement mis à jour. Pour les informations les plus récentes, rendez-vous sur le nouveau site OCaml à l'adresse ocaml.org.

Browse thread
[Caml-list] Delaying module initialization
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2004-03-26 (19:05)
From: Remi Vanicat <remi.vanicat@l...>
Subject: Re: [Caml-list] Delaying module initialization
Richard Jones <rich@annexia.org> writes:

> On Sat, Mar 27, 2004 at 02:26:27AM +0900, Yamagata Yoriyuki wrote:
>> From: Richard Jones <rich@annexia.org>
>> Subject: [Caml-list] Delaying module initialization
>> Date: Fri, 26 Mar 2004 16:59:43 +0000
>> > Now the problem is that any program which links with perl4caml.cma
>> > appears to immediately 'use' every Perl module, even ones for wrappers
>> > which the program doesn't actually need.
>> Actually, no.  Among the modules in the cma file, modules really
>> initialized and linked are modules which contain values used in the
>> main program.  Other modules are not initialized.
> I had to go back and check this, but I'm pretty sure that it is
> initializing all the modules.
> To verify this, I did:
> $ strace -o /tmp/log ocaml -I +perl
>         Objective Caml version 3.07+2

Well, you are using the interpreter. The interpreter cannot know which
modules of the cma you use, so it load them all. The ocamlc compiler
do know, and the compiled prgm don't need to load all those cma.

> # #load "perl4caml.cma";;
> # <Ctrl-D>
> I then looked at /tmp/log and verified that this loads libraries such
> as LWP::UserAgent (I can see it opening those .pm file on disk).  This
> must, I assume, mean that the 'use' statements are being run.

I've done a :

moi@vanicat:~/lang/ocaml$ ocamlc -o prgm -I +perl perl4caml.cma test.ml
moi@vanicat:~/lang/ocaml$ strace  -o /tmp/log ./prgm

and the/tmp/log contain no trace of any .pm.

Rémi Vanicat

To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners