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 VAA10451; Mon, 18 Mar 2002 21:07:09 +0100 (MET) X-Authentication-Warning: pauillac.inria.fr: majordomo set sender to owner-caml-list@pauillac.inria.fr using -f Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id VAA12546 for ; Mon, 18 Mar 2002 21:07:08 +0100 (MET) Received: from wetware.wetware.com (wetware.wetware.com [199.108.16.1]) by concorde.inria.fr (8.11.1/8.11.1) with ESMTP id g2IK77H01978 for ; Mon, 18 Mar 2002 21:07:07 +0100 (MET) Received: from kallisti.apple.com(wetware.wetware.com[199.108.16.1]) (3140 bytes) by wetware.wetware.com via sendmail with P:esmtp/R:bind_hosts/T:inet_zone_bind_smtp (sender: ) id for ; Mon, 18 Mar 2002 12:07:05 -0800 (PST) (Smail-3.2.0.114 2001-Aug-6 #1 built 2002-Jan-4) Date: Mon, 18 Mar 2002 12:07:02 -0800 Mime-Version: 1.0 (Apple Message framework v481) Content-Type: text/plain; charset=US-ASCII; format=flowed Subject: [Caml-list] library packaging From: james woodyatt To: The Trade Content-Transfer-Encoding: 7bit Message-Id: X-Mailer: Apple Mail (2.481) Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk everyone-- Again, the subject of application packaging has arisen on the list (this time in a thread about the size of statically-linked native-code executables), and I would like to share my thoughts on the subject. I'd like to see a way to link with shared libraries in native-code executables. I'd also like to see a way to load and unload objects dynamically at runtime in native-code executables. These are about the only things I really miss in Objective Caml now, and I think they can be added-- but it will take some work. I'm beginning to think that what I really want is something like the Darwin application bundle and framework model. A Darwin application bundle comprises all the application-specific libraries, shared objects, resources, executable programs and private frameworks that makes an application a unit. A Darwin application framework (including the private frameworks contained in application bundles) comprises all available versions of a library, as well as the corresponding interface definitions for each. The Darwin port of the Gnu Compiler Collection extends the command-line interface of the GCC command driver with a -framework option, which is very much like how the ocamlfind driver works in findlib-0.6.1. Except: the native-code images output by the linker may be linked with dynamically-linked (as well as statically-linked) libraries to be loaded from named frameworks, and frameworks on the system are searched at load-time for the correct versions of dynamic libraries. The search order of frameworks is defined by the system: use private frameworks first; next use system frameworks; then use application frameworks installed in a system library; lastly and optionally, search application frameworks installed in a network library on remote volume. I think a lot of the problems folks are surfacing on the list about application packaging and dynamic loading are well-addressed in the Darwin design. Before we launch into yet another discussion of the problem, I would suggest having a look at the relevant chapters in the System Overview on Apple's Mac OS X developer documentation site. It's free (but might require registration, I'm not sure): http://developer.apple.com/techpubs/macosx/Essentials/SystemOverview/index. html There is a PDF version of this document you can download from the site. Ask me to mail it to you, if you would rather have it that way. -- j h woodyatt "You're standing on sacred ground. Many strange and wonderful things have transpired right where you're standing." --unattributable ------------------- 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