caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Xavier Leroy <xavier.leroy@inria.fr>
To: Gerd Stolpmann <info@gerd-stolpmann.de>
Cc: caml-list@inria.fr
Subject: Re: [Caml-list] GODI (was: CTAN/CPAN for Caml (COCAN ...?))
Date: Wed, 23 Jul 2003 11:35:46 +0200	[thread overview]
Message-ID: <20030723113546.A24774@pauillac.inria.fr> (raw)
In-Reply-To: <1058615717.6545.84.camel@ice.gerd-stolpmann.de>; from info@gerd-stolpmann.de on Sat, Jul 19, 2003 at 01:55:18PM +0200

I have followed this discussion with interest, although other
commitments prevented me from replying earlier.

I think there are two completely orthogonal issues:

1- Caml library packaging: standardizing and automating the
configuration, compilation, installation, dependency handling and
re-compilation when dependents change.

2- Name space management: avoiding the unfortunate situation where
several packages define compilation units that have the same names.

I agree with Gerd that the first issue (library packaging) is by far
the most acute.  The lack of a packaging framework currently makes
using third-party Caml libs in a development much harder than it
should be.

Someone objected that this isn't a Caml-specific issue and that it can
be handled by standard packaging tools.  Perhaps, but the problem is
that there are no standard packaging tools.  Even among Linux
distributions, the packaging tools vary widely.  Not to mention other
Unixes (BSD, Solaris, Tru64, ...), and MS Windows.  This flies in the
face of the cross-platform portability offered by the core Caml
system.  It's not reasonable to expect that the world will convert
overnight to Debian's "apt".  It's not reasonable either to expect
library writers to package their libs for 8 different packaging
systems, especially when most of them wouldn't touch Windows with a pole.
That's why other cross-platform programming environments
such as Perl and Python have developed their own packaging technology.

Library packaging is one of those "soft", un-glamorous problems: there
are no hard, open problems, just an endless series of small problems
to be solved and policy decisions to be taken.  I had interesting
discussions with several of you concerning possible designs, but
apparently these efforts ran out of steam.  I'm very happy to see that
Gerd (with his eminent practical sense) is giving it a try, and I wish
he'd get more constructive feedback on this.

Now, the name space management issue seems over-inflated to me.
Yes, it can happen, and may become a serious issue once we have
hundreds of libs that need to coexist.  But I think we can still get
a lot of mileage out of the current "global namespace for compilation
units" model.  In particular, most libraries can be set up so that
they define only *one* top-level module (i.e. compilation unit):

- put all sources in one file, possibly with sub-modules
  (not as ugly as it sounds -- see my Cryptokit library for an example);
- put all user-visible definitions in one file, say Mylib.ml, and 
  put internal definitions in other files with unlikely names such as
  MylibInternalFoo.ml, MylibInternalBar.ml, etc
- use ocamlc -pack to assemble the library files into one compilation
  unit.

Some people reject ocamlc -pack on the grounds that it prevents
link-time elimination of unused sub-modules.  I think they are jumping
to conclusions.  First, for many libraries, there is essentially no
opportunity for this link-time elimination, as every sub-module is
used.  Second, many libraries are small enough that the increase in
code size doesn't matter much.  Third, this is a "quality of
implementation" issue: I might be able to implement this link-time
elimination for the native-code compiler (ocamlopt -pack) at some
future time.  The problem remains for bytecode, though, but is perhaps
less acute due to the small size of bytecode.

Finally, as this discussion demonstrates eloquently, there is no
obviously good solution to the name space management problem.  Yes,
various things can be done either at the language level or at the
compiler level to support finer identification and re-naming of
compilation units.  But I'd rather not settle on a half-baked solution
to a non-acute problem.

- Xavier Leroy

-------------------
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


  parent reply	other threads:[~2003-07-23  9:35 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-07-15 18:09 [Caml-list] CTAN/CPAN for Caml (COCAN ...?) Richard Jones
2003-07-15 18:37 ` Erik Arneson
2003-07-18  8:08   ` John Max Skaller
2003-07-16  3:13 ` BdB
2003-07-16  3:22   ` Alexander V. Voinov
2003-07-16  5:53     ` Issac Trotts
2003-07-16  6:43       ` BdB
2003-07-16  7:07         ` Wolfgang Müller
2003-07-16  9:22         ` Richard Jones
2003-07-16  9:51           ` Wolfgang Müller
2003-07-17  8:42         ` Florian Hars
2003-07-16  6:52   ` Florian Hars
2003-07-18  8:14 ` John Max Skaller
2003-07-18  8:42   ` Richard Jones
2003-07-18 15:46     ` Stefano Zacchiroli
2003-07-18 20:49       ` Yamagata Yoriyuki
2003-07-19 11:25         ` Daniel Bünzli
2003-07-19 19:47           ` Yamagata Yoriyuki
2003-07-18 14:29   ` Shawn Wagner
2003-07-19 11:55     ` [Caml-list] GODI (was: CTAN/CPAN for Caml (COCAN ...?)) Gerd Stolpmann
2003-07-19 12:18       ` Fernando Alegre
2003-07-19 12:38         ` Gerd Stolpmann
2003-07-19 13:20           ` Fernando Alegre
2003-07-19 22:58             ` Kip Macy
2003-07-19 20:05           ` [Caml-list] GODI Yamagata Yoriyuki
2003-07-19 20:40           ` [Caml-list] GODI (was: CTAN/CPAN for Caml (COCAN ...?)) BdB
2003-07-20  9:55             ` Gerd Stolpmann
2003-07-20 18:30               ` Christian Lindig
2003-07-21 16:19                 ` james woodyatt
2003-07-21 16:32                   ` Richard Jones
2003-07-21 16:37                     ` Richard Jones
2003-07-21 20:37                     ` james woodyatt
2003-07-21 21:48                     ` BdB
2003-07-22 20:48                   ` Christian Lindig
2003-07-22  0:01                 ` BdB
2003-07-22  2:35                   ` [Caml-list] licensing (was Re: GODI (was: CTAN/CPAN for Caml (COCAN ...?))) Alan Post
2003-07-22  7:57                     ` Dominique Quatravaux
2003-07-22  8:02                     ` BdB
2003-07-22 15:29                   ` [Caml-list] GODI Yamagata Yoriyuki
2003-07-20 23:11               ` Yamagata Yoriyuki
2003-07-21 12:01                 ` Fernando Alegre
2003-07-23  9:35       ` Xavier Leroy [this message]
2003-07-23 13:20         ` [Caml-list] GODI (was: CTAN/CPAN for Caml (COCAN ...?)) Gerd Stolpmann
2003-07-24 16:34           ` Eray Ozkural
2003-07-23 17:56         ` David Brown
2003-07-23 18:36           ` Fernando Alegre

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=20030723113546.A24774@pauillac.inria.fr \
    --to=xavier.leroy@inria.fr \
    --cc=caml-list@inria.fr \
    --cc=info@gerd-stolpmann.de \
    /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).