Browse thread
[Caml-list] Building large and portable projects
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: | 2003-11-22 (15:46) |
From: | skaller <skaller@o...> |
Subject: | Re: [Caml-list] Building large and portable projects |
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