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 644, Fri May 12 09:18:31 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
747    Date: 2000/06/15 00:38:00
748    Tag: leunga-20000615-x86-peephole
749    
750    x86 Peephole fix by Fermin.  Affects c-- and moby only.
751    
752    ----------------------------------------------------------------------
753    Name: Matthias Blume
754    Date: 2000/06/12 11:40:00
755    Tag: blume-20000612-parmakefix
756    Description:
757    
758    More cleanup after changing the file naming scheme: This time I
759    repaired the parallel make mechanism for CMB.make which I broke earlier.
760    
761    ----------------------------------------------------------------------
762    Name: Allen Leung
763    Date: 2000/06/09 01:25:00
764    Tag: leunga-20000609-various
765    
766    None of these things should affect normal SML/NJ operations
767    
768    1. Peephole improvements provided by Fermin (c--)
769    2. New annotation DEFUSE for adding extra dependence (moby)
770    3. New X86 LOCK instructions (moby)
771    4. New machine description language for reservation tables (scheduling)
772    5. Fixes to various optimization/analysis modules (branch chaining, dominator
773       trees etc.)
774    6. I've changed the CM files so that they can work with versions
775       110.0.6, 110.25 and 110.28
776    
777    ----------------------------------------------------------------------
778    Name: Matthias Blume
779    Date: 2000/06/09 12:40:00
780    Tag: blume-20000609-log
781    Description:
782    
783    - Removed all(?) remaining RCS Log entries from sources.
784    
785    - Fixed bug in ml-yacc and ml-lex sources (use explicit anchors for
786      anchored paths).
787    
788    ----------------------------------------------------------------------
789    Name: Matthias Blume
790    Date: 2000/06/07 17:00:00 JST
791    Tag: blume-20000607-no-implicit-anchors
792    Description:
793    
794    1. This update changes the default setting for
795    CM.Control.implicit_anchors from true to false.  This means that
796    implicit anchors are no longer permitted by default.  I also tried to
797    make sure that nothing else still relies on implicit anchors.
798    (This is the next step on the schedule towards a CM that does not even
799    have the notion of implicit anchors anymore.)
800    
801    2. More CM manual updates.
802    
803    3. I managed to track down and fix the pickling bug I mentioned last
804    time.  Because of the previously existing workaround, this entails no
805    immediate practical changes.
806    
807    ----------------------------------------------------------------------
808    Name: Matthias Blume
809    Date: 2000/06/06 11:15:00 JST
810    Tag: blume-20000606-lazierpickle
811    Description:
812    
813    !!!! NEW BOOT FILES !!!!
814    
815    * The main purpose of this update is to make library pickles lazier in
816    order to reduce the initial space penalty for autoloading a library.
817    As a result, it is now possible to have $smlnj/compiler.cm
818    pre-registered.  This should take care of the many complaints or
819    inquiries about missing structure Compiler.  This required changes to
820    CM's internal data structures and small tweaks to some algorithms.
821    
822    As a neat additional effect, it is no longer necessary (for the sake
823    of lean heap image files) to distinguish between a "minimal" CM and a
824    "full" CM.  Now, there is only one CM (i.e., the "full" version:
825    $smlnj/cm.cm aka $smlnj/cm/full.cm), and it is always available at the
826    interactive top level. ($smlnj/cm/minimal.cm is gone.)
827    
828    To make the life of compiler-hackers easier, "makeml" now also
829    pre-registers $smlnj/cmb.cm (aka $smlnj/cmb/current.cm).  In other
830    words, after you bootstrap a new sml for the first time, you will not
831    have to autoload $smlnj/cmb.cm again afterwards.  (The first time
832    around you will still have to do it, though.)
833    
834    * A second change consists of major updates to the CM manual.  There
835    are now several appendices with summary information and also a full
836    specification of the CM description file syntax.
837    
838    * In directory src/system I added the script "allcross".  This script
839    invokes sml and cross-compiles the compiler for all supported
840    architectures.  (Useful when providing a new set of boot files.)
841    
842    * There seems to be a latent bug in my "lazy pickles" mechanism.  I
843    added a small tweak to pickle-util.sml to work around this problem,
844    but it is not a proper fix yet.  I will investigate further.  (The
845    effect of the bug was an inflation of library pickle size.)
846    
847    * Version number increased to 110.28.1 (to avoid compatibility problems).
848    
849    ----------------------------------------------------------------------
850    Name: Allen Leung
851    Date: 2000/05/25 17:28 EDT
852    Tag: leunga-20000525-ra
853    Description:
854    
855      Fixed a bug in freezing phase of the register allocator.
856    
857    ----------------------------------------------------------------------
858    Name: Allen Leung
859    Date: 2000/05/15 22:53 EDT
860    Tag: leunga-20000515-alpha-x86-ra
861    Description:
862    
863      1. Alpha
864    
865          Slight cleanup.  Removed the instruction SGNXL
866    
867      2. X86
868    
869          Added the following instructions to the instruction set:
870    
871            ROLx, RORx,
872            BTx, BTSx, BTLx, BTRx,
873            XCHGx, and variants with the LOCK prefix
874    
875      3. Register Allocation
876    
877          The module ra-rewrite-with-renaming has been improved.
878    
879      These have no effect on SML/NJ.
880    
881    ----------------------------------------------------------------------
882    Name: Matthias Blume
883    Date: 2000/05/15 16:20:00 JST
884    Tag: blume-20000515-lightrebuild
885    Description:
886    
887    1. I added an alternative to "-rebuild" to "makeml".  The difference is
888       that prior to calling CMB.make' the CM-variable "LIGHT" will be
889       defined.  In effect, the command will not build any cross-compiler
890       backends and therefore finish more quickly.
891    
892       The "fixpt" script also takes a "-light" switch to be able to use
893       this new facility while compiling for a fixpoint.
894    
895    2. I replaced all mentions of anchored paths in group owner specifications
896       with simple relative paths (usually starting with "..").
897       The rationale is that a library's internal workings should not be
898       compromised by the lack of some anchor.  (An anchor is necessary
899       for someone who wants to refer to the library by an anchored path,
900       but it should not be necessary to build the same library in the first
901       place.)
902    
903    3. I changed the way CM's tool mechanism determines the shell command
904       string used for things like ml-yacc etc. so that it does not break
905       when CM.Control.implicit_anchors is turned off.
906    
907  ----------------------------------------------------------------------  ----------------------------------------------------------------------
908  Name: Matthias Blume  Name: Matthias Blume
909  Date: 2000/05/12 18:20:00 JST  Date: 2000/05/12 18:20:00 JST
# Line 444  Line 1337 
1337    
1338  3.  Assembly  3.  Assembly
1339    
1340      When generating assemby, resolve the value of client defined constants,      When generating assembly, resolve the value of client defined constants,
1341      instead of generating symbolic values.  This is controlled by the      instead of generating symbolic values.  This is controlled by the
1342      new flag "asm-resolve-constants", which is default to true.      new flag "asm-resolve-constants", which is default to true.
1343    
# Line 467  Line 1360 
1360    
1361  To this end, I arranged that instead of "structure Core" as "structure  To this end, I arranged that instead of "structure Core" as "structure
1362  _Core" is bound in the pervasive environment.  Core access is done via  _Core" is bound in the pervasive environment.  Core access is done via
1363  _Core (which can never be accidentially rebound because _Core is not a  _Core (which can never be accidentally rebound because _Core is not a
1364  legal surface-syntax symbol).  legal surface-syntax symbol).
1365    
1366  The current solution is much cleaner because the core environment is  The current solution is much cleaner because the core environment is
# Line 477  Line 1370 
1370  with dynamic and symbolic parts of the core environment.  with dynamic and symbolic parts of the core environment.
1371    
1372  Remaining hackery (to bind the "magic" symbol _Core) is localized in the  Remaining hackery (to bind the "magic" symbol _Core) is localized in the
1373  compilation mananger's bootstrap compiler (actually: in the "init group"  compilation manager's bootstrap compiler (actually: in the "init group"
1374  handling).  See the comments in src/system/smlnj/init/init.cmi for  handling).  See the comments in src/system/smlnj/init/init.cmi for
1375  more details.  more details.
1376    
# Line 592  Line 1485 
1485     (specified in the .cm file at each instance where the tool's class is     (specified in the .cm file at each instance where the tool's class is
1486     used).     used).
1487    
1488     This was done to accomodate the new "make" and "shell" tools which     This was done to accommodate the new "make" and "shell" tools which
1489     facilitate fairly seemless hookup to portions of code managed using     facilitate fairly seamless hookup to portions of code managed using
1490     Makefiles or Shell scripts.     Makefiles or Shell scripts.
1491    
1492     There are no classes "shared" or "private" anymore.  Instead, the     There are no classes "shared" or "private" anymore.  Instead, the
# Line 605  Line 1498 
1498    
1499     All existing tools are described in the CM manual.     All existing tools are described in the CM manual.
1500    
1501     - Slightly better error handling.  (CM now surpresses many followup     - Slightly better error handling.  (CM now suppresses many followup
1502     error messages that tended to be more annoying than helpful.)     error messages that tended to be more annoying than helpful.)
1503    
1504  2. Major changes to the compiler's static environment data structures.  2. Major changes to the compiler's static environment data structures.
# Line 739  Line 1632 
1632    
1633       I've changed andl to testl in the floating point test sequence       I've changed andl to testl in the floating point test sequence
1634       whenever appropriate.  The Intel optimization guide states that       whenever appropriate.  The Intel optimization guide states that
1635       testl is perferable to andl.       testl is preferable to andl.
1636    
1637  7. RA (x86 only)  7. RA (x86 only)
1638    
# Line 921  Line 1814 
1814    
1815  1. Tools.registerStdShellCmdTool (from smlnj/cm/tool.cm) takes an  1. Tools.registerStdShellCmdTool (from smlnj/cm/tool.cm) takes an
1816  additional argument called "template" which is an optional string that  additional argument called "template" which is an optional string that
1817  specifiel the layout of the tool command line.  See the CM manual for  specifies the layout of the tool command line.  See the CM manual for
1818  explanation.  explanation.
1819    
1820  2. A special-purpose tool can be "regisitered" by simply dropping the  2. A special-purpose tool can be "registered" by simply dropping the
1821  corresponding <...>-tool.cm (and/or <...>-ext.cm) into the same  corresponding <...>-tool.cm (and/or <...>-ext.cm) into the same
1822  directory where the .cm file lives that uses this tool.  (The  directory where the .cm file lives that uses this tool.  (The
1823  behavior/misfeature until now was to look for the tool description  behavior/misfeature until now was to look for the tool description
# Line 968  Line 1861 
1861  rebuild.  Having sets of the form <base><k>.{bin,boot}.<arch>-unix for  rebuild.  Having sets of the form <base><k>.{bin,boot}.<arch>-unix for
1862  <k>=1,2,... is normally not a good idea when invoking fixpt.  However,  <k>=1,2,... is normally not a good idea when invoking fixpt.  However,
1863  they might be the result of an earlier partial run of fixpt (which  they might be the result of an earlier partial run of fixpt (which
1864  perhaps got accidentially killed).  In this case, fixpt will quickly  perhaps got accidentally killed).  In this case, fixpt will quickly
1865  move through what exists before continuing where it left off earlier,  move through what exists before continuing where it left off earlier,
1866  and, thus, saves a lot of time.  and, thus, saves a lot of time.
1867    
# Line 1018  Line 1911 
1911    it from that remote directory.    it from that remote directory.
1912    This should simplify installation further:  For machines that have    This should simplify installation further:  For machines that have
1913    access to the internet, just fetch <version>-config.tgz, unpack it,    access to the internet, just fetch <version>-config.tgz, unpack it,
1914    edit config/targets, and go (run config/install.sh).  The scipt will    edit config/targets, and go (run config/install.sh).  The script will
1915    fetch everything else that it might need all by itself.    fetch everything else that it might need all by itself.
1916    
1917    For CVS users, this mechanism is not relevant for source archives, but    For CVS users, this mechanism is not relevant for source archives, but

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

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