From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from majordomo@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id TAA15685; Fri, 26 Mar 2004 19:44:26 +0100 (MET) X-Authentication-Warning: pauillac.inria.fr: majordomo set sender to owner-caml-list@pauillac.inria.fr using -f Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id TAA15746 for ; Fri, 26 Mar 2004 19:44:25 +0100 (MET) Received: from aomori.annexia.org (annexia.force9.co.uk [212.56.101.183]) by nez-perce.inria.fr (8.12.10/8.12.10) with ESMTP id i2QIj3KW031392 for ; Fri, 26 Mar 2004 19:45:03 +0100 Received: from rich by aomori.annexia.org with local (Exim 3.36 #1 (Debian)) id 1B6wJc-0005RK-00 for ; Fri, 26 Mar 2004 18:44:24 +0000 Date: Fri, 26 Mar 2004 18:44:24 +0000 Cc: caml-list@inria.fr Subject: Re: [Caml-list] Delaying module initialization Message-ID: <20040326184424.GA20895@redhat.com> References: <20040326165943.GA18734@redhat.com> <20040327.022627.38703728.yoriyuki@mbg.ocn.ne.jp> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20040327.022627.38703728.yoriyuki@mbg.ocn.ne.jp> User-Agent: Mutt/1.5.5.1+cvs20040105i From: Richard Jones X-Miltered: at nez-perce by Joe's j-chkmail ("http://j-chkmail.ensmp.fr")! X-Loop: caml-list@inria.fr X-Spam: no; 0.00; caml-list:01 2004:99 0900,:01 yamagata:01 yoriyuki:01 caml-list:01 2004:99 'use':99 wrappers:01 initialized:01 initialized:01 initializing:01 strace:01 3.07:01 lwp:01 Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk X-Status: X-Keywords: X-UID: 377 On Sat, Mar 27, 2004 at 02:26:27AM +0900, Yamagata Yoriyuki wrote: > From: Richard Jones > 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";; # 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 Rich. -- 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: http://www.merjis.com/richj/computers/ocaml/tutorial/ ------------------- 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