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 805, Thu Mar 22 20:08:01 2001 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: Matthias Blume
17    Date: 2001/03/22 15:10:00 EST
18    Tag: blume-20010322-rawmem-parcm
19    Description:
20    
21    1. All "raw memory access" primitives for the new FFI are implemented now
22       (at least on the x86).
23    2. Some further cleanup of CM's parallel make mechanism.
24    
25    ----------------------------------------------------------------------
26    Name: Matthias Blume
27    Date: 2001/03/19 17:53:00 EST
28    Tag: blume-20010319-parallel
29    Description:
30    
31    Parallel make (using compile servers) now works again.
32    
33    To this end, CM.stabilize and CMB.make have been modified to work in
34    two passes when compile servers are attached:
35       1. Compile everything, do not perform stabilization; this pass
36          uses compile servers
37       2. Stabilize everything; this pass does not use compile servers
38    If there are no compile servers, the two passes are combined into one
39    (as before).  Splitting the passes increases the inherent parallelism
40    in the dependency graph because the entire graph including all
41    libraries is available at the same time.  This, in turn, improves
42    server utilization.  The downside is that the master process will
43    have to do some extra work after compilation is done (because for
44    technical reasons it must re-read all the binfiles during stabilization).
45    
46    ----------------------------------------------------------------------
47    Name: Matthias Blume
48    Date: 2001/03/16 12:22:00 EST
49    Tag: blume-20010316-bootfiles
50    Description:
51    
52    Created a new set of bootfiles (for your automatic installation convenience).
53    
54    ----------------------------------------------------------------------
55    Name: Matthias Blume
56    Date: 2001/03/16 11:00:00 EST
57    Tag: blume-20010316-MLTREE-fixup
58    Description:
59    
60    This is a minor fixup for an (untagged) earlier commit by Allen.
61    (A file was missing).
62    
63    ----------------------------------------------------------------------
64    Name: Allen Leung
65    Date: Mon Mar  5 18:54:57 EST 2001
66    Tag: leunga-20010305-cut-support
67    
68    1. New support for alternative control-flow in MLTREE.
69       Currently we support
70    
71          FLOW_TO(CALL ...., [k1,...,kn])
72    
73       This is needed for 'cuts to' in C-- and try/handle-like constructs
74       in Moby
75    
76       New assembler flag "asm-show-cutsto" to turn on control-flow debugging.
77    
78    2. Register Allocator
79    
80       Changes in interface [from Fermin, John]
81    
82    3. Alpha 8-bit SLL support [Fermin]
83    
84    4. All architectures
85    
86       A new module (ClusterExpandCopies) for expanding parallel copies.
87    
88    ----------------------------------------------------------------------
89    Name: Allen Leung
90    Date: 2001/02/27 23:07:00 EST
91    Tag: leunga-20010227-minor-stuff
92    
93    1. Alpha bug fix for CMOVNE
94    2. Handle mltree COND(..,FCMP ...,...)
95    3. Bug fix in simplifier
96    
97    ----------------------------------------------------------------------
98    Name: Matthias Blume
99    Date: 2001/01/30 17:50:00 EST
100    Tag: blume-20010130-sync
101    Description:
102    
103    This is just a minor update to sync my devel branch with the main brach.
104    The only visible change is the addition of some README files.
105    
106    ----------------------------------------------------------------------
107    Name: Matthias Blume
108    Date: 2001/01/12 23:30:00 JST
109    Tag: blume-20010112-bootfiles
110    Description:
111    
112    Made a new set of bootfiles that goes with the current state of the
113    repository.
114    
115    ----------------------------------------------------------------------
116    Name: Matthias Blume
117    Date: 2001/01/12 21:20:00 JST
118    Tag: blume-20010112-sync
119    Description:
120    
121    I am just flushing out some minor changes that had accumulated in
122    my private branch in order to sync with the main tree.  (This is
123    mainly because I had CVS trouble when trying to merge _into_ my
124    private branch.)
125    
126    Most people should be completely unaffected by this.
127    
128    ----------------------------------------------------------------------
129    Name: Allen Leung
130    Date: Thu Jan 11 21:03:00 EST 2001
131    Tag: leunga-20010111-labexp=mltree
132    Description:
133    
134    1.  Removed the type LabelExp and replace it by MLTree.
135    2.  Rewritten mltree-simplify with the pattern matcher tool.
136    3.  There were some bugs in alpha code generator which would break
137        64-bit code generation.
138    4.  Redo the tools to generate code with the
139    5.  The CM files in MLRISC (and in src/system/smlnj/MLRISC)
140        are now generated by perl scripts.
141    
142    ----------------------------------------------------------------------
143    Name: Matthias Blume
144    Date: 2001/01/10 21:55:00 JST
145    Tag: blume-20010110-rcc
146    Description:
147    
148    The RCC stuff now seems to work (but only on the x86).
149    This required hacking of the c-calls interface (and -implementation) in
150    MLRISC.
151    
152    Normal compiler users should be unaffected.
153    
154    ----------------------------------------------------------------------
155    Name: Matthias Blume
156    Date: 2001/01/09 01:20:00 JST
157    Tag: blume-20010109-rcc
158    Description:
159    
160    This is a fairly big patch, flushing out a large number of pending
161    changes that I made to my development copy over the last couple of days.
162    
163    Of practical relevance at this moment is a workaround for a pickling
164    bug that Allen ran into the other day.  The cause of the bug itself is
165    still unknown and it might be hard to fix it properly, but the
166    workaround has some merits of its own (namely somewhat reducing pickling
167    overhead for certain libraries).  Therefore, I think this solution should
168    be satisfactory at this time.
169    
170    The rest of the changes (i.e., the vast majority) has to do with my
171    ongoing efforts of providing direct support for C function calls from
172    ML.  At the moment there is a new primop "RAW_CCALL", typing magic
173    in types/cproto.sml (invoked from FLINT/trans/translate.sml), a new
174    case in the FLINT CPS datatype (RCC), changes to cps/convert.sml to
175    translate uses of RAW_CCALL into RCC, and changes to mlriscGen.sml to
176    handle RCC.
177    
178    The last part (the changes to mlriscGen.sml) are still known to be
179    wrong on the x86 and not implemented on all other architectures.  But
180    the infrastructure is in place. I had to change a few functor
181    signatures in the backend to be able to route the CCalls interface
182    from MLRISC there, and I had to specialize the mltree type (on the
183    x86) to include the necessary extensions. (The extensions themselves
184    were already there and redy to go in MLRISC/x86).
185    
186    Everything should be very happy as soon as someone helps me with
187    mlriscGen.sml...
188    
189    In any case, nothing of this should matter to anyone as long as the
190    new primop is not being used (which is going to be the case unless you
191    find it where I hid it :). The rest of the compiler is completely
192    unaffected.
193    
194    ----------------------------------------------------------------------
195    Name: Matthias Blume
196    Date: 2001/01/05 00:30:00 JST
197    Tag: blume-20010105-primops
198    Description:
199    
200    Added some experimental support for work that I am doing right now.
201    These changes mostly concern added primops, but there is also a new
202    experimental C library in the runtime system (but currently not enabled
203    anywhere except on Linux/X86).
204    
205    In the course of adding primops (and playing with them), I discovered that
206    Zhong's INL_PRIM hack (no type info for certain primops) was, in fact, badly
207    broken.  (Zhong was very right he labeled this stuff as "major gross hack".)
208    To recover, I made type information in INL_PRIM mandatory and changed
209    prim.sml as well as built-in.sml accordingly.  The InLine structure now
210    has complete, correct type information (i.e., no bottom types).
211    
212    Since all these changes mean that we need new binfiles, I also bumped the
213    version number to 110.32.1.
214    
215    ----------------------------------------------------------------------
216    Name: Matthias Blume
217    Date: 2000/12/30 22:10:00 JST
218    Tag: blume-20001230-various
219    Description:
220    
221    Added proxy libraries for MLRISC and let MLRISC libraries refer
222    to each other using path anchors.  (See CM manual for explanation.)
223    
224    Updated CM documentation.
225    
226    Fixed some bugs in CM.
227    
228    Implemented "proxy" libraries (= syntactic sugar for CM).
229    
230    Added "-quiet" option to makeml and changed runtime system accordingly.
231    
232    Added cleanup handler for exportML to reset timers and compiler stats.
233    
234    ----------------------------------------------------------------------
235    Name: Lal George
236    Date: 2000/12/22 22:22:58 EST 2000
237    Tag: Release_110_32
238    Description:
239    
240            Infinite precision used throughout MLRISC.
241            see MLRISC/mltree/machine-int.sig
242    
243    ----------------------------------------------------------------------
244    Name: Matthias Blume
245    Date: 2000/12/22 23:16:00 JST
246    Tag: blume-20001222-warn
247    Description:
248    
249    Corrected wording and formatting of some CM warning message which I
250    broke in my previous patch.
251    
252    ----------------------------------------------------------------------
253    Name: Matthias Blume
254    Date: 2000/12/22 21:20:00 JST
255    Tag: blume-20001222-anchorenv
256    Description:
257    
258    Fixed CM's handling of anchor environments in connection with CMB.make.
259    
260    ----------------------------------------------------------------------
261    Name: Matthias Blume
262    Date: 2000/12/22 13:15:00 JST
263    Tag: blume-20001222-cleanup
264    Description:
265    
266    Removed src/cm/ffi which does not (and did not) belong here.
267    
268    ----------------------------------------------------------------------
269    Name: Matthias Blume
270    Date: 2000/12/21 23:55:00 JST
271    Tag: blume-20001221-exn
272    Description:
273    
274    Probably most important: CM no longer silently swallows all exceptions
275    in the compiler.
276    Plus: some other minor CM changes.  For example, CM now reports some
277    sizes for generated binfiles (code, data, envpickle, lambdapickle).
278    
279    ----------------------------------------------------------------------
280    Name: Matthias Blume
281    Date: 2000/12/15 00:01:05 JST
282    Tag: blume-20001215-dirtool
283    Description:
284    
285    - "dir" tool added.
286    - improvements and cleanup to Tools structure
287    - documentation updates
288    
289    ----------------------------------------------------------------------
290    Name: Allen Leung
291    Date: Thu Dec 14 03:45:24 EST 2000
292    Description:
293    Tag:  leunga-20001214-int-inf
294    Description:
295    
296       In IntInf, added these standard functions, which are missing from our
297    implementation:
298    
299        andb : int * int -> int
300        xorb : int * int -> int
301        orb  : int * int -> int
302        notb : int -> int
303         <<   : int * word -> int
304        ~>>  : int * word -> int
305    
306       Not tested, I hope they are correct.
307    
308    ----------------------------------------------------------------------
309    Name: Allen Leung
310    Date: Fri Dec  8 19:23:26 EST 2000
311    Description:
312    Tag:  leunga-20001208-nowhere
313    Description:
314    
315      Slight improvements to the 'nowhere' tool to handle OR-patterns,
316    to generate better error messages etc.  Plus a brief manual.
317    
318    ----------------------------------------------------------------------
319    Name: Lal George
320    Date: 2000/12/08 09:54:02 EST 2000
321    Tag: Release_110_31
322    Description:
323    
324    - Version 110.31
325    ----------------------------------------------------------------------
326    Name: Allen Leung
327    Date: Thu Dec  7 22:01:04 EST 2000
328    Tag:  leunga-20001207-cell-monster-hack
329    Description:
330    
331    Major MLRISC internal changes.  Affect all clients.
332    Summary:
333    
334    1.  Type CELLS.cell = int is now replaced by a datatype.
335        As a result, the old regmap is now gone.  Almost all interfaces
336        in MLRISC change as a consequence.
337    
338    2.  A new brand version of machine description tool (v3.0) that generates
339        modules expecting the new interface.  The old version is removed.
340    
341    3.  The RA interface has been further abstracted into two new functors.
342        RISC_RA and X86RA.  These functors have much simpler interfaces.
343        [See also directory MLRISC/demo.]
344    
345    4.  Some other new source->source code generation tools are available:
346    
347        a. MLRISC/Tools/RewriteGen -- generate rewriters from rules.
348        b. MLRISC/Tools/WhereGen -- expands conditional pattern matching rules.
349           I use this tool to generate the peephole optimizers---with the new
350           cell type changes, peephole rules are becoming difficult to write
351           without conditional pattern matching.
352    
353    5.  More Intmap -> IntHashTable change.  Previous changes by Matthias didn't
354        cover the entire MLRISC source tree so many things broke.
355    
356    6.  CM files have been moved to the subdirectory MLRISC/cm.
357        They are moved because there are a lot of them and they clutter up the
358        root dir.
359    
360    7.  More detailed documentation to come...
361    
362        NOTE: To rebuild from 110.30 (ftp distribution), you'll have to do
363        a makeml -rebuild first.  This is because of other other
364        changes that Matthias has made (see below).
365    
366    
367    ----------------------------------------------------------------------
368    Name: Matthias Blume
369    Date: 2000/11/30 23:12:00 JST
370    Tag: blume-20001130-filereorg
371    Description:
372    
373    Some manual updates and some file reorganizations in CM.
374    
375    ----------------------------------------------------------------------
376    Name: Matthias Blume
377    Date: 2000/11/24 17:45:00 JST
378    Tag: blume-20001124-link
379    Description:
380    
381    Drastically improved link traversal code for the case that the dynamic
382    value was already loaded at bootstrap time.  As a result, CM and CMB
383    now both load blazingly fast -- even on a very slow machine.  Also,
384    memory consumption has been further reduced by this.
385    
386    Warning: The format of the PIDMAP file has changed.  THerefore, to
387    bootstrap you have to do this:
388    
389    1. Run CMB.make
390    2. Make a symbolic link for the boot directory:
391         ln -s sml.boot.ARCH-OS xxx
392    3. "Rebuild" the boot directory:
393         ./makeml -boot xxx -rebuild sml ; rm xxx
394    4. Boot normally:
395          ./makeml
396    
397    ----------------------------------------------------------------------
398    Name: Matthias Blume
399    Date: 2000/11/21 21:20:00 JST
400    Tag: blume-20001121-tools
401    Description:
402    
403    Continued hacking on autoloading problem -- with success this time.
404    Also changed tool-plugin mechanism.  See new CM manual.
405    
406    ----------------------------------------------------------------------
407    Name: Matthias Blume
408    Date: 2000/11/19 14:30:00 JST
409    Tag:  blume-20001119-autoload
410    Description:
411    
412    Some hacking to make autoloading faster.  Success for CMB, no success
413    so far for CM.  There is a reduced structure CM' that autoloads faster.
414    (This is a temporary, non-documented hack to be eliminated again when
415    the general problem is solved.)
416    
417    ----------------------------------------------------------------------
418    Name: Matthias Blume
419    Date: 2000/11/17 14:10:00 JST
420    Tag: blume-20001117-pickle-lib
421    Description:
422    
423    1. Eliminated comp-lib.cm
424    2. Made pickle-lib.cm
425    3. Eliminated all uses of intset.sml (from comp-lib.cm)
426    4. Replaced all uses of intmap.{sig,sml} (from comp-lib.cm) with
427       equivalent constructs from smlnj-lib.cm (INtHashTable).
428    5. Point 4. also goes for those uses of intmap.* in MLRISC.
429       Duplicated intmap modules thrown out.
430    6. Hunted down all duplicated SCC code and replaced it with
431       equivalent stuff (GraphSCCFn from smlnj-lib.cm).
432    7. Rewrote Feedback module.
433    8. Moved sortedlist.sml into viscomp-lib.cm.  Eventually it
434       should be thrown out and equivalent modules from smlnj-lib.cm
435       should be used (IntRedBlackSet, IntListSet, ...).
436    
437    Confirmed that compiler compiles to fixpoint.
438    
439    ----------------------------------------------------------------------
440    Name: Allen Leung
441    Date: 2000/11/10 18:00:00
442    Tag: leunga-20001110-new-x86-fp
443    
444    A new x86 floating point code generator has been added.
445    By default this is turned off.  To turn this on, do:
446    
447        CM.autoload "$smlnj/compiler.cm";
448        Compiler.Control.MLRISC.getFlag "x86-fast-fp" := true;
449    
450    Changes:
451    
452    1.  Changed FTAN to FPTAN so that the assembly output is correct.
453    2.  Changed the extension callback for FTANGENT to generate:
454    
455              fptan
456              fstp  %st(0)
457        instead of
458              fptan
459              fstpl ftempmem
460    
461    3.  Numerous assembly fixes for x86.
462    
463    5.  Cleaned up the machine code output module x86/x86MC.sml and added
464        support for a whole bunch of instructions and addressing modes:
465    
466          fadd/fsub/fsubr/fmul/fdiv/fdivr  %st, %st(n)
467          faddp/fsubp/fsubrp/fmulp/fdivp/fdivrp  %st, %st(n)
468          fadd/fsub/fsubr/fmul/fdiv/fdivr  %st(n), %st
469          fiadd/fisub/fisubr/fimul/fidiv/fidivr mem
470          fxch %st(n)
471          fld %st(n)
472          fst %st(n)
473          fst mem
474          fstp %st(n)
475          fucom %st(n)
476          fucomp %st(n)
477    
478        All these are now generated when the fast fp mode is turned on.
479    
480    6.  Removed the dedicated registers %st(0), ..., %st(7) from X86CpsRegs
481    
482    ----------------------------------------------------------------------
483    Name: Matthias Blume
484    Date: 2000/11/09 11:20:00 JST
485    Tag: blume-20001109-scc
486    Description:
487    
488    Eliminated some code duplication:
489    
490    1. Added "where" clause to GraphSCCFn in SML/NJ Library.
491       (Otherwise the functor is useless.)
492    2. Used GraphSCCFn where SCCUtilFun was used previously.
493    3. Got rid of SCCUtilFun (in comp-lib.cm).
494    
495    ----------------------------------------------------------------------
496    Name: Lal George
497    Date: 2000/11/06 09:02:21 EST 2000
498    Tag: Release_110_30
499    Description:
500    
501    - Version 110.30
502    ----------------------------------------------------------------------
503    Name: Matthias Blume
504    Date: 2000/11/04 14:45:00
505    Tag: blume-20001104-mlbuild
506    Description:
507    
508    - Made ml-build faster on startup.
509    - Documentation fixes.
510    
511    ----------------------------------------------------------------------
512    Name: Matthias Blume
513    Date: 2000/11/02 17:00:00 JST
514    Tag: blume-20001102-condcomp
515    Description:
516    
517    - Small tweaks to pickler -- new BOOTFILES!
518    - Version bumped to 110.29.2.
519    - Added conditional compilation facility to init.cmi (see comment there).
520    ----------------------------------------------------------------------
521    Name: Allen Leung
522    Date: 2000/10/23 19:31:00
523    Tag: leunga-20001023-demo-ra
524    
525    1. Minor RA changes that improves spilling on x86 (affects Moby and C-- only)
526    2. Test programs for the graph library updated
527    3. Some new MLRISC demo programs added
528    
529    ----------------------------------------------------------------------
530    Name: Matthias Blume
531    Date: 2000/08/31 22:15:00 JST
532    Tag: blume-20001017-errmsg
533    Description:
534    
535    More error message grief: Where there used to be no messages, there
536    now were some that had bogus error regions.  Fixed.
537    
538    ----------------------------------------------------------------------
539    Name: Matthias Blume
540    Date: 2000/08/31 17:30:00 JST
541    Tag: blume-20001017-v110p29p1
542    Description:
543    
544    I made a version 110.29.1 with new bootfiles.
545    
546    Changes:  Modified pickler/unpickler for faster and leaner unpickling.
547              CM documentation changes and a small bugfix in CM's error reporting.
548    
549    ----------------------------------------------------------------------
550    Name: Lal George
551    Date: 2000/09/27 14:42:35 EDT
552    Tag: george-20000927-nodestatus
553    Description:
554    
555    Changed the type of the nodestatus, so that:
556    
557            SPILLED(~1)             is now SPILLED
558            SPILLED(m) where m>=0   is now MEMREG(m)
559            SPILLED(s) where s<~1   is now SPILL_LOC(~s)
560    
561    ----------------------------------------------------------------------
562    Name: Matthias Blume
563    Date: 2000/09/07 14:45:00 JST
564    Tag: blume-20000907-cmerrmsg
565    Description:
566    
567    Small tweak to CM to avoid getting ML syntax error messages twice.
568    
569    ----------------------------------------------------------------------
570    Name: Matthias Blume
571    Date: 2000/08/31 18:00:00 JST
572    Tag: blume-20000831-cvsbootfiles
573    Description:
574    
575    New URL for boot files (because the 110.29 files on the BL server do
576    now work correctly with my updated install scripts for yacc and lex).
577    
578    ----------------------------------------------------------------------
579    Name: Matthias Blume
580    Date: 2000/08/08 12:33:00 JST
581    Tag: blume-20000808-manual
582    Description:
583    
584    Tiny update to CM manual.
585    
586    ----------------------------------------------------------------------
587    Name: Allen Leung
588    Date: 2000/08/7 19:31:00
589    Tag: leunga-20000807-a-whole-bunch-of-stuff
590    
591      Moby, C--, SSA, x86, machine descriptions etc.  Should only affect C--
592    and Mobdy.
593    
594    1.  x86
595    
596       a.  Fixes to peephole module by John and Dan.
597       b.  Assembly fix to SETcc by Allen.
598       c.  Fix to c-call by John.
599       d.  Fix to spilling by John.  (This one deals with the missing FSTPT case)
600       e.  Instruction selection optimization to SETcc as suggested by John.
601    
602           For example,
603    
604            MV(32, x, COND(32, CMP(32, LT, a, b), LI 1, LI 0))
605    
606           should generate:
607    
608            MOVL a, x
609            SUBL b, x
610            SHRL 31, x
611    
612    2.  IR stuff
613    
614         A bunch of new DJ-graph related algorithms added.  These
615         speed up SSA construction.
616    
617    3.  SSA + Scheduling
618    
619         Added code for SSA and scheduling to the repository
620    
621    ----------------------------------------------------------------------
622    Name: Lal George
623    Date: 2000/07/27 11:53:14 EDT
624    
625    Tag: lal-20000727-linux-ppc
626    Description:
627    
628     Made changes to support Linux PPC.
629     p.s. I have confirmation that the 110.29 boot files work fine.
630    
631    ----------------------------------------------------------------------
632    Name: Matthias Blume
633    Date: 2000/07/27 17:40:00 JST
634    Tag: blume-20000727-scripts
635    Description:
636    
637    !!!! WARNING !!!!
638    You must recompile the runtime system!
639    !!!! WARNING !!!!
640    
641    This is basically another round of script-enhancements:
642    
643    1. sml, ml-build, and ml-makedepend accept options -D and -U to define
644       and undefine CM preprocessor symbols.
645    
646    2. ml-build avoids generating a new heap image if it finds that the
647       existing one is still ok.  (The condition is that no ML file had to
648       be recompiled and all ML files are found to be older that the heap
649       file.)
650    
651       To make this work smoothly, I also hacked the runtime system as
652       well as SMLofNJ.SysInfo to get access to the heap image suffix
653       (.sparc-solaris, ...) that is currently being used.
654    
655       Moreover, the signature of CM.mk_standalone has changed.  See the
656       CM manual.
657    
658    3. ml-makedepend accepts additional options -n, -a, and -o.  (See the
659       CM manual for details.)
660    
661    4. More CM manual updates:
662        - all of the above has been documented.
663        - there is now a section describing the (CM-related) command line
664          arguments that are accepted by the "sml" command
665    
666    ----------------------------------------------------------------------
667    Name: Matthias Blume
668    Date: 2000/07/25 16:20:00 JST
669    Tag: blume-20000725-makedepend
670    Description:
671    
672    Added a script called ml-makedepend.  This can be used in makefiles
673    for Unix' make in a way very similar to the "makedepend" command for
674    C.
675    
676    The script internally uses function CM.sources.
677    
678    Synopsis:
679    
680        ml-makedepend [-f makefile] cmfile targetname
681    
682    The default for the makefile is "makefile" (or "Makefile" should
683    "makefile" not exist).
684    
685    ml-makedepend adds a cmfile/targetname-specific section to this
686    makefile (after removing the previous version of this section).  The
687    section contains a single dependency specification with targetname on
688    the LHS (targetname is an arbitrary name), and a list of files derived
689    from the cmfile on the RHS.  Some of the files on the RHS are
690    ARCH/OPSYS-specific.  Therefore, ml-makedepend inserts references to
691    "make" variables $(ARCH) and $(OPSYS) in place of the corresponding
692    path names.  The makefile writer is responsible for making sure that
693    these variables have correct at the time "make" is invoked.
694    
695    ----------------------------------------------------------------------
696    Name: Matthias Blume
697    Date: 2000/07/22 23:30:00 JST
698    Tag: blume-20000722-urlupdate
699    Description:
700    
701    Changed BOOT and config/srcarchiveurl to point to BL server:
702    
703        ftp://ftp.research.bell-labs.com/dist/smlnj/working/110.29/
704    
705    ----------------------------------------------------------------------
706    Name: Matthias Blume
707    Date: 2000/07/18 18:00:00 JST
708    Tag: blume-20000718-Version_110_29
709    Description:
710    
711    1. Updated src/compiler/TopLevel/main/version.sml to version 110.29
712    
713    2. Updated config/version to 110.29
714    
715    3. Updated config/srcarchiveurl
716    
717    3. New boot files!
718       ftp://ftp.cs.princeton.edu/pub/people/blume/sml/110.29-autofetch
719    
720    ----------------------------------------------------------------------
721    Name: Matthias Blume
722    Date: 2000/07/11 13:58:00 JST
723    Tag: blume-20000711-doctypo
724    Description:
725    
726    Fixed a few typos in CM manual.
727    
728    ----------------------------------------------------------------------
729    Name: Allen Leung
730    Date: 2000/06/15 00:38:00
731    Tag: leunga-20000704-sparc-x86
732    
733    1. x86 peephole improvement sp += k; sp -= k => nop  [from John]
734    2. fix to x86 RET bug [found by Dan Grossman]
735    3. sparc assembly bug fix for ticc instructions [found by Fermin]
736    
737       Affects c-- and moby only
738    
739    ----------------------------------------------------------------------
740    Name: Matthias Blume
741    Date: 2000/07/04 15:26:00
742    Tag: blume-20000704-trigger
743    Description:
744    
745    1. Improvements to CM manual.
746    2. SMLofNJ.Internals.BTrace.trigger reinstated as an alternative way
747       of getting a back-trace.  The function, when called, raises an
748       internal exception which explicitly carries the full back-trace history,
749       so it is unaffected by any intervening handle-raise pairs ("trivial"
750       or not).  The interactive loop will print that history once it arrives
751       at top level.
752       Short of having all exceptions implicitly carry the full history, the
753       recommended way of using this facility is:
754         - compile your program with instrumentation "on"
755         - run it, when it raises an exception, look at the history
756         - if the history is "cut off" because of some handler, go and modify
757           your program so that it explicitly calls BTrace.trigger
758         - recompile (still instrumented), and rerun; look at the full history
759    
760    ----------------------------------------------------------------------
761    Name: Matthias Blume
762    Date: 2000/07/03 15:36:00 JST
763    Tag: blume-20000702-manual
764    Description:
765    
766    Small corrections and updates to CM manual.
767    
768    ----------------------------------------------------------------------
769    Name: Matthias Blume
770    Date: 2000/06/29 16:04:00 JST
771    Tag: blume-20000629-yacctool
772    Description:
773    
774    Changes:
775    
776    1. Class "mlyacc" now takes separate arguments to pass options to
777       generated .sml- and .sig-files independently.
778    2. Corresponding CM manual updates.
779    3. BTrace module now also reports call sites.  (However, for loop clusters
780       it only shows from where the cluster was entered.)  There are associated
781       modifications to core.sml, internals.{sig,sml}, btrace.sml, and btimp.sml.
782    
783    ----------------------------------------------------------------------
784    Name: Matthias Blume
785    Date: 2000/06/27 16:51:00 JST
786    Tag: blume-20000627-noweb
787    Description:
788    
789    Changes:
790    
791     1. Implemented "subdir" and "witness" options for noweb tool.
792        This caused some slight internal changes in CM's tool implementation.
793     2. Fixed bug in "tool plugin" mechanism.  This is essentially cleaning
794        some remaining issues from earlier path anchor changes.
795     3. Updated CM manual accordingly.
796    
797     4. Changed implementation of back-tracing so that I now consider it
798        ready for prime-time.
799    
800        In particular, you don't have to explicitly trigger the back-trace
801        anymore.  Instead, if you are running BTrace-instrumented code and
802        there is an uncaught exception (regardless of whether or not it was
803        raised in instrumented code), the top-level evalloop will print
804        the back-trace.
805    
806        Features:
807    
808          - Instrumented and uninstrumented code work together seemlessly.
809            (Of course, uninstrumented code is never mentioned in actual
810             back-traces.)
811    
812          - Asymptotic time- and space-complexity of instrumented code is
813            equal to that of uninstrumented code.  (This means that
814            tail-recursion is preserved by the instrumentation phase.)
815    
816          - Modules whose code has been instrumented in different sessions
817            work together without problem.
818    
819          - There is no penalty whatsoever on uninstrumented code.
820    
821          - There is no penalty on "raise" expressions, even in
822            instrumented code.
823    
824        A potential bug (or perhaps it is a feature, too):
825    
826          A back-trace reaches no further than the outermost instrumented
827          non-trivial "raise".  Here, a "trivial" raise is one that is the
828          sole RHS of a "handle" rule.  Thus, back-traces reach trough
829    
830               <exp> handle e => raise e
831    
832          and even
833    
834               <exp> handle Foo => raise Bar
835    
836          and, of course, through
837    
838               <exp> handle Foo => ...
839    
840         if the exception was not Foo.
841    
842         Back-traces always reach right through any un-instrumented code
843         including any of its "handle" expressions, trivial or not.
844    
845       To try this out, do the following:
846    
847         - Erase all existing binfiles for your program.
848           (You may keep binfiles for those modules where you think you
849            definitely don't need back-tracing.)
850         - Turn on back-trace instrumentation:
851              SMLofNJ.Internals.BTrace.mode (SOME true);
852         - Recompile your program.  (I.e., run "CM.make" or "use".)
853         - You may now turn instrumentation off again (if you want):
854              SMLofNJ.Internals.BTrace.mode (SOME false);
855         - Run your program as usual.  If it raises an exception that
856           reaches the interactive toplevel, then a back-trace will
857           automatically be printed.  After that, the toplevel loop
858           will print the exception history as usual.
859    
860    ----------------------------------------------------------------------
861    Name: Matthias Blume
862    Date: 2000/06/26 09:56:46 JST
863    Tag: blume-20000626-setup
864    Description:
865    
866    CM: - setup-parameter to "sml" added; this can be used to run arbitrary
867          ML code before and after compiling a file (e.g., to set compiler
868          flags)
869    
870    Compiler: - improved btrace API (in core.sml, internals.{sig,sml})
871              - associated changes to btrace.sml (BTrace instrumentation pass)
872              - cleaner implementation of btimp.sml (BTrace tracing and report
873                module)
874    
875    CM manual: * new path encoding documented
876               * description of setup-parameter to "sml" added
877    
878    The biggest user-visible change to back-tracing is that it is no
879    longer necessary to compile all traced modules within the same
880    session.  (This was a real limitation.)
881    
882    ----------------------------------------------------------------------
883    Name: Matthias Blume
884    Date: 2000/06/24 12:40:00 JST
885    Tag: blume-20000624-startup
886    Description:
887    
888    Fixes startup slowdown problem.  (I was calling SrcPath.sync a _tad_
889    bit too often -- to put it mildly. :)
890    
891    ----------------------------------------------------------------------
892    Name: Matthias Blume
893    Date: 2000/06/23 18:20:00 JST
894    Tag: blume-20000623-btrace
895    Description:
896    
897    This updates adds a backtrace facility to aid programmers in debugging
898    their programs.  This involves the following changes:
899    
900    1. Module system/smlnj/init/core.sml (structure _Core) now has hooks for
901       keeping track of the current call stack.  When programs are compiled
902       in a special mode, the compiler will insert calls to these hooks
903       into the user program.
904       "Hook" means that it is possible for different implementations of
905       back-tracing to register themselves (at different times).
906    
907    2. compiler/MiscUtil/profile/btrace.sml implements the annotation phase
908       as an Absyn.dec->Absyn.dec rewrite.  Normally this phase is turned off.
909       It can be turned on using this call:
910         SMLofNJ.Internals.BTrace.mode (SOME true);
911       Turning it off again:
912         SMLofNJ.Internals.BTrace.mode (SOME false);
913       Querying the current status:
914         SMLofNJ.Internals.BTrace.mode NONE;
915       Annotated programs are about twice as big as normal ones, and they
916       run a factor of 2 to 4 slower with a dummy back-trace plugin (one
917       where all hooks do nothing).  The slowdown with a plugin that is
918       actually useful (such as the one supplied by default) is even greater,
919       but in the case of the default plugin it is still only an constant
920       factor (amortized).
921    
922    3. system/Basis/Implementation/NJ/internals.{sig,sml} have been augmented
923       with a sub-structure BTrace for controlling back-tracing.  In particular,
924       the above-mentioned function "mode" controls whether the annotation
925       phase is invoked by the compiler.  Another important function is
926       "trigger": when called it aborts the current execution and causes
927       the top-level loop to print a full back-trace.
928    
929    4. compiler/MiscUtil/profile/btimp.sml is the current default plugin
930       for back-tracing.  It keeps track of the dynamic call stack and in
931       addition to that it keeps a partial history at each "level" of that
932       stack.  For example, if a tail-calls b, b tail-calls c, and c tail-calls
933       d and b (at separate times, dynamically), then the report will show:
934    
935       GOTO   d
936             /c
937       GOTO  \b
938       CALL   a
939    
940       This shows that there was an initial non-tail call of a, then a
941       tail-call to b or c, looping behavior in a cluster of functions that
942       consist of b and c, and then a goto from that cluster (i.e., either from
943       b or from c) to d.
944    
945       Note that (depending on the user program) the amount of information
946       that the back-trace module has to keep track of at each level is bounded
947       by a constant.  Thus, the whole implementation has the same asymptotical
948       complexity as the original program (both in space and in time).
949    
950    5. compiler/TopLevel/interact/evalloop.sml has been modified to
951       handle the special exception SMLofNJ.Internals.BTrace.BTrace
952       which is raised by the "trigger" function mentioned above.
953    
954    Notes on usage:
955    
956    - Annotated code works well together with unannotated code:
957    Unannotated calls simply do not show up at all in the backtrace.
958    
959    - It is not a good idea to let modules that were annotated during
960    different sessions run at the same time.  This is because the compiler
961    chooses small integers to identify individual functions, and there
962    will be clashes if different modules were compiled in separate sessions.
963    (Nothing will crash, and you will even be told about the clashes, but
964    back-trace information will in general not be useful.)
965    
966    - Back-tracing can be confused by callcc and capture.
967    
968    - The only way of getting a back-trace right now is to explicitly
969    invoke the "trigger" function from your user program.  Eventually, we
970    should make every exception carry back-trace information (if
971    available).  But since this creates more overhead at "raise"-time
972    (similar to the current exnHistory overhead), I have not yet
973    implemented this.  (The implementation will be rather easy.)  With
974    exceptions carrying back-trace information, this facility will be even
975    more useful because users don't need to modify their programs...
976    
977    - While it is possible to compile the compiler with back-trace
978    annotations turned on (I did it to get some confidence in
979    correctness), you must make absolutely sure that core.sml and
980    btimp.sml are compiled WITHOUT annotation!  (core.sml cannot actually
981    be compiled with annotation because there is no core access yet, but
982    if you compile btimp.sml with annotation, then the system will go into
983    an infinite recursion and crash.)
984    Since CM currently does not know about BTrace, the only way to turn
985    annotations on and off for different modules of the compiler is to
986    interrupt CMB.make, change the settings, and re-invoke it.  Of course,
987    this is awkward and clumsy.
988    
989    Sample sessions:
990    
991    Standard ML of New Jersey v110.28.1 [FLINT v1.5], June 5, 2000
992    - SMLofNJ.Internals.BTrace.mode (SOME true);
993    [autoloading]
994    [autoloading done]
995    val it = false : bool
996    - structure X = struct
997    -     fun main n = let
998    -         fun a (x, 0) = d x
999    -           | a (x, n) = b (x, n - 1)
1000    -         and b (x, n) = c (x, n)
1001    -         and c (x, n) = a (x, n)
1002    -         and d x = e (x, 3)
1003    -         and e (x, 0) = f x
1004    -           | e (x, n) = e (x, n - 1)
1005    -         and f 0 = SMLofNJ.Internals.BTrace.trigger ()
1006    -           | f n = n * g (n - 1)
1007    -         and g n = a (n, 3)
1008    -     in
1009    -         f n
1010    -     end
1011    - end;
1012    structure X : sig val main : int -> int end
1013    - X.main 3;
1014    *** BACK-TRACE ***
1015    GOTO   stdIn:4.2-13.20: X.main[2].f
1016    GOTO-( stdIn:4.2-13.20: X.main[2].e
1017    GOTO   stdIn:4.2-13.20: X.main[2].d
1018         / stdIn:4.2-13.20: X.main[2].a
1019         | stdIn:4.2-13.20: X.main[2].b
1020    GOTO-\ stdIn:4.2-13.20: X.main[2].c
1021    CALL   stdIn:4.2-13.20: X.main[2].g
1022    GOTO   stdIn:4.2-13.20: X.main[2].f
1023    GOTO-( stdIn:4.2-13.20: X.main[2].e
1024    GOTO   stdIn:4.2-13.20: X.main[2].d
1025         / stdIn:4.2-13.20: X.main[2].a
1026         | stdIn:4.2-13.20: X.main[2].b
1027    GOTO-\ stdIn:4.2-13.20: X.main[2].c
1028    CALL   stdIn:4.2-13.20: X.main[2].g
1029    GOTO   stdIn:4.2-13.20: X.main[2].f
1030    GOTO-( stdIn:4.2-13.20: X.main[2].e
1031    GOTO   stdIn:4.2-13.20: X.main[2].d
1032         / stdIn:4.2-13.20: X.main[2].a
1033         | stdIn:4.2-13.20: X.main[2].b
1034    GOTO-\ stdIn:4.2-13.20: X.main[2].c
1035    CALL   stdIn:4.2-13.20: X.main[2].g
1036    GOTO   stdIn:4.2-13.20: X.main[2].f
1037    CALL   stdIn:2.15-17.4: X.main[2]
1038    -
1039    
1040    (Note that because of a FLINt bug the above code currently does not
1041    compile without BTrace turned on.)
1042    
1043    Here is another example, using my modified Tiger compiler:
1044    
1045    Standard ML of New Jersey v110.28.1 [FLINT v1.5], June 5, 2000
1046    - SMLofNJ.Internals.BTrace.mode (SOME true);
1047    [autoloading]
1048    [autoloading done]
1049    val it = false : bool
1050    - CM.make "sources.cm";
1051    [autoloading]
1052    ...
1053    [autoloading done]
1054    [scanning sources.cm]
1055    [parsing (sources.cm):parse.sml]
1056    [creating directory CM/SKEL ...]
1057    [parsing (sources.cm):tiger.lex.sml]
1058    ...
1059    [wrote CM/sparc-unix/semant.sml]
1060    [compiling (sources.cm):main.sml]
1061    [wrote CM/sparc-unix/main.sml]
1062    [New bindings added.]
1063    val it = true : bool
1064    - Main.compile ("../testcases/merge.tig", "foo.out");
1065    *** BACK-TRACE ***
1066    CALL   lib/semant.sml:99.2-396.21: SemantFun[2].transExp.trvar
1067    CALL   lib/semant.sml:99.2-396.21: SemantFun[2].transExp.trexp
1068    CALL   lib/semant.sml:289.3-295.22: SemantFun[2].transExp.trexp.check[2]
1069    GOTO   lib/semant.sml:289.3-295.22: SemantFun[2].transExp.trexp.check[2]
1070    CALL   lib/semant.sml:99.2-396.21: SemantFun[2].transExp.trexp
1071    CALL   lib/semant.sml:99.2-396.21: SemantFun[2].transExp.trexp
1072    CALL   lib/semant.sml:488.3-505.6: SemantFun[2].transDec.trdec[2].transBody[2]
1073         / lib/semant.sml:411.65-543.8: SemantFun[2].transDec
1074    CALL-\ lib/semant.sml:413.2-540.9: SemantFun[2].transDec.trdec[2]
1075    CALL   lib/semant.sml:99.2-396.21: SemantFun[2].transExp.trexp
1076    CALL   lib/semant.sml:8.52-558.4: SemantFun[2].transProg[2]
1077    CALL   main.sml:1.18-118.4: Main.compile[2]
1078    -
1079    
1080    ----------------------------------------------------------------------
1081    Name: Matthias Blumen
1082    Date: 2000/06/21 18:00:00 JST
1083    Tag: blume-20000621-manual
1084    Description:
1085    
1086    CM manual update: Path environments documented.
1087    
1088    ----------------------------------------------------------------------
1089    Name: Matthias Blume
1090    Date: 2000/06/19 13:40:00
1091    Tag: blume-20000619-manual
1092    Description:
1093    
1094    CM manual and system/README update.  This only covers the fact that
1095    there are no more implicit anchors.  (Path environments and the "bind"
1096    option to "cm" have yet to be documented.)
1097    
1098    ----------------------------------------------------------------------
1099    Name: Matthias Blume
1100    Date: 2000/06/19 11:05:00 JST
1101    Tag: blume-20000619-chdir-bugfix
1102    Description:
1103    
1104    Fixed a bug in new SrcPath module that sometimes led to a bad chDir call.
1105    
1106    ----------------------------------------------------------------------
1107    Name: Matthias Blume
1108    Date: 2000/06/18 22:00:10 JST
1109    Tag: blume-20000618-implicit-anchors-really-gone
1110    Description:
1111    
1112    I updates the previous HISTORY entry where I forgot to mention that
1113    implicit anchors are no longer with us.
1114    
1115    The current update also gets rid of the (now useless) controller
1116    CM.Control.implicit_anchors.
1117    
1118    ----------------------------------------------------------------------
1119    Name: Matthias Blume
1120    Date: 2000/06/16 17:30:00 JST
1121    Tag: blume-20000616-anchorenv
1122    Description:
1123    
1124    This patch implements the long anticipated (just kidding :) "anchor
1125    environment" mechanism.  In the course of doing this, I also
1126    re-implemented CM's internal "SrcPath" module from scratch.  The new
1127    one should be more robust in certain boundary cases.  In any case, it
1128    is a lot cleaner than its predecessor (IMHO).
1129    
1130    This time, although there is yet another boot file format change, I
1131    kept the unpickler backward-compatible.  As a result, no new bootfiles
1132    are necessary and bootstrapping is straightforward.  (You cannot read
1133    new bootfiles into an old system, but the other way around is no
1134    problem.)
1135    
1136    Visible changes:
1137    
1138    ** 0. Implicit path anchors (without the leading $-symbol) are no
1139    longer recognized at all. This means that such path names are not
1140    illegal either.  For example, the name basis.cm simply refers to a
1141    local file called "basis.cm" (i.e, the name is an ordinary path
1142    relative to .cm-files directory).  Or, to put it differently, only
1143    names that start with $ are anchored paths.
1144    
1145    ** 1. The $<singlearc> abbreviation for $/<singlearc> has finally
1146    vanished.
1147    
1148    John (Reppy) had critizised this as soon as I originally proposed and
1149    implemented it, but at that time I did not really deeply believe
1150    him. :) Now I came full-circle because I need the $<singlearc> syntax
1151    in another place where it cannot be seen as an abbreviation for
1152    $/<singlearc>.  To avoid the confusion, $<singlearc> now means what it
1153    seems to mean (i.e., it "expands" into the corresponding anchor
1154    value).
1155    
1156    However, when paths are used as members in CM description files, it
1157    continues to be true that there must be at least another arc after the
1158    anchor.  This is now enforced separately during semantic analysis
1159    (i.e., from a lexical/syntactical point of view, the notation is ok.)
1160    
1161    ** 2. The "cm" class now accepts an option "bind".  The option's value
1162    is a sub-option list of precisely two items -- one labeled "anchor"
1163    and the other one labeled "value".  As you might expect, "anchor" is
1164    used to specify an anchor name to be bound, and "value" specifies what
1165    the anchor is being bound to.
1166    
1167    The value must be a directory name and can be given in either standard
1168    syntax (including the possibility that it is itself an anchored path)
1169    or native syntax.
1170    
1171    Examples:
1172    
1173       foo.cm (bind:(anchor:bar value:$mystuff/bar))
1174       lib.cm (bind:(anchor:a value:"H:\\x\\y\\z"))  (* only works under windows *)
1175    
1176    and so on.
1177    
1178    The meaning of this is that the .cm-file will be processed with an
1179    augmented anchor environment where the given anchor(s) is/are bound to
1180    the given values(s).
1181    
1182    The rationale for having this feature is this: Suppose you are trying
1183    to use two different (already stable) libraries a.cm and b.cm (that
1184    you perhaps didn't write yourself).  Further, suppose each of these
1185    two libraries internally uses its own auxiliary library $aux/lib.cm.
1186    Normally you would now have a problem because the anchor "lib" can not
1187    be bound to more than one value globally.  Therefore, the project that
1188    uses both a.cm and b.cm must locally redirect the anchor to some other
1189    place:
1190    
1191       a.cm (bind:(anchor:lib value:/usr/lib/smlnj/a-stuff))
1192       b.cm (bind:(anchor:lib value:/usr/lib/smlnj/b-stuff))
1193    
1194    This hard-wires $lib/aux.cm to /usr/lib/smlnj/a-stuff/aux.cm or
1195    /usr/lib/smlnj/b-stuff/aux.cm, respectively.
1196    
1197    Hard-wiring path names is a bit inflexible (and CM will verbosely warn
1198    you when you do so at the time of CM.stabilize).  Therefore, you can
1199    also use an anchored path as the value:
1200    
1201      a.cm (bind:(anchor:lib value:$a-lib))
1202      b.cm (bind:(anchor:lib value:$b-lib))
1203    
1204    Now you can globally configure (using the usual CM.Anchor.anchor or
1205    pathconfig machinery) bindings for "a-lib" and "b-lib".  Since "lib"
1206    itself is always locally bound, setting it globally is no longer
1207    meaningful or necessary (but it does not hurt either).  In fact, "lib"
1208    can still be used as a global anchor for separate purposes.  As a
1209    matter of fact, one can locally define "lib" in terms of a global
1210    "lib":
1211    
1212      a.cm (bind:(anchor:lib value:$lib/a))
1213      b.cm (bind:(anchor:lib value:$lib/b))
1214    
1215    ** 3: The encoding of path names has changed.  This affects the way
1216    path names are shown in CM's progress report and also the internal
1217    protocol encoding used for parallel make.
1218    
1219    The encoding now uses one or more ':'-separated segments.  Each
1220    segments corresponds to a file that has been specified relative to the
1221    file given by its preceding segment.  The first segment is either
1222    relative to the CWD, absolute, or anchored.  Each segment itself is
1223    basically a Unix pathname; all segments but the first are relative.
1224    
1225    Example:
1226    
1227       $foo/bar/baz.cm:a/b/c.sml
1228    
1229    This path denotes the file bar/a/b/c.sml relative to the directory
1230    denoted by anchor "foo".  Notice that the encoding also includes
1231    baz.cm which is the .cm-file that listed a/b/c.sml.  As usual, such
1232    paths are resolved relative to the .cm-files directory, so baz.cm must
1233    be ignored to get the "real" pathname.
1234    
1235    To make this fact more obvious, CM puts the names of such "virtual
1236    arcs" into parentheses when they appear in progress reports. (No
1237    parentheses will appear in the internal protocol encoding.)  Thus,
1238    what you really see is:
1239    
1240      $foo/bar/(baz.cm):a/b/c.sml
1241    
1242    I find this notation to be much more informative than before.
1243    
1244    Another new feature of the encoding is that special characters
1245    including parentheses, colons, (back)slashes, and white space are
1246    written as \ddd (where ddd is the decimal encoding of the character).
1247    
1248    *** The CM manual still needs to be updated.
1249    
1250  ----------------------------------------------------------------------  ----------------------------------------------------------------------
1251  Name: Allen Leung  Name: Allen Leung
1252  Date: 2000/06/15 00:38:00  Date: 2000/06/15 00:38:00

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

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