Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Diff of /sml/trunk/HISTORY
ViewVC logotype

Diff of /sml/trunk/HISTORY

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 660, Thu Jun 15 04:40:56 2000 UTC revision 713, Mon Oct 23 23:38:38 2000 UTC
# Line 11  Line 11 
11  Date:  Date:
12  Tag: <post-commit CVS tag>  Tag: <post-commit CVS tag>
13  Description:  Description:
14    
15    ----------------------------------------------------------------------
16    Name: Allen Leung
17    Date: 2000/10/23 19:31:00
18    Tag: leunga-20001023-demo-ra
19    
20    1. Minor RA changes that improves spilling on x86 (affects Moby and C-- only)
21    2. Test programs for the graph library updated
22    3. Some new MLRISC demo programs added
23    
24    ----------------------------------------------------------------------
25    Name: Matthias Blume
26    Date: 2000/08/31 22:15:00 JST
27    Tag: blume-20001017-errmsg
28    Description:
29    
30    More error message grief: Where there used to be no messages, there
31    now were some that had bogus error regions.  Fixed.
32    
33    ----------------------------------------------------------------------
34    Name: Matthias Blume
35    Date: 2000/08/31 17:30:00 JST
36    Tag: blume-20001017-v110p29p1
37    Description:
38    
39    I made a version 110.29.1 with new bootfiles.
40    
41    Changes:  Modified pickler/unpickler for faster and leaner unpickling.
42              CM documentation changes and a small bugfix in CM's error reporting.
43    
44    ----------------------------------------------------------------------
45    Name: Lal George
46    Date: 2000/09/27 14:42:35 EDT
47    Tag: george-20000927-nodestatus
48    Description:
49    
50    Changed the type of the nodestatus, so that:
51    
52            SPILLED(~1)             is now SPILLED
53            SPILLED(m) where m>=0   is now MEMREG(m)
54            SPILLED(s) where s<~1   is now SPILL_LOC(~s)
55    
56    ----------------------------------------------------------------------
57    Name: Matthias Blume
58    Date: 2000/09/07 14:45:00 JST
59    Tag: blume-20000907-cmerrmsg
60    Description:
61    
62    Small tweak to CM to avoid getting ML syntax error messages twice.
63    
64    ----------------------------------------------------------------------
65    Name: Matthias Blume
66    Date: 2000/08/31 18:00:00 JST
67    Tag: blume-20000831-cvsbootfiles
68    Description:
69    
70    New URL for boot files (because the 110.29 files on the BL server do
71    now work correctly with my updated install scripts for yacc and lex).
72    
73    ----------------------------------------------------------------------
74    Name: Matthias Blume
75    Date: 2000/08/08 12:33:00 JST
76    Tag: blume-20000808-manual
77    Description:
78    
79    Tiny update to CM manual.
80    
81    ----------------------------------------------------------------------
82    Name: Allen Leung
83    Date: 2000/08/7 19:31:00
84    Tag: leunga-20000807-a-whole-bunch-of-stuff
85    
86      Moby, C--, SSA, x86, machine descriptions etc.  Should only affect C--
87    and Mobdy.
88    
89    1.  x86
90    
91       a.  Fixes to peephole module by John and Dan.
92       b.  Assembly fix to SETcc by Allen.
93       c.  Fix to c-call by John.
94       d.  Fix to spilling by John.  (This one deals with the missing FSTPT case)
95       e.  Instruction selection optimization to SETcc as suggested by John.
96    
97           For example,
98    
99            MV(32, x, COND(32, CMP(32, LT, a, b), LI 1, LI 0))
100    
101           should generate:
102    
103            MOVL a, x
104            SUBL b, x
105            SHRL 31, x
106    
107    2.  IR stuff
108    
109         A bunch of new DJ-graph related algorithms added.  These
110         speed up SSA construction.
111    
112    3.  SSA + Scheduling
113    
114         Added code for SSA and scheduling to the repository
115    
116    ----------------------------------------------------------------------
117    Name: Lal George
118    Date: 2000/07/27 11:53:14 EDT
119    
120    Tag: lal-20000727-linux-ppc
121    Description:
122    
123     Made changes to support Linux PPC.
124     p.s. I have confirmation that the 110.29 boot files work fine.
125    
126    ----------------------------------------------------------------------
127    Name: Matthias Blume
128    Date: 2000/07/27 17:40:00 JST
129    Tag: blume-20000727-scripts
130    Description:
131    
132    !!!! WARNING !!!!
133    You must recompile the runtime system!
134    !!!! WARNING !!!!
135    
136    This is basically another round of script-enhancements:
137    
138    1. sml, ml-build, and ml-makedepend accept options -D and -U to define
139       and undefine CM preprocessor symbols.
140    
141    2. ml-build avoids generating a new heap image if it finds that the
142       existing one is still ok.  (The condition is that no ML file had to
143       be recompiled and all ML files are found to be older that the heap
144       file.)
145    
146       To make this work smoothly, I also hacked the runtime system as
147       well as SMLofNJ.SysInfo to get access to the heap image suffix
148       (.sparc-solaris, ...) that is currently being used.
149    
150       Moreover, the signature of CM.mk_standalone has changed.  See the
151       CM manual.
152    
153    3. ml-makedepend accepts additional options -n, -a, and -o.  (See the
154       CM manual for details.)
155    
156    4. More CM manual updates:
157        - all of the above has been documented.
158        - there is now a section describing the (CM-related) command line
159          arguments that are accepted by the "sml" command
160    
161    ----------------------------------------------------------------------
162    Name: Matthias Blume
163    Date: 2000/07/25 16:20:00 JST
164    Tag: blume-20000725-makedepend
165    Description:
166    
167    Added a script called ml-makedepend.  This can be used in makefiles
168    for Unix' make in a way very similar to the "makedepend" command for
169    C.
170    
171    The script internally uses function CM.sources.
172    
173    Synopsis:
174    
175        ml-makedepend [-f makefile] cmfile targetname
176    
177    The default for the makefile is "makefile" (or "Makefile" should
178    "makefile" not exist).
179    
180    ml-makedepend adds a cmfile/targetname-specific section to this
181    makefile (after removing the previous version of this section).  The
182    section contains a single dependency specification with targetname on
183    the LHS (targetname is an arbitrary name), and a list of files derived
184    from the cmfile on the RHS.  Some of the files on the RHS are
185    ARCH/OPSYS-specific.  Therefore, ml-makedepend inserts references to
186    "make" variables $(ARCH) and $(OPSYS) in place of the corresponding
187    path names.  The makefile writer is responsible for making sure that
188    these variables have correct at the time "make" is invoked.
189    
190    ----------------------------------------------------------------------
191    Name: Matthias Blume
192    Date: 2000/07/22 23:30:00 JST
193    Tag: blume-20000722-urlupdate
194    Description:
195    
196    Changed BOOT and config/srcarchiveurl to point to BL server:
197    
198        ftp://ftp.research.bell-labs.com/dist/smlnj/working/110.29/
199    
200    ----------------------------------------------------------------------
201    Name: Matthias Blume
202    Date: 2000/07/18 18:00:00 JST
203    Tag: blume-20000718-Version_110_29
204    Description:
205    
206    1. Updated src/compiler/TopLevel/main/version.sml to version 110.29
207    
208    2. Updated config/version to 110.29
209    
210    3. Updated config/srcarchiveurl
211    
212    3. New boot files!
213       ftp://ftp.cs.princeton.edu/pub/people/blume/sml/110.29-autofetch
214    
215    ----------------------------------------------------------------------
216    Name: Matthias Blume
217    Date: 2000/07/11 13:58:00 JST
218    Tag: blume-20000711-doctypo
219    Description:
220    
221    Fixed a few typos in CM manual.
222    
223    ----------------------------------------------------------------------
224    Name: Allen Leung
225    Date: 2000/06/15 00:38:00
226    Tag: leunga-20000704-sparc-x86
227    
228    1. x86 peephole improvement sp += k; sp -= k => nop  [from John]
229    2. fix to x86 RET bug [found by Dan Grossman]
230    3. sparc assembly bug fix for ticc instructions [found by Fermin]
231    
232       Affects c-- and moby only
233    
234    ----------------------------------------------------------------------
235    Name: Matthias Blume
236    Date: 2000/07/04 15:26:00
237    Tag: blume-20000704-trigger
238    Description:
239    
240    1. Improvements to CM manual.
241    2. SMLofNJ.Internals.BTrace.trigger reinstated as an alternative way
242       of getting a back-trace.  The function, when called, raises an
243       internal exception which explicitly carries the full back-trace history,
244       so it is unaffected by any intervening handle-raise pairs ("trivial"
245       or not).  The interactive loop will print that history once it arrives
246       at top level.
247       Short of having all exceptions implicitly carry the full history, the
248       recommended way of using this facility is:
249         - compile your program with instrumentation "on"
250         - run it, when it raises an exception, look at the history
251         - if the history is "cut off" because of some handler, go and modify
252           your program so that it explicitly calls BTrace.trigger
253         - recompile (still instrumented), and rerun; look at the full history
254    
255    ----------------------------------------------------------------------
256    Name: Matthias Blume
257    Date: 2000/07/03 15:36:00 JST
258    Tag: blume-20000702-manual
259    Description:
260    
261    Small corrections and updates to CM manual.
262    
263    ----------------------------------------------------------------------
264    Name: Matthias Blume
265    Date: 2000/06/29 16:04:00 JST
266    Tag: blume-20000629-yacctool
267    Description:
268    
269    Changes:
270    
271    1. Class "mlyacc" now takes separate arguments to pass options to
272       generated .sml- and .sig-files independently.
273    2. Corresponding CM manual updates.
274    3. BTrace module now also reports call sites.  (However, for loop clusters
275       it only shows from where the cluster was entered.)  There are associated
276       modifications to core.sml, internals.{sig,sml}, btrace.sml, and btimp.sml.
277    
278    ----------------------------------------------------------------------
279    Name: Matthias Blume
280    Date: 2000/06/27 16:51:00 JST
281    Tag: blume-20000627-noweb
282    Description:
283    
284    Changes:
285    
286     1. Implemented "subdir" and "witness" options for noweb tool.
287        This caused some slight internal changes in CM's tool implementation.
288     2. Fixed bug in "tool plugin" mechanism.  This is essentially cleaning
289        some remaining issues from earlier path anchor changes.
290     3. Updated CM manual accordingly.
291    
292     4. Changed implementation of back-tracing so that I now consider it
293        ready for prime-time.
294    
295        In particular, you don't have to explicitly trigger the back-trace
296        anymore.  Instead, if you are running BTrace-instrumented code and
297        there is an uncaught exception (regardless of whether or not it was
298        raised in instrumented code), the top-level evalloop will print
299        the back-trace.
300    
301        Features:
302    
303          - Instrumented and uninstrumented code work together seemlessly.
304            (Of course, uninstrumented code is never mentioned in actual
305             back-traces.)
306    
307          - Asymptotic time- and space-complexity of instrumented code is
308            equal to that of uninstrumented code.  (This means that
309            tail-recursion is preserved by the instrumentation phase.)
310    
311          - Modules whose code has been instrumented in different sessions
312            work together without problem.
313    
314          - There is no penalty whatsoever on uninstrumented code.
315    
316          - There is no penalty on "raise" expressions, even in
317            instrumented code.
318    
319        A potential bug (or perhaps it is a feature, too):
320    
321          A back-trace reaches no further than the outermost instrumented
322          non-trivial "raise".  Here, a "trivial" raise is one that is the
323          sole RHS of a "handle" rule.  Thus, back-traces reach trough
324    
325               <exp> handle e => raise e
326    
327          and even
328    
329               <exp> handle Foo => raise Bar
330    
331          and, of course, through
332    
333               <exp> handle Foo => ...
334    
335         if the exception was not Foo.
336    
337         Back-traces always reach right through any un-instrumented code
338         including any of its "handle" expressions, trivial or not.
339    
340       To try this out, do the following:
341    
342         - Erase all existing binfiles for your program.
343           (You may keep binfiles for those modules where you think you
344            definitely don't need back-tracing.)
345         - Turn on back-trace instrumentation:
346              SMLofNJ.Internals.BTrace.mode (SOME true);
347         - Recompile your program.  (I.e., run "CM.make" or "use".)
348         - You may now turn instrumentation off again (if you want):
349              SMLofNJ.Internals.BTrace.mode (SOME false);
350         - Run your program as usual.  If it raises an exception that
351           reaches the interactive toplevel, then a back-trace will
352           automatically be printed.  After that, the toplevel loop
353           will print the exception history as usual.
354    
355    ----------------------------------------------------------------------
356    Name: Matthias Blume
357    Date: 2000/06/26 09:56:46 JST
358    Tag: blume-20000626-setup
359    Description:
360    
361    CM: - setup-parameter to "sml" added; this can be used to run arbitrary
362          ML code before and after compiling a file (e.g., to set compiler
363          flags)
364    
365    Compiler: - improved btrace API (in core.sml, internals.{sig,sml})
366              - associated changes to btrace.sml (BTrace instrumentation pass)
367              - cleaner implementation of btimp.sml (BTrace tracing and report
368                module)
369    
370    CM manual: * new path encoding documented
371               * description of setup-parameter to "sml" added
372    
373    The biggest user-visible change to back-tracing is that it is no
374    longer necessary to compile all traced modules within the same
375    session.  (This was a real limitation.)
376    
377    ----------------------------------------------------------------------
378    Name: Matthias Blume
379    Date: 2000/06/24 12:40:00 JST
380    Tag: blume-20000624-startup
381    Description:
382    
383    Fixes startup slowdown problem.  (I was calling SrcPath.sync a _tad_
384    bit too often -- to put it mildly. :)
385    
386    ----------------------------------------------------------------------
387    Name: Matthias Blume
388    Date: 2000/06/23 18:20:00 JST
389    Tag: blume-20000623-btrace
390    Description:
391    
392    This updates adds a backtrace facility to aid programmers in debugging
393    their programs.  This involves the following changes:
394    
395    1. Module system/smlnj/init/core.sml (structure _Core) now has hooks for
396       keeping track of the current call stack.  When programs are compiled
397       in a special mode, the compiler will insert calls to these hooks
398       into the user program.
399       "Hook" means that it is possible for different implementations of
400       back-tracing to register themselves (at different times).
401    
402    2. compiler/MiscUtil/profile/btrace.sml implements the annotation phase
403       as an Absyn.dec->Absyn.dec rewrite.  Normally this phase is turned off.
404       It can be turned on using this call:
405         SMLofNJ.Internals.BTrace.mode (SOME true);
406       Turning it off again:
407         SMLofNJ.Internals.BTrace.mode (SOME false);
408       Querying the current status:
409         SMLofNJ.Internals.BTrace.mode NONE;
410       Annotated programs are about twice as big as normal ones, and they
411       run a factor of 2 to 4 slower with a dummy back-trace plugin (one
412       where all hooks do nothing).  The slowdown with a plugin that is
413       actually useful (such as the one supplied by default) is even greater,
414       but in the case of the default plugin it is still only an constant
415       factor (amortized).
416    
417    3. system/Basis/Implementation/NJ/internals.{sig,sml} have been augmented
418       with a sub-structure BTrace for controlling back-tracing.  In particular,
419       the above-mentioned function "mode" controls whether the annotation
420       phase is invoked by the compiler.  Another important function is
421       "trigger": when called it aborts the current execution and causes
422       the top-level loop to print a full back-trace.
423    
424    4. compiler/MiscUtil/profile/btimp.sml is the current default plugin
425       for back-tracing.  It keeps track of the dynamic call stack and in
426       addition to that it keeps a partial history at each "level" of that
427       stack.  For example, if a tail-calls b, b tail-calls c, and c tail-calls
428       d and b (at separate times, dynamically), then the report will show:
429    
430       GOTO   d
431             /c
432       GOTO  \b
433       CALL   a
434    
435       This shows that there was an initial non-tail call of a, then a
436       tail-call to b or c, looping behavior in a cluster of functions that
437       consist of b and c, and then a goto from that cluster (i.e., either from
438       b or from c) to d.
439    
440       Note that (depending on the user program) the amount of information
441       that the back-trace module has to keep track of at each level is bounded
442       by a constant.  Thus, the whole implementation has the same asymptotical
443       complexity as the original program (both in space and in time).
444    
445    5. compiler/TopLevel/interact/evalloop.sml has been modified to
446       handle the special exception SMLofNJ.Internals.BTrace.BTrace
447       which is raised by the "trigger" function mentioned above.
448    
449    Notes on usage:
450    
451    - Annotated code works well together with unannotated code:
452    Unannotated calls simply do not show up at all in the backtrace.
453    
454    - It is not a good idea to let modules that were annotated during
455    different sessions run at the same time.  This is because the compiler
456    chooses small integers to identify individual functions, and there
457    will be clashes if different modules were compiled in separate sessions.
458    (Nothing will crash, and you will even be told about the clashes, but
459    back-trace information will in general not be useful.)
460    
461    - Back-tracing can be confused by callcc and capture.
462    
463    - The only way of getting a back-trace right now is to explicitly
464    invoke the "trigger" function from your user program.  Eventually, we
465    should make every exception carry back-trace information (if
466    available).  But since this creates more overhead at "raise"-time
467    (similar to the current exnHistory overhead), I have not yet
468    implemented this.  (The implementation will be rather easy.)  With
469    exceptions carrying back-trace information, this facility will be even
470    more useful because users don't need to modify their programs...
471    
472    - While it is possible to compile the compiler with back-trace
473    annotations turned on (I did it to get some confidence in
474    correctness), you must make absolutely sure that core.sml and
475    btimp.sml are compiled WITHOUT annotation!  (core.sml cannot actually
476    be compiled with annotation because there is no core access yet, but
477    if you compile btimp.sml with annotation, then the system will go into
478    an infinite recursion and crash.)
479    Since CM currently does not know about BTrace, the only way to turn
480    annotations on and off for different modules of the compiler is to
481    interrupt CMB.make, change the settings, and re-invoke it.  Of course,
482    this is awkward and clumsy.
483    
484    Sample sessions:
485    
486    Standard ML of New Jersey v110.28.1 [FLINT v1.5], June 5, 2000
487    - SMLofNJ.Internals.BTrace.mode (SOME true);
488    [autoloading]
489    [autoloading done]
490    val it = false : bool
491    - structure X = struct
492    -     fun main n = let
493    -         fun a (x, 0) = d x
494    -           | a (x, n) = b (x, n - 1)
495    -         and b (x, n) = c (x, n)
496    -         and c (x, n) = a (x, n)
497    -         and d x = e (x, 3)
498    -         and e (x, 0) = f x
499    -           | e (x, n) = e (x, n - 1)
500    -         and f 0 = SMLofNJ.Internals.BTrace.trigger ()
501    -           | f n = n * g (n - 1)
502    -         and g n = a (n, 3)
503    -     in
504    -         f n
505    -     end
506    - end;
507    structure X : sig val main : int -> int end
508    - X.main 3;
509    *** BACK-TRACE ***
510    GOTO   stdIn:4.2-13.20: X.main[2].f
511    GOTO-( stdIn:4.2-13.20: X.main[2].e
512    GOTO   stdIn:4.2-13.20: X.main[2].d
513         / stdIn:4.2-13.20: X.main[2].a
514         | stdIn:4.2-13.20: X.main[2].b
515    GOTO-\ stdIn:4.2-13.20: X.main[2].c
516    CALL   stdIn:4.2-13.20: X.main[2].g
517    GOTO   stdIn:4.2-13.20: X.main[2].f
518    GOTO-( stdIn:4.2-13.20: X.main[2].e
519    GOTO   stdIn:4.2-13.20: X.main[2].d
520         / stdIn:4.2-13.20: X.main[2].a
521         | stdIn:4.2-13.20: X.main[2].b
522    GOTO-\ stdIn:4.2-13.20: X.main[2].c
523    CALL   stdIn:4.2-13.20: X.main[2].g
524    GOTO   stdIn:4.2-13.20: X.main[2].f
525    GOTO-( stdIn:4.2-13.20: X.main[2].e
526    GOTO   stdIn:4.2-13.20: X.main[2].d
527         / stdIn:4.2-13.20: X.main[2].a
528         | stdIn:4.2-13.20: X.main[2].b
529    GOTO-\ stdIn:4.2-13.20: X.main[2].c
530    CALL   stdIn:4.2-13.20: X.main[2].g
531    GOTO   stdIn:4.2-13.20: X.main[2].f
532    CALL   stdIn:2.15-17.4: X.main[2]
533    -
534    
535    (Note that because of a FLINt bug the above code currently does not
536    compile without BTrace turned on.)
537    
538    Here is another example, using my modified Tiger compiler:
539    
540    Standard ML of New Jersey v110.28.1 [FLINT v1.5], June 5, 2000
541    - SMLofNJ.Internals.BTrace.mode (SOME true);
542    [autoloading]
543    [autoloading done]
544    val it = false : bool
545    - CM.make "sources.cm";
546    [autoloading]
547    ...
548    [autoloading done]
549    [scanning sources.cm]
550    [parsing (sources.cm):parse.sml]
551    [creating directory CM/SKEL ...]
552    [parsing (sources.cm):tiger.lex.sml]
553    ...
554    [wrote CM/sparc-unix/semant.sml]
555    [compiling (sources.cm):main.sml]
556    [wrote CM/sparc-unix/main.sml]
557    [New bindings added.]
558    val it = true : bool
559    - Main.compile ("../testcases/merge.tig", "foo.out");
560    *** BACK-TRACE ***
561    CALL   lib/semant.sml:99.2-396.21: SemantFun[2].transExp.trvar
562    CALL   lib/semant.sml:99.2-396.21: SemantFun[2].transExp.trexp
563    CALL   lib/semant.sml:289.3-295.22: SemantFun[2].transExp.trexp.check[2]
564    GOTO   lib/semant.sml:289.3-295.22: SemantFun[2].transExp.trexp.check[2]
565    CALL   lib/semant.sml:99.2-396.21: SemantFun[2].transExp.trexp
566    CALL   lib/semant.sml:99.2-396.21: SemantFun[2].transExp.trexp
567    CALL   lib/semant.sml:488.3-505.6: SemantFun[2].transDec.trdec[2].transBody[2]
568         / lib/semant.sml:411.65-543.8: SemantFun[2].transDec
569    CALL-\ lib/semant.sml:413.2-540.9: SemantFun[2].transDec.trdec[2]
570    CALL   lib/semant.sml:99.2-396.21: SemantFun[2].transExp.trexp
571    CALL   lib/semant.sml:8.52-558.4: SemantFun[2].transProg[2]
572    CALL   main.sml:1.18-118.4: Main.compile[2]
573    -
574    
575    ----------------------------------------------------------------------
576    Name: Matthias Blumen
577    Date: 2000/06/21 18:00:00 JST
578    Tag: blume-20000621-manual
579    Description:
580    
581    CM manual update: Path environments documented.
582    
583    ----------------------------------------------------------------------
584    Name: Matthias Blume
585    Date: 2000/06/19 13:40:00
586    Tag: blume-20000619-manual
587    Description:
588    
589    CM manual and system/README update.  This only covers the fact that
590    there are no more implicit anchors.  (Path environments and the "bind"
591    option to "cm" have yet to be documented.)
592    
593    ----------------------------------------------------------------------
594    Name: Matthias Blume
595    Date: 2000/06/19 11:05:00 JST
596    Tag: blume-20000619-chdir-bugfix
597    Description:
598    
599    Fixed a bug in new SrcPath module that sometimes led to a bad chDir call.
600    
601    ----------------------------------------------------------------------
602    Name: Matthias Blume
603    Date: 2000/06/18 22:00:10 JST
604    Tag: blume-20000618-implicit-anchors-really-gone
605    Description:
606    
607    I updates the previous HISTORY entry where I forgot to mention that
608    implicit anchors are no longer with us.
609    
610    The current update also gets rid of the (now useless) controller
611    CM.Control.implicit_anchors.
612    
613    ----------------------------------------------------------------------
614    Name: Matthias Blume
615    Date: 2000/06/16 17:30:00 JST
616    Tag: blume-20000616-anchorenv
617    Description:
618    
619    This patch implements the long anticipated (just kidding :) "anchor
620    environment" mechanism.  In the course of doing this, I also
621    re-implemented CM's internal "SrcPath" module from scratch.  The new
622    one should be more robust in certain boundary cases.  In any case, it
623    is a lot cleaner than its predecessor (IMHO).
624    
625    This time, although there is yet another boot file format change, I
626    kept the unpickler backward-compatible.  As a result, no new bootfiles
627    are necessary and bootstrapping is straightforward.  (You cannot read
628    new bootfiles into an old system, but the other way around is no
629    problem.)
630    
631    Visible changes:
632    
633    ** 0. Implicit path anchors (without the leading $-symbol) are no
634    longer recognized at all. This means that such path names are not
635    illegal either.  For example, the name basis.cm simply refers to a
636    local file called "basis.cm" (i.e, the name is an ordinary path
637    relative to .cm-files directory).  Or, to put it differently, only
638    names that start with $ are anchored paths.
639    
640    ** 1. The $<singlearc> abbreviation for $/<singlearc> has finally
641    vanished.
642    
643    John (Reppy) had critizised this as soon as I originally proposed and
644    implemented it, but at that time I did not really deeply believe
645    him. :) Now I came full-circle because I need the $<singlearc> syntax
646    in another place where it cannot be seen as an abbreviation for
647    $/<singlearc>.  To avoid the confusion, $<singlearc> now means what it
648    seems to mean (i.e., it "expands" into the corresponding anchor
649    value).
650    
651    However, when paths are used as members in CM description files, it
652    continues to be true that there must be at least another arc after the
653    anchor.  This is now enforced separately during semantic analysis
654    (i.e., from a lexical/syntactical point of view, the notation is ok.)
655    
656    ** 2. The "cm" class now accepts an option "bind".  The option's value
657    is a sub-option list of precisely two items -- one labeled "anchor"
658    and the other one labeled "value".  As you might expect, "anchor" is
659    used to specify an anchor name to be bound, and "value" specifies what
660    the anchor is being bound to.
661    
662    The value must be a directory name and can be given in either standard
663    syntax (including the possibility that it is itself an anchored path)
664    or native syntax.
665    
666    Examples:
667    
668       foo.cm (bind:(anchor:bar value:$mystuff/bar))
669       lib.cm (bind:(anchor:a value:"H:\\x\\y\\z"))  (* only works under windows *)
670    
671    and so on.
672    
673    The meaning of this is that the .cm-file will be processed with an
674    augmented anchor environment where the given anchor(s) is/are bound to
675    the given values(s).
676    
677    The rationale for having this feature is this: Suppose you are trying
678    to use two different (already stable) libraries a.cm and b.cm (that
679    you perhaps didn't write yourself).  Further, suppose each of these
680    two libraries internally uses its own auxiliary library $aux/lib.cm.
681    Normally you would now have a problem because the anchor "lib" can not
682    be bound to more than one value globally.  Therefore, the project that
683    uses both a.cm and b.cm must locally redirect the anchor to some other
684    place:
685    
686       a.cm (bind:(anchor:lib value:/usr/lib/smlnj/a-stuff))
687       b.cm (bind:(anchor:lib value:/usr/lib/smlnj/b-stuff))
688    
689    This hard-wires $lib/aux.cm to /usr/lib/smlnj/a-stuff/aux.cm or
690    /usr/lib/smlnj/b-stuff/aux.cm, respectively.
691    
692    Hard-wiring path names is a bit inflexible (and CM will verbosely warn
693    you when you do so at the time of CM.stabilize).  Therefore, you can
694    also use an anchored path as the value:
695    
696      a.cm (bind:(anchor:lib value:$a-lib))
697      b.cm (bind:(anchor:lib value:$b-lib))
698    
699    Now you can globally configure (using the usual CM.Anchor.anchor or
700    pathconfig machinery) bindings for "a-lib" and "b-lib".  Since "lib"
701    itself is always locally bound, setting it globally is no longer
702    meaningful or necessary (but it does not hurt either).  In fact, "lib"
703    can still be used as a global anchor for separate purposes.  As a
704    matter of fact, one can locally define "lib" in terms of a global
705    "lib":
706    
707      a.cm (bind:(anchor:lib value:$lib/a))
708      b.cm (bind:(anchor:lib value:$lib/b))
709    
710    ** 3: The encoding of path names has changed.  This affects the way
711    path names are shown in CM's progress report and also the internal
712    protocol encoding used for parallel make.
713    
714    The encoding now uses one or more ':'-separated segments.  Each
715    segments corresponds to a file that has been specified relative to the
716    file given by its preceding segment.  The first segment is either
717    relative to the CWD, absolute, or anchored.  Each segment itself is
718    basically a Unix pathname; all segments but the first are relative.
719    
720    Example:
721    
722       $foo/bar/baz.cm:a/b/c.sml
723    
724    This path denotes the file bar/a/b/c.sml relative to the directory
725    denoted by anchor "foo".  Notice that the encoding also includes
726    baz.cm which is the .cm-file that listed a/b/c.sml.  As usual, such
727    paths are resolved relative to the .cm-files directory, so baz.cm must
728    be ignored to get the "real" pathname.
729    
730    To make this fact more obvious, CM puts the names of such "virtual
731    arcs" into parentheses when they appear in progress reports. (No
732    parentheses will appear in the internal protocol encoding.)  Thus,
733    what you really see is:
734    
735      $foo/bar/(baz.cm):a/b/c.sml
736    
737    I find this notation to be much more informative than before.
738    
739    Another new feature of the encoding is that special characters
740    including parentheses, colons, (back)slashes, and white space are
741    written as \ddd (where ddd is the decimal encoding of the character).
742    
743    *** The CM manual still needs to be updated.
744    
745  ----------------------------------------------------------------------  ----------------------------------------------------------------------
746  Name: Allen Leung  Name: Allen Leung
747  Date: 2000/06/15 00:38:00  Date: 2000/06/15 00:38:00

Legend:
Removed from v.660  
changed lines
  Added in v.713

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0