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 (18:44)
From: Richard Jones <rich@a...>
Subject: Re: [Caml-list] Delaying module initialization
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

# #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.

Is there something else that might be causing the modules to be
initialized even though they are never used?

Here is how the wrappers are compiled and linked:

ocamlc -w s -g -I wrappers -c wrappers/pl_Date_Calc.ml
ocamlc -w s -g -I wrappers -c wrappers/pl_Date_Format.ml
ocamlc -w s -g -I wrappers -c wrappers/pl_Date_Parse.ml
ocamlc -w s -g -I wrappers -c wrappers/pl_Net_Google_Cache.ml
ocamlc -w s -g -I wrappers -c wrappers/pl_Net_Google_Response.ml
ocamlc -w s -g -I wrappers -c wrappers/pl_Net_Google_Search.ml
ocamlc -w s -g -I wrappers -c wrappers/pl_Net_Google_Spelling.ml
ocamlc -w s -g -I wrappers -c wrappers/pl_Net_Google.ml
ocamlc -w s -g -I wrappers -c wrappers/pl_HTML_Element.ml
ocamlc -w s -g -I wrappers -c wrappers/pl_HTML_Parser.ml
ocamlc -w s -g -I wrappers -c wrappers/pl_HTML_TreeBuilder.ml
ocamlc -w s -g -I wrappers -c wrappers/pl_URI.ml
ocamlc -w s -g -I wrappers -c wrappers/pl_HTTP_Message.ml
ocamlc -w s -g -I wrappers -c wrappers/pl_HTTP_Request.ml
ocamlc -w s -g -I wrappers -c wrappers/pl_HTTP_Response.ml
ocamlc -w s -g -I wrappers -c wrappers/pl_LWP_UserAgent.ml
ocamlc -w s -g -I wrappers -c wrappers/pl_Template.ml
ocamlmklib -o perl4caml -rdynamic  -L/usr/local/lib /usr/lib/perl/5.8.2/auto/DynaLoader/DynaLoader.a -L/usr/lib/perl/5.8.2/CORE -lperl -ldl -lm -lpthread -lc -lcrypt perl.cmo perl_c.o wrappers/pl_Date_Calc.cmo wrappers/pl_Date_Format.cmo wrappers/pl_Date_Parse.cmo wrappers/pl_Net_Google_Cache.cmo wrappers/pl_Net_Google_Response.cmo wrappers/pl_Net_Google_Search.cmo wrappers/pl_Net_Google_Spelling.cmo wrappers/pl_Net_Google.cmo wrappers/pl_HTML_Element.cmo wrappers/pl_HTML_Parser.cmo wrappers/pl_HTML_TreeBuilder.cmo wrappers/pl_URI.cmo wrappers/pl_HTTP_Message.cmo wrappers/pl_HTTP_Request.cmo wrappers/pl_HTTP_Response.cmo wrappers/pl_LWP_UserAgent.cmo wrappers/pl_Template.cmo
Unknown option -rdynamic


Richard Jones. http://www.annexia.org/ http://www.j-london.com/
Merjis Ltd. http://www.merjis.com/ - improving website return on investment
Learning Objective CAML for C, C++, Perl and Java programmers:

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