caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: skaller <skaller@ozemail.com.au>
To: Eric Dahlman <edahlman@atcorp.com>
Cc: Ocaml Mailing List <caml-list@inria.fr>
Subject: Re: [Caml-list] Building large and portable projects
Date: 23 Nov 2003 01:45:39 +1100	[thread overview]
Message-ID: <1069512339.6703.23.camel@pelican> (raw)
In-Reply-To: <3FBE5110.7090809@atcorp.com>

On Sat, 2003-11-22 at 04:53, Eric Dahlman wrote:
> skaller wrote:
> 
> > But it is much worse. A target can
> > depend on itself. Interscript assumes that.
> > An example is a Latex build, which depends
> > on auxilliary files generated by the build
> > [Ocamldoc output can take 4 passes to fixate
> > for example].
> > 
> > This leads to the first novel idea. Fixpoints.
> > Interscript is based on that idea.
> 
> Just to be pedantic ;-)  A Tex or Latex build is not guaranteed to 
> converge so you may not have a fixed point in the computation. They can 
> oscillate and it may be necessary to slightly alter the source document 
> to get things to settle down.

If I may also be pedantic: this is not a matter of pedantry :-)

The idea of fixpoints is still novel and useful here.
As you comment, oscillations are possible. Divergence
is also possible. Interscript has a command line like

	iscr --passes=4 other options ...

which limits the number of passes. The default is one
pass, but it has a persistence mechanism (Python marshal),
so that executing the command 4 times is roughly equivalent
to a single invocation with --passes=4, except that with
the --passes=4 option 1 to 4 passes are executed.

Interscript is also Make friendly -- if it writes the
same as a files contents the timestamps are not changed.
[Which is how it detects convergence :-]

It *also* has dependency checking which can detect
that a pass would be the same as the last pass and
so it is possible that 0 passes are executed.

The design is not particularly efficient, however
it handles things like: you can read a file that
doesn't exist, and later write it. No problem.
The error on the first pass is ignored. The file
is there on the second pass .. although it might
not fix.

BTW: there is a fun caveat. The one thing that
you must be careful NOT to ever do in Interscript
is put the code generation time directly into the generated
code -- that guarrantees divergence :-)


-------------------
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:[~2003-11-22 15:46 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-11-20 18:47 Martin Jambon
2003-11-20 19:56 ` sylvain.le-gall
2003-11-21  1:45   ` Nicolas Cannasse
2003-11-21  5:25     ` David Brown
2003-11-21  5:48       ` Nicolas Cannasse
2003-11-21  6:45         ` David Brown
2003-11-21  6:49         ` sylvain.le-gall
2003-11-21 16:12           ` skaller
2003-11-21 17:53             ` Eric Dahlman
2003-11-22 14:45               ` skaller [this message]
2003-11-21 19:04             ` sylvain.le-gall
2003-11-22 14:34               ` skaller
2003-11-22 18:50                 ` sylvain.le-gall
2003-11-22 14:32             ` Martin Berger
2003-11-22 14:55               ` skaller
2003-11-22 17:08             ` David Brown
2003-11-22 16:48               ` skaller
2003-11-23  3:25               ` Nicolas Cannasse
2003-11-23  4:29                 ` David Brown
2003-11-23 17:21                 ` skaller
2003-11-22 17:13             ` David Brown
2003-11-24 18:02             ` Ken Rose
2003-11-24 19:04               ` Christian Lindig
2003-11-21 16:32           ` Martin Jambon
2003-11-21 18:57             ` sylvain.le-gall
2003-11-21  9:14       ` Christian Lindig
2003-11-21  9:28 ` Richard Jones
2003-11-21 15:35 ` skaller
2003-11-21 17:05 ` Jason Hickey
2003-11-21 18:55   ` sylvain.le-gall
2003-11-21 19:30     ` [Caml-list] Omake [Was: Building large and portable projects] Aleksey Nogin
2003-11-21 20:39       ` Damien
2003-11-22  3:30         ` Aleksey Nogin
2003-11-21 23:48       ` sylvain.le-gall
2003-11-22  1:32         ` Nicolas Cannasse
2003-11-22  3:51         ` Aleksey Nogin
2003-11-28 16:29   ` [Caml-list] Building large and portable projects David Brown

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=1069512339.6703.23.camel@pelican \
    --to=skaller@ozemail.com.au \
    --cc=caml-list@inria.fr \
    --cc=edahlman@atcorp.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;
as well as URLs for NNTP newsgroup(s).