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 937, Thu Sep 20 21:20:28 2001 UTC revision 1058, Fri Feb 8 20:02:56 2002 UTC
# Line 8  Line 8 
8  The form of an entry should be:  The form of an entry should be:
9    
10  Name:  Name:
11  Date:  Date: yyyy/mm/dd
12  Tag: <post-commit CVS tag>  Tag: <post-commit CVS tag>
13  Description:  Description:
14    
15  ----------------------------------------------------------------------  ----------------------------------------------------------------------
16  Name: Matthias Blume  Name: Matthias Blume
17    Date: 2002/02/08 15:00:00 EST
18    Tag: blume-20020208-uniquepid
19    Description:
20    
21    0. Version number has been bumped to 110.38.1.  NEW BOOTFILES!!!
22    
23    1. The installer (config/install.sh) has gotten smarter:
24    
25         - Configuration options are a bit easier to specify now
26           (in config/targets).
27         - Bug in recognizing .tar.bz2 files fixed.
28         - Installer automatically resolves dependencies between
29           configuration options (e.g., if you ask for eXene, you will
30           also get cml -- regardless whether you asked for it or not).
31         - Installer can run in "quieter mode" by setting the environment
32           variable INSTALL_QUIETLY to "true".  "Quieter" does not mean
33           "completely silent", though.
34         - Build HashCons library as part of smlnj-lib.
35    
36    2. A new scheme for assigning persistent identifiers to compilation
37       units (and, by extension, to types etc.) has been put into place.
38       This fixes a long-standing bug where types and even dynamic values
39       can get internally confused, thereby compromising type safety
40       (abstraction) and dynamic correctness.  See
41    
42         http://cm.bell-labs.com/cm/cs/who/blume/pid-confusion.tgz
43    
44       for an example of how things could go wrong until now.
45    
46       The downside of the new scheme is that pids are not quite as
47       persistent as they used to be: CM will generate a fresh pid
48       for every compilation unit that it thinks it sees for the first
49       time.  That means that if you compile starting from a clean, fresh
50       source tree at two different times, you end up with different
51       binaries.
52    
53       Cutoff recompilation, however, has not been compromised because
54       CM keeps pid information in special caches between runs.
55    
56    ----------------------------------------------------------------------
57    Name: Lal George
58    Date: 2002/02/07 15:34:13 EST 2002
59    Tag: <none>
60    Description:
61    
62    Compilers that generate assembly code may produce  global labels
63    whose value is resolved at link time. The various peephole optimization
64    modules did not take this in account.
65    
66    TODO. The Labels.addrOf function should really return an option
67    type so that clients are forced to deal with this issue, rather
68    than an exception being raised.
69    
70    ----------------------------------------------------------------------
71    Name: Lal George
72    Date: 2002/02/06 13:55:02 EST
73    Tag: george-20020206-ra-breakup
74    Description:
75    
76    1. A bug fix from Allen.
77    
78        A typo causes extra fstp %st(0)'s to be generated at compensation
79        edges, which might cause stack underflow traps at runtime.  This
80        occurs in fft where there are extraneous fstps right before the 'into'
81        trap instruction (in this case they are harmless since none of the
82        integers overflow.)
83    
84    2. Pulled out various utility modules that were embedded in the modules
85       of the register allocator. I need these modules for other purposes, but
86       they are not complete enough to put into a library (just yet).
87    ----------------------------------------------------------------------
88    Name: Matthias Blume
89    Date: 2002/01/31 16:05:00 EST
90    Tag: blume-20020131-sparc-ccalls
91    Description:
92    
93    1. C-calls on Sparc needlessly allocated a huge chunk (96 bytes)
94       of extra stack space by mistake.  Fixed.
95    
96    2. Bug in logic of handling of command-line options in ml-nlffigen fixed.
97    
98    ----------------------------------------------------------------------
99    Name: Allen Leung
100    Date: 2002/01/30
101    Tag: leunga-20020130-nowhere-bug-fix
102    Description:
103    
104       MLRISC bug fixes:
105       1. Fixed a bindings computation bug in the 'nowhere' program generator tool.
106       2. MachineInt.fromString was negating its value.
107    
108    ----------------------------------------------------------------------
109    Name: Matthias Blume
110    Date: 2002/01/29
111    Tag: blume-20020129-INSTALL
112    Description:
113    
114    - Added somewhat detailed installation instructions (file INSTALL).
115    - Fixed curl-detection bug in config/install.sh.
116    - It is now possible to select the URL getter using the URLGETTER
117      environment variable:
118    
119          not set / "unknown"      --> automatic detection (script tries wget,
120                                       curl, and lynx)
121          "wget" / "curl" / "lynx" --> use the specified program (script "knows"
122                                       how to properly invoke them)
123          other                    --> use $URLGETTER directly, it must take
124                                       precisely two command-line arguments
125                                       (source URL and destination file name)
126    
127    ----------------------------------------------------------------------
128    Name: Matthias Blume
129    Date: 2002/01/28
130    Tag: blume-20020128-sparc-ccalls
131    Description:
132    
133    - Fixed problem with calculation of "used" registers in sparc-c-calls.
134    - Make use of the allocParam argument in sparc-c-calls.
135    
136    ----------------------------------------------------------------------
137    Name: Matthias Blume
138    Date: 2002/01/28
139    Tag: blume-20020128-allocParam
140    Description:
141    
142    John Reppy:  Changes c-calls API to accept client-callback for
143    allocating extra stack space.
144    me: Corresponding changes to mlriscGen (using a dummy argument that
145        does not change the current behavior).
146    
147    ----------------------------------------------------------------------
148    Name: Matthias Blume
149    Date: 2002/01/28 12:00:00
150    Tag: Release_110_38
151    Description:
152    
153    This time for real!!!
154    
155    ----------------------------------------------------------------------
156    Name: Matthias Blume
157    Date: 2002/01/28 10:56:00 EST
158    Tag: blume-20020128-retraction
159    Description:
160    
161    0. Retracted earlier 110.38.  (The Release_110_38 tag has been replaced
162       with blume-Release_110_38-retracted.)
163    
164    1. Fixed a problem with incorrect rounding modes in real64.sml.
165       (Thanks to Andrew Mccreight <andrew.mccreight@yale.edu>.)
166    
167    2. A bug in ml-nlffigen related to the handling of unnamed structs, unions,
168       and enums fixed.  The naming of corresponding ML identifiers should
169       now be consistent again.
170    
171    ----------------------------------------------------------------------
172    Name: Allen Leung
173    Date: 2002/01/27
174    Tag: leunga-20020127-nowhere
175    Description:
176    
177       Added a target called nowhere in the configuration scripts.
178       Enabling this will build the MLRISC 'nowhere' tool (for translating
179       programs with where-clauses into legal SML code) during installation.
180    
181    ----------------------------------------------------------------------
182    Name: Matthias Blume
183    Date: 2002/01/25 21:27:00 EST
184    Tag: blume-Release_110_38-retracted
185    Description:
186    
187    Call it a (working) release!  Version is 110.38. Bootfiles are ready.
188    
189    README will be added later.
190    
191    !!! NOTE:  Re-tagged as blume-Release_110_38-retracted. Original tag
192    (Release_110_38) removed.  Reason: Last-minute bug fixes.
193    
194    ----------------------------------------------------------------------
195    Name: Matthias Blume
196    Date: 2002/01/25
197    Tag: blume-20020125-ffi
198    Description:
199    
200    A large number of tweaks and improvements to ml-nlffi-lib and
201    ml-nlffigen:
202    
203       - ML represenation types have been streamlined
204       - getter and setter functions work with concrete values, not abstract
205         ones where possible
206       - ml-nlffigen command line more flexible (see README file there)
207       - some bugs have been fixed (hopefully)
208    
209    ----------------------------------------------------------------------
210    Name: Lal George
211    Date: 2002/01/24
212    Tag: george-20020124-risc-ra-interface
213    Description:
214    
215       There is a dramatic simplification in the interface to the
216       register allocator for RISC architectures as a result of making
217       parallel copy instructions explicit.
218    
219    ----------------------------------------------------------------------
220    Name: Matthias Blume
221    Date: 2002/01/22
222    Tag: blume-20020122-x86-ccalls
223    Description:
224    
225    Bug fix for c-calls on x86 (having to do with how char- and
226    short-arguments are being handled).
227    
228    ----------------------------------------------------------------------
229    Name: Matthias Blume
230    Date: 2002/01/21
231    Tag: blume-20020121-ff
232    Description:
233    
234    Another day of fiddling with the FFI...
235    
236    1. Bug fix/workaround:  CKIT does not complain about negative array
237       dimensions, so ml-nlffigen has to guard itself against this possibility.
238       (Otherwise a negative dimension would send it into an infinite loop.)
239    
240    2. Some of the abstract types (light objects, light pointers, most "base"
241       types) in structure C are now eqtypes.
242    
243    3. Added constructors and test functions for NULL function pointers.
244    
245    ----------------------------------------------------------------------
246    Name: Matthias Blume
247    Date: 2002/01/18
248    Tag: blume-20020118-ready-for-new-release
249    Description:
250    
251    Made config/srcarchiveurl point to a new place.  (Will provide boot
252    files shortly.)
253    
254    Maybe we christen this to be 110.38?
255    
256    ----------------------------------------------------------------------
257    Name: Matthias Blume
258    Date: 2002/01/18
259    Tag: blume-20020118-more-ffifiddle
260    Description:
261    
262    Today's FFI fiddling:
263    
264      - Provided a structure CGetSet with "convenient" versions of C.Get.* and
265        C.Set.* that use concrete (MLRep.*) arguments and results instead
266        of abstract ones.
267    
268      - Provided word-style bit operations etc. for "int" representation
269        types in MLRep.S<Foo>Bitops where <Foo> ranges over Char, Int, Short,
270        and Long.
271    
272    ----------------------------------------------------------------------
273    Name: Matthias Blume
274    Date: 2002/01/18
275    Tag: blume-20020118-use-x86-fp
276    Description:
277    
278    Now that x86-fast-fp seems to be working, I turned it back on again
279    by default.  (Seems to work fine now, even with the FFI.)
280    
281    Other than that, I added some documentation about the FFI to
282    src/ml-nlffigen/README and updated the FFI test examples in
283    src/ml-nlffi-lib/Tests/*.
284    
285    ----------------------------------------------------------------------
286    Name: Allen Leung
287    Date: 2002/01/17
288    Tag: leunga-20020117-x86-fast-fp-call
289    Description:
290    
291       1. Fixed a problem with handling return fp values when x86's fast fp
292          mode is turned on.
293    
294       2. Minor pretty printing fix for cellset.  Print %st(0) as %st(0) instead
295          of %f32.
296    
297       3. Added a constructor INT32lit to the ast of MLRISC tools.
298    
299    ----------------------------------------------------------------------
300    Name: Matthias Blume
301    Date: 2002/01/16
302    Tag: blume-20020116-ffifiddle
303    Description:
304    
305    More fiddling with the FFI interface:
306    
307     - Make constness 'c instead of rw wherever possible.  This eliminates
308       the need for certain explicit coercions.  (However, due to ML's
309       value polymorphism, there will still be many cases where explicit
310       coercions are necessary.  Phantom types are not the whole answer
311       to modeling a subtyping relationship in ML.)
312    
313     - ro/rw coersions for pointers added.  (Avoids the detour through */&.)
314    
315     - "printf" test example added to src/ml-nlffi-lib/Tests.  (Demonstrates
316       clumsy workaround for varargs problem.)
317    
318    ----------------------------------------------------------------------
319    Name: Lal George
320    Date: 2002/01/15
321    Tag: <none>
322    Description:
323    
324    1. Since COPY instructions are no longer native to the architecture,
325       a generic functor can be used to implement the expandCopies function.
326    
327    2. Allowed EXPORT and IMPORT pseudo-op declarations to appear inside a
328       TEXT segment.
329    
330    ----------------------------------------------------------------------
331    Name: Matthias Blume
332    Date: 2002/01/15
333    Tag: blume-20020115-ffiupdates
334    Description:
335    
336    1. Fix for bug resulting in single-precision float values being returned
337       incorrectly from FFI calls.
338    
339    2. Small modifications to C FFI API:
340    
341        - memory-allocation routines return straight objects (no options)
342          and raise an exception in out-of-memory situations
343        - unsafe extensions to cast between function pointers and pointers
344          from/to ints
345        - added structure C_Debug as an alternative to structure C where
346          pointer-dereferencing (|*| and |*!) always check for null-pointers
347        - added open_lib' to DynLinkage;  open_lib' works like open_lib
348          but also takes a (possibly empty) list of existing library handles
349          that the current library depends on
350    
351    ----------------------------------------------------------------------
352    Name: Matthias Blume
353    Date: 2002/01/10
354    Tag: blume-20020110-newffigen
355    Description:
356    
357    1. Updates to portable graph code.
358    
359    2. Major update to ml-nlffigen and ml-nlffi-lib.  Things are much
360       more scalable now so that even huge interfaces such as the one
361       for GTK compile in finite time and space. :-)
362       See src/ml-nlffigen/README for details on what's new.
363    
364    ----------------------------------------------------------------------
365    Name: Lal George
366    Date: 2001/01/09 14:31:35 EST 2002
367    Tag: george-20011206-rm-native-copy
368    Description:
369    
370            Removed the native COPY and FCOPY instructions
371            from all the architectures and replaced it with the
372            explicit COPY instruction from the previous commit.
373    
374            It is now possible to simplify many of the optimizations
375            modules that manipulate copies. This has not been
376            done in this change.
377    
378    ----------------------------------------------------------------------
379    Name: Lal George
380    Date: 2001/12/06 16:50:13 EST 2001
381    Tag: george-20011206-mlrisc-instruction
382    Description:
383    
384    Changed the representation of instructions from being fully abstract
385    to being partially concrete. That is to say:
386    
387      from
388            type instruction
389    
390      to
391            type instr                              (* machine instruction *)
392    
393            datatype instruction =
394                LIVE of {regs: C.cellset, spilled: C.cellset}
395              | KILL of {regs: C.cellset, spilled: C.cellset}
396              | COPYXXX of {k: CB.cellkind, dst: CB.cell list, src: CB.cell list}
397              | ANNOTATION of {i: instruction, a: Annotations.annotation}
398              | INSTR of instr
399    
400    This makes the handling of certain special instructions that appear on
401    all architectures easier and uniform.
402    
403    LIVE and KILL say that a list of registers are live or killed at the
404    program point where they appear. No spill code is generated when an
405    element of the 'regs' field is spilled, but the register is moved to
406    the 'spilled' (which is present, more for debugging than anything else).
407    
408    LIVE replaces the (now deprecated) DEFFREG instruction on the alpha.
409    We used to generate:
410    
411            DEFFREG f1
412            f1 := f2 + f3
413            trapb
414    
415    but now generate:
416    
417            f1 := f2 + f3
418            trapb
419            LIVE {regs=[f1,f2,f3], spilled=[]}
420    
421    Furthermore, the DEFFREG (hack) required that all floating point instruction
422    use all registers mentioned in the instruction. Therefore f1 := f2 + f3,
423    defines f1 and uses [f1,f2,f3]! This hack is no longer required resulting
424    in a cleaner alpha implementation. (Hopefully, intel will not get rid of
425    this architecture).
426    
427    COPYXXX is intended to replace the parallel COPY and FCOPY  available on
428    all the architectures. This will result in further simplification of the
429    register allocator that must be aware of them for coalescing purposes, and
430    will also simplify certain aspects of the machine description that provides
431    callbacks related to parallel copies.
432    
433    ANNOTATION should be obvious, and now INSTR represents the honest to God
434    machine instruction set!
435    
436    The <arch>/instructions/<arch>Instr.sml files define certain utility
437    functions for making porting easier -- essentially converting upper case
438    to lower case. All machine instructions (of type instr) are in upper case,
439    and the lower case form generates an MLRISC instruction. For example on
440    the alpha we have:
441    
442      datatype instr =
443         LDA of {r:cell, b:cell, d:operand}
444       | ...
445    
446      val lda : {r:cell, b:cell, d:operand} -> instruction
447        ...
448    
449    where lda is just (INSTR o LDA), etc.
450    
451    ----------------------------------------------------------------------
452    Name: Matthias Blume
453    Date: 2001/11/22 21:40:00 EST
454    Tag: Release_110_37
455    Description:
456    
457    Release 110.37.  This time for real.
458    
459    ----------------------------------------------------------------------
460    Name: Matthias Blume
461    Date: 2001/11/21 16:35:00 EST
462    Tag: blume-20011121-foot-in-mouth
463    Description:
464    
465    Removed the "Release_110_37" tag because of a serious bug.
466    This will be re-tagged once the bug is fixed.
467    
468    ----------------------------------------------------------------------
469    Name: Matthias Blume
470    Date: 2001/11/21 16:14:00 EST
471    Tag: blume-20011121-forgottenfile
472    Description:
473    
474    Forgot to add a file.  (Just a .tex-file -- part of
475    the CM manual source.)
476    
477    ----------------------------------------------------------------------
478    Name: Matthias Blume
479    Date: 2001/11/21 16:10:00 EST
480    Tag: blume-20011121-invalid_110_37
481    Description:
482    
483    Note: I removed the original tag "Release_110_37" from this commit
484          because we found a serious bug in all non-x86 backends.
485          - Matthias
486    
487    1. Modifications to the SML/NJ code generator and to the runtime system
488       so that code object name strings are directly inserted into code
489       objects at code generation time.  The only business the runtime system
490       has with this is now to read the name strings on occasions.
491       (The encoding of the name string has also changed somewhat.)
492    
493    2. CM now implements a simple "set calculus" for specifying export lists.
494       In particular, it is now possible to refer to the export lists of
495       other libraries/groups/sources and form unions as well as differences.
496       See the latest CM manual for details.
497    
498    3. An separate notion of "proxy" libraries has again be eliminated from
499       CM's model.  (Proxy libraries are now simply a special case of using
500       the export list calculus.)
501    
502    4. Some of the existing libraries now take advantage of the new set
503       calculus.
504       (Notice that not all libraries have been converted because some
505       of the existing .cm-files are supposed to be backward compatible
506       with 110.0.x.)
507    
508    5. Some cleanup in stand-alone programs.  (Don't use "exnMessage" -- use
509       "General.exnMessage"!  The former relies on a certain hook to be
510       initialized, and that often does not happen in the stand-alone case.)
511    
512    ----------------------------------------------------------------------
513    Name: Lal George
514    Date: 2001/11/21  13:56:18 EST
515    Tag: george-2001121-pseudo-ops
516    Description:
517    
518      Implemented a complete redesign of MLRISC pseudo-ops. Now there
519      ought to never be any question of incompatabilities with
520      pseudo-op syntax expected by host assemblers.
521    
522      For now, only modules supporting GAS syntax are implemented
523      but more should follow, such as MASM, and vendor assembler
524      syntax, e.g. IBM as, Sun as, etc.
525    
526    ----------------------------------------------------------------------
527    Name: Matthias Blume
528    Date: 2001/11/14 11:52:00 EST
529    Tag: blume-20011114-srcname
530    Description:
531    
532    1. Routed the name of the current source file to mlriscgen where it
533       should be directly emitted into the code object.  (This last part
534       is yet to be done.)
535    
536    2. Some cleanup of the pgraph code to make it match the proposal that
537       I put out the other day.  (The proposal notwithstanding, things are
538       still in flux here.)
539    
540    ----------------------------------------------------------------------
541    Name: Lal George
542    Date: 2001/11/14 09:44:04 EST
543    Tag:
544    Description:
545    
546      Fix for a backpatching bug reported by Allen.
547    
548      Because the boundary between short and long span-dependent
549      instructions is +/- 128, there are an astounding number of
550      span-dependent instructions whose size is over estimated.
551    
552      Allen came up with the idea of letting the size of span
553      dependent instructions be non-monotonic, for a maxIter
554      number of times, after which the size must be monotonically
555      increasing.
556    
557      This table shows the number of span-dependent instructions
558      whose size was over-estimated as a function of maxIter, for the
559      file Parse/parse/ml.grm.sml:
560    
561         maxIter            # of instructions:
562            10                      687
563            20                      438
564            30                      198
565            40                        0
566    
567      In compiling the compiler, there is no significant difference in
568      compilation speed between maxIter=10 and maxIter=40. Actually,
569      my measurements showed that maxIter=40 was a tad faster than
570      maxIter=10! Also 96% of the  files in the compiler reach a fix
571      point within 13 iterations, so fixing maxIter at 40, while high,
572      is okay.
573    
574    ----------------------------------------------------------------------
575    Name: Matthias Blume
576    Date: 2001/10/31 15:25:00 EST
577    Tag: blume-20011031-pgraph
578    Description:
579    
580    CKIT:
581    * Changed the "Function" constructor of type Ast.ctype to carry optional
582      argument identifiers.
583    * Changed the return type of TypeUtil.getFunction accordingly.
584    * Type equality ignores the argument names.
585    * TypeUtil.composite tries to preserve argument names but gives up quickly
586      if there is a mismatch.
587    
588    installation script:
589    * attempts to use "curl" if available (unless "wget" is available as well)
590    
591    CM:
592    * has an experimental implementation of "portable graphs" which I will
593      soon propose as an implementation-independent library format
594    * there are also new libraries $/pgraph.cm and $/pgraph-util.cm
595    
596    NLFFI-LIB:
597    * some cleanup (all cosmetic)
598    
599    NLFFIGEN:
600    * temporarily disabled the mechanism that suppresses ML output for
601      C definitions whose identifiers start with an underscore character
602    * generate val bindings for enum constants
603    * user can request that only one style (light or heavy) is being used;
604      default is to use both (command-line arguments: -heavy and -light)
605    * fixed bug in handling of function types involving incomplete pointers
606    * generate ML entry points that take record arguments (i.e., using
607      named arguments) for C functions that have a prototype with named
608      arguments
609      (see changes to CKIT)
610    
611    ----------------------------------------------------------------------
612    Name: Allen Leung
613    Date: 2001/10/27 20:34:00 EDT
614    Tag: leunga-20011027-x86-fast-fp-call
615    Description:
616    
617       Fixed the bug described in blume-20010920-slowfp.
618    
619       The fix involves
620          1. generating FCOPYs in FSTP in ia32-svid
621          2. marking a CALL with the appropriate annotation
622    
623    ----------------------------------------------------------------------
624    Name: Matthias Blume
625    Date: 2001/10/16 11:32:00 EDT
626    Tag: blume-20011016-netbsd
627    Description:
628    
629    Underscore patch from Chris Richards (fixing problem with compiling
630    runtime system under recent NetBSD).
631    
632    ----------------------------------------------------------------------
633    Name: Allen Leung
634    Date: 2001/10/12 17:18:32 EDT 2001
635    Tag: leung-20011012-x86-printflowgraph
636    Description:
637    
638    X86RA now uses a valid (instead of dummy) PrintFlowgraph module.
639    
640    ----------------------------------------------------------------------
641    Name: Lal George
642    Date: 2001/10/11 23:51:34 EDT
643    Tag: george-20011011-too-many-instrs
644    Description:
645    
646    The representation of a program point never expected to see more
647    than 65536 instructions in a basic block!
648    
649    ----------------------------------------------------------------------
650    Name: Lal George
651    Date: 2001/10/09 09:41:37 EDT
652    Tag: george-20011008-mlrisc-labels
653    Description:
654    
655    Changed the machine description files to support printing of
656    local and global labels in assembly code, based on host assembler
657    conventions.
658    
659    ----------------------------------------------------------------------
660    Name: Matthias Blume
661    Date: 2001/09/25 15:25:00 EDT
662    Tag: blume-20010925-exninfo
663    Description:
664    
665    I provided a non-hook implementation of exnName (at the toplevel) and
666    made the "dummy" implementation of exnMessage (at the toplevel) more
667    useful: if nothing gets "hooked in", then at least you are going to
668    see the exception name and a message indicating why you don't see more.
669    
670    [For the time being, programs that need exnMessage and want to use
671    ml-build should either use General.exnMessage (strongly recommended) or
672    refer to structure General at some other point so that CM sees a
673    static dependency.]
674    
675    [Similar remarks go for "print" and "use":  If you want to use their
676    functionality in stand-alone programs generated by ml-build, then use
677    TextIO.output and Backend.Interact.useFile (from $smlnj/compiler.cm).]
678    
679    ----------------------------------------------------------------------
680    Name: Matthias Blume
681    Date: 2001/09/20 17:28:00 EDT
682    Tag: blume-20010920-slowfp
683    Description:
684    
685    Allen says that x86-fast-fp is not safe yet, so I turned it off again...
686    
687    ----------------------------------------------------------------------
688    Name: Matthias Blume
689  Date: 2001/09/20 17:20:00 EDT  Date: 2001/09/20 17:20:00 EDT
690  Tag: blume-20010920-canonicalpaths  Tag: blume-20010920-canonicalpaths
691  Description:  Description:

Legend:
Removed from v.937  
changed lines
  Added in v.1058

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