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 777, Fri Jan 12 12:17:38 2001 UTC revision 988, Wed Nov 21 21:37:47 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/11/21 16:35:00 EST
18    Tag: blume-20011121-foot-in-mouth
19    Description:
20    
21    Removed the "Release_110_37" tag because of a serious bug.
22    This will be re-tagged once the bug is fixed.
23    
24    ----------------------------------------------------------------------
25    Name: Matthias Blume
26    Date: 2001/11/21 16:14:00 EST
27    Tag: blume-20011121-forgottenfile
28    Description:
29    
30    Forgot to add a file.  (Just a .tex-file -- part of
31    the CM manual source.)
32    
33    ----------------------------------------------------------------------
34    Name: Matthias Blume
35    Date: 2001/11/21 16:10:00 EST
36    Tag: blume-20011121-invalid_110_37
37    Description:
38    
39    Note: I removed the original tag "Release_110_37" from this commit
40          because we found a serious bug in all non-x86 backends.
41          - Matthias
42    
43    1. Modifications to the SML/NJ code generator and to the runtime system
44       so that code object name strings are directly inserted into code
45       objects at code generation time.  The only business the runtime system
46       has with this is now to read the name strings on occasions.
47       (The encoding of the name string has also changed somewhat.)
48    
49    2. CM now implements a simple "set calculus" for specifying export lists.
50       In particular, it is now possible to refer to the export lists of
51       other libraries/groups/sources and form unions as well as differences.
52       See the latest CM manual for details.
53    
54    3. An separate notion of "proxy" libraries has again be eliminated from
55       CM's model.  (Proxy libraries are now simply a special case of using
56       the export list calculus.)
57    
58    4. Some of the existing libraries now take advantage of the new set
59       calculus.
60       (Notice that not all libraries have been converted because some
61       of the existing .cm-files are supposed to be backward compatible
62       with 110.0.x.)
63    
64    5. Some cleanup in stand-alone programs.  (Don't use "exnMessage" -- use
65       "General.exnMessage"!  The former relies on a certain hook to be
66       initialized, and that often does not happen in the stand-alone case.)
67    
68    ----------------------------------------------------------------------
69    Name: Lal George
70    Date: 2001/11/21  13:56:18 EST
71    Tag: george-2001121-pseudo-ops
72    Description:
73    
74      Implemented a complete redesign of MLRISC pseudo-ops. Now there
75      ought to never be any question of incompatabilities with
76      pseudo-op syntax expected by host assemblers.
77    
78      For now, only modules supporting GAS syntax are implemented
79      but more should follow, such as MASM, and vendor assembler
80      syntax, e.g. IBM as, Sun as, etc.
81    
82    ----------------------------------------------------------------------
83    Name: Matthias Blume
84    Date: 2001/11/14 11:52:00 EST
85    Tag: blume-20011114-srcname
86    Description:
87    
88    1. Routed the name of the current source file to mlriscgen where it
89       should be directly emitted into the code object.  (This last part
90       is yet to be done.)
91    
92    2. Some cleanup of the pgraph code to make it match the proposal that
93       I put out the other day.  (The proposal notwithstanding, things are
94       still in flux here.)
95    
96    ----------------------------------------------------------------------
97    Name: Lal George
98    Date: 2001/11/14 09:44:04 EST
99    Tag:
100    Description:
101    
102      Fix for a backpatching bug reported by Allen.
103    
104      Because the boundary between short and long span-dependent
105      instructions is +/- 128, there are an astounding number of
106      span-dependent instructions whose size is over estimated.
107    
108      Allen came up with the idea of letting the size of span
109      dependent instructions be non-monotonic, for a maxIter
110      number of times, after which the size must be monotonically
111      increasing.
112    
113      This table shows the number of span-dependent instructions
114      whose size was over-estimated as a function of maxIter, for the
115      file Parse/parse/ml.grm.sml:
116    
117         maxIter            # of instructions:
118            10                      687
119            20                      438
120            30                      198
121            40                        0
122    
123      In compiling the compiler, there is no significant difference in
124      compilation speed between maxIter=10 and maxIter=40. Actually,
125      my measurements showed that maxIter=40 was a tad faster than
126      maxIter=10! Also 96% of the  files in the compiler reach a fix
127      point within 13 iterations, so fixing maxIter at 40, while high,
128      is okay.
129    
130    ----------------------------------------------------------------------
131    Name: Matthias Blume
132    Date: 2001/10/31 15:25:00 EST
133    Tag: blume-20011031-pgraph
134    Description:
135    
136    CKIT:
137    * Changed the "Function" constructor of type Ast.ctype to carry optional
138      argument identifiers.
139    * Changed the return type of TypeUtil.getFunction accordingly.
140    * Type equality ignores the argument names.
141    * TypeUtil.composite tries to preserve argument names but gives up quickly
142      if there is a mismatch.
143    
144    installation script:
145    * attempts to use "curl" if available (unless "wget" is available as well)
146    
147    CM:
148    * has an experimental implementation of "portable graphs" which I will
149      soon propose as an implementation-independent library format
150    * there are also new libraries $/pgraph.cm and $/pgraph-util.cm
151    
152    NLFFI-LIB:
153    * some cleanup (all cosmetic)
154    
155    NLFFIGEN:
156    * temporarily disabled the mechanism that suppresses ML output for
157      C definitions whose identifiers start with an underscore character
158    * generate val bindings for enum constants
159    * user can request that only one style (light or heavy) is being used;
160      default is to use both (command-line arguments: -heavy and -light)
161    * fixed bug in handling of function types involving incomplete pointers
162    * generate ML entry points that take record arguments (i.e., using
163      named arguments) for C functions that have a prototype with named
164      arguments
165      (see changes to CKIT)
166    
167    ----------------------------------------------------------------------
168    Name: Allen Leung
169    Date: 2001/10/27 20:34:00 EDT
170    Tag: leunga-20011027-x86-fast-fp-call
171    Description:
172    
173       Fixed the bug described in blume-20010920-slowfp.
174    
175       The fix involves
176          1. generating FCOPYs in FSTP in ia32-svid
177          2. marking a CALL with the appropriate annotation
178    
179    ----------------------------------------------------------------------
180    Name: Matthias Blume
181    Date: 2001/10/16 11:32:00 EDT
182    Tag: blume-20011016-netbsd
183    Description:
184    
185    Underscore patch from Chris Richards (fixing problem with compiling
186    runtime system under recent NetBSD).
187    
188    ----------------------------------------------------------------------
189    Name: Allen Leung
190    Date: 2001/10/12 17:18:32 EDT 2001
191    Tag: leung-20011012-x86-printflowgraph
192    Description:
193    
194    X86RA now uses a valid (instead of dummy) PrintFlowgraph module.
195    
196    ----------------------------------------------------------------------
197    Name: Lal George
198    Date: 2001/10/11 23:51:34 EDT
199    Tag: george-20011011-too-many-instrs
200    Description:
201    
202    The representation of a program point never expected to see more
203    than 65536 instructions in a basic block!
204    
205    ----------------------------------------------------------------------
206    Name: Lal George
207    Date: 2001/10/09 09:41:37 EDT
208    Tag: george-20011008-mlrisc-labels
209    Description:
210    
211    Changed the machine description files to support printing of
212    local and global labels in assembly code, based on host assembler
213    conventions.
214    
215    ----------------------------------------------------------------------
216    Name: Matthias Blume
217    Date: 2001/09/25 15:25:00 EDT
218    Tag: blume-20010925-exninfo
219    Description:
220    
221    I provided a non-hook implementation of exnName (at the toplevel) and
222    made the "dummy" implementation of exnMessage (at the toplevel) more
223    useful: if nothing gets "hooked in", then at least you are going to
224    see the exception name and a message indicating why you don't see more.
225    
226    [For the time being, programs that need exnMessage and want to use
227    ml-build should either use General.exnMessage (strongly recommended) or
228    refer to structure General at some other point so that CM sees a
229    static dependency.]
230    
231    [Similar remarks go for "print" and "use":  If you want to use their
232    functionality in stand-alone programs generated by ml-build, then use
233    TextIO.output and Backend.Interact.useFile (from $smlnj/compiler.cm).]
234    
235    ----------------------------------------------------------------------
236    Name: Matthias Blume
237    Date: 2001/09/20 17:28:00 EDT
238    Tag: blume-20010920-slowfp
239    Description:
240    
241    Allen says that x86-fast-fp is not safe yet, so I turned it off again...
242    
243    ----------------------------------------------------------------------
244    Name: Matthias Blume
245    Date: 2001/09/20 17:20:00 EDT
246    Tag: blume-20010920-canonicalpaths
247    Description:
248    
249    0. Updated the BOOT file (something that I forgot to do earlier).
250    
251    1. Small internal change to CM so that it avoids "/../" in filenames
252       as much as possible (but only where it is safe).
253    
254    2. Changed config/_run-sml (resulting in a changed bin/.run-sml) so
255       that arguments that contain delimiters are passed through correctly.
256       This change also means that all "special" arguments of the form
257       @SMLxxx... must come first.
258    
259    3. Changed install script to put relative anchor names for tool commands
260       into pathconfig.
261    
262    ----------------------------------------------------------------------
263    Name: Matthias Blume
264    >>>>>>> 1.169
265    Date: 2001/09/18 15:35:00 EDT
266    Tag: blume-20010918-readme11036
267    Description:
268    
269    Added README files.
270    
271    ----------------------------------------------------------------------
272    Name: Matthias Blume
273    Date: 2001/09/18 11:45:00 EDT
274    Tag: Release_110_36 (retag)
275    Description:
276    
277    Fixed mistake in config/preloads. Retagged as 110.36.
278    
279    ----------------------------------------------------------------------
280    Name: Matthias Blume
281    Date: 2001/09/18 09:40:00 EDT
282    Tag: Release_110_36_orig (tag changed)
283    Description:
284    
285    New version (110.36).  New bootfiles.
286    
287    ----------------------------------------------------------------------
288    Name: Matthias Blume
289    Date: 2001/09/14 16:15:00 EDT
290    Tag: blume-20010914-x86fastfp
291    Description:
292    
293    John committed some changes that Allen made, in particular a (hopefully)
294    correctly working version of the x86-fp module.
295    
296    I changed the default setting of the Control.MLRISC.getFlag "x86-fast-fp"
297    flag to "true".  Everything seems to compile to a fixpoint ok, and
298    "mandelbrot" speeds up by about 15%.
299    
300    ----------------------------------------------------------------------
301    Name: Matthias Blume
302    Date: 2001/09/13 11:20:00 EDT
303    Tag: blume-20010913-minimal
304    Description:
305    
306    1. Stefan Monnier's patch to fix a miscompilation problem that
307       was brought to light by John Reppy's work on Moby.
308    
309    2. Implemented a minimal "structure Compiler" that contains just
310       "version" and "architecture".  The minimal version will be
311       available when the full version is not.  This is for backward-
312       compatibility with code that wants to test Compiler.version.
313    
314    ----------------------------------------------------------------------
315    Name: Matthias Blume
316    Date: 2001/08/28 14:03:00 EDT
317    Tag: blume-20010828-ml-lex
318    Description:
319    
320    Fix for bug 1581, received from Neophytos Michael.
321    
322    ----------------------------------------------------------------------
323    Name: Matthias Blume
324    Date: 2001/08/27 11:20:00 EDT
325    Tag: blume-20010827-readme11035
326    Description:
327    
328    Fleshed out the README file for 110.35.
329    
330    ----------------------------------------------------------------------
331    Name: Matthias Blume
332    Date: 2001/08/24 17:10:00 EDT
333    Tag: Release_110_35
334    Description:
335    
336    New version number (110.35).  New bootfiles.
337    
338    ----------------------------------------------------------------------
339    Name: Lal George
340    Date: 2001/08/24 13:47:18 EDT 2001
341    Tag: george-20010824-MLRISC-graphs
342    Description:
343    
344     removed clusters from MLRISC completely and replaced with graphs.
345    
346    ----------------------------------------------------------------------
347    Name: Matthias Blume
348    Date: 2001/08/23 17:50:00 EDT
349    Tag: blume-20010823-toplevel
350    Description:
351    
352    - some reorganization of the code that implements various kinds of
353      environments in the compiler (static, dynamic, symbolic, combined)
354    - re-implemented the EnvRef module so that evalStream works properly
355      (if the stream contains references to "use", "CM.make", etc.)
356    - cleaned up evalloop.sml and interact.sml (but they need more cleaning)
357    
358    ----------------------------------------------------------------------
359    Name: Matthias Blume
360    Date: 2001/08/20 15:50 EDT
361    Tag: blume20010820-slipup
362    Description:
363    
364    I forgot to commit a few files.  Here they are...
365    
366    ----------------------------------------------------------------------
367    Name: Matthias Blume
368    Date: 2001/08/20 15:35:00 EDT
369    Tag: blume-20010820-debugprof
370    Description:
371    
372    !!!! NEW BOOTFILES !!!!
373    
374    This is another round of reorganizing the compiler sources.  This
375    time the main goal was to factor out all the "instrumentation"
376    passes (for profiling and backtracing) into their own library.
377    The difficulty was to do it in such a way that it does not depend
378    on elaborate.cm but only on elabdata.cm.
379    
380    Therefore there have been further changes to both elaborate.cm and
381    elabdata.cm -- more "generic" things have been moved from the former
382    to the latter.  As a result, I was forced to split the assignment
383    of numbers indicating "primtyc"s into two portions: SML-generic and
384    SML/NJ-specific.  Since it would have been awkward to maintain,
385    I bit the bullet and actually _changed_ the mapping between these
386    numbers and primtycs.  The bottom line of this is that you need
387    a new set of bin- and bootfiles.
388    
389    I have built new bootfiles for all architectures, so doing a fresh
390    checkout and config/install.sh should be all you need.
391    
392    The newly created library's name is
393    
394        $smlnj/viscomp/debugprof.cm
395    
396    and its sources live under
397    
398        src/compiler/DebugProf
399    
400    ----------------------------------------------------------------------
401    Name: Matthias Blume
402    Date: 2001/08/15 17:15:00 EDT
403    Tag: blume-20010815-compreorg
404    Description:
405    
406    This is a first cut at reorganizing the CM libraries that make up the
407    core of the compiler.  The idea is to separate out pieces that could
408    be used independently by tools, e.g., the parser, the typechecker, etc.
409    
410    The current status is a step in this direction, but it is not quite
411    satisfactory yet.  Expect more changes in the future.
412    
413    Here is the current (new) organization...
414    
415        What used to be $smlnj/viscomp/core.cm is now divided into
416        six CM libraries:
417    
418             $smlnj/viscomp/basics.cm
419                           /parser.cm
420                           /elabdata.cm
421                           /elaborate.cm
422                           /execute.cm
423                           /core.cm
424    
425        The CM files for these libraries live under src/system/smlnj/viscomp.
426        All these libraries are proxy libraries that contain precisely
427        one CM library component.  Here are the locations of the components
428        (all within the src/compiler tree):
429    
430             Basics/basics.cm
431             Parse/parser.cm
432             ElabData/elabdata.cm
433             Elaborator/elaborate.cm
434             Execution/execute.cm
435             core.cm
436    
437         [This organization is the same that has been used already
438         for a while for the architecture-specific parts of the visible
439         compiler and for the old version of core.cm.]
440    
441         As you will notice, many source files have been moved from their
442         respective original locations to a new home in one of the above
443         subtrees.
444    
445         The division of labor between the new libraries is the following:
446    
447             basics.cm:
448                - Simple, basic definitions that pertain to many (or all) of
449                  the other libraries.
450             parser.cm:
451                - The SML parser, producing output of type Ast.dec.
452                - The type family for Ast is also defined and exported here.
453             elabdata.cm:
454                - The datatypes that describe input and output of the elaborator.
455                  This includes types, absyn, and static environments.
456             elaborator.cm:
457                - The SML/NJ type checker and elaborator.
458                  This maps an Ast.dec (with a given static environment) to
459                  an Absyn.dec (with a new static environment).
460                - This libraries implements certain modules that used to be
461                  structures as functors (to remove dependencies on FLINT).
462             execute.cm:
463                - Everything having to do with executing binary code objects.
464                - Dynamic environments.
465             core.cm:
466                - SML/NJ-specific instantiations of the elaborator and MLRISC.
467                - Top-level modules.
468                - FLINT (this should eventually become its own library)
469    
470    Notes:
471    
472    I am not 100% happy with the way I separated the elaborator (and its
473    data structures) from FLINT.  Two instances of the same problem:
474    
475        1. Data structures contain certain fields that carry FLINT-specific
476           information.  I hacked around this using exn and the property list
477           module from smlnj-lib.  But the fact that there are middle-end
478           specific fields around at all is a bit annoying.
479    
480        2. The elaborator calculates certain FLINT-related information.  I tried
481           to make this as abstract as I could using functorization, but, again,
482           the fact that the elaborator has to perform calculations on behalf
483           of the middle-end at all is not nice.
484    
485        3. Having to used exn and property lists is unfortunate because it
486           weakens type checking.  The other alternative (parameterizing
487           nearly *everything*) is not appealing, though.
488    
489    I removed the "rebinding =" warning hack because due to the new organization
490    it was awkward to maintain it.  As a result, the compiler now issues some of
491    these warnings when compiling init.cmi during bootstrap compilation. On
492    the plus side, you also get a warning when you do, for example:
493       val op = = Int32.+
494    which was not the case up to now.
495    
496    I placed "assign" and "deref" into the _Core structure so that the
497    code that deals with the "lazy" keyword can find them there.  This
498    removes the need for having access to the primitive environment
499    during elaboration.
500    
501    ----------------------------------------------------------------------
502    Name: Matthias Blume
503    Date: 2001/08/13
504    Tag: blume-20010813-closures
505    Description:
506    
507    This fix was sent to us by Zhong Shao.  It is supposed to improve the
508    performance of certain loops by avoiding needless closure allocation.
509    
510    ----------------------------------------------------------------------
511    Name: Lal George
512    Date: 2001/07/31 10:03:23 EDT 2001
513    Tag: george-20010731-x86-fmalloc
514    Description: Fixed bug in x86 calls
515    
516        There was a bug where call instructions would mysteriously
517        vanish. The call instruction had to be one that returned
518        a floating point value.
519    
520    ----------------------------------------------------------------------
521    Name: Lal George
522    Date: 2001/07/19 16:36:29 EDT 2001
523    Tag: george-20010719-simple-cells
524    Description:
525    
526    I have dramatically simplified the interface for CELLS in MLRISC.
527    
528    In summary, the cells interface is broken up into three parts:
529    
530      1. CellsBasis : CELLS_BASIS
531    
532            CellsBasis is a top level structure and common for all
533            architectures.  it contains the definitions of basic datatypes
534            and utility  functions over these types.
535    
536      2. functor Cells() : CELLS
537    
538            Cells generates an interface for CELLS that incorporates the
539            specific resources on the target architecture, such as the
540            presence of special register classes, their number and size,
541            and various useful substructures.
542    
543      3. <ARCH>CELLS
544    
545            e.g. SparcCells: SPARCCELLS
546    
547            <ARCH>CELLS usually contains additional bindings for special
548            registers  on the architecture, such as:
549    
550                    val r0 : cell           (* register zero *)
551                    val y : cell            (* Y register *)
552                    val psr : cell          (* processor status register *)
553                    ...
554    
555            The structure returned by applying the Cells functor is opened
556            in this interface.
557    
558    The main implication of all this is that the datatypes for cells is
559    split between CellsBasis and CELLS -- a fairly simple change for user
560    code.
561    
562    In the old scheme the CELLS interface had a definitional binding of
563    the form:
564    
565            signature CELLS = sig
566    
567               structure CellsBasis = CellsBasis
568    
569               ...
570    
571            end
572    
573    With all the sharing constraints that goes on in MLRISC, this old
574    design  quickly leads to errors such as:
575    
576            "structure definition spec inside of sharing ... "
577    
578    
579    and appears to require an unacceptable amount of sharing and where
580    constraint hackery.
581    
582    I think this error message (the interaction of definitional specs and
583    sharing) requires more explanation on our web page.
584    
585    ----------------------------------------------------------------------
586    Name: Matthias Blume
587    Date: 2001/07/19 15:00:00 EDT
588    Tag: blume-20010719-libreorg
589    Description:
590    
591    This update puts together a fairly extensive but straightforward change
592    to the way the libraries that implement the interactive system are
593    organized:
594    
595       The biggest change is the elimination of structure Compiler.  As a
596       replacement for this structure, there is now a CM library
597       (known as $smlnj/compiler.cm or $smlnj/compiler/current.cm)
598       that exports all the substructures of the original structure Compiler
599       directly.  So instead of saying Compiler.Foo.bar one now simply
600       says Foo.bar.  (The CM libraries actually export a collection of
601       structures that is richer than the collection of substructures of
602       structure Compiler.)
603    
604       To make the transition smooth, there is a separate library called
605       $smlnj/compiler/compiler.cm which puts together and exports the
606       original structure Compiler (or at least something very close to it).
607    
608       There are five members of the original structure Compiler
609       that are not exported directly but which instead became members
610       of a new structure Backend (described by signature BACKEND).  These are:
611       structure Profile (: PROFILE), structure Compile (: COMPILE), structure
612       Interact (: INTERACT), structure Machine (: MACHINE), and val
613       architecture (: string).
614    
615       Structure Compiler.Version has become structure CompilerVersion.
616    
617       Cross-compilers for alpha32, hppa, ppc, sparc, and x86 are provided
618       by $smlnj/compiler/<arch>.cm where <arch> is alpha32, hppa, ppc, sparc,
619       or x86, respectively.
620       Each of these exports the same frontend structures that
621       $smlnj/compiler.cm exports.  But they do not have a structure Backend
622       and instead export some structure <Arch>Backend where <Arch> is Alpha32,
623       Hppa, PPC, Sparc, or X86, respectively.
624    
625       Library $smlnj/compiler/all.cm exports the union of the exports of
626       $smlnj/compiler/<arch>.cm
627    
628       There are no structures <Arch>Compiler anymore, use
629       $smlnj/compiler/<arch>.cm instead.
630    
631       Library host-compiler-0.cm is gone.  Instead, the internal library
632       that instantiates CM is now called cm0.cm.  Selection of the host
633       compiler (backend) is no longer done here but. (Responsibility for it
634       now lies with $smlnj/compiler/current.cm.  This seems to be more
635       logical.)
636    
637       Many individual files have been moved or renamed.  Some files have
638       been split into multiple files, and some "dead" files have been deleted.
639    
640    Aside from these changes to library organization, there are also changes
641    to the way the code itself is organized:
642    
643       Structure Binfile has been re-implemented in such a way that it no
644       longer needs any knowledge of the compiler.  It exclusively deals
645       with the details of binfile layout.  It no longer invokes the
646       compiler (for the purpose of creating new prospective binfile
647       content), and it no longer has any knowledge of how to interpret
648       pickles.
649    
650       Structure Compile (: COMPILE) has been stripped down to the bare
651       essentials of compilation.  It no longer deals with linking/execution.
652       The interface has been cleaned up considerably.
653    
654       Utility routines for dealing with linking and execution have been
655       moved into their own substructures.
656    
657       (The ultimate goal of these changes is to provide a light-weight
658       binfile loader/linker (at least for, e.g., stable libraries) that
659       does not require CM or the compiler to be present.)
660    
661    CM documentation has been updated to reflect the changes to library
662    organization.
663    
664    ----------------------------------------------------------------------
665    Name: Matthias Blume
666    Date: 2001/07/10 17:30:00 EDT
667    Tag: Release_110_34
668    Description:
669    
670    Minor tweak to 110.34 (re-tagged):
671    
672      - README.html file added to CVS repository
673      - runtime compiles properly under FreeBSD 3.X and 4.X
674    
675    ----------------------------------------------------------------------
676    Name: Matthias Blume
677    Date: 2001/07/10 17:30:00 EDT
678    Tag: Release_110_34
679    Description:
680    
681    New version number (110.34). New bootfiles.
682    
683    ----------------------------------------------------------------------
684    Name: Matthias Blume
685    Date: 2001/07/09 16:00:00 EDT
686    Tag: blume-20010709-more-varargs
687    Description:
688    
689    I changed the handling of varargs in ml-nlffigen again:
690    The ellipsis ... will now simply be ignored (with an accompanying warning).
691    
692    The immediate effect is that you can actually call a varargs function
693    from ML -- but you can't actually supply any arguments beyond the ones
694    specified explicitly.  (For example, you can call printf with its format
695    string, but you cannot pass additional arguments.)
696    
697    This behavior is only marginally more useful than the one before, but
698    it has the advantage that a function or, more importantly, a function
699    type never gets dropped on the floor, thus avoiding follow-up problems with
700    other types that refer to the offending one.
701    
702    ----------------------------------------------------------------------
703    Name: Matthias Blume
704    Date: 2001/07/09 11:25:00 EDT
705    Tag: blume-20010709-varargs
706    Description:
707    
708    1. ckit-lib.cm now exports structure Error
709    2. ml-nlffigen reports occurences of "..." (i.e., varargs function types)
710       with a warning accompanied by a source location.  Moreover, it
711       merely skips the offending function or type and proceeds with the
712       rest of its work.u  As a result, one can safely feed C code containing
713       "..." to ml-nlffigen.
714    3. There are some internal improvements to CM, providing slightly
715       more general string substitutions in the tools subsystem.
716    
717    ----------------------------------------------------------------------
718    Name: Matthias Blume
719    Date: 2001/06/27 15:10:00 EDT
720    Tag: blume-20010627-concur
721    Description:
722    
723    Fixed a small bug in CM's handling of parallel compilation.
724    (You could observe the bug by Control-C-interrupting an ordinary
725    CMB.make or CM.stabilize and then attaching some compile servers.
726    The result was that all of a sudden the previously interrupted
727    compilation would continue on its own.  This was because of
728    an over-optimization: CM did not bother to clean out certain queues
729    when no servers were attached "anyway", resulting in the contents
730    of these queues to grab control when new servers did get attached.)
731    
732    There is also another minor update to the CM manual.
733    
734    ----------------------------------------------------------------------
735    Name: Matthias Blume
736    Date: 2001/06/26 16:15:00 EDT
737    Tag: blume-20010626-cmdoc
738    Description:
739    
740    Minor typo fixed in CM manual (syntax diagram for libraries).
741    
742    ----------------------------------------------------------------------
743    Name: Matthias Blume
744    Date: 2001/06/25 22:55:00 EDT
745    Tag: blume-20010625-x86pc
746    Description:
747    
748    Fixed a nasty bug in the X86 assembly code that caused signal
749    handlers to fail (crash) randomly.
750    
751    ----------------------------------------------------------------------
752    Name: Matthias Blume
753    Date: 2001/06/25 12:05:00 EDT
754    Tag: blume-20010625-nlffigen
755    Description:
756    
757    This update fixes a number of minor bugs in ml-nlffigen as reported by
758    Nick Carter <nbc@andrew.cmu.edu>.
759    
760      1. Silly but ok typedefs of the form "typedef void myvoid;" are now accepted.
761      2. Default names for generated files are now derived from the name of
762         the C file *without its directory*.  In particular, this causes generated
763         files to be placed locally even if the C file is in some system directory.
764      3. Default names for generated signatures and structures are also derived
765         from the C file name without its directory.  This avoids silly things
766         like "structure GL/GL".
767         (Other silly names are still possible because ml-nlffigen does not do
768          a thorough check of whether generated names are legal ML identifiers.
769          When in doubt, use command line arguments to force particular names.)
770    
771    ----------------------------------------------------------------------
772    Name: Matthias Blume
773    Date: 2001/06/21 12:25:00 EDT
774    Tag: blume-20010621-eXene
775    Description:
776    
777    eXene now compiles and (sort of) works again.
778    
779    The library name (for version > 110.33) is $/eXene.cm.
780    
781    I also added an new example in src/eXene/examples/nbody.  See the
782    README file there for details.
783    
784    ----------------------------------------------------------------------
785    Name: Matthias Blume
786    Date: 2001/06/20 16:40:00 EDT
787    Tag: blume-20010620-cml
788    Description:
789    
790    CML now compiles and works again.
791    
792    Libraries (for version > 110.33):
793    
794      $cml/cml.cm            Main CML library.
795      $cml/basis.cm          CML's version of $/basis.cm.
796      $cml/cml-internal.cm   Internal helper library.
797      $cml/core-cml.cm       Internal helper library.
798      $cml-lib/trace-cml.cm  Tracing facility.
799      $cml-lib/smlnj-lib.cm  CML's version of $/smlnj-lib.cm
800    
801    The installer (config/install.sh) has been taught how to properly
802    install this stuff.
803    
804    ----------------------------------------------------------------------
805    Name: Matthias Blume
806    Date: 2001/06/19 17:55:00 EDT
807    Tag: blume-20010619-instantiate
808    Description:
809    
810    This un-breaks the fix for bug 1432.
811    (The bug was originally fixed in 110.9 but I broke it again some
812    time after that.)
813    
814    ----------------------------------------------------------------------
815    Name: Matthias Blume
816    Date: 2001/06/19 17:25:00 EDT
817    Tag: blume-20010619-signals
818    Description:
819    
820    This should (hopefully) fix the long-standing signal handling bug.
821    (The runtime system was constructing a continuation record with an
822    incorrect descriptor which would cause the GC to drop data on the floor...)
823    
824    ----------------------------------------------------------------------
825    Name: Matthias Blume
826    Date: 2001/06/15 15:05:00 EDT
827    Tag: blume-20010615-moresparc
828    Description:
829    
830    Here is a short late-hour update related to Sparc c-calls:
831    
832     -- made handling of double-word arguments a bit smarter
833    
834     -- instruction selection phase tries to collapse certain clumsily
835        constructed ML-Trees; typical example:
836    
837            ADD(ty,ADD(_,e,LI d1),LI d2)  ->  ADD(ty,e,LI(d1+d2))
838    
839        This currently has no further impact on SML/NJ since mlriscGen does
840        not seem to generate such patterns in the first place, and c-calls
841        (which did generate them in the beginning) has meanwhile been fixed
842        so as to avoid them as well.
843    
844    ----------------------------------------------------------------------
845    Name: Matthias Blume
846    Date: 2001/06/15 15:05:00 EDT
847    Tag: blume-20010615-sparc
848    Description:
849    
850    The purpose of this update is to provide an implementation of NLFFI
851    on Sparc machines.
852    
853    Here are the changes in detail:
854    
855       * src/MLRISC/sparc/c-calls/sparc-c-calls.sml is a new file containing
856       the Sparc implementation of the c-calls API.
857       * The Sparc backend of SML/NJ has been modified to uniformely use %fp
858       for accessing the ML frame.  Thus, we have a real frame pointer and
859       can freely modify %sp without need for an omit-frame-ptr phase.
860       The vfp logic in src/compiler/CodeGen/* has been changed to accomodate
861       this case.
862       * ml-nlffigen has been taught to produce code for different architectures
863       and calling conventions.
864       * In a way similar to what was done in the x86 case, the Sparc
865       backend uses its own specific extension to mltree.  (For example,
866       it needs to be able to generate UNIMP instructions which are part
867       of the calling convention.)
868       * ml-nlffi-lib was reorganized to make it more modular (in particular,
869       to make it easier to plug in new machine- and os-dependent parts).
870    
871    There are some other fairly unrelated bug fixes and cleanups as well:
872    
873       * I further hacked the .cm files for MLRISC tools (like MDLGen) so
874       that they properly share their libraries with existing SML/NJ libraries.
875       * I fixed a minor cosmetic bug in CM, supressing certain spurious
876       follow-up error messages.
877       * Updates to CM/CMB documentation.
878    
879    TODO items:
880    
881       * MLRISC should use a different register as its asmTemp on the Sparc.
882         (The current %o2 is a really bad choice because it is part of the
883         calling conventions, so things might interfere in unexpected ways.)
884    
885    ----------------------------------------------------------------------
886    Name: Matthias Blume
887    Date: 2001/06/07
888    Tag: blume-20010607-calls
889    Description:
890    
891    A number of internal changes related to C calls and calling conventions:
892    
893    1. ML-Tree CALL statements now carry a "pops" field.  It indicates the
894       number of bytes popped implicitly (by the callee).  In most cases
895       this field is 0 but on x86/win32 it is some non-zero value.  This
896       is information provided for the benefit of the "omit-frameptr" pass.
897    2. The CALL instruction on the x86 carries a similar "pops" field.
898       The instruction selection phase copies its value from the ML-Tree
899       CALL statement.
900    3. On all other architectures, the instruction selection phase checks
901       whether "pops=0" and complains if not.
902    4. The c-calls implementation for x86 now accepts two calling conventions:
903       "ccall" and "stdcall".  When "ccall" is selected, the caller cleans
904       up after the call and pops is set to 0.  For "stdcall", the caller
905       does nothing, leaving the cleanup to the callee; pops is set to
906       the number of bytes that were pushed onto the stack.
907    5. The cproto decoder (compiler/Semant/types/cproto.sml) now can
908       distinguish between "ccall" and "stdcall".
909    6. The UNIMP instruction has been added to the supported Sparc instruction
910       set. (This is needed for implementing the official C calling convention
911       on this architecture.)
912    7. I fixed some of the .cm files under src/MLRISC/Tools to make them
913       work with the latest CM.
914    
915    ----------------------------------------------------------------------
916    Name: Matthias Blume
917    Date: 2001/06/05 15:10:00 EDT
918    Tag: blume-20010605-cm-index
919    Description:
920    
921    0. The "lambdasplit" parameter for class "sml" in CM has been documented.
922    
923    1. CM can now generate "index files".  These are human-readable files
924       that list on a per-.cm-file basis each toplevel symbol defined or
925       imported.  The location of the index file for
926       <p>/<d>.cm is <p>/CM/INDEX/<d>.cm.
927       To enable index-file generation, set CM.Control.generate_index to true
928       or export an environment-symbol: export CM_GENERATE_INDEX=true.
929    
930       The CM manual has been updated accordingly.
931    
932    2. I made some slight modifications to the c-calls API in MLRISC.
933    
934         a) There is now a callback to support saving/restoring of
935            dedicated but caller-save registers around the actual call
936            instruction.
937         b) One can optionally specify a comment-annotation for the
938            call instruction.
939    
940    3. SML/NJ (mlriscGen.sml) uses this new API for the rawccall primop.
941       (For example, the comment annotation shows the C prototype of
942        the function being called.)
943    
944    ----------------------------------------------------------------------
945    Name: Matthias Blume
946    Date: 2001/06/01 13:30:00 EDT
947    Tag: blume-20010601-nlffi-cleanup
948    Description:
949    
950    This is mostly a cleanup of MLFFI stuff:
951    
952       - some signature files have been put into a more exposed place
953       - the ugly 'f type parameter is gone (simplifies types tremendously!)
954       - ml-nlffigen changed accordingly
955       - tutorial updated
956    
957    Other changes:
958    
959       - author's affiliation in CM manual(s) updated
960       - some more recognized keywords added to Allen's sml.sty
961    
962    ----------------------------------------------------------------------
963    Name: Matthias Blume
964    Date: 2001/05/25 15:30:00 EDT
965    Tag: blume-20010525-iptr
966    Description:
967    
968      - put the official 110.33-README (as it appears on the ftp server) under
969        CVS
970      - fixed a small bug related to incomplete pointer types in
971        ml-nlffigen
972      - small cosmetic change to the ml-nlffi-lib's "arr" type constructor
973        (it does not need the 'f type parameter)
974    
975    ----------------------------------------------------------------------
976    Name: Matthias Blume
977    Date: 2001/05/23 14:30:00 EDT
978    Tag: Release_110_33
979    Description:
980    
981    New version number (110.33).  New bootfiles.
982    
983    ----------------------------------------------------------------------
984    Name: Matthias Blume
985    Date: 2001/05/22 18:06:00 EDT
986    Tag: blume-20010522-targets
987    Description:
988    
989    Made install.sh use file config/targets.customized if it exists, falling
990    back to config/targets if it doesn't.  This way one can have a customized
991    version of the targets file without touching the "real thing", thus
992    eliminating the constant fear of accidentally checking something bogus
993    back into the CVS repository...  (File config/targets.customized must
994    not be added to the repository!)
995    
996    ----------------------------------------------------------------------
997    Name: Matthias Blume
998    Date: 2001/05/22 16:30:00 EDT
999    Tag: blume-20010522-minitut
1000    Description:
1001    
1002    1. Bug fix in ml-nlffigen; now (hopefully) correctly handling
1003       struct returns.
1004    2. Added src/ml-nlffi-lib/Doc/mini-tutorial.txt.  This is some very
1005       incomplete, preliminary documentation for NLFFI.
1006    
1007    ----------------------------------------------------------------------
1008    Name: Matthias Blume
1009    Date: 2001/05/14 11:30:00 EDT
1010    Tag: blume-20010514-script
1011    Description:
1012    
1013    Some bugs in install script fixed.
1014    
1015    In addition to that I also made a slight change to the NLFFI API:
1016    Functors generated by ml-nlffigen now take the dynamic library as a
1017    straight functor argument, not as a suspended one.  (The original
1018    functor code used to force the suspension right away anyway, so there
1019    was nothing gained by this complication of the interface.)
1020    
1021    ----------------------------------------------------------------------
1022    Name: Matthias Blume
1023    Date: 2001/05/11 14:35:00 EDT
1024    Tag: blume-20010511-ml-nlffi
1025    Description:
1026    
1027    I finally took the plunge and added my new FFI code to the main
1028    repository.  For x86-linux it is now ready for prime-time.
1029    
1030    There are two new subdirectories of "src":
1031    
1032      - ml-nlffi-lib:
1033           The utility library for programs using the FFI interface.
1034           Here is the implementation of $/c.cm and its associated low-level
1035           partners $/c-int.cm and $/memory.cm.
1036      - ml-nlffigen:
1037           A stand-alone program for generating ML glue code from C source
1038           code.
1039    
1040    Building ml-nlffigen requires $/ckit-lib.cm.
1041    
1042    The config/install.sh script has been updates to do the Right Thing
1043    (hopefully).
1044    
1045    Notice that the source tree for the C-Kit will not be put under "src"
1046    but directly under the installation root directory.  (This is the
1047    structure that currently exists on the CVS server when you check out
1048    module "sml".)  Fortunately, config/install.sh knows about this oddity.
1049    
1050    Bugs: No documentation yet.
1051    
1052    ----------------------------------------------------------------------
1053    Name: Matthias Blume
1054    Date: 2001/05/09 16:35:00 EDT
1055    Tag: blume-20010509-cpscontract
1056    Description:
1057    
1058    Fixed a bug in the accounting code in cpsopt/contract.sml.  (The
1059    wrapper/unwrapper elimination did not decrement usage counts and some
1060    dead variables got overlooked by the dead-up logic.)
1061    
1062    ----------------------------------------------------------------------
1063    Name: Lal George
1064    Date: 2001/05/08  17:26:09 EDT
1065    Tag: george-20010508-omit-frameptr
1066    Description:
1067    
1068    Changes to implement the omit-frame-pointer optimization to support
1069    raw C calls. For now, there is only support on the Intel x86, but
1070    other architectures will follow as more experience is gained with this.
1071    
1072    
1073    ----------------------------------------------------------------------
1074    Name: Matthias Blume
1075    Date: 2001/05/07 14:40:00 EDT
1076    Tag: blume-20010507-proxies
1077    Description:
1078    
1079    I made into "proxy libraries" all libraries that qualify for such a
1080    change.  (A qualifying library is a library that has another library or
1081    groups as its sole member and repeats that member's export list
1082    verbatim.  A proxy library avoids this repetition by omitting its export
1083    list, effectively inheriting the list that its (only) member exports.
1084    See the CM manual for more explanation.)
1085    The main effect is that explicit export lists for these libraries
1086    do not have to be kepts in sync, making maintenance a bit easier.
1087    
1088    I also added copyright notices to many .cm-files.
1089    
1090    Last but not least, I made a new set of bootfiles.
1091    
1092    ----------------------------------------------------------------------
1093    Name: Matthias Blume
1094    Date: 2001/05/04 17:00:00 EDT
1095    Tag: blume-20010504-cm-lsplit
1096    Description:
1097    
1098    0. John merged pending changes to $/smlnj-lib.cm
1099    
1100    1. Allen's previous change accidentally backed out of one of Lal's
1101       earlier changes.  I undid this mistake (re-introducing Lal's change).
1102    
1103    2. I used the new topOrder' function from graph-scc.sml (from $/smlnj-lib.cm)
1104       within the compiler where applicable.  There is some code simplification
1105       because of that.
1106    
1107    3. The "split" phase (in FLINT) is now part of the default list of phases.
1108       Compiler.Control.LambdaSplitting.* can be used to globally control the
1109       lambda-splitting (cross-module-inlining) engine.  In addition to that,
1110       it can now also be controlled on a per-source basis: CM has been taught
1111       a new tool parameter applicable to ML source files.
1112    
1113       - To turn lambda-splitting off completely:
1114            local open Compiler.Control.LambdaSplitting in
1115                val _ = set Off
1116            end
1117       - To make "no lambda-splitting" the global default (but allow per-source
1118         overriding); this is the initial setting:
1119            local open Compiler.Control.LambdaSplitting in
1120                val _ = set (Default NONE)
1121            end
1122       - To make "lambda-splitting with aggressiveness a" the global default
1123         (and allow per-source overriding):
1124            local open Compiler.Control.LambdaSplitting in
1125                val _ = set (Default (SOME a))
1126            end
1127    
1128       - To turn lambda-splitting off for a given ML souce file (say: a.sml)
1129         write (in the respective .cm-file):
1130            a.sml (lambdasplitting:off)
1131       - To turn lambda-splitting for a.sml on with minimal aggressiveness:
1132            a.sml (lambdasplitting:on)
1133       - To turn lambda-splitting for a.sml on with aggressiveness <a> (where
1134         <a> is a decimal non-negative integer):
1135            a.sml (lambdasplitting:<a>)
1136       - To turn lambda-splitting for a.sml on with maximal aggressiveness:
1137            a.sml (lambdasplitting:infinity)
1138       - To use the global default for a.sml:
1139            a.sml (lambdasplitting:default)
1140         or simply
1141            a.sml
1142    
1143    ----------------------------------------------------------------------
1144    Name: Allen Leung
1145    Date: 2001/05/04 01:57:00 EDT
1146    Tag: leunga-20010504-sync
1147    Description:
1148    
1149      MLRISC features.
1150    
1151      1. Fix to CMPXCHG instructions.
1152      2. Changed RA interface to allow annotations in callbacks.
1153      3. Added a new method to the stream interface to allow annotations updates.
1154    
1155    ----------------------------------------------------------------------
1156    Name: Matthias Blume
1157    Date: 2001/05/01 11:45:00 EDT
1158    Tag: blume-20010501-pcedittmp
1159    Description:
1160    
1161    Changed install.sh to use the current working directory instead of
1162    /usr/tmp for a temporary file (pcedittmp).  The previous choice
1163    of /usr/tmp caused trouble with MacOS X because of file premission
1164    problems.
1165    
1166    ----------------------------------------------------------------------
1167    Name: Matthias Blume
1168    Date: 2001/04/20 11:10:00 EDT
1169    Tag: blume-20010420-inMLflag
1170    Description:
1171    
1172     - added vp_limitPtrMask to vproc-state.h
1173       (for use by the raw-C-calls mechanism to implement proper interrupt
1174        handling)
1175     - made the ML compiler aware of various data-structure offsets so it
1176       can generate code for accessing the vp_inML flag and vp_limitPtrMask
1177     - tweaked mlriscGen.sml to have it emit interrupt-handling code for
1178       raw C-calls
1179    
1180    ----------------------------------------------------------------------
1181    Name: Lal George
1182    Date: 2001/04/20 09:15:28 EDT
1183    Tag: george-20010420-macosX
1184    Description:
1185    
1186     - Changes to port to Mac OS X; Darwin.
1187    
1188     - In the process I found that sqrt was broken on the PPC, because the
1189       fsqrt instruction is not implemented.
1190    
1191    ----------------------------------------------------------------------
1192    Name: Matthias Blume
1193    Date: 2001/04/18 12:45:00 EDT
1194    Tag: blume-20010418-ccalls
1195    Description:
1196    
1197     - fixed two off-by-4 errors in the x86-specific c-calls implementation
1198       (this bug prevented structure arguments containing pointers from being
1199        passed correctly)
1200     - changed the raw-C-call code in mlriscGen.sml in such a way that
1201       structure arguments are represented as a pointer to the beginning
1202       of the structure (instead of having a series of synthesized arguments,
1203       one for each structure member)
1204    
1205     - made makeml script's verbosity level configurable via environment
1206       variable (MAKEML_VERBOSITY)
1207    
1208     - eliminated placeholder implementations for f32l, w16s, i16s, and f32s
1209       in rawmem-x86.sml; we are now using the real thing
1210    
1211    ----------------------------------------------------------------------
1212    Name: Matthias Blume
1213    Date: 2001/03/22 16:25:00 EST
1214    Tag: blume-20010322-bootfiles
1215    Description:
1216    
1217    Created a new set of bootfiles (for your automatic installation convenience).
1218    
1219    ----------------------------------------------------------------------
1220    Name: Matthias Blume
1221    Date: 2001/03/22 15:10:00 EST
1222    Tag: blume-20010322-rawmem-parcm
1223    Description:
1224    
1225    1. All "raw memory access" primitives for the new FFI are implemented now
1226       (at least on the x86).
1227    2. Some further cleanup of CM's parallel make mechanism.
1228    
1229    ----------------------------------------------------------------------
1230    Name: Matthias Blume
1231    Date: 2001/03/19 17:53:00 EST
1232    Tag: blume-20010319-parallel
1233    Description:
1234    
1235    Parallel make (using compile servers) now works again.
1236    
1237    To this end, CM.stabilize and CMB.make have been modified to work in
1238    two passes when compile servers are attached:
1239       1. Compile everything, do not perform stabilization; this pass
1240          uses compile servers
1241       2. Stabilize everything; this pass does not use compile servers
1242    If there are no compile servers, the two passes are combined into one
1243    (as before).  Splitting the passes increases the inherent parallelism
1244    in the dependency graph because the entire graph including all
1245    libraries is available at the same time.  This, in turn, improves
1246    server utilization.  The downside is that the master process will
1247    have to do some extra work after compilation is done (because for
1248    technical reasons it must re-read all the binfiles during stabilization).
1249    
1250    ----------------------------------------------------------------------
1251    Name: Matthias Blume
1252    Date: 2001/03/16 12:22:00 EST
1253    Tag: blume-20010316-bootfiles
1254    Description:
1255    
1256    Created a new set of bootfiles (for your automatic installation convenience).
1257    
1258    ----------------------------------------------------------------------
1259    Name: Matthias Blume
1260    Date: 2001/03/16 11:00:00 EST
1261    Tag: blume-20010316-MLTREE-fixup
1262    Description:
1263    
1264    This is a minor fixup for an (untagged) earlier commit by Allen.
1265    (A file was missing).
1266    
1267    ----------------------------------------------------------------------
1268    Name: Allen Leung
1269    Date: Mon Mar  5 18:54:57 EST 2001
1270    Tag: leunga-20010305-cut-support
1271    
1272    1. New support for alternative control-flow in MLTREE.
1273       Currently we support
1274    
1275          FLOW_TO(CALL ...., [k1,...,kn])
1276    
1277       This is needed for 'cuts to' in C-- and try/handle-like constructs
1278       in Moby
1279    
1280       New assembler flag "asm-show-cutsto" to turn on control-flow debugging.
1281    
1282    2. Register Allocator
1283    
1284       Changes in interface [from Fermin, John]
1285    
1286    3. Alpha 8-bit SLL support [Fermin]
1287    
1288    4. All architectures
1289    
1290       A new module (ClusterExpandCopies) for expanding parallel copies.
1291    
1292    ----------------------------------------------------------------------
1293    Name: Allen Leung
1294    Date: 2001/02/27 23:07:00 EST
1295    Tag: leunga-20010227-minor-stuff
1296    
1297    1. Alpha bug fix for CMOVNE
1298    2. Handle mltree COND(..,FCMP ...,...)
1299    3. Bug fix in simplifier
1300    
1301    ----------------------------------------------------------------------
1302    Name: Matthias Blume
1303    Date: 2001/01/30 17:50:00 EST
1304    Tag: blume-20010130-sync
1305    Description:
1306    
1307    This is just a minor update to sync my devel branch with the main brach.
1308    The only visible change is the addition of some README files.
1309    
1310    ----------------------------------------------------------------------
1311    Name: Matthias Blume
1312    Date: 2001/01/12 23:30:00 JST
1313    Tag: blume-20010112-bootfiles
1314    Description:
1315    
1316    Made a new set of bootfiles that goes with the current state of the
1317    repository.
1318    
1319  ----------------------------------------------------------------------  ----------------------------------------------------------------------
1320  Name: Matthias Blume  Name: Matthias Blume
1321  Date: 2001/01/12 21:20:00 JST  Date: 2001/01/12 21:20:00 JST
# Line 1933  Line 3238 
3238       elaborator). There were a lot of changes during my "linkpath" trials       elaborator). There were a lot of changes during my "linkpath" trials
3239       that could have been reverted to their original state but weren't.       that could have been reverted to their original state but weren't.
3240       Please, don't be too harsh on me for messing with this code a bit more       Please, don't be too harsh on me for messing with this code a bit more
3241       than what was strictly necessary...  (I _did_ resist the tempation       than what was strictly necessary...  (I _did_ resist the temptation
3242       of doing any "global reformatting" to avoid an untimely death at       of doing any "global reformatting" to avoid an untimely death at
3243       Dave's hands. :)       Dave's hands. :)
3244    

Legend:
Removed from v.777  
changed lines
  Added in v.988

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