From: Xavier Leroy <Xavier.Leroy@inria.fr>
To: Jeff Henrikson <jehenrik@yahoo.com>
Cc: caml-list@inria.fr
Subject: Re: [Caml-list] dlopen win32 port
Date: Sat, 1 Sep 2001 12:06:52 +0200 [thread overview]
Message-ID: <20010901120652.A24206@pauillac.inria.fr> (raw)
In-Reply-To: <000401c13268$48473ba0$0b01a8c0@mit.edu>; from jehenrik@yahoo.com on Fri, Aug 31, 2001 at 06:00:01PM -0400
> > Xavier Leroy wrote on 8/24:
> >"dynamic_loading" branch on the OCaml development sources
> >(camlcvs.inria.fr). I'll post more information about it once I'm
> >happy with the result, to get some feedback on the design.
>
> I checked out these sources and did some superficial diffing of it,
> and it wasn't obvious to me which the salient changes were. I think
> I was diffing source that was too old though (3.01). A big mess.
> Is this code for dynamic linking FFI code like DlOpen, or for the
> general problem of incorporating typing info and etc from one Caml
> module into another at runtime?
I haven't looked at this DlOpen library yet, so I'll pass. But here
is a short description of what I implemented recently. I thought I
posted it already on this list, but can't find it in the archives, so
here we go again.
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.
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.
Obligatory backward compatibility note: this new mechanism doesn't
deprecate the -custom mode, which is still supported. No existing
code should break.
- Xavier Leroy
-------------------
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
next prev parent reply other threads:[~2001-09-01 10:06 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-08-31 22:00 Jeff Henrikson
2001-09-01 10:06 ` Xavier Leroy [this message]
2001-09-01 18:47 ` [Caml-list] dynamic linking ocamlopt? Jeff Henrikson
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=20010901120652.A24206@pauillac.inria.fr \
--to=xavier.leroy@inria.fr \
--cc=caml-list@inria.fr \
--cc=jehenrik@yahoo.com \
/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