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

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