caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: skaller <skaller@users.sourceforge.net>
To: David Brown <caml-list@davidb.org>
Cc: "Marcin 'Qrczak' Kowalczyk" <qrczak@knm.org.pl>,
	caml-list <caml-list@inria.fr>
Subject: Re: [Caml-list] Announcing the OMake build system version 0.9.1
Date: 06 Sep 2004 04:31:00 +1000	[thread overview]
Message-ID: <1094409059.3352.838.camel@pelican.wigram> (raw)
In-Reply-To: <20040905160936.GB29119@old.davidb.org>

On Mon, 2004-09-06 at 02:09, David Brown wrote:
> On Mon, Sep 06, 2004 at 01:08:13AM +1000, skaller wrote:
> 
> > Fixpoint iteration works and is universal.
> 
> It isn't universal, though.  There are pathalogical cases, even with common
> tools where it never will stabilize. 

I think it is very rare to find a case which would
stabilise with a manual order and not fixpoint iteration.

Clearly, the claim to universality means 'the result
will eventually converge to the same result as a correct
hand crafted solution'.

This claim isn't true. Every mathematician knows
there are functions with local maxima which are
not global maxima, and some algorithms which try
to converge on the maxima will pick the wrong one.

It is also possible to have processes which
are so badly degenerate unless they're started with
a sensible initial condition they just drop dead
immediately and never recover. I know all about this
one, since interscript is itself literate programmed
and used to build itself -- and a few times I got
a degenerate version with a hidden bug, installed
it as the fallback, only to find the bug propagated ..
and I had to manually edit the fallback Python script
and LP sources (in parallel) to get the bootstrap
converging.

So yes, you're right, but in practice this is very rare,
and its unlikely a conventional system would fare any
better.
.
> There are also some old Ada compilers that wouldn't build without proper
> ordering.  Fortunately, with Ada, the order can be determined from the
> source.

I don't understand. If there is an partial order, fixpoint
iteration should find it (eventually). It doesn't matter
if a build fails, as long as at least one extra step
succeeds each pass.

> I'm not sure if having a specific build order is a bad thing, I just think
> make's approach to determine it aren't right.

Of course it isn't a bad thing! The point is to regard
this kind of information as an optimisation. Fast builds
are important.

All real projects also contain test code, documentation,
and all sorts of other stuff much of which is generated,
and some of which is executed. And these relationships
aren't flat either -- sometimes you need to generate
a program to generate a program: in fact Autoconf
is a perfect example of a long (and fragile) toolchain.

