caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: "Jeff Henrikson" <jehenrik@yahoo.com>
To: "Xavier Leroy" <Xavier.Leroy@inria.fr>, <caml-list@inria.fr>
Subject: [Caml-list] dynamic linking ocamlopt?
Date: Sat, 1 Sep 2001 14:47:37 -0400	[thread overview]
Message-ID: <000901c13316$91c098e0$0b01a8c0@mit.edu> (raw)
In-Reply-To: <20010901120652.A24206@pauillac.inria.fr>

This part sounds like exactly what dlopen does:

>   The goal of this work is to allow bytecode to refer to
>   libraries such as Unix, Str, etc, without having to be linked in
>   -custom mode.
>
>   In other terms: currently, when a library such as Unix
>   (which contains C stub code in a library archive libunix.a) is linked in,
>   ocamlc generates a custom runtime system statically linked with
>   libunix.a, and sticks the Caml bytecode at the end of this custom
>   runtime system.  This has two drawbacks: 1- the bytecode is no longer
>   machine-independent, since it is attached to a native executable (the
>   custom runtime system); 2- you need a C compiler and linker around,
>   which many Windows users don't have.
>
>   With the new scheme, ocamlc simply generates a machine-independent
>   bytecode executable that says "by the way, I'll need the libunix C
>   stub code"; and ocamlrun dynamically links libunix.so and resolves the
>   references to C external functions.  Voila, bytecode is
>   machine-independent, and no C compiler is required.

That much has obvious implementation, and that's what dlopen is.  But this is beyond its scope:

>   This also allows to load dynamically .cma files that refer to C stub
>   code, either at the toplevel (#load) or with Dynlink.  The C stub code
>   is loaded dynamically in a fully transparent fashion.  It's quite cool
>   to type #load "labltk.cma";; in the toplevel and have LablTk working
>   like a charm, without all these pesky "ocamlmktop" commands.

Not knowing the ocaml internals well, it's not obvious to me that the dlopen behavior is the only thing missing to get this
working.  Without contradictory information, I would presume that it isn't in fact obvious to make this work for ocamlopt code.
(Isn't basically all the type info of ocamlopt code stripped out at compile time?)

But you obviously know the internals better than me!


Jeff Henrikson


-------------------
Bug reports: http://caml.inria.fr/bin/caml-bugs  FAQ: http://caml.inria.fr/FAQ/
To unsubscribe, mail caml-list-request@inria.fr  Archives: http://caml.inria.fr


      reply	other threads:[~2001-09-01 18:39 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-08-31 22:00 [Caml-list] dlopen win32 port Jeff Henrikson
2001-09-01 10:06 ` Xavier Leroy
2001-09-01 18:47   ` Jeff Henrikson [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='000901c13316$91c098e0$0b01a8c0@mit.edu' \
    --to=jehenrik@yahoo.com \
    --cc=Xavier.Leroy@inria.fr \
    --cc=caml-list@inria.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).