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 588, Fri Mar 31 09:00:02 2000 UTC revision 876, Wed Jul 11 15:42:20 2001 UTC
# Line 14  Line 14 
14    
15  ----------------------------------------------------------------------  ----------------------------------------------------------------------
16  Name: Matthias Blume  Name: Matthias Blume
17    Date: 2001/07/10 17:30:00 EDT
18    Tag: Release_110_34
19    Description:
20    
21    Minor tweak to 110.34 (re-tagged):
22    
23      - README.html file added to CVS repository
24      - runtime compiles properly under FreeBSD 3.X and 4.X
25    
26    ----------------------------------------------------------------------
27    Name: Matthias Blume
28    Date: 2001/07/10 17:30:00 EDT
29    Tag: Release_110_34
30    Description:
31    
32    New version number (110.34). New bootfiles.
33    
34    ----------------------------------------------------------------------
35    Name: Matthias Blume
36    Date: 2001/07/09 16:00:00 EDT
37    Tag: blume-20010709-more-varargs
38    Description:
39    
40    I changed the handling of varargs in ml-nlffigen again:
41    The ellipsis ... will now simply be ignored (with an accompanying warning).
42    
43    The immediate effect is that you can actually call a varargs function
44    from ML -- but you can't actually supply any arguments beyond the ones
45    specified explicitly.  (For example, you can call printf with its format
46    string, but you cannot pass additional arguments.)
47    
48    This behavior is only marginally more useful than the one before, but
49    it has the advantage that a function or, more importantly, a function
50    type never gets dropped on the floor, thus avoiding follow-up problems with
51    other types that refer to the offending one.
52    
53    ----------------------------------------------------------------------
54    Name: Matthias Blume
55    Date: 2001/07/09 11:25:00 EDT
56    Tag: blume-20010709-varargs
57    Description:
58    
59    1. ckit-lib.cm now exports structure Error
60    2. ml-nlffigen reports occurences of "..." (i.e., varargs function types)
61       with a warning accompanied by a source location.  Moreover, it
62       merely skips the offending function or type and proceeds with the
63       rest of its work.u  As a result, one can safely feed C code containing
64       "..." to ml-nlffigen.
65    3. There are some internal improvements to CM, providing slightly
66       more general string substitutions in the tools subsystem.
67    
68    ----------------------------------------------------------------------
69    Name: Matthias Blume
70    Date: 2001/06/27 15:10:00 EDT
71    Tag: blume-20010627-concur
72    Description:
73    
74    Fixed a small bug in CM's handling of parallel compilation.
75    (You could observe the bug by Control-C-interrupting an ordinary
76    CMB.make or CM.stabilize and then attaching some compile servers.
77    The result was that all of a sudden the previously interrupted
78    compilation would continue on its own.  This was because of
79    an over-optimization: CM did not bother to clean out certain queues
80    when no servers were attached "anyway", resulting in the contents
81    of these queues to grab control when new servers did get attached.)
82    
83    There is also another minor update to the CM manual.
84    
85    ----------------------------------------------------------------------
86    Name: Matthias Blume
87    Date: 2001/06/26 16:15:00 EDT
88    Tag: blume-20010626-cmdoc
89    Description:
90    
91    Minor typo fixed in CM manual (syntax diagram for libraries).
92    
93    ----------------------------------------------------------------------
94    Name: Matthias Blume
95    Date: 2001/06/25 22:55:00 EDT
96    Tag: blume-20010625-x86pc
97    Description:
98    
99    Fixed a nasty bug in the X86 assembly code that caused signal
100    handlers to fail (crash) randomly.
101    
102    ----------------------------------------------------------------------
103    Name: Matthias Blume
104    Date: 2001/06/25 12:05:00 EDT
105    Tag: blume-20010625-nlffigen
106    Description:
107    
108    This update fixes a number of minor bugs in ml-nlffigen as reported by
109    Nick Carter <nbc@andrew.cmu.edu>.
110    
111      1. Silly but ok typedefs of the form "typedef void myvoid;" are now accepted.
112      2. Default names for generated files are now derived from the name of
113         the C file *without its directory*.  In particular, this causes generated
114         files to be placed locally even if the C file is in some system directory.
115      3. Default names for generated signatures and structures are also derived
116         from the C file name without its directory.  This avoids silly things
117         like "structure GL/GL".
118         (Other silly names are still possible because ml-nlffigen does not do
119          a thorough check of whether generated names are legal ML identifiers.
120          When in doubt, use command line arguments to force particular names.)
121    
122    ----------------------------------------------------------------------
123    Name: Matthias Blume
124    Date: 2001/06/21 12:25:00 EDT
125    Tag: blume-20010621-eXene
126    Description:
127    
128    eXene now compiles and (sort of) works again.
129    
130    The library name (for version > 110.33) is $/eXene.cm.
131    
132    I also added an new example in src/eXene/examples/nbody.  See the
133    README file there for details.
134    
135    ----------------------------------------------------------------------
136    Name: Matthias Blume
137    Date: 2001/06/20 16:40:00 EDT
138    Tag: blume-20010620-cml
139    Description:
140    
141    CML now compiles and works again.
142    
143    Libraries (for version > 110.33):
144    
145      $cml/cml.cm            Main CML library.
146      $cml/basis.cm          CML's version of $/basis.cm.
147      $cml/cml-internal.cm   Internal helper library.
148      $cml/core-cml.cm       Internal helper library.
149      $cml-lib/trace-cml.cm  Tracing facility.
150      $cml-lib/smlnj-lib.cm  CML's version of $/smlnj-lib.cm
151    
152    The installer (config/install.sh) has been taught how to properly
153    install this stuff.
154    
155    ----------------------------------------------------------------------
156    Name: Matthias Blume
157    Date: 2001/06/19 17:55:00 EDT
158    Tag: blume-20010619-instantiate
159    Description:
160    
161    This un-breaks the fix for bug 1432.
162    (The bug was originally fixed in 110.9 but I broke it again some
163    time after that.)
164    
165    ----------------------------------------------------------------------
166    Name: Matthias Blume
167    Date: 2001/06/19 17:25:00 EDT
168    Tag: blume-20010619-signals
169    Description:
170    
171    This should (hopefully) fix the long-standing signal handling bug.
172    (The runtime system was constructing a continuation record with an
173    incorrect descriptor which would cause the GC to drop data on the floor...)
174    
175    ----------------------------------------------------------------------
176    Name: Matthias Blume
177    Date: 2001/06/15 15:05:00 EDT
178    Tag: blume-20010615-moresparc
179    Description:
180    
181    Here is a short late-hour update related to Sparc c-calls:
182    
183     -- made handling of double-word arguments a bit smarter
184    
185     -- instruction selection phase tries to collapse certain clumsily
186        constructed ML-Trees; typical example:
187    
188            ADD(ty,ADD(_,e,LI d1),LI d2)  ->  ADD(ty,e,LI(d1+d2))
189    
190        This currently has no further impact on SML/NJ since mlriscGen does
191        not seem to generate such patterns in the first place, and c-calls
192        (which did generate them in the beginning) has meanwhile been fixed
193        so as to avoid them as well.
194    
195    ----------------------------------------------------------------------
196    Name: Matthias Blume
197    Date: 2001/06/15 15:05:00 EDT
198    Tag: blume-20010615-sparc
199    Description:
200    
201    The purpose of this update is to provide an implementation of NLFFI
202    on Sparc machines.
203    
204    Here are the changes in detail:
205    
206       * src/MLRISC/sparc/c-calls/sparc-c-calls.sml is a new file containing
207       the Sparc implementation of the c-calls API.
208       * The Sparc backend of SML/NJ has been modified to uniformely use %fp
209       for accessing the ML frame.  Thus, we have a real frame pointer and
210       can freely modify %sp without need for an omit-frame-ptr phase.
211       The vfp logic in src/compiler/CodeGen/* has been changed to accomodate
212       this case.
213       * ml-nlffigen has been taught to produce code for different architectures
214       and calling conventions.
215       * In a way similar to what was done in the x86 case, the Sparc
216       backend uses its own specific extension to mltree.  (For example,
217       it needs to be able to generate UNIMP instructions which are part
218       of the calling convention.)
219       * ml-nlffi-lib was reorganized to make it more modular (in particular,
220       to make it easier to plug in new machine- and os-dependent parts).
221    
222    There are some other fairly unrelated bug fixes and cleanups as well:
223    
224       * I further hacked the .cm files for MLRISC tools (like MDLGen) so
225       that they properly share their libraries with existing SML/NJ libraries.
226       * I fixed a minor cosmetic bug in CM, supressing certain spurious
227       follow-up error messages.
228       * Updates to CM/CMB documentation.
229    
230    TODO items:
231    
232       * MLRISC should use a different register as its asmTemp on the Sparc.
233         (The current %o2 is a really bad choice because it is part of the
234         calling conventions, so things might interfere in unexpected ways.)
235    
236    ----------------------------------------------------------------------
237    Name: Matthias Blume
238    Date: 2001/06/07
239    Tag: blume-20010607-calls
240    Description:
241    
242    A number of internal changes related to C calls and calling conventions:
243    
244    1. ML-Tree CALL statements now carry a "pops" field.  It indicates the
245       number of bytes popped implicitly (by the callee).  In most cases
246       this field is 0 but on x86/win32 it is some non-zero value.  This
247       is information provided for the benefit of the "omit-frameptr" pass.
248    2. The CALL instruction on the x86 carries a similar "pops" field.
249       The instruction selection phase copies its value from the ML-Tree
250       CALL statement.
251    3. On all other architectures, the instruction selection phase checks
252       whether "pops=0" and complains if not.
253    4. The c-calls implementation for x86 now accepts two calling conventions:
254       "ccall" and "stdcall".  When "ccall" is selected, the caller cleans
255       up after the call and pops is set to 0.  For "stdcall", the caller
256       does nothing, leaving the cleanup to the callee; pops is set to
257       the number of bytes that were pushed onto the stack.
258    5. The cproto decoder (compiler/Semant/types/cproto.sml) now can
259       distinguish between "ccall" and "stdcall".
260    6. The UNIMP instruction has been added to the supported Sparc instruction
261       set. (This is needed for implementing the official C calling convention
262       on this architecture.)
263    7. I fixed some of the .cm files under src/MLRISC/Tools to make them
264       work with the latest CM.
265    
266    ----------------------------------------------------------------------
267    Name: Matthias Blume
268    Date: 2001/06/05 15:10:00 EDT
269    Tag: blume-20010605-cm-index
270    Description:
271    
272    0. The "lambdasplit" parameter for class "sml" in CM has been documented.
273    
274    1. CM can now generate "index files".  These are human-readable files
275       that list on a per-.cm-file basis each toplevel symbol defined or
276       imported.  The location of the index file for
277       <p>/<d>.cm is <p>/CM/INDEX/<d>.cm.
278       To enable index-file generation, set CM.Control.generate_index to true
279       or export an environment-symbol: export CM_GENERATE_INDEX=true.
280    
281       The CM manual has been updated accordingly.
282    
283    2. I made some slight modifications to the c-calls API in MLRISC.
284    
285         a) There is now a callback to support saving/restoring of
286            dedicated but caller-save registers around the actual call
287            instruction.
288         b) One can optionally specify a comment-annotation for the
289            call instruction.
290    
291    3. SML/NJ (mlriscGen.sml) uses this new API for the rawccall primop.
292       (For example, the comment annotation shows the C prototype of
293        the function being called.)
294    
295    ----------------------------------------------------------------------
296    Name: Matthias Blume
297    Date: 2001/06/01 13:30:00 EDT
298    Tag: blume-20010601-nlffi-cleanup
299    Description:
300    
301    This is mostly a cleanup of MLFFI stuff:
302    
303       - some signature files have been put into a more exposed place
304       - the ugly 'f type parameter is gone (simplifies types tremendously!)
305       - ml-nlffigen changed accordingly
306       - tutorial updated
307    
308    Other changes:
309    
310       - author's affiliation in CM manual(s) updated
311       - some more recognized keywords added to Allen's sml.sty
312    
313    ----------------------------------------------------------------------
314    Name: Matthias Blume
315    Date: 2001/05/25 15:30:00 EDT
316    Tag: blume-20010525-iptr
317    Description:
318    
319      - put the official 110.33-README (as it appears on the ftp server) under
320        CVS
321      - fixed a small bug related to incomplete pointer types in
322        ml-nlffigen
323      - small cosmetic change to the ml-nlffi-lib's "arr" type constructor
324        (it does not need the 'f type parameter)
325    
326    ----------------------------------------------------------------------
327    Name: Matthias Blume
328    Date: 2001/05/23 14:30:00 EDT
329    Tag: Release_110_33
330    Description:
331    
332    New version number (110.33).  New bootfiles.
333    
334    ----------------------------------------------------------------------
335    Name: Matthias Blume
336    Date: 2001/05/22 18:06:00 EDT
337    Tag: blume-20010522-targets
338    Description:
339    
340    Made install.sh use file config/targets.customized if it exists, falling
341    back to config/targets if it doesn't.  This way one can have a customized
342    version of the targets file without touching the "real thing", thus
343    eliminating the constant fear of accidentally checking something bogus
344    back into the CVS repository...  (File config/targets.customized must
345    not be added to the repository!)
346    
347    ----------------------------------------------------------------------
348    Name: Matthias Blume
349    Date: 2001/05/22 16:30:00 EDT
350    Tag: blume-20010522-minitut
351    Description:
352    
353    1. Bug fix in ml-nlffigen; now (hopefully) correctly handling
354       struct returns.
355    2. Added src/ml-nlffi-lib/Doc/mini-tutorial.txt.  This is some very
356       incomplete, preliminary documentation for NLFFI.
357    
358    ----------------------------------------------------------------------
359    Name: Matthias Blume
360    Date: 2001/05/14 11:30:00 EDT
361    Tag: blume-20010514-script
362    Description:
363    
364    Some bugs in install script fixed.
365    
366    In addition to that I also made a slight change to the NLFFI API:
367    Functors generated by ml-nlffigen now take the dynamic library as a
368    straight functor argument, not as a suspended one.  (The original
369    functor code used to force the suspension right away anyway, so there
370    was nothing gained by this complication of the interface.)
371    
372    ----------------------------------------------------------------------
373    Name: Matthias Blume
374    Date: 2001/05/11 14:35:00 EDT
375    Tag: blume-20010511-ml-nlffi
376    Description:
377    
378    I finally took the plunge and added my new FFI code to the main
379    repository.  For x86-linux it is now ready for prime-time.
380    
381    There are two new subdirectories of "src":
382    
383      - ml-nlffi-lib:
384           The utility library for programs using the FFI interface.
385           Here is the implementation of $/c.cm and its associated low-level
386           partners $/c-int.cm and $/memory.cm.
387      - ml-nlffigen:
388           A stand-alone program for generating ML glue code from C source
389           code.
390    
391    Building ml-nlffigen requires $/ckit-lib.cm.
392    
393    The config/install.sh script has been updates to do the Right Thing
394    (hopefully).
395    
396    Notice that the source tree for the C-Kit will not be put under "src"
397    but directly under the installation root directory.  (This is the
398    structure that currently exists on the CVS server when you check out
399    module "sml".)  Fortunately, config/install.sh knows about this oddity.
400    
401    Bugs: No documentation yet.
402    
403    ----------------------------------------------------------------------
404    Name: Matthias Blume
405    Date: 2001/05/09 16:35:00 EDT
406    Tag: blume-20010509-cpscontract
407    Description:
408    
409    Fixed a bug in the accounting code in cpsopt/contract.sml.  (The
410    wrapper/unwrapper elimination did not decrement usage counts and some
411    dead variables got overlooked by the dead-up logic.)
412    
413    ----------------------------------------------------------------------
414    Name: Lal George
415    Date: 2001/05/08  17:26:09 EDT
416    Tag: george-20010508-omit-frameptr
417    Description:
418    
419    Changes to implement the omit-frame-pointer optimization to support
420    raw C calls. For now, there is only support on the Intel x86, but
421    other architectures will follow as more experience is gained with this.
422    
423    
424    ----------------------------------------------------------------------
425    Name: Matthias Blume
426    Date: 2001/05/07 14:40:00 EDT
427    Tag: blume-20010507-proxies
428    Description:
429    
430    I made into "proxy libraries" all libraries that qualify for such a
431    change.  (A qualifying library is a library that has another library or
432    groups as its sole member and repeats that member's export list
433    verbatim.  A proxy library avoids this repetition by omitting its export
434    list, effectively inheriting the list that its (only) member exports.
435    See the CM manual for more explanation.)
436    The main effect is that explicit export lists for these libraries
437    do not have to be kepts in sync, making maintenance a bit easier.
438    
439    I also added copyright notices to many .cm-files.
440    
441    Last but not least, I made a new set of bootfiles.
442    
443    ----------------------------------------------------------------------
444    Name: Matthias Blume
445    Date: 2001/05/04 17:00:00 EDT
446    Tag: blume-20010504-cm-lsplit
447    Description:
448    
449    0. John merged pending changes to $/smlnj-lib.cm
450    
451    1. Allen's previous change accidentally backed out of one of Lal's
452       earlier changes.  I undid this mistake (re-introducing Lal's change).
453    
454    2. I used the new topOrder' function from graph-scc.sml (from $/smlnj-lib.cm)
455       within the compiler where applicable.  There is some code simplification
456       because of that.
457    
458    3. The "split" phase (in FLINT) is now part of the default list of phases.
459       Compiler.Control.LambdaSplitting.* can be used to globally control the
460       lambda-splitting (cross-module-inlining) engine.  In addition to that,
461       it can now also be controlled on a per-source basis: CM has been taught
462       a new tool parameter applicable to ML source files.
463    
464       - To turn lambda-splitting off completely:
465            local open Compiler.Control.LambdaSplitting in
466                val _ = set Off
467            end
468       - To make "no lambda-splitting" the global default (but allow per-source
469         overriding); this is the initial setting:
470            local open Compiler.Control.LambdaSplitting in
471                val _ = set (Default NONE)
472            end
473       - To make "lambda-splitting with aggressiveness a" the global default
474         (and allow per-source overriding):
475            local open Compiler.Control.LambdaSplitting in
476                val _ = set (Default (SOME a))
477            end
478    
479       - To turn lambda-splitting off for a given ML souce file (say: a.sml)
480         write (in the respective .cm-file):
481            a.sml (lambdasplitting:off)
482       - To turn lambda-splitting for a.sml on with minimal aggressiveness:
483            a.sml (lambdasplitting:on)
484       - To turn lambda-splitting for a.sml on with aggressiveness <a> (where
485         <a> is a decimal non-negative integer):
486            a.sml (lambdasplitting:<a>)
487       - To turn lambda-splitting for a.sml on with maximal aggressiveness:
488            a.sml (lambdasplitting:infinity)
489       - To use the global default for a.sml:
490            a.sml (lambdasplitting:default)
491         or simply
492            a.sml
493    
494    ----------------------------------------------------------------------
495    Name: Allen Leung
496    Date: 2001/05/04 01:57:00 EDT
497    Tag: leunga-20010504-sync
498    Description:
499    
500      MLRISC features.
501    
502      1. Fix to CMPXCHG instructions.
503      2. Changed RA interface to allow annotations in callbacks.
504      3. Added a new method to the stream interface to allow annotations updates.
505    
506    ----------------------------------------------------------------------
507    Name: Matthias Blume
508    Date: 2001/05/01 11:45:00 EDT
509    Tag: blume-20010501-pcedittmp
510    Description:
511    
512    Changed install.sh to use the current working directory instead of
513    /usr/tmp for a temporary file (pcedittmp).  The previous choice
514    of /usr/tmp caused trouble with MacOS X because of file premission
515    problems.
516    
517    ----------------------------------------------------------------------
518    Name: Matthias Blume
519    Date: 2001/04/20 11:10:00 EDT
520    Tag: blume-20010420-inMLflag
521    Description:
522    
523     - added vp_limitPtrMask to vproc-state.h
524       (for use by the raw-C-calls mechanism to implement proper interrupt
525        handling)
526     - made the ML compiler aware of various data-structure offsets so it
527       can generate code for accessing the vp_inML flag and vp_limitPtrMask
528     - tweaked mlriscGen.sml to have it emit interrupt-handling code for
529       raw C-calls
530    
531    ----------------------------------------------------------------------
532    Name: Lal George
533    Date: 2001/04/20 09:15:28 EDT
534    Tag: george-20010420-macosX
535    Description:
536    
537     - Changes to port to Mac OS X; Darwin.
538    
539     - In the process I found that sqrt was broken on the PPC, because the
540       fsqrt instruction is not implemented.
541    
542    ----------------------------------------------------------------------
543    Name: Matthias Blume
544    Date: 2001/04/18 12:45:00 EDT
545    Tag: blume-20010418-ccalls
546    Description:
547    
548     - fixed two off-by-4 errors in the x86-specific c-calls implementation
549       (this bug prevented structure arguments containing pointers from being
550        passed correctly)
551     - changed the raw-C-call code in mlriscGen.sml in such a way that
552       structure arguments are represented as a pointer to the beginning
553       of the structure (instead of having a series of synthesized arguments,
554       one for each structure member)
555    
556     - made makeml script's verbosity level configurable via environment
557       variable (MAKEML_VERBOSITY)
558    
559     - eliminated placeholder implementations for f32l, w16s, i16s, and f32s
560       in rawmem-x86.sml; we are now using the real thing
561    
562    ----------------------------------------------------------------------
563    Name: Matthias Blume
564    Date: 2001/03/22 16:25:00 EST
565    Tag: blume-20010322-bootfiles
566    Description:
567    
568    Created a new set of bootfiles (for your automatic installation convenience).
569    
570    ----------------------------------------------------------------------
571    Name: Matthias Blume
572    Date: 2001/03/22 15:10:00 EST
573    Tag: blume-20010322-rawmem-parcm
574    Description:
575    
576    1. All "raw memory access" primitives for the new FFI are implemented now
577       (at least on the x86).
578    2. Some further cleanup of CM's parallel make mechanism.
579    
580    ----------------------------------------------------------------------
581    Name: Matthias Blume
582    Date: 2001/03/19 17:53:00 EST
583    Tag: blume-20010319-parallel
584    Description:
585    
586    Parallel make (using compile servers) now works again.
587    
588    To this end, CM.stabilize and CMB.make have been modified to work in
589    two passes when compile servers are attached:
590       1. Compile everything, do not perform stabilization; this pass
591          uses compile servers
592       2. Stabilize everything; this pass does not use compile servers
593    If there are no compile servers, the two passes are combined into one
594    (as before).  Splitting the passes increases the inherent parallelism
595    in the dependency graph because the entire graph including all
596    libraries is available at the same time.  This, in turn, improves
597    server utilization.  The downside is that the master process will
598    have to do some extra work after compilation is done (because for
599    technical reasons it must re-read all the binfiles during stabilization).
600    
601    ----------------------------------------------------------------------
602    Name: Matthias Blume
603    Date: 2001/03/16 12:22:00 EST
604    Tag: blume-20010316-bootfiles
605    Description:
606    
607    Created a new set of bootfiles (for your automatic installation convenience).
608    
609    ----------------------------------------------------------------------
610    Name: Matthias Blume
611    Date: 2001/03/16 11:00:00 EST
612    Tag: blume-20010316-MLTREE-fixup
613    Description:
614    
615    This is a minor fixup for an (untagged) earlier commit by Allen.
616    (A file was missing).
617    
618    ----------------------------------------------------------------------
619    Name: Allen Leung
620    Date: Mon Mar  5 18:54:57 EST 2001
621    Tag: leunga-20010305-cut-support
622    
623    1. New support for alternative control-flow in MLTREE.
624       Currently we support
625    
626          FLOW_TO(CALL ...., [k1,...,kn])
627    
628       This is needed for 'cuts to' in C-- and try/handle-like constructs
629       in Moby
630    
631       New assembler flag "asm-show-cutsto" to turn on control-flow debugging.
632    
633    2. Register Allocator
634    
635       Changes in interface [from Fermin, John]
636    
637    3. Alpha 8-bit SLL support [Fermin]
638    
639    4. All architectures
640    
641       A new module (ClusterExpandCopies) for expanding parallel copies.
642    
643    ----------------------------------------------------------------------
644    Name: Allen Leung
645    Date: 2001/02/27 23:07:00 EST
646    Tag: leunga-20010227-minor-stuff
647    
648    1. Alpha bug fix for CMOVNE
649    2. Handle mltree COND(..,FCMP ...,...)
650    3. Bug fix in simplifier
651    
652    ----------------------------------------------------------------------
653    Name: Matthias Blume
654    Date: 2001/01/30 17:50:00 EST
655    Tag: blume-20010130-sync
656    Description:
657    
658    This is just a minor update to sync my devel branch with the main brach.
659    The only visible change is the addition of some README files.
660    
661    ----------------------------------------------------------------------
662    Name: Matthias Blume
663    Date: 2001/01/12 23:30:00 JST
664    Tag: blume-20010112-bootfiles
665    Description:
666    
667    Made a new set of bootfiles that goes with the current state of the
668    repository.
669    
670    ----------------------------------------------------------------------
671    Name: Matthias Blume
672    Date: 2001/01/12 21:20:00 JST
673    Tag: blume-20010112-sync
674    Description:
675    
676    I am just flushing out some minor changes that had accumulated in
677    my private branch in order to sync with the main tree.  (This is
678    mainly because I had CVS trouble when trying to merge _into_ my
679    private branch.)
680    
681    Most people should be completely unaffected by this.
682    
683    ----------------------------------------------------------------------
684    Name: Allen Leung
685    Date: Thu Jan 11 21:03:00 EST 2001
686    Tag: leunga-20010111-labexp=mltree
687    Description:
688    
689    1.  Removed the type LabelExp and replace it by MLTree.
690    2.  Rewritten mltree-simplify with the pattern matcher tool.
691    3.  There were some bugs in alpha code generator which would break
692        64-bit code generation.
693    4.  Redo the tools to generate code with the
694    5.  The CM files in MLRISC (and in src/system/smlnj/MLRISC)
695        are now generated by perl scripts.
696    
697    ----------------------------------------------------------------------
698    Name: Matthias Blume
699    Date: 2001/01/10 21:55:00 JST
700    Tag: blume-20010110-rcc
701    Description:
702    
703    The RCC stuff now seems to work (but only on the x86).
704    This required hacking of the c-calls interface (and -implementation) in
705    MLRISC.
706    
707    Normal compiler users should be unaffected.
708    
709    ----------------------------------------------------------------------
710    Name: Matthias Blume
711    Date: 2001/01/09 01:20:00 JST
712    Tag: blume-20010109-rcc
713    Description:
714    
715    This is a fairly big patch, flushing out a large number of pending
716    changes that I made to my development copy over the last couple of days.
717    
718    Of practical relevance at this moment is a workaround for a pickling
719    bug that Allen ran into the other day.  The cause of the bug itself is
720    still unknown and it might be hard to fix it properly, but the
721    workaround has some merits of its own (namely somewhat reducing pickling
722    overhead for certain libraries).  Therefore, I think this solution should
723    be satisfactory at this time.
724    
725    The rest of the changes (i.e., the vast majority) has to do with my
726    ongoing efforts of providing direct support for C function calls from
727    ML.  At the moment there is a new primop "RAW_CCALL", typing magic
728    in types/cproto.sml (invoked from FLINT/trans/translate.sml), a new
729    case in the FLINT CPS datatype (RCC), changes to cps/convert.sml to
730    translate uses of RAW_CCALL into RCC, and changes to mlriscGen.sml to
731    handle RCC.
732    
733    The last part (the changes to mlriscGen.sml) are still known to be
734    wrong on the x86 and not implemented on all other architectures.  But
735    the infrastructure is in place. I had to change a few functor
736    signatures in the backend to be able to route the CCalls interface
737    from MLRISC there, and I had to specialize the mltree type (on the
738    x86) to include the necessary extensions. (The extensions themselves
739    were already there and redy to go in MLRISC/x86).
740    
741    Everything should be very happy as soon as someone helps me with
742    mlriscGen.sml...
743    
744    In any case, nothing of this should matter to anyone as long as the
745    new primop is not being used (which is going to be the case unless you
746    find it where I hid it :). The rest of the compiler is completely
747    unaffected.
748    
749    ----------------------------------------------------------------------
750    Name: Matthias Blume
751    Date: 2001/01/05 00:30:00 JST
752    Tag: blume-20010105-primops
753    Description:
754    
755    Added some experimental support for work that I am doing right now.
756    These changes mostly concern added primops, but there is also a new
757    experimental C library in the runtime system (but currently not enabled
758    anywhere except on Linux/X86).
759    
760    In the course of adding primops (and playing with them), I discovered that
761    Zhong's INL_PRIM hack (no type info for certain primops) was, in fact, badly
762    broken.  (Zhong was very right he labeled this stuff as "major gross hack".)
763    To recover, I made type information in INL_PRIM mandatory and changed
764    prim.sml as well as built-in.sml accordingly.  The InLine structure now
765    has complete, correct type information (i.e., no bottom types).
766    
767    Since all these changes mean that we need new binfiles, I also bumped the
768    version number to 110.32.1.
769    
770    ----------------------------------------------------------------------
771    Name: Matthias Blume
772    Date: 2000/12/30 22:10:00 JST
773    Tag: blume-20001230-various
774    Description:
775    
776    Added proxy libraries for MLRISC and let MLRISC libraries refer
777    to each other using path anchors.  (See CM manual for explanation.)
778    
779    Updated CM documentation.
780    
781    Fixed some bugs in CM.
782    
783    Implemented "proxy" libraries (= syntactic sugar for CM).
784    
785    Added "-quiet" option to makeml and changed runtime system accordingly.
786    
787    Added cleanup handler for exportML to reset timers and compiler stats.
788    
789    ----------------------------------------------------------------------
790    Name: Lal George
791    Date: 2000/12/22 22:22:58 EST 2000
792    Tag: Release_110_32
793    Description:
794    
795            Infinite precision used throughout MLRISC.
796            see MLRISC/mltree/machine-int.sig
797    
798    ----------------------------------------------------------------------
799    Name: Matthias Blume
800    Date: 2000/12/22 23:16:00 JST
801    Tag: blume-20001222-warn
802    Description:
803    
804    Corrected wording and formatting of some CM warning message which I
805    broke in my previous patch.
806    
807    ----------------------------------------------------------------------
808    Name: Matthias Blume
809    Date: 2000/12/22 21:20:00 JST
810    Tag: blume-20001222-anchorenv
811    Description:
812    
813    Fixed CM's handling of anchor environments in connection with CMB.make.
814    
815    ----------------------------------------------------------------------
816    Name: Matthias Blume
817    Date: 2000/12/22 13:15:00 JST
818    Tag: blume-20001222-cleanup
819    Description:
820    
821    Removed src/cm/ffi which does not (and did not) belong here.
822    
823    ----------------------------------------------------------------------
824    Name: Matthias Blume
825    Date: 2000/12/21 23:55:00 JST
826    Tag: blume-20001221-exn
827    Description:
828    
829    Probably most important: CM no longer silently swallows all exceptions
830    in the compiler.
831    Plus: some other minor CM changes.  For example, CM now reports some
832    sizes for generated binfiles (code, data, envpickle, lambdapickle).
833    
834    ----------------------------------------------------------------------
835    Name: Matthias Blume
836    Date: 2000/12/15 00:01:05 JST
837    Tag: blume-20001215-dirtool
838    Description:
839    
840    - "dir" tool added.
841    - improvements and cleanup to Tools structure
842    - documentation updates
843    
844    ----------------------------------------------------------------------
845    Name: Allen Leung
846    Date: Thu Dec 14 03:45:24 EST 2000
847    Description:
848    Tag:  leunga-20001214-int-inf
849    Description:
850    
851       In IntInf, added these standard functions, which are missing from our
852    implementation:
853    
854        andb : int * int -> int
855        xorb : int * int -> int
856        orb  : int * int -> int
857        notb : int -> int
858         <<   : int * word -> int
859        ~>>  : int * word -> int
860    
861       Not tested, I hope they are correct.
862    
863    ----------------------------------------------------------------------
864    Name: Allen Leung
865    Date: Fri Dec  8 19:23:26 EST 2000
866    Description:
867    Tag:  leunga-20001208-nowhere
868    Description:
869    
870      Slight improvements to the 'nowhere' tool to handle OR-patterns,
871    to generate better error messages etc.  Plus a brief manual.
872    
873    ----------------------------------------------------------------------
874    Name: Lal George
875    Date: 2000/12/08 09:54:02 EST 2000
876    Tag: Release_110_31
877    Description:
878    
879    - Version 110.31
880    ----------------------------------------------------------------------
881    Name: Allen Leung
882    Date: Thu Dec  7 22:01:04 EST 2000
883    Tag:  leunga-20001207-cell-monster-hack
884    Description:
885    
886    Major MLRISC internal changes.  Affect all clients.
887    Summary:
888    
889    1.  Type CELLS.cell = int is now replaced by a datatype.
890        As a result, the old regmap is now gone.  Almost all interfaces
891        in MLRISC change as a consequence.
892    
893    2.  A new brand version of machine description tool (v3.0) that generates
894        modules expecting the new interface.  The old version is removed.
895    
896    3.  The RA interface has been further abstracted into two new functors.
897        RISC_RA and X86RA.  These functors have much simpler interfaces.
898        [See also directory MLRISC/demo.]
899    
900    4.  Some other new source->source code generation tools are available:
901    
902        a. MLRISC/Tools/RewriteGen -- generate rewriters from rules.
903        b. MLRISC/Tools/WhereGen -- expands conditional pattern matching rules.
904           I use this tool to generate the peephole optimizers---with the new
905           cell type changes, peephole rules are becoming difficult to write
906           without conditional pattern matching.
907    
908    5.  More Intmap -> IntHashTable change.  Previous changes by Matthias didn't
909        cover the entire MLRISC source tree so many things broke.
910    
911    6.  CM files have been moved to the subdirectory MLRISC/cm.
912        They are moved because there are a lot of them and they clutter up the
913        root dir.
914    
915    7.  More detailed documentation to come...
916    
917        NOTE: To rebuild from 110.30 (ftp distribution), you'll have to do
918        a makeml -rebuild first.  This is because of other other
919        changes that Matthias has made (see below).
920    
921    
922    ----------------------------------------------------------------------
923    Name: Matthias Blume
924    Date: 2000/11/30 23:12:00 JST
925    Tag: blume-20001130-filereorg
926    Description:
927    
928    Some manual updates and some file reorganizations in CM.
929    
930    ----------------------------------------------------------------------
931    Name: Matthias Blume
932    Date: 2000/11/24 17:45:00 JST
933    Tag: blume-20001124-link
934    Description:
935    
936    Drastically improved link traversal code for the case that the dynamic
937    value was already loaded at bootstrap time.  As a result, CM and CMB
938    now both load blazingly fast -- even on a very slow machine.  Also,
939    memory consumption has been further reduced by this.
940    
941    Warning: The format of the PIDMAP file has changed.  THerefore, to
942    bootstrap you have to do this:
943    
944    1. Run CMB.make
945    2. Make a symbolic link for the boot directory:
946         ln -s sml.boot.ARCH-OS xxx
947    3. "Rebuild" the boot directory:
948         ./makeml -boot xxx -rebuild sml ; rm xxx
949    4. Boot normally:
950          ./makeml
951    
952    ----------------------------------------------------------------------
953    Name: Matthias Blume
954    Date: 2000/11/21 21:20:00 JST
955    Tag: blume-20001121-tools
956    Description:
957    
958    Continued hacking on autoloading problem -- with success this time.
959    Also changed tool-plugin mechanism.  See new CM manual.
960    
961    ----------------------------------------------------------------------
962    Name: Matthias Blume
963    Date: 2000/11/19 14:30:00 JST
964    Tag:  blume-20001119-autoload
965    Description:
966    
967    Some hacking to make autoloading faster.  Success for CMB, no success
968    so far for CM.  There is a reduced structure CM' that autoloads faster.
969    (This is a temporary, non-documented hack to be eliminated again when
970    the general problem is solved.)
971    
972    ----------------------------------------------------------------------
973    Name: Matthias Blume
974    Date: 2000/11/17 14:10:00 JST
975    Tag: blume-20001117-pickle-lib
976    Description:
977    
978    1. Eliminated comp-lib.cm
979    2. Made pickle-lib.cm
980    3. Eliminated all uses of intset.sml (from comp-lib.cm)
981    4. Replaced all uses of intmap.{sig,sml} (from comp-lib.cm) with
982       equivalent constructs from smlnj-lib.cm (INtHashTable).
983    5. Point 4. also goes for those uses of intmap.* in MLRISC.
984       Duplicated intmap modules thrown out.
985    6. Hunted down all duplicated SCC code and replaced it with
986       equivalent stuff (GraphSCCFn from smlnj-lib.cm).
987    7. Rewrote Feedback module.
988    8. Moved sortedlist.sml into viscomp-lib.cm.  Eventually it
989       should be thrown out and equivalent modules from smlnj-lib.cm
990       should be used (IntRedBlackSet, IntListSet, ...).
991    
992    Confirmed that compiler compiles to fixpoint.
993    
994    ----------------------------------------------------------------------
995    Name: Allen Leung
996    Date: 2000/11/10 18:00:00
997    Tag: leunga-20001110-new-x86-fp
998    
999    A new x86 floating point code generator has been added.
1000    By default this is turned off.  To turn this on, do:
1001    
1002        CM.autoload "$smlnj/compiler.cm";
1003        Compiler.Control.MLRISC.getFlag "x86-fast-fp" := true;
1004    
1005    Changes:
1006    
1007    1.  Changed FTAN to FPTAN so that the assembly output is correct.
1008    2.  Changed the extension callback for FTANGENT to generate:
1009    
1010              fptan
1011              fstp  %st(0)
1012        instead of
1013              fptan
1014              fstpl ftempmem
1015    
1016    3.  Numerous assembly fixes for x86.
1017    
1018    5.  Cleaned up the machine code output module x86/x86MC.sml and added
1019        support for a whole bunch of instructions and addressing modes:
1020    
1021          fadd/fsub/fsubr/fmul/fdiv/fdivr  %st, %st(n)
1022          faddp/fsubp/fsubrp/fmulp/fdivp/fdivrp  %st, %st(n)
1023          fadd/fsub/fsubr/fmul/fdiv/fdivr  %st(n), %st
1024          fiadd/fisub/fisubr/fimul/fidiv/fidivr mem
1025          fxch %st(n)
1026          fld %st(n)
1027          fst %st(n)
1028          fst mem
1029          fstp %st(n)
1030          fucom %st(n)
1031          fucomp %st(n)
1032    
1033        All these are now generated when the fast fp mode is turned on.
1034    
1035    6.  Removed the dedicated registers %st(0), ..., %st(7) from X86CpsRegs
1036    
1037    ----------------------------------------------------------------------
1038    Name: Matthias Blume
1039    Date: 2000/11/09 11:20:00 JST
1040    Tag: blume-20001109-scc
1041    Description:
1042    
1043    Eliminated some code duplication:
1044    
1045    1. Added "where" clause to GraphSCCFn in SML/NJ Library.
1046       (Otherwise the functor is useless.)
1047    2. Used GraphSCCFn where SCCUtilFun was used previously.
1048    3. Got rid of SCCUtilFun (in comp-lib.cm).
1049    
1050    ----------------------------------------------------------------------
1051    Name: Lal George
1052    Date: 2000/11/06 09:02:21 EST 2000
1053    Tag: Release_110_30
1054    Description:
1055    
1056    - Version 110.30
1057    ----------------------------------------------------------------------
1058    Name: Matthias Blume
1059    Date: 2000/11/04 14:45:00
1060    Tag: blume-20001104-mlbuild
1061    Description:
1062    
1063    - Made ml-build faster on startup.
1064    - Documentation fixes.
1065    
1066    ----------------------------------------------------------------------
1067    Name: Matthias Blume
1068    Date: 2000/11/02 17:00:00 JST
1069    Tag: blume-20001102-condcomp
1070    Description:
1071    
1072    - Small tweaks to pickler -- new BOOTFILES!
1073    - Version bumped to 110.29.2.
1074    - Added conditional compilation facility to init.cmi (see comment there).
1075    ----------------------------------------------------------------------
1076    Name: Allen Leung
1077    Date: 2000/10/23 19:31:00
1078    Tag: leunga-20001023-demo-ra
1079    
1080    1. Minor RA changes that improves spilling on x86 (affects Moby and C-- only)
1081    2. Test programs for the graph library updated
1082    3. Some new MLRISC demo programs added
1083    
1084    ----------------------------------------------------------------------
1085    Name: Matthias Blume
1086    Date: 2000/08/31 22:15:00 JST
1087    Tag: blume-20001017-errmsg
1088    Description:
1089    
1090    More error message grief: Where there used to be no messages, there
1091    now were some that had bogus error regions.  Fixed.
1092    
1093    ----------------------------------------------------------------------
1094    Name: Matthias Blume
1095    Date: 2000/08/31 17:30:00 JST
1096    Tag: blume-20001017-v110p29p1
1097    Description:
1098    
1099    I made a version 110.29.1 with new bootfiles.
1100    
1101    Changes:  Modified pickler/unpickler for faster and leaner unpickling.
1102              CM documentation changes and a small bugfix in CM's error reporting.
1103    
1104    ----------------------------------------------------------------------
1105    Name: Lal George
1106    Date: 2000/09/27 14:42:35 EDT
1107    Tag: george-20000927-nodestatus
1108    Description:
1109    
1110    Changed the type of the nodestatus, so that:
1111    
1112            SPILLED(~1)             is now SPILLED
1113            SPILLED(m) where m>=0   is now MEMREG(m)
1114            SPILLED(s) where s<~1   is now SPILL_LOC(~s)
1115    
1116    ----------------------------------------------------------------------
1117    Name: Matthias Blume
1118    Date: 2000/09/07 14:45:00 JST
1119    Tag: blume-20000907-cmerrmsg
1120    Description:
1121    
1122    Small tweak to CM to avoid getting ML syntax error messages twice.
1123    
1124    ----------------------------------------------------------------------
1125    Name: Matthias Blume
1126    Date: 2000/08/31 18:00:00 JST
1127    Tag: blume-20000831-cvsbootfiles
1128    Description:
1129    
1130    New URL for boot files (because the 110.29 files on the BL server do
1131    now work correctly with my updated install scripts for yacc and lex).
1132    
1133    ----------------------------------------------------------------------
1134    Name: Matthias Blume
1135    Date: 2000/08/08 12:33:00 JST
1136    Tag: blume-20000808-manual
1137    Description:
1138    
1139    Tiny update to CM manual.
1140    
1141    ----------------------------------------------------------------------
1142    Name: Allen Leung
1143    Date: 2000/08/7 19:31:00
1144    Tag: leunga-20000807-a-whole-bunch-of-stuff
1145    
1146      Moby, C--, SSA, x86, machine descriptions etc.  Should only affect C--
1147    and Mobdy.
1148    
1149    1.  x86
1150    
1151       a.  Fixes to peephole module by John and Dan.
1152       b.  Assembly fix to SETcc by Allen.
1153       c.  Fix to c-call by John.
1154       d.  Fix to spilling by John.  (This one deals with the missing FSTPT case)
1155       e.  Instruction selection optimization to SETcc as suggested by John.
1156    
1157           For example,
1158    
1159            MV(32, x, COND(32, CMP(32, LT, a, b), LI 1, LI 0))
1160    
1161           should generate:
1162    
1163            MOVL a, x
1164            SUBL b, x
1165            SHRL 31, x
1166    
1167    2.  IR stuff
1168    
1169         A bunch of new DJ-graph related algorithms added.  These
1170         speed up SSA construction.
1171    
1172    3.  SSA + Scheduling
1173    
1174         Added code for SSA and scheduling to the repository
1175    
1176    ----------------------------------------------------------------------
1177    Name: Lal George
1178    Date: 2000/07/27 11:53:14 EDT
1179    
1180    Tag: lal-20000727-linux-ppc
1181    Description:
1182    
1183     Made changes to support Linux PPC.
1184     p.s. I have confirmation that the 110.29 boot files work fine.
1185    
1186    ----------------------------------------------------------------------
1187    Name: Matthias Blume
1188    Date: 2000/07/27 17:40:00 JST
1189    Tag: blume-20000727-scripts
1190    Description:
1191    
1192    !!!! WARNING !!!!
1193    You must recompile the runtime system!
1194    !!!! WARNING !!!!
1195    
1196    This is basically another round of script-enhancements:
1197    
1198    1. sml, ml-build, and ml-makedepend accept options -D and -U to define
1199       and undefine CM preprocessor symbols.
1200    
1201    2. ml-build avoids generating a new heap image if it finds that the
1202       existing one is still ok.  (The condition is that no ML file had to
1203       be recompiled and all ML files are found to be older that the heap
1204       file.)
1205    
1206       To make this work smoothly, I also hacked the runtime system as
1207       well as SMLofNJ.SysInfo to get access to the heap image suffix
1208       (.sparc-solaris, ...) that is currently being used.
1209    
1210       Moreover, the signature of CM.mk_standalone has changed.  See the
1211       CM manual.
1212    
1213    3. ml-makedepend accepts additional options -n, -a, and -o.  (See the
1214       CM manual for details.)
1215    
1216    4. More CM manual updates:
1217        - all of the above has been documented.
1218        - there is now a section describing the (CM-related) command line
1219          arguments that are accepted by the "sml" command
1220    
1221    ----------------------------------------------------------------------
1222    Name: Matthias Blume
1223    Date: 2000/07/25 16:20:00 JST
1224    Tag: blume-20000725-makedepend
1225    Description:
1226    
1227    Added a script called ml-makedepend.  This can be used in makefiles
1228    for Unix' make in a way very similar to the "makedepend" command for
1229    C.
1230    
1231    The script internally uses function CM.sources.
1232    
1233    Synopsis:
1234    
1235        ml-makedepend [-f makefile] cmfile targetname
1236    
1237    The default for the makefile is "makefile" (or "Makefile" should
1238    "makefile" not exist).
1239    
1240    ml-makedepend adds a cmfile/targetname-specific section to this
1241    makefile (after removing the previous version of this section).  The
1242    section contains a single dependency specification with targetname on
1243    the LHS (targetname is an arbitrary name), and a list of files derived
1244    from the cmfile on the RHS.  Some of the files on the RHS are
1245    ARCH/OPSYS-specific.  Therefore, ml-makedepend inserts references to
1246    "make" variables $(ARCH) and $(OPSYS) in place of the corresponding
1247    path names.  The makefile writer is responsible for making sure that
1248    these variables have correct at the time "make" is invoked.
1249    
1250    ----------------------------------------------------------------------
1251    Name: Matthias Blume
1252    Date: 2000/07/22 23:30:00 JST
1253    Tag: blume-20000722-urlupdate
1254    Description:
1255    
1256    Changed BOOT and config/srcarchiveurl to point to BL server:
1257    
1258        ftp://ftp.research.bell-labs.com/dist/smlnj/working/110.29/
1259    
1260    ----------------------------------------------------------------------
1261    Name: Matthias Blume
1262    Date: 2000/07/18 18:00:00 JST
1263    Tag: blume-20000718-Version_110_29
1264    Description:
1265    
1266    1. Updated src/compiler/TopLevel/main/version.sml to version 110.29
1267    
1268    2. Updated config/version to 110.29
1269    
1270    3. Updated config/srcarchiveurl
1271    
1272    3. New boot files!
1273       ftp://ftp.cs.princeton.edu/pub/people/blume/sml/110.29-autofetch
1274    
1275    ----------------------------------------------------------------------
1276    Name: Matthias Blume
1277    Date: 2000/07/11 13:58:00 JST
1278    Tag: blume-20000711-doctypo
1279    Description:
1280    
1281    Fixed a few typos in CM manual.
1282    
1283    ----------------------------------------------------------------------
1284    Name: Allen Leung
1285    Date: 2000/06/15 00:38:00
1286    Tag: leunga-20000704-sparc-x86
1287    
1288    1. x86 peephole improvement sp += k; sp -= k => nop  [from John]
1289    2. fix to x86 RET bug [found by Dan Grossman]
1290    3. sparc assembly bug fix for ticc instructions [found by Fermin]
1291    
1292       Affects c-- and moby only
1293    
1294    ----------------------------------------------------------------------
1295    Name: Matthias Blume
1296    Date: 2000/07/04 15:26:00
1297    Tag: blume-20000704-trigger
1298    Description:
1299    
1300    1. Improvements to CM manual.
1301    2. SMLofNJ.Internals.BTrace.trigger reinstated as an alternative way
1302       of getting a back-trace.  The function, when called, raises an
1303       internal exception which explicitly carries the full back-trace history,
1304       so it is unaffected by any intervening handle-raise pairs ("trivial"
1305       or not).  The interactive loop will print that history once it arrives
1306       at top level.
1307       Short of having all exceptions implicitly carry the full history, the
1308       recommended way of using this facility is:
1309         - compile your program with instrumentation "on"
1310         - run it, when it raises an exception, look at the history
1311         - if the history is "cut off" because of some handler, go and modify
1312           your program so that it explicitly calls BTrace.trigger
1313         - recompile (still instrumented), and rerun; look at the full history
1314    
1315    ----------------------------------------------------------------------
1316    Name: Matthias Blume
1317    Date: 2000/07/03 15:36:00 JST
1318    Tag: blume-20000702-manual
1319    Description:
1320    
1321    Small corrections and updates to CM manual.
1322    
1323    ----------------------------------------------------------------------
1324    Name: Matthias Blume
1325    Date: 2000/06/29 16:04:00 JST
1326    Tag: blume-20000629-yacctool
1327    Description:
1328    
1329    Changes:
1330    
1331    1. Class "mlyacc" now takes separate arguments to pass options to
1332       generated .sml- and .sig-files independently.
1333    2. Corresponding CM manual updates.
1334    3. BTrace module now also reports call sites.  (However, for loop clusters
1335       it only shows from where the cluster was entered.)  There are associated
1336       modifications to core.sml, internals.{sig,sml}, btrace.sml, and btimp.sml.
1337    
1338    ----------------------------------------------------------------------
1339    Name: Matthias Blume
1340    Date: 2000/06/27 16:51:00 JST
1341    Tag: blume-20000627-noweb
1342    Description:
1343    
1344    Changes:
1345    
1346     1. Implemented "subdir" and "witness" options for noweb tool.
1347        This caused some slight internal changes in CM's tool implementation.
1348     2. Fixed bug in "tool plugin" mechanism.  This is essentially cleaning
1349        some remaining issues from earlier path anchor changes.
1350     3. Updated CM manual accordingly.
1351    
1352     4. Changed implementation of back-tracing so that I now consider it
1353        ready for prime-time.
1354    
1355        In particular, you don't have to explicitly trigger the back-trace
1356        anymore.  Instead, if you are running BTrace-instrumented code and
1357        there is an uncaught exception (regardless of whether or not it was
1358        raised in instrumented code), the top-level evalloop will print
1359        the back-trace.
1360    
1361        Features:
1362    
1363          - Instrumented and uninstrumented code work together seemlessly.
1364            (Of course, uninstrumented code is never mentioned in actual
1365             back-traces.)
1366    
1367          - Asymptotic time- and space-complexity of instrumented code is
1368            equal to that of uninstrumented code.  (This means that
1369            tail-recursion is preserved by the instrumentation phase.)
1370    
1371          - Modules whose code has been instrumented in different sessions
1372            work together without problem.
1373    
1374          - There is no penalty whatsoever on uninstrumented code.
1375    
1376          - There is no penalty on "raise" expressions, even in
1377            instrumented code.
1378    
1379        A potential bug (or perhaps it is a feature, too):
1380    
1381          A back-trace reaches no further than the outermost instrumented
1382          non-trivial "raise".  Here, a "trivial" raise is one that is the
1383          sole RHS of a "handle" rule.  Thus, back-traces reach trough
1384    
1385               <exp> handle e => raise e
1386    
1387          and even
1388    
1389               <exp> handle Foo => raise Bar
1390    
1391          and, of course, through
1392    
1393               <exp> handle Foo => ...
1394    
1395         if the exception was not Foo.
1396    
1397         Back-traces always reach right through any un-instrumented code
1398         including any of its "handle" expressions, trivial or not.
1399    
1400       To try this out, do the following:
1401    
1402         - Erase all existing binfiles for your program.
1403           (You may keep binfiles for those modules where you think you
1404            definitely don't need back-tracing.)
1405         - Turn on back-trace instrumentation:
1406              SMLofNJ.Internals.BTrace.mode (SOME true);
1407         - Recompile your program.  (I.e., run "CM.make" or "use".)
1408         - You may now turn instrumentation off again (if you want):
1409              SMLofNJ.Internals.BTrace.mode (SOME false);
1410         - Run your program as usual.  If it raises an exception that
1411           reaches the interactive toplevel, then a back-trace will
1412           automatically be printed.  After that, the toplevel loop
1413           will print the exception history as usual.
1414    
1415    ----------------------------------------------------------------------
1416    Name: Matthias Blume
1417    Date: 2000/06/26 09:56:46 JST
1418    Tag: blume-20000626-setup
1419    Description:
1420    
1421    CM: - setup-parameter to "sml" added; this can be used to run arbitrary
1422          ML code before and after compiling a file (e.g., to set compiler
1423          flags)
1424    
1425    Compiler: - improved btrace API (in core.sml, internals.{sig,sml})
1426              - associated changes to btrace.sml (BTrace instrumentation pass)
1427              - cleaner implementation of btimp.sml (BTrace tracing and report
1428                module)
1429    
1430    CM manual: * new path encoding documented
1431               * description of setup-parameter to "sml" added
1432    
1433    The biggest user-visible change to back-tracing is that it is no
1434    longer necessary to compile all traced modules within the same
1435    session.  (This was a real limitation.)
1436    
1437    ----------------------------------------------------------------------
1438    Name: Matthias Blume
1439    Date: 2000/06/24 12:40:00 JST
1440    Tag: blume-20000624-startup
1441    Description:
1442    
1443    Fixes startup slowdown problem.  (I was calling SrcPath.sync a _tad_
1444    bit too often -- to put it mildly. :)
1445    
1446    ----------------------------------------------------------------------
1447    Name: Matthias Blume
1448    Date: 2000/06/23 18:20:00 JST
1449    Tag: blume-20000623-btrace
1450    Description:
1451    
1452    This updates adds a backtrace facility to aid programmers in debugging
1453    their programs.  This involves the following changes:
1454    
1455    1. Module system/smlnj/init/core.sml (structure _Core) now has hooks for
1456       keeping track of the current call stack.  When programs are compiled
1457       in a special mode, the compiler will insert calls to these hooks
1458       into the user program.
1459       "Hook" means that it is possible for different implementations of
1460       back-tracing to register themselves (at different times).
1461    
1462    2. compiler/MiscUtil/profile/btrace.sml implements the annotation phase
1463       as an Absyn.dec->Absyn.dec rewrite.  Normally this phase is turned off.
1464       It can be turned on using this call:
1465         SMLofNJ.Internals.BTrace.mode (SOME true);
1466       Turning it off again:
1467         SMLofNJ.Internals.BTrace.mode (SOME false);
1468       Querying the current status:
1469         SMLofNJ.Internals.BTrace.mode NONE;
1470       Annotated programs are about twice as big as normal ones, and they
1471       run a factor of 2 to 4 slower with a dummy back-trace plugin (one
1472       where all hooks do nothing).  The slowdown with a plugin that is
1473       actually useful (such as the one supplied by default) is even greater,
1474       but in the case of the default plugin it is still only an constant
1475       factor (amortized).
1476    
1477    3. system/Basis/Implementation/NJ/internals.{sig,sml} have been augmented
1478       with a sub-structure BTrace for controlling back-tracing.  In particular,
1479       the above-mentioned function "mode" controls whether the annotation
1480       phase is invoked by the compiler.  Another important function is
1481       "trigger": when called it aborts the current execution and causes
1482       the top-level loop to print a full back-trace.
1483    
1484    4. compiler/MiscUtil/profile/btimp.sml is the current default plugin
1485       for back-tracing.  It keeps track of the dynamic call stack and in
1486       addition to that it keeps a partial history at each "level" of that
1487       stack.  For example, if a tail-calls b, b tail-calls c, and c tail-calls
1488       d and b (at separate times, dynamically), then the report will show:
1489    
1490       GOTO   d
1491             /c
1492       GOTO  \b
1493       CALL   a
1494    
1495       This shows that there was an initial non-tail call of a, then a
1496       tail-call to b or c, looping behavior in a cluster of functions that
1497       consist of b and c, and then a goto from that cluster (i.e., either from
1498       b or from c) to d.
1499    
1500       Note that (depending on the user program) the amount of information
1501       that the back-trace module has to keep track of at each level is bounded
1502       by a constant.  Thus, the whole implementation has the same asymptotical
1503       complexity as the original program (both in space and in time).
1504    
1505    5. compiler/TopLevel/interact/evalloop.sml has been modified to
1506       handle the special exception SMLofNJ.Internals.BTrace.BTrace
1507       which is raised by the "trigger" function mentioned above.
1508    
1509    Notes on usage:
1510    
1511    - Annotated code works well together with unannotated code:
1512    Unannotated calls simply do not show up at all in the backtrace.
1513    
1514    - It is not a good idea to let modules that were annotated during
1515    different sessions run at the same time.  This is because the compiler
1516    chooses small integers to identify individual functions, and there
1517    will be clashes if different modules were compiled in separate sessions.
1518    (Nothing will crash, and you will even be told about the clashes, but
1519    back-trace information will in general not be useful.)
1520    
1521    - Back-tracing can be confused by callcc and capture.
1522    
1523    - The only way of getting a back-trace right now is to explicitly
1524    invoke the "trigger" function from your user program.  Eventually, we
1525    should make every exception carry back-trace information (if
1526    available).  But since this creates more overhead at "raise"-time
1527    (similar to the current exnHistory overhead), I have not yet
1528    implemented this.  (The implementation will be rather easy.)  With
1529    exceptions carrying back-trace information, this facility will be even
1530    more useful because users don't need to modify their programs...
1531    
1532    - While it is possible to compile the compiler with back-trace
1533    annotations turned on (I did it to get some confidence in
1534    correctness), you must make absolutely sure that core.sml and
1535    btimp.sml are compiled WITHOUT annotation!  (core.sml cannot actually
1536    be compiled with annotation because there is no core access yet, but
1537    if you compile btimp.sml with annotation, then the system will go into
1538    an infinite recursion and crash.)
1539    Since CM currently does not know about BTrace, the only way to turn
1540    annotations on and off for different modules of the compiler is to
1541    interrupt CMB.make, change the settings, and re-invoke it.  Of course,
1542    this is awkward and clumsy.
1543    
1544    Sample sessions:
1545    
1546    Standard ML of New Jersey v110.28.1 [FLINT v1.5], June 5, 2000
1547    - SMLofNJ.Internals.BTrace.mode (SOME true);
1548    [autoloading]
1549    [autoloading done]
1550    val it = false : bool
1551    - structure X = struct
1552    -     fun main n = let
1553    -         fun a (x, 0) = d x
1554    -           | a (x, n) = b (x, n - 1)
1555    -         and b (x, n) = c (x, n)
1556    -         and c (x, n) = a (x, n)
1557    -         and d x = e (x, 3)
1558    -         and e (x, 0) = f x
1559    -           | e (x, n) = e (x, n - 1)
1560    -         and f 0 = SMLofNJ.Internals.BTrace.trigger ()
1561    -           | f n = n * g (n - 1)
1562    -         and g n = a (n, 3)
1563    -     in
1564    -         f n
1565    -     end
1566    - end;
1567    structure X : sig val main : int -> int end
1568    - X.main 3;
1569    *** BACK-TRACE ***
1570    GOTO   stdIn:4.2-13.20: X.main[2].f
1571    GOTO-( stdIn:4.2-13.20: X.main[2].e
1572    GOTO   stdIn:4.2-13.20: X.main[2].d
1573         / stdIn:4.2-13.20: X.main[2].a
1574         | stdIn:4.2-13.20: X.main[2].b
1575    GOTO-\ stdIn:4.2-13.20: X.main[2].c
1576    CALL   stdIn:4.2-13.20: X.main[2].g
1577    GOTO   stdIn:4.2-13.20: X.main[2].f
1578    GOTO-( stdIn:4.2-13.20: X.main[2].e
1579    GOTO   stdIn:4.2-13.20: X.main[2].d
1580         / stdIn:4.2-13.20: X.main[2].a
1581         | stdIn:4.2-13.20: X.main[2].b
1582    GOTO-\ stdIn:4.2-13.20: X.main[2].c
1583    CALL   stdIn:4.2-13.20: X.main[2].g
1584    GOTO   stdIn:4.2-13.20: X.main[2].f
1585    GOTO-( stdIn:4.2-13.20: X.main[2].e
1586    GOTO   stdIn:4.2-13.20: X.main[2].d
1587         / stdIn:4.2-13.20: X.main[2].a
1588         | stdIn:4.2-13.20: X.main[2].b
1589    GOTO-\ stdIn:4.2-13.20: X.main[2].c
1590    CALL   stdIn:4.2-13.20: X.main[2].g
1591    GOTO   stdIn:4.2-13.20: X.main[2].f
1592    CALL   stdIn:2.15-17.4: X.main[2]
1593    -
1594    
1595    (Note that because of a FLINt bug the above code currently does not
1596    compile without BTrace turned on.)
1597    
1598    Here is another example, using my modified Tiger compiler:
1599    
1600    Standard ML of New Jersey v110.28.1 [FLINT v1.5], June 5, 2000
1601    - SMLofNJ.Internals.BTrace.mode (SOME true);
1602    [autoloading]
1603    [autoloading done]
1604    val it = false : bool
1605    - CM.make "sources.cm";
1606    [autoloading]
1607    ...
1608    [autoloading done]
1609    [scanning sources.cm]
1610    [parsing (sources.cm):parse.sml]
1611    [creating directory CM/SKEL ...]
1612    [parsing (sources.cm):tiger.lex.sml]
1613    ...
1614    [wrote CM/sparc-unix/semant.sml]
1615    [compiling (sources.cm):main.sml]
1616    [wrote CM/sparc-unix/main.sml]
1617    [New bindings added.]
1618    val it = true : bool
1619    - Main.compile ("../testcases/merge.tig", "foo.out");
1620    *** BACK-TRACE ***
1621    CALL   lib/semant.sml:99.2-396.21: SemantFun[2].transExp.trvar
1622    CALL   lib/semant.sml:99.2-396.21: SemantFun[2].transExp.trexp
1623    CALL   lib/semant.sml:289.3-295.22: SemantFun[2].transExp.trexp.check[2]
1624    GOTO   lib/semant.sml:289.3-295.22: SemantFun[2].transExp.trexp.check[2]
1625    CALL   lib/semant.sml:99.2-396.21: SemantFun[2].transExp.trexp
1626    CALL   lib/semant.sml:99.2-396.21: SemantFun[2].transExp.trexp
1627    CALL   lib/semant.sml:488.3-505.6: SemantFun[2].transDec.trdec[2].transBody[2]
1628         / lib/semant.sml:411.65-543.8: SemantFun[2].transDec
1629    CALL-\ lib/semant.sml:413.2-540.9: SemantFun[2].transDec.trdec[2]
1630    CALL   lib/semant.sml:99.2-396.21: SemantFun[2].transExp.trexp
1631    CALL   lib/semant.sml:8.52-558.4: SemantFun[2].transProg[2]
1632    CALL   main.sml:1.18-118.4: Main.compile[2]
1633    -
1634    
1635    ----------------------------------------------------------------------
1636    Name: Matthias Blumen
1637    Date: 2000/06/21 18:00:00 JST
1638    Tag: blume-20000621-manual
1639    Description:
1640    
1641    CM manual update: Path environments documented.
1642    
1643    ----------------------------------------------------------------------
1644    Name: Matthias Blume
1645    Date: 2000/06/19 13:40:00
1646    Tag: blume-20000619-manual
1647    Description:
1648    
1649    CM manual and system/README update.  This only covers the fact that
1650    there are no more implicit anchors.  (Path environments and the "bind"
1651    option to "cm" have yet to be documented.)
1652    
1653    ----------------------------------------------------------------------
1654    Name: Matthias Blume
1655    Date: 2000/06/19 11:05:00 JST
1656    Tag: blume-20000619-chdir-bugfix
1657    Description:
1658    
1659    Fixed a bug in new SrcPath module that sometimes led to a bad chDir call.
1660    
1661    ----------------------------------------------------------------------
1662    Name: Matthias Blume
1663    Date: 2000/06/18 22:00:10 JST
1664    Tag: blume-20000618-implicit-anchors-really-gone
1665    Description:
1666    
1667    I updates the previous HISTORY entry where I forgot to mention that
1668    implicit anchors are no longer with us.
1669    
1670    The current update also gets rid of the (now useless) controller
1671    CM.Control.implicit_anchors.
1672    
1673    ----------------------------------------------------------------------
1674    Name: Matthias Blume
1675    Date: 2000/06/16 17:30:00 JST
1676    Tag: blume-20000616-anchorenv
1677    Description:
1678    
1679    This patch implements the long anticipated (just kidding :) "anchor
1680    environment" mechanism.  In the course of doing this, I also
1681    re-implemented CM's internal "SrcPath" module from scratch.  The new
1682    one should be more robust in certain boundary cases.  In any case, it
1683    is a lot cleaner than its predecessor (IMHO).
1684    
1685    This time, although there is yet another boot file format change, I
1686    kept the unpickler backward-compatible.  As a result, no new bootfiles
1687    are necessary and bootstrapping is straightforward.  (You cannot read
1688    new bootfiles into an old system, but the other way around is no
1689    problem.)
1690    
1691    Visible changes:
1692    
1693    ** 0. Implicit path anchors (without the leading $-symbol) are no
1694    longer recognized at all. This means that such path names are not
1695    illegal either.  For example, the name basis.cm simply refers to a
1696    local file called "basis.cm" (i.e, the name is an ordinary path
1697    relative to .cm-files directory).  Or, to put it differently, only
1698    names that start with $ are anchored paths.
1699    
1700    ** 1. The $<singlearc> abbreviation for $/<singlearc> has finally
1701    vanished.
1702    
1703    John (Reppy) had critizised this as soon as I originally proposed and
1704    implemented it, but at that time I did not really deeply believe
1705    him. :) Now I came full-circle because I need the $<singlearc> syntax
1706    in another place where it cannot be seen as an abbreviation for
1707    $/<singlearc>.  To avoid the confusion, $<singlearc> now means what it
1708    seems to mean (i.e., it "expands" into the corresponding anchor
1709    value).
1710    
1711    However, when paths are used as members in CM description files, it
1712    continues to be true that there must be at least another arc after the
1713    anchor.  This is now enforced separately during semantic analysis
1714    (i.e., from a lexical/syntactical point of view, the notation is ok.)
1715    
1716    ** 2. The "cm" class now accepts an option "bind".  The option's value
1717    is a sub-option list of precisely two items -- one labeled "anchor"
1718    and the other one labeled "value".  As you might expect, "anchor" is
1719    used to specify an anchor name to be bound, and "value" specifies what
1720    the anchor is being bound to.
1721    
1722    The value must be a directory name and can be given in either standard
1723    syntax (including the possibility that it is itself an anchored path)
1724    or native syntax.
1725    
1726    Examples:
1727    
1728       foo.cm (bind:(anchor:bar value:$mystuff/bar))
1729       lib.cm (bind:(anchor:a value:"H:\\x\\y\\z"))  (* only works under windows *)
1730    
1731    and so on.
1732    
1733    The meaning of this is that the .cm-file will be processed with an
1734    augmented anchor environment where the given anchor(s) is/are bound to
1735    the given values(s).
1736    
1737    The rationale for having this feature is this: Suppose you are trying
1738    to use two different (already stable) libraries a.cm and b.cm (that
1739    you perhaps didn't write yourself).  Further, suppose each of these
1740    two libraries internally uses its own auxiliary library $aux/lib.cm.
1741    Normally you would now have a problem because the anchor "lib" can not
1742    be bound to more than one value globally.  Therefore, the project that
1743    uses both a.cm and b.cm must locally redirect the anchor to some other
1744    place:
1745    
1746       a.cm (bind:(anchor:lib value:/usr/lib/smlnj/a-stuff))
1747       b.cm (bind:(anchor:lib value:/usr/lib/smlnj/b-stuff))
1748    
1749    This hard-wires $lib/aux.cm to /usr/lib/smlnj/a-stuff/aux.cm or
1750    /usr/lib/smlnj/b-stuff/aux.cm, respectively.
1751    
1752    Hard-wiring path names is a bit inflexible (and CM will verbosely warn
1753    you when you do so at the time of CM.stabilize).  Therefore, you can
1754    also use an anchored path as the value:
1755    
1756      a.cm (bind:(anchor:lib value:$a-lib))
1757      b.cm (bind:(anchor:lib value:$b-lib))
1758    
1759    Now you can globally configure (using the usual CM.Anchor.anchor or
1760    pathconfig machinery) bindings for "a-lib" and "b-lib".  Since "lib"
1761    itself is always locally bound, setting it globally is no longer
1762    meaningful or necessary (but it does not hurt either).  In fact, "lib"
1763    can still be used as a global anchor for separate purposes.  As a
1764    matter of fact, one can locally define "lib" in terms of a global
1765    "lib":
1766    
1767      a.cm (bind:(anchor:lib value:$lib/a))
1768      b.cm (bind:(anchor:lib value:$lib/b))
1769    
1770    ** 3: The encoding of path names has changed.  This affects the way
1771    path names are shown in CM's progress report and also the internal
1772    protocol encoding used for parallel make.
1773    
1774    The encoding now uses one or more ':'-separated segments.  Each
1775    segments corresponds to a file that has been specified relative to the
1776    file given by its preceding segment.  The first segment is either
1777    relative to the CWD, absolute, or anchored.  Each segment itself is
1778    basically a Unix pathname; all segments but the first are relative.
1779    
1780    Example:
1781    
1782       $foo/bar/baz.cm:a/b/c.sml
1783    
1784    This path denotes the file bar/a/b/c.sml relative to the directory
1785    denoted by anchor "foo".  Notice that the encoding also includes
1786    baz.cm which is the .cm-file that listed a/b/c.sml.  As usual, such
1787    paths are resolved relative to the .cm-files directory, so baz.cm must
1788    be ignored to get the "real" pathname.
1789    
1790    To make this fact more obvious, CM puts the names of such "virtual
1791    arcs" into parentheses when they appear in progress reports. (No
1792    parentheses will appear in the internal protocol encoding.)  Thus,
1793    what you really see is:
1794    
1795      $foo/bar/(baz.cm):a/b/c.sml
1796    
1797    I find this notation to be much more informative than before.
1798    
1799    Another new feature of the encoding is that special characters
1800    including parentheses, colons, (back)slashes, and white space are
1801    written as \ddd (where ddd is the decimal encoding of the character).
1802    
1803    *** The CM manual still needs to be updated.
1804    
1805    ----------------------------------------------------------------------
1806    Name: Allen Leung
1807    Date: 2000/06/15 00:38:00
1808    Tag: leunga-20000615-x86-peephole
1809    
1810    x86 Peephole fix by Fermin.  Affects c-- and moby only.
1811    
1812    ----------------------------------------------------------------------
1813    Name: Matthias Blume
1814    Date: 2000/06/12 11:40:00
1815    Tag: blume-20000612-parmakefix
1816    Description:
1817    
1818    More cleanup after changing the file naming scheme: This time I
1819    repaired the parallel make mechanism for CMB.make which I broke earlier.
1820    
1821    ----------------------------------------------------------------------
1822    Name: Allen Leung
1823    Date: 2000/06/09 01:25:00
1824    Tag: leunga-20000609-various
1825    
1826    None of these things should affect normal SML/NJ operations
1827    
1828    1. Peephole improvements provided by Fermin (c--)
1829    2. New annotation DEFUSE for adding extra dependence (moby)
1830    3. New X86 LOCK instructions (moby)
1831    4. New machine description language for reservation tables (scheduling)
1832    5. Fixes to various optimization/analysis modules (branch chaining, dominator
1833       trees etc.)
1834    6. I've changed the CM files so that they can work with versions
1835       110.0.6, 110.25 and 110.28
1836    
1837    ----------------------------------------------------------------------
1838    Name: Matthias Blume
1839    Date: 2000/06/09 12:40:00
1840    Tag: blume-20000609-log
1841    Description:
1842    
1843    - Removed all(?) remaining RCS Log entries from sources.
1844    
1845    - Fixed bug in ml-yacc and ml-lex sources (use explicit anchors for
1846      anchored paths).
1847    
1848    ----------------------------------------------------------------------
1849    Name: Matthias Blume
1850    Date: 2000/06/07 17:00:00 JST
1851    Tag: blume-20000607-no-implicit-anchors
1852    Description:
1853    
1854    1. This update changes the default setting for
1855    CM.Control.implicit_anchors from true to false.  This means that
1856    implicit anchors are no longer permitted by default.  I also tried to
1857    make sure that nothing else still relies on implicit anchors.
1858    (This is the next step on the schedule towards a CM that does not even
1859    have the notion of implicit anchors anymore.)
1860    
1861    2. More CM manual updates.
1862    
1863    3. I managed to track down and fix the pickling bug I mentioned last
1864    time.  Because of the previously existing workaround, this entails no
1865    immediate practical changes.
1866    
1867    ----------------------------------------------------------------------
1868    Name: Matthias Blume
1869    Date: 2000/06/06 11:15:00 JST
1870    Tag: blume-20000606-lazierpickle
1871    Description:
1872    
1873    !!!! NEW BOOT FILES !!!!
1874    
1875    * The main purpose of this update is to make library pickles lazier in
1876    order to reduce the initial space penalty for autoloading a library.
1877    As a result, it is now possible to have $smlnj/compiler.cm
1878    pre-registered.  This should take care of the many complaints or
1879    inquiries about missing structure Compiler.  This required changes to
1880    CM's internal data structures and small tweaks to some algorithms.
1881    
1882    As a neat additional effect, it is no longer necessary (for the sake
1883    of lean heap image files) to distinguish between a "minimal" CM and a
1884    "full" CM.  Now, there is only one CM (i.e., the "full" version:
1885    $smlnj/cm.cm aka $smlnj/cm/full.cm), and it is always available at the
1886    interactive top level. ($smlnj/cm/minimal.cm is gone.)
1887    
1888    To make the life of compiler-hackers easier, "makeml" now also
1889    pre-registers $smlnj/cmb.cm (aka $smlnj/cmb/current.cm).  In other
1890    words, after you bootstrap a new sml for the first time, you will not
1891    have to autoload $smlnj/cmb.cm again afterwards.  (The first time
1892    around you will still have to do it, though.)
1893    
1894    * A second change consists of major updates to the CM manual.  There
1895    are now several appendices with summary information and also a full
1896    specification of the CM description file syntax.
1897    
1898    * In directory src/system I added the script "allcross".  This script
1899    invokes sml and cross-compiles the compiler for all supported
1900    architectures.  (Useful when providing a new set of boot files.)
1901    
1902    * There seems to be a latent bug in my "lazy pickles" mechanism.  I
1903    added a small tweak to pickle-util.sml to work around this problem,
1904    but it is not a proper fix yet.  I will investigate further.  (The
1905    effect of the bug was an inflation of library pickle size.)
1906    
1907    * Version number increased to 110.28.1 (to avoid compatibility problems).
1908    
1909    ----------------------------------------------------------------------
1910    Name: Allen Leung
1911    Date: 2000/05/25 17:28 EDT
1912    Tag: leunga-20000525-ra
1913    Description:
1914    
1915      Fixed a bug in freezing phase of the register allocator.
1916    
1917    ----------------------------------------------------------------------
1918    Name: Allen Leung
1919    Date: 2000/05/15 22:53 EDT
1920    Tag: leunga-20000515-alpha-x86-ra
1921    Description:
1922    
1923      1. Alpha
1924    
1925          Slight cleanup.  Removed the instruction SGNXL
1926    
1927      2. X86
1928    
1929          Added the following instructions to the instruction set:
1930    
1931            ROLx, RORx,
1932            BTx, BTSx, BTLx, BTRx,
1933            XCHGx, and variants with the LOCK prefix
1934    
1935      3. Register Allocation
1936    
1937          The module ra-rewrite-with-renaming has been improved.
1938    
1939      These have no effect on SML/NJ.
1940    
1941    ----------------------------------------------------------------------
1942    Name: Matthias Blume
1943    Date: 2000/05/15 16:20:00 JST
1944    Tag: blume-20000515-lightrebuild
1945    Description:
1946    
1947    1. I added an alternative to "-rebuild" to "makeml".  The difference is
1948       that prior to calling CMB.make' the CM-variable "LIGHT" will be
1949       defined.  In effect, the command will not build any cross-compiler
1950       backends and therefore finish more quickly.
1951    
1952       The "fixpt" script also takes a "-light" switch to be able to use
1953       this new facility while compiling for a fixpoint.
1954    
1955    2. I replaced all mentions of anchored paths in group owner specifications
1956       with simple relative paths (usually starting with "..").
1957       The rationale is that a library's internal workings should not be
1958       compromised by the lack of some anchor.  (An anchor is necessary
1959       for someone who wants to refer to the library by an anchored path,
1960       but it should not be necessary to build the same library in the first
1961       place.)
1962    
1963    3. I changed the way CM's tool mechanism determines the shell command
1964       string used for things like ml-yacc etc. so that it does not break
1965       when CM.Control.implicit_anchors is turned off.
1966    
1967    ----------------------------------------------------------------------
1968    Name: Matthias Blume
1969    Date: 2000/05/12 18:20:00 JST
1970    Tag: blume-20000512-ml-build
1971    Description:
1972    
1973    Fixed a bug in config/_ml-build that prevented ml-yacc and ml-lex from
1974    getting installed properly (by config/install.sh).
1975    
1976    ----------------------------------------------------------------------
1977    Name: Matthias Blume
1978    Date: 2000/05/12 17:30:00 JST
1979    Tag: blume-20000512-anchors
1980    Description:
1981    
1982    !!! NEW BOOT FILES !!!
1983    
1984    This change is in preparation of fading out support for "implicitly
1985    anchored path names".  I went through all sources and used the
1986    explicit (and relatively new) $-notation.  See system/README and the
1987    CM manual for more info on this.
1988    
1989    I also modified the anchoring scheme for some things such as "smlnj",
1990    "MLRISC", "cm", etc. to take advantage of the fact that explicit
1991    anchors are more expressive: anchor name and first arc do not have to
1992    coincide.  This entails the following user-visible change:
1993    
1994    You have to write $smlnj/foo/bar instead of smlnj/foo/bar.  In
1995    particular, when you fire up sml with a command-line argument, say,
1996    e.g.:
1997    
1998       sml '$smlnj/cmb.cm'
1999    
2000    At the ML toplevel prompt:
2001    
2002       CM.autoload "$smlnj/cmb.cm";
2003    
2004    There is also a new controller in CM.Control that can be used to turn
2005    off all remaining support for implicit anchors by saying:
2006    
2007        CM.autoload "$smlnj/
2008        #set CM.Control.implicit_anchors false;
2009    
2010    This causes CM to reject implicitly anchored paths.  This is (for the
2011    time being) less permissive than the "final" version where there will
2012    be no more such implicit anchors and relative paths will be just that:
2013    relative.
2014    
2015    The next step (version after next version?) will be to make the
2016    default for CM.Control.implicit_anchors false.  After the dust has
2017    settled, I can then produce the "final" version of this...
2018    
2019    Note: Since bootstrapping is a bit tricky, I provided new boot files.
2020    
2021    ----------------------------------------------------------------------
2022    Name: Matthias Blume
2023    Date: 2000/05/11 16:30:00 JST
2024    Tag: blume-20000511-sources
2025    Description:
2026    
2027    The main change is that I added function CM.sources as a generalized
2028    version of the earlier CM.makedepend.  This entails the following
2029    additional changes:
2030    
2031      - CM.makedepend has been dropped.
2032    
2033      - CM manual has been updated.
2034    
2035      - TOOLS signature and API have been changed.
2036    
2037    ----------------------------------------------------------------------
2038    Name: Allen Leung
2039    Date: 2000/05/10 21:17 EDT
2040    Tag: leunga-20000510-moby-c--ssa
2041    Description:
2042    
2043      Various bug fixes and new features for C--, Moby and MLRISC optimizations.
2044    None of these affect SML/NJ.
2045    
2046    1. Register Allocation
2047    
2048        a. A new ra spilling module (ra/ra-spill-with-renaming) is implemented.
2049           This module tries to remove local (i.e. basic block level) redundancies
2050           during spilling.
2051    
2052        b. A new framework for performing region based register allocation.
2053           Not yet entirely functional.
2054    
2055    2. X86
2056    
2057       a. DefUse for POP was missing the stack pointer [found by Lal]
2058       b. Reload for CALL was incorrect in X86Spill [found by John]
2059       c. Various fixes in X86Spill so that it can be used correctly for
2060          the new spilling module.
2061    
2062    3. SSA/IR
2063    
2064       a. New module ir/dj-dataflow.sml implements elimination based
2065          data flow analysis.
2066    
2067    4. MLRiscGen
2068    
2069       a. Fix for gc type annotation
2070    
2071    5. MDGen
2072    
2073       Various fixes for machine description -> ml code translation.  For ssa
2074       only.
2075    
2076    ----------------------------------------------------------------------
2077    Name: Allen Leung
2078    Date: 2000/05/08 22:17 EDT
2079    Tag: leunga-20000508-labexp
2080    Description:
2081    
2082      Fermin has found a few assembly problems with constant expressions
2083      generated in LabelExp.  Mostly, the problems involve extra parentheses,
2084      which choke on dumb assemblers.  This is his fix.
2085    
2086    ----------------------------------------------------------------------
2087    Name: Dave MacQueen
2088    Date: 2000/04/09 14:00 EDT
2089    Tag: dbm-20000502-Version_110_28
2090    Description:
2091    
2092    1. Updated src/compiler/TopLevel/main/version.sml to version 110.28
2093    
2094    2. Updated config/version to 110.28
2095    
2096    3. Updated config/srcarchiveurl
2097    
2098    3. New boot files!
2099       ftp://ftp.research.bell-labs.com/dist/smlnj/working/110.28/
2100    
2101    ----------------------------------------------------------------------
2102    Name: Matthias Blume
2103    Date: 2000/05/01 19:05:00 JST
2104    Tag: blume-20000501-noweb
2105    Description:
2106    
2107    A new noweb tool has been added.  The existing system is entirely
2108    unaffected by this, but some CM users have asked for renewed noweb
2109    support.  Everything is documented in the CM manual.
2110    
2111    New (plugin) libraries:
2112    
2113       noweb-tool.cm
2114       nw-ext.cm
2115    
2116    ----------------------------------------------------------------------
2117    Name: Dave MacQueen
2118    Date: 2000/04/30 12:40PM EDT
2119    Tag: dbm-20000430-bug_fixes
2120    Description:
2121    
2122    1. Fix for bug 1498
2123       smlnj/src/system/Basis/Implementation/Unsafe/object.sig
2124       smlnj/src/system/Basis/Implementation/Unsafe/object.sml
2125         added toRealArray function
2126       smlnj/src/compiler/MiscUtil/print/ppobj.sml
2127         added check for tag Obj.RealArray to array printing case in ppObj
2128    
2129    2. Fix for bug 1510
2130       smlnj/src/compiler/Semant/types/typesutil.sml
2131         fixed definition of dummyargs (used by equalTycon) so that
2132         dummy args are distinct types
2133    
2134    ----------------------------------------------------------------------
2135    Name: Matthias Blume
2136    Date: 2000/04/30 01:00:00 JST
2137    Tag: blume-20000430-versions
2138    Description:
2139    
2140    1. CM version numbering added.  This is an implementation of Lal's
2141       proposal for adding version numbers and version checking to .cm
2142       files.  Lal said that his proposal was just that -- a proposal.
2143       For the time being I went ahead and implemented it so that people
2144       can comment on it.  Everything is completely backward-compatible
2145       (except for the stable library format, i.e., new bootfiles!).
2146    
2147       As usual, see the CM manual for details.
2148    
2149    2. An alternative syntax for anchored paths has been implemented.
2150       Dave has recently voiced the same concerns that I had when I did
2151       this, so there should be some support.  My take is that eventually
2152       I will let support for the current syntax (where anchors are
2153       "implicit") fade out in favor of the new, explicit syntax.
2154       In order to be backward-compatible, both old and new syntax are
2155       currently supported.
2156    
2157       Again, see the CM manual for details.
2158    
2159    3. Parallel make is trying to be slightly smarter:  When the master
2160       process finds a "bottleneck", i.e., when there is only one
2161       compilation unit that can be compiled and everybody else is
2162       waiting on it, then it will simply compile it directly instead
2163       of clumsily telling one of the slaves to do it.
2164    
2165    4. Support for "unsharing" added.  This is necessary in order to be
2166       able to have two different versions of the same library running
2167       at the same time (e.g., for trying out a new MLRISC while still
2168       having the old MLRISC linked into the current compiler, etc.)
2169       See the CM manual.
2170    
2171    5. Simple "makedepend" functionality added for generating Makefile
2172       dependency information.  (This is rather crude at the moment.
2173       Expect some changes here in the future.)
2174    
2175    6. ".fun" added as a recognized suffix for ML files. Also documented
2176       explicitly in the manual that the fallback behavior (unknown suffix
2177       -> ML file) is not an official feature!
2178    
2179    7. Small changes to the pickler for stable libraries.
2180    
2181    8. Several internal changes to CM (for cleanup/improvement).
2182    
2183    
2184    !!!! NEW BINFILES !!!!
2185    
2186    ----------------------------------------------------------------------
2187    Name: Matthias Blume
2188    Date: 2000/04/28 17:30:00 JST
2189    Tag: blume-20000428-pathconfig
2190    Description:
2191    
2192    1. I changed config/install.sh to remove duplicate entries from the
2193       lib/pathconfig file at the end.  Moreover, the final version of
2194       lib/pathconfig is sorted alphabetically.  The same (sorting) is done
2195       in src/system/installml.
2196    
2197    2. The config/install.sh script now consistently uses relative
2198       pathnames in lib/pathconfig whenever the anchor is in the lib
2199       directory.  (So far this was true for the libraries that come
2200       pre-compiled and bundled as part of the bootfiles but not for
2201       libraries that are compiled by the script itself.)
2202    
2203    ----------------------------------------------------------------------
2204    Name: Matthias Blume
2205    Date: 2000/04/26 13:10:00 JST
2206    Tag: blume-20000426-fun_suffix
2207    Description:
2208    
2209    Added ".fun" as a recognized file name suffix (for ML code).
2210    
2211    ----------------------------------------------------------------------
2212    Name: Allen Leung
2213    Date: 2000/04/25 17:00:00 EST
2214    Tag: leunga-20000425-alpha-ra
2215    Description:
2216    
2217    1. Alpha
2218    
2219        PSEUDOARITH was missing in AlphaRewrite.  This causes an endless loop
2220    in C--.
2221    
2222    2. RA
2223    
2224       Added a flag "ra-dump-size" to print out the size of the flowgraph
2225       and the interference graph.
2226    
2227    ----------------------------------------------------------------------
2228    Name: Dave MacQueen
2229    Date: 2000/04/25/
2230    Tag: dbm-20000425-mlyacc_doc_examples
2231    Description:
2232      Updated mlyacc.tex sections 5 and 7 for SML '97 and CM.
2233      Updated all three examples in src/ml-yacc/examples to run
2234      under 110.* using CM.make.
2235    
2236    ----------------------------------------------------------------------
2237    Name: Allen Leung
2238    Date: 2000/04/20 23:04:00 EST
2239    Tag: leunga-20000420-ssa-c---stuff
2240    Description:
2241    
2242      This update synchronizes my repository with Yale's.  Most of these
2243    changes, however, do not affect SML/NJ at all (the RA is an exception).
2244    
2245    1. Register Allocator
2246    
2247       a. An improvement in the interference graph construction:
2248          Given a copy
2249    
2250                s <- t
2251    
2252          no interference edge between s and t is added for this definition of s.
2253    
2254       b. I've added two new spill heuristic modules that Fermin and I developed
2255          (in the new library RA.cm). These are unused in SML/NJ but maybe
2256          useful for others (Moby?)
2257    
2258    2. X86
2259    
2260       a. Various fixes in the backend provided by Fermin [C--] and Lal.
2261    
2262    3. Alpha
2263    
2264       a. Added the BSR instruction and code generation that goes with it [C--]
2265       b. Other fixes too numerous to recount provided by Fermin [C--]
2266    
2267    4. Regmaps
2268    
2269       a. The regmaps are not initialized with the identity physical bindings
2270          at creation time.  This is unneeded.
2271    
2272    5. MLRISC Optimizations
2273    
2274       a. The DJ-Graph module can now compute the iterated dominance frontiers
2275          intersects with liveness incrementally in linear time! Woohoo!
2276          This is now used in my new SSA construction algorithm.
2277    
2278       b. THe branch reorganization module is now smarter about linear chains of
2279          basic blocks.
2280    
2281    
2282    ----------------------------------------------------------------------
2283    Name: Matthias Blume
2284    Date: 2000/04/12 13:52:00 JST
2285    Tag: blume_main_v110p27_1
2286    Description:
2287    
2288    Changed install.sh script to handle archive files without version number
2289    and to use "boot.<arch>-<os>" instead of "sml.boot.<arch>-<os>" for the
2290    name of the boot file archive.
2291    
2292    ----------------------------------------------------------------------
2293    Name: Dave MacQueen
2294    Date: 2000/04/09 14:00 EDT
2295    Tag: dbm-20000410-Version_110_27
2296    Description:
2297    
2298    1. Updated src/compiler/TopLevel/main/version.sml to version 110.27
2299    
2300    2. Updated src/config/version to 110.27
2301    
2302    3. New boot files!
2303    
2304    ----------------------------------------------------------------------
2305    Name: Allen Leung
2306    Date: 2000/04/09 19:09:00 EST
2307    Tag: leunga-20000409-misc
2308    Description:
2309    
2310    1.  Yet another fix for x86 assembly for idivl, imull, mull and friends.
2311    
2312    2.  Miscellaneous improvements to MLRISC (unused in sml/nj)
2313    
2314    ----------------------------------------------------------------------
2315    Name: Stefan
2316    Date: 2000/04/07 10:00:00 EDT
2317    Tag: monnier-20000406-branch-handling
2318    Description:
2319    
2320    Improved handling of branches (mostly those generated from
2321    polymorphic equality), removed switchoff and changed the
2322    default optimization settings (more cpsopt and less flintopt).
2323    
2324    ----------------------------------------------------------------------
2325    Name: Allen Leung
2326    Date: 2000/04/06 01:30:00 EST
2327    Tag: leunga-20000406-peephole-x86-SSA-2
2328    Description:
2329    
2330       Forgot a few files.
2331    
2332    ----------------------------------------------------------------------
2333    Name: Allen Leung
2334    Date: 2000/04/06 00:36:00 EST
2335    Tag: leunga-20000406-peephole-x86-SSA
2336    Description:
2337    
2338    1.  New Peephole code
2339    
2340    2.  Minor improvement to X86 instruction selection
2341    
2342    3.  Various fixes to SSA and machine description -> code translator
2343    
2344    ----------------------------------------------------------------------
2345    Name: Matthias Blume
2346    Date: 2000/04/05 12:30:00 JST
2347    Tag: blume_main_v110p26p2_3
2348    Description:
2349    
2350    This update just merges three minor cosmetic updates to CM's sources
2351    to get ready for the 110.27 code freeze on Friday.  No functionality
2352    has changed.
2353    
2354    ----------------------------------------------------------------------
2355    Name: Allen Leung
2356    Date: 2000/04/04 19:39:00 EST
2357    Tag: leunga-20000404-x86-asm
2358    Description:
2359    
2360    1.  Fixed a problem in X86 assembly.
2361    
2362        Things like
2363    
2364           jmp %eax
2365           jmp (%eax)
2366    
2367        should be output as
2368    
2369           jmp *%eax
2370           jmp *(%eax)
2371    
2372    2.  Assembly output
2373    
2374          Added a new flag
2375    
2376              "asm-indent-copies" (default to false)
2377    
2378          When this flag is on, parallel copies will be indented an extra level.
2379    
2380    ----------------------------------------------------------------------
2381    Name: Allen Leung
2382    Date: 2000/04/04 03:18:00 EST
2383    Tag: leunga-20000404-C--Moby
2384    Description:
2385    
2386        All of these fixes are related to C--, Moby, and my own optimization
2387        stuff; so they shouldn't affect SML/NJ.
2388    
2389    1.  X86
2390    
2391        Various fixes related floating point, and extensions.
2392    
2393    2.  Alpha
2394    
2395        Some extra patterns related to loads with signed/zero extension
2396        provided by Fermin.
2397    
2398    3.  Assembly
2399    
2400        When generating assembly, resolve the value of client defined constants,
2401        instead of generating symbolic values.  This is controlled by the
2402        new flag "asm-resolve-constants", which is default to true.
2403    
2404    4.  Machine Descriptions
2405    
2406        a. The precedence parser was slightly broken when parsing infixr symbols.
2407        b. The type generalizing code had the bound variables reversed, resulting
2408           in a problem during arity raising.
2409        c. Various fixes in machine descriptions.
2410    
2411    ----------------------------------------------------------------------
2412    Name: Matthias Blume
2413    Date: 2000/04/03 16:05:00 JST
2414    Tag: blume_main_v110p26p2_2
2415    Description:
2416    
2417    I eliminated coreEnv from compInfo.  Access to the "Core" structure is
2418    now done via the ordinary static environment that is context to each
2419    compilation unit.
2420    
2421    To this end, I arranged that instead of "structure Core" as "structure
2422    _Core" is bound in the pervasive environment.  Core access is done via
2423    _Core (which can never be accidentally rebound because _Core is not a
2424    legal surface-syntax symbol).
2425    
2426    The current solution is much cleaner because the core environment is
2427    now simply part of the pervasive environment which is part of every
2428    compilation unit's context anyway.  In particular, this eliminates all
2429    special-case handling that was necessary until now in order to deal
2430    with dynamic and symbolic parts of the core environment.
2431    
2432    Remaining hackery (to bind the "magic" symbol _Core) is localized in the
2433    compilation manager's bootstrap compiler (actually: in the "init group"
2434    handling).  See the comments in src/system/smlnj/init/init.cmi for
2435    more details.
2436    
2437    I also tried to track down all mentions of "Core" (as string argument
2438    to Symbol.strSymbol) in the compiler and replaced them with a
2439    reference to the new CoreSym.coreSym.  Seems cleaner since the actual
2440    name appears in one place only.
2441    
2442    Binfile and bootfile format have not changed, but the switchover from
2443    the old "init.cmi" to the new one is a bit tricky, so I supplied new
2444    bootfiles anyway.
2445    
2446    ----------------------------------------------------------------------
2447    Name: Allen Leung
2448    Date: 2000/04/02 21:17:00 EST
2449    Tag: leunga-20000402-mltree
2450    Description:
2451    
2452       1. Renamed the constructor CALL in MLTREE by popular demand.
2453       2. Added a bunch of files from my repository.  These are currently
2454          used by other non-SMLNJ backends.
2455    
2456    ----------------------------------------------------------------------
2457    Name: Allen Leung
2458    Date: 2000/03/31 21:15:00 EST
2459    Tag: leunga-20000331-aliasing
2460    Description:
2461    
2462    This update contains a rewritten (and hopefully more correct) module
2463    for extracting aliasing information from CPS.
2464    
2465       To turn on this feature:
2466    
2467            Compiler.Control.CG.memDisambiguate := true
2468    
2469       To pretty print the region information with assembly
2470    
2471           Compiler.Control.MLRISC.getFlag "asm-show-region" := true;
2472    
2473       To control how many levels of aliasing information are printed, use:
2474    
2475           Compiler.Control.MLRISC.getInt "points-to-show-level" := n
2476    
2477       The default of n is 3.
2478    
2479    ----------------------------------------------------------------------
2480    Name: David MacQueen
2481    Date: 2000/03/31 11:15:00 EST
2482    Tag: dbm-20000331-runtime_fix
2483    Description:
2484    
2485    This update contains:
2486    
2487    1. runtime/c-lib/c-libraries.c
2488       includes added in revision 1.2 caused compilation errors on hppa-hpux
2489    
2490    2. fix for bug 1556
2491       system/Basis/Implementation/NJ/internal-signals.sml
2492    
2493    ----------------------------------------------------------------------
2494    Name: Matthias Blume
2495  Date: 2000/03/31 18:00:00 JST  Date: 2000/03/31 18:00:00 JST
2496  Tag: blume_main_v110p26p2_1  Tag: blume_main_v110p26p2_1
2497  Description:  Description:
# Line 67  Line 2545 
2545     (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
2546     used).     used).
2547    
2548     This was done to accomodate the new "make" and "shell" tools which     This was done to accommodate the new "make" and "shell" tools which
2549     facilitate fairly seemless hookup to portions of code managed using     facilitate fairly seamless hookup to portions of code managed using
2550     Makefiles or Shell scripts.     Makefiles or Shell scripts.
2551    
2552     There are no classes "shared" or "private" anymore.  Instead, the     There are no classes "shared" or "private" anymore.  Instead, the
# Line 80  Line 2558 
2558    
2559     All existing tools are described in the CM manual.     All existing tools are described in the CM manual.
2560    
2561     - Slightly better error handling.  (CM now surpresses many followup     - Slightly better error handling.  (CM now suppresses many followup
2562     error messages that tended to be more annoying than helpful.)     error messages that tended to be more annoying than helpful.)
2563    
2564  2. Major changes to the compiler's static environment data structures.  2. Major changes to the compiler's static environment data structures.
# Line 214  Line 2692 
2692    
2693       I've changed andl to testl in the floating point test sequence       I've changed andl to testl in the floating point test sequence
2694       whenever appropriate.  The Intel optimization guide states that       whenever appropriate.  The Intel optimization guide states that
2695       testl is perferable to andl.       testl is preferable to andl.
2696    
2697  7. RA (x86 only)  7. RA (x86 only)
2698    
# Line 396  Line 2874 
2874    
2875  1. Tools.registerStdShellCmdTool (from smlnj/cm/tool.cm) takes an  1. Tools.registerStdShellCmdTool (from smlnj/cm/tool.cm) takes an
2876  additional argument called "template" which is an optional string that  additional argument called "template" which is an optional string that
2877  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
2878  explanation.  explanation.
2879    
2880  2. A special-purpose tool can be "regisitered" by simply dropping the  2. A special-purpose tool can be "registered" by simply dropping the
2881  corresponding <...>-tool.cm (and/or <...>-ext.cm) into the same  corresponding <...>-tool.cm (and/or <...>-ext.cm) into the same
2882  directory where the .cm file lives that uses this tool.  (The  directory where the .cm file lives that uses this tool.  (The
2883  behavior/misfeature until now was to look for the tool description  behavior/misfeature until now was to look for the tool description
# Line 443  Line 2921 
2921  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
2922  <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,
2923  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
2924  perhaps got accidentially killed).  In this case, fixpt will quickly  perhaps got accidentally killed).  In this case, fixpt will quickly
2925  move through what exists before continuing where it left off earlier,  move through what exists before continuing where it left off earlier,
2926  and, thus, saves a lot of time.  and, thus, saves a lot of time.
2927    
# Line 493  Line 2971 
2971    it from that remote directory.    it from that remote directory.
2972    This should simplify installation further:  For machines that have    This should simplify installation further:  For machines that have
2973    access to the internet, just fetch <version>-config.tgz, unpack it,    access to the internet, just fetch <version>-config.tgz, unpack it,
2974    edit config/targets, and go (run config/install.sh).  The scipt will    edit config/targets, and go (run config/install.sh).  The script will
2975    fetch everything else that it might need all by itself.    fetch everything else that it might need all by itself.
2976    
2977    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.588  
changed lines
  Added in v.876

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