caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: skaller <skaller@users.sourceforge.net>
To: Christophe Raffalli <christophe.raffalli@univ-savoie.fr>
Cc: Jacques Garrigue <garrigue@math.nagoya-u.ac.jp>,
	daniel.buenzli@epfl.ch, caml-list@inria.fr
Subject: Re: [Caml-list] How to compile different implementations of the	same lib
Date: Fri, 02 Dec 2005 04:54:07 +1100	[thread overview]
Message-ID: <1133459647.9266.20.camel@rosella> (raw)
In-Reply-To: <438F2CE5.9030105@univ-savoie.fr>

On Thu, 2005-12-01 at 18:03 +0100, Christophe Raffalli wrote:

> May be I still do not get the problem

Simple. Ocaml cheats. When you *compile* against a cmx
or cmi/cmx pair, Ocaml 'cheats' and lifts non-interface
information out of the cmx. This allows it to, for
example, inline functions by cheating and grabbing their
implementations from the cmx.

This 'cheating' is typesafe and transparent at the program
code level but NOT the compilation model level.

To enforce abstraction, you have to ensure the cmx is
not present when the dependent module is compiled,
this forces the generated code to use indirection
(closures, etc) -- marginally later binding at the
cost of some performance. Given how fast the Ocaml
compiler is it hardly seems worth bothering to me --
it's not as though you can link Ocaml code without
the compiler.

-- 
John Skaller <skaller at users dot sf dot net>
Felix, successor to C++: http://felix.sf.net


  reply	other threads:[~2005-12-01 17:54 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-11-30  9:05 Best way to choose an implementation of a lib ? Christophe Raffalli
2005-11-30 12:19 ` [Caml-list] " Jacques Garrigue
2005-11-30 14:38   ` How to compile different implementations of the same lib Daniel Bünzli
2005-11-30 16:09     ` [Caml-list] " Daniel Bünzli
2005-12-01  1:07       ` Jacques Garrigue
2005-12-01  1:53         ` malc
2005-12-01 17:03         ` Christophe Raffalli
2005-12-01 17:54           ` skaller [this message]
2005-12-01 20:09             ` Richard Jones
2005-12-01 23:47               ` skaller
2005-12-02  3:29               ` Jacques Garrigue
2005-12-01 21:33             ` Christophe Raffalli
2005-12-02  3:06               ` Jacques Garrigue
2005-11-30 16:24   ` how to detect .cmx incompatibility Stefano Zacchiroli
2005-11-30 19:48   ` [Caml-list] Best way to choose an implementation of a lib ? Eric Cooper
2005-12-01 17:05     ` Christophe Raffalli
2005-12-01 17:31       ` Eric Cooper

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=1133459647.9266.20.camel@rosella \
    --to=skaller@users.sourceforge.net \
    --cc=caml-list@inria.fr \
    --cc=christophe.raffalli@univ-savoie.fr \
    --cc=daniel.buenzli@epfl.ch \
    --cc=garrigue@math.nagoya-u.ac.jp \
    /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).