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

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