The key thing is that the fixpoint just handles the lot
automatically in almost all cases. [This isn't theory,
I've been using it for well over a decade]

In particular, you can certainly make the building of, 
for example, Ocaml codes fast by specifying an order -- 
possibly by executing some tool that generates it.
[For the Felix project I just maintain a list by hand]

However, to do that for every single tiny part
of the system and get it right is probably quite
hard, even harder to maintain, and at worst
Goedel's theorem might intervene and make it 
completely impossible (since you'd have to manage
the code managing the code ...)

I guess the point I want to make here is that
make systems just don't scale in practice,
and that can't be fixed by extensions or new
versions of it because the fault is fundamental
to the concept of specified targets and dependencies.

We need new concepts, and I'm proposing a new
kind of solution: output tracking, convergence
to fixpoints, an executable high power
scripting system, a uniform packaging mechanism,
and dependencies treated as optimisations.

I'm not claiming interscript itself should be used:
just that the ideas be considered as an alternative
to the way make handles things. 

Interscript 1.0a11[123] Process Mon 06 Sep, 2004 04:22:36 (EST)
SKIPPING (files skipped last run, which did not converge)
BUILDNO 298
Unable to load sh tangler for "bagley/run.sh": using data
$Id: flx_maker.ipk,v 1.75 2004/09/02 13:52:14 skaller Exp $
Pass 1 status: <not converged>
  Files    : 277
  New      : 0
  Changed  : 1
  Unchanged: 276

You see it knows what has changed. And that one file
probably has the CVS time stamp in it or something
because this particular process never converges.
But it doesn't matter -- my program still builds :)

-- 
John Skaller, mailto:skaller@users.sf.net
voice: 061-2-9660-0850, 
snail: PO BOX 401 Glebe NSW 2037 Australia
Checkout the Felix programming language http://felix.sf.net



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


  reply	other threads:[~2004-09-05 18:31 UTC|newest]

Thread overview: 87+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-09-04 16:26 Jason Hickey
2004-09-04 17:42 ` Nicolas Cannasse
2004-09-04 18:27   ` chris.danx
2004-09-04 19:59     ` Matthieu Dubuget
2004-09-05  5:20       ` skaller
2004-09-05 13:20         ` David Brown
2004-09-05 14:31           ` skaller
2004-09-05 16:02             ` David Brown
2004-09-05 16:14               ` Nicolas Cannasse
2004-09-05 15:07           ` chris.danx
2004-09-05 15:53             ` skaller
2004-09-06  0:25               ` chris.danx
2004-09-06  8:17                 ` skaller
2004-09-05 13:38         ` Marcin 'Qrczak' Kowalczyk
2004-09-05 14:50           ` chris.danx
2004-09-05 15:01             ` Marcin 'Qrczak' Kowalczyk
2004-09-05 15:44               ` chris.danx
2004-09-05 16:10                 ` Marcin 'Qrczak' Kowalczyk
2004-09-05 17:38                   ` skaller
2004-09-05 17:15                 ` skaller
2004-09-05 16:11               ` skaller
2004-09-05 16:21                 ` Marcin 'Qrczak' Kowalczyk
2004-09-05 19:09                   ` skaller
2004-09-05 15:08           ` skaller
2004-09-05 15:38             ` Marcin 'Qrczak' Kowalczyk
2004-09-05 17:04               ` skaller
2004-09-05 18:45                 ` Marcin 'Qrczak' Kowalczyk
2004-09-05 20:12                   ` skaller
2004-09-05 21:30                     ` Marcin 'Qrczak' Kowalczyk
2004-09-05 22:41                       ` Brandon J. Van Every
2004-09-06 12:13                         ` Marcin 'Qrczak' Kowalczyk
2004-09-05 16:09             ` David Brown
2004-09-05 18:31               ` skaller [this message]
2004-09-06 10:56                 ` Andreas Rossberg
2004-09-06 15:51                   ` skaller
2004-09-06  7:11           ` Christian Lindig
2004-09-06 12:20             ` Marcin 'Qrczak' Kowalczyk
2004-09-06 14:12               ` Christian Lindig
2004-09-06  1:06         ` Richard Jones
2004-09-06  1:50           ` Brandon J. Van Every
2004-09-06  9:09             ` skaller
2004-09-06  8:59           ` skaller
2004-09-04 23:58     ` Nicolas Cannasse
2004-09-05  1:18       ` james woodyatt
2004-09-05  1:26         ` [Caml-list] Perl Conjury (alternative to Unix make) james woodyatt
2004-09-05  2:03         ` [Caml-list] Announcing the OMake build system version 0.9.1 David Brown
2004-09-05  2:37           ` james woodyatt
2004-09-05  6:24             ` Nathaniel Gray
2004-09-05 20:38         ` Aleksey Nogin
2004-09-06  0:12           ` james woodyatt
2004-09-06  0:33             ` [Omake] " Aleksey Nogin
2004-09-06  3:54               ` Brian Hurt
2004-09-06  6:39                 ` Jason Hickey
2004-09-06  8:10                   ` james woodyatt
2004-09-06  7:50                 ` [Omake] " Erik de Castro Lopo
2004-09-06 14:52                   ` Brian Hurt
2004-09-06 17:20                     ` skaller
2004-09-06  9:52                 ` skaller
2004-09-06 15:10                   ` Brian Hurt
2004-09-07 13:26                 ` David Brown
2004-09-06  1:14             ` Brandon J. Van Every
2004-09-06  2:35             ` Jacques GARRIGUE
2004-09-06  9:38               ` skaller
2004-09-06 11:34                 ` Jacques Garrigue
2004-09-06 16:28                   ` skaller
2004-09-06 16:42                     ` Christopher A. Watford
2004-09-06 16:59                       ` Richard Jones
2004-09-07  2:21                     ` Jacques GARRIGUE
2004-09-07  6:17                       ` skaller
2004-09-07  8:24                         ` Benjamin Geer
2004-09-07 13:35                     ` David Brown
2004-09-06  7:51             ` Daniel Andor
2004-09-05 20:38   ` Aleksey Nogin
2004-09-05 22:57     ` Olivier Grisel
2004-09-06  0:17       ` Aleksey Nogin
2004-09-06 13:31         ` Olivier Grisel
2004-09-06 19:28           ` [Caml-list] Godi for OMake [Was: Announcing the OMake build system version 0.9.1] Aleksey Nogin
2004-09-06 20:18             ` Olivier Grisel
     [not found]               ` <41537DAE.1050601@cs.caltech.edu>
2004-09-24 13:50                 ` Olivier Grisel
2004-09-24 18:37                   ` [Caml-list] OCamlFind support in OMake [Was: Godi for OMake] Aleksey Nogin
2004-09-04 18:01 ` [Caml-list] Announcing the OMake build system version 0.9.1 Yaron Minsky
2004-09-05  1:38   ` Eray Ozkural
2004-09-05  6:12 ` Yamagata Yoriyuki
2004-09-05 12:48   ` Yaron Minsky
2004-09-05 20:39     ` Aleksey Nogin
2004-09-06 12:24 Jason Smith
2004-09-06 15:54 ` Christopher A. Watford

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=1094409059.3352.838.camel@pelican.wigram \
    --to=skaller@users.sourceforge.net \
    --cc=caml-list@davidb.org \
    --cc=caml-list@inria.fr \
    --cc=qrczak@knm.org.pl \
    /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).