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 671, Mon Jun 19 02:02:32 2000 UTC revision 729, Thu Nov 9 02:16:17 2000 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: 2000/11/09 11:20:00 JST
18    Tag: blume-20001109-scc
19    Description:
20    
21    Eliminated some code duplication:
22    
23    1. Added "where" clause to GraphSCCFn in SML/NJ Library.
24       (Otherwise the functor is useless.)
25    2. Used GraphSCCFn where SCCUtilFun was used previously.
26    3. Got rid of SCCUtilFun (in comp-lib.cm).
27    
28    ----------------------------------------------------------------------
29    Name: Lal George
30    Date: 2000/11/06 09:02:21 EST 2000
31    Tag: Release_110_30
32    Description:
33    
34    - Version 110.30
35    ----------------------------------------------------------------------
36    Name: Matthias Blume
37    Date: 2000/11/04 14:45:00
38    Tag: blume-20001104-mlbuild
39    Description:
40    
41    - Made ml-build faster on startup.
42    - Documentation fixes.
43    
44    ----------------------------------------------------------------------
45    Name: Matthias Blume
46    Date: 2000/11/02 17:00:00 JST
47    Tag: blume-20001102-condcomp
48    Description:
49    
50    - Small tweaks to pickler -- new BOOTFILES!
51    - Version bumped to 110.29.2.
52    - Added conditional compilation facility to init.cmi (see comment there).
53    ----------------------------------------------------------------------
54    Name: Allen Leung
55    Date: 2000/10/23 19:31:00
56    Tag: leunga-20001023-demo-ra
57    
58    1. Minor RA changes that improves spilling on x86 (affects Moby and C-- only)
59    2. Test programs for the graph library updated
60    3. Some new MLRISC demo programs added
61    
62    ----------------------------------------------------------------------
63    Name: Matthias Blume
64    Date: 2000/08/31 22:15:00 JST
65    Tag: blume-20001017-errmsg
66    Description:
67    
68    More error message grief: Where there used to be no messages, there
69    now were some that had bogus error regions.  Fixed.
70    
71    ----------------------------------------------------------------------
72    Name: Matthias Blume
73    Date: 2000/08/31 17:30:00 JST
74    Tag: blume-20001017-v110p29p1
75    Description:
76    
77    I made a version 110.29.1 with new bootfiles.
78    
79    Changes:  Modified pickler/unpickler for faster and leaner unpickling.
80              CM documentation changes and a small bugfix in CM's error reporting.
81    
82    ----------------------------------------------------------------------
83    Name: Lal George
84    Date: 2000/09/27 14:42:35 EDT
85    Tag: george-20000927-nodestatus
86    Description:
87    
88    Changed the type of the nodestatus, so that:
89    
90            SPILLED(~1)             is now SPILLED
91            SPILLED(m) where m>=0   is now MEMREG(m)
92            SPILLED(s) where s<~1   is now SPILL_LOC(~s)
93    
94    ----------------------------------------------------------------------
95    Name: Matthias Blume
96    Date: 2000/09/07 14:45:00 JST
97    Tag: blume-20000907-cmerrmsg
98    Description:
99    
100    Small tweak to CM to avoid getting ML syntax error messages twice.
101    
102    ----------------------------------------------------------------------
103    Name: Matthias Blume
104    Date: 2000/08/31 18:00:00 JST
105    Tag: blume-20000831-cvsbootfiles
106    Description:
107    
108    New URL for boot files (because the 110.29 files on the BL server do
109    now work correctly with my updated install scripts for yacc and lex).
110    
111    ----------------------------------------------------------------------
112    Name: Matthias Blume
113    Date: 2000/08/08 12:33:00 JST
114    Tag: blume-20000808-manual
115    Description:
116    
117    Tiny update to CM manual.
118    
119    ----------------------------------------------------------------------
120    Name: Allen Leung
121    Date: 2000/08/7 19:31:00
122    Tag: leunga-20000807-a-whole-bunch-of-stuff
123    
124      Moby, C--, SSA, x86, machine descriptions etc.  Should only affect C--
125    and Mobdy.
126    
127    1.  x86
128    
129       a.  Fixes to peephole module by John and Dan.
130       b.  Assembly fix to SETcc by Allen.
131       c.  Fix to c-call by John.
132       d.  Fix to spilling by John.  (This one deals with the missing FSTPT case)
133       e.  Instruction selection optimization to SETcc as suggested by John.
134    
135           For example,
136    
137            MV(32, x, COND(32, CMP(32, LT, a, b), LI 1, LI 0))
138    
139           should generate:
140    
141            MOVL a, x
142            SUBL b, x
143            SHRL 31, x
144    
145    2.  IR stuff
146    
147         A bunch of new DJ-graph related algorithms added.  These
148         speed up SSA construction.
149    
150    3.  SSA + Scheduling
151    
152         Added code for SSA and scheduling to the repository
153    
154    ----------------------------------------------------------------------
155    Name: Lal George
156    Date: 2000/07/27 11:53:14 EDT
157    
158    Tag: lal-20000727-linux-ppc
159    Description:
160    
161     Made changes to support Linux PPC.
162     p.s. I have confirmation that the 110.29 boot files work fine.
163    
164    ----------------------------------------------------------------------
165    Name: Matthias Blume
166    Date: 2000/07/27 17:40:00 JST
167    Tag: blume-20000727-scripts
168    Description:
169    
170    !!!! WARNING !!!!
171    You must recompile the runtime system!
172    !!!! WARNING !!!!
173    
174    This is basically another round of script-enhancements:
175    
176    1. sml, ml-build, and ml-makedepend accept options -D and -U to define
177       and undefine CM preprocessor symbols.
178    
179    2. ml-build avoids generating a new heap image if it finds that the
180       existing one is still ok.  (The condition is that no ML file had to
181       be recompiled and all ML files are found to be older that the heap
182       file.)
183    
184       To make this work smoothly, I also hacked the runtime system as
185       well as SMLofNJ.SysInfo to get access to the heap image suffix
186       (.sparc-solaris, ...) that is currently being used.
187    
188       Moreover, the signature of CM.mk_standalone has changed.  See the
189       CM manual.
190    
191    3. ml-makedepend accepts additional options -n, -a, and -o.  (See the
192       CM manual for details.)
193    
194    4. More CM manual updates:
195        - all of the above has been documented.
196        - there is now a section describing the (CM-related) command line
197          arguments that are accepted by the "sml" command
198    
199    ----------------------------------------------------------------------
200    Name: Matthias Blume
201    Date: 2000/07/25 16:20:00 JST
202    Tag: blume-20000725-makedepend
203    Description:
204    
205    Added a script called ml-makedepend.  This can be used in makefiles
206    for Unix' make in a way very similar to the "makedepend" command for
207    C.
208    
209    The script internally uses function CM.sources.
210    
211    Synopsis:
212    
213        ml-makedepend [-f makefile] cmfile targetname
214    
215    The default for the makefile is "makefile" (or "Makefile" should
216    "makefile" not exist).
217    
218    ml-makedepend adds a cmfile/targetname-specific section to this
219    makefile (after removing the previous version of this section).  The
220    section contains a single dependency specification with targetname on
221    the LHS (targetname is an arbitrary name), and a list of files derived
222    from the cmfile on the RHS.  Some of the files on the RHS are
223    ARCH/OPSYS-specific.  Therefore, ml-makedepend inserts references to
224    "make" variables $(ARCH) and $(OPSYS) in place of the corresponding
225    path names.  The makefile writer is responsible for making sure that
226    these variables have correct at the time "make" is invoked.
227    
228    ----------------------------------------------------------------------
229    Name: Matthias Blume
230    Date: 2000/07/22 23:30:00 JST
231    Tag: blume-20000722-urlupdate
232    Description:
233    
234    Changed BOOT and config/srcarchiveurl to point to BL server:
235    
236        ftp://ftp.research.bell-labs.com/dist/smlnj/working/110.29/
237    
238    ----------------------------------------------------------------------
239    Name: Matthias Blume
240    Date: 2000/07/18 18:00:00 JST
241    Tag: blume-20000718-Version_110_29
242    Description:
243    
244    1. Updated src/compiler/TopLevel/main/version.sml to version 110.29
245    
246    2. Updated config/version to 110.29
247    
248    3. Updated config/srcarchiveurl
249    
250    3. New boot files!
251       ftp://ftp.cs.princeton.edu/pub/people/blume/sml/110.29-autofetch
252    
253    ----------------------------------------------------------------------
254    Name: Matthias Blume
255    Date: 2000/07/11 13:58:00 JST
256    Tag: blume-20000711-doctypo
257    Description:
258    
259    Fixed a few typos in CM manual.
260    
261    ----------------------------------------------------------------------
262    Name: Allen Leung
263    Date: 2000/06/15 00:38:00
264    Tag: leunga-20000704-sparc-x86
265    
266    1. x86 peephole improvement sp += k; sp -= k => nop  [from John]
267    2. fix to x86 RET bug [found by Dan Grossman]
268    3. sparc assembly bug fix for ticc instructions [found by Fermin]
269    
270       Affects c-- and moby only
271    
272    ----------------------------------------------------------------------
273    Name: Matthias Blume
274    Date: 2000/07/04 15:26:00
275    Tag: blume-20000704-trigger
276    Description:
277    
278    1. Improvements to CM manual.
279    2. SMLofNJ.Internals.BTrace.trigger reinstated as an alternative way
280       of getting a back-trace.  The function, when called, raises an
281       internal exception which explicitly carries the full back-trace history,
282       so it is unaffected by any intervening handle-raise pairs ("trivial"
283       or not).  The interactive loop will print that history once it arrives
284       at top level.
285       Short of having all exceptions implicitly carry the full history, the
286       recommended way of using this facility is:
287         - compile your program with instrumentation "on"
288         - run it, when it raises an exception, look at the history
289         - if the history is "cut off" because of some handler, go and modify
290           your program so that it explicitly calls BTrace.trigger
291         - recompile (still instrumented), and rerun; look at the full history
292    
293    ----------------------------------------------------------------------
294    Name: Matthias Blume
295    Date: 2000/07/03 15:36:00 JST
296    Tag: blume-20000702-manual
297    Description:
298    
299    Small corrections and updates to CM manual.
300    
301    ----------------------------------------------------------------------
302    Name: Matthias Blume
303    Date: 2000/06/29 16:04:00 JST
304    Tag: blume-20000629-yacctool
305    Description:
306    
307    Changes:
308    
309    1. Class "mlyacc" now takes separate arguments to pass options to
310       generated .sml- and .sig-files independently.
311    2. Corresponding CM manual updates.
312    3. BTrace module now also reports call sites.  (However, for loop clusters
313       it only shows from where the cluster was entered.)  There are associated
314       modifications to core.sml, internals.{sig,sml}, btrace.sml, and btimp.sml.
315    
316    ----------------------------------------------------------------------
317    Name: Matthias Blume
318    Date: 2000/06/27 16:51:00 JST
319    Tag: blume-20000627-noweb
320    Description:
321    
322    Changes:
323    
324     1. Implemented "subdir" and "witness" options for noweb tool.
325        This caused some slight internal changes in CM's tool implementation.
326     2. Fixed bug in "tool plugin" mechanism.  This is essentially cleaning
327        some remaining issues from earlier path anchor changes.
328     3. Updated CM manual accordingly.
329    
330     4. Changed implementation of back-tracing so that I now consider it
331        ready for prime-time.
332    
333        In particular, you don't have to explicitly trigger the back-trace
334        anymore.  Instead, if you are running BTrace-instrumented code and
335        there is an uncaught exception (regardless of whether or not it was
336        raised in instrumented code), the top-level evalloop will print
337        the back-trace.
338    
339        Features:
340    
341          - Instrumented and uninstrumented code work together seemlessly.
342            (Of course, uninstrumented code is never mentioned in actual
343             back-traces.)
344    
345          - Asymptotic time- and space-complexity of instrumented code is
346            equal to that of uninstrumented code.  (This means that
347            tail-recursion is preserved by the instrumentation phase.)
348    
349          - Modules whose code has been instrumented in different sessions
350            work together without problem.
351    
352          - There is no penalty whatsoever on uninstrumented code.
353    
354          - There is no penalty on "raise" expressions, even in
355            instrumented code.
356    
357        A potential bug (or perhaps it is a feature, too):
358    
359          A back-trace reaches no further than the outermost instrumented
360          non-trivial "raise".  Here, a "trivial" raise is one that is the
361          sole RHS of a "handle" rule.  Thus, back-traces reach trough
362    
363               <exp> handle e => raise e
364    
365          and even
366    
367               <exp> handle Foo => raise Bar
368    
369          and, of course, through
370    
371               <exp> handle Foo => ...
372    
373         if the exception was not Foo.
374    
375         Back-traces always reach right through any un-instrumented code
376         including any of its "handle" expressions, trivial or not.
377    
378       To try this out, do the following:
379    
380         - Erase all existing binfiles for your program.
381           (You may keep binfiles for those modules where you think you
382            definitely don't need back-tracing.)
383         - Turn on back-trace instrumentation:
384              SMLofNJ.Internals.BTrace.mode (SOME true);
385         - Recompile your program.  (I.e., run "CM.make" or "use".)
386         - You may now turn instrumentation off again (if you want):
387              SMLofNJ.Internals.BTrace.mode (SOME false);
388         - Run your program as usual.  If it raises an exception that
389           reaches the interactive toplevel, then a back-trace will
390           automatically be printed.  After that, the toplevel loop
391           will print the exception history as usual.
392    
393    ----------------------------------------------------------------------
394    Name: Matthias Blume
395    Date: 2000/06/26 09:56:46 JST
396    Tag: blume-20000626-setup
397    Description:
398    
399    CM: - setup-parameter to "sml" added; this can be used to run arbitrary
400          ML code before and after compiling a file (e.g., to set compiler
401          flags)
402    
403    Compiler: - improved btrace API (in core.sml, internals.{sig,sml})
404              - associated changes to btrace.sml (BTrace instrumentation pass)
405              - cleaner implementation of btimp.sml (BTrace tracing and report
406                module)
407    
408    CM manual: * new path encoding documented
409               * description of setup-parameter to "sml" added
410    
411    The biggest user-visible change to back-tracing is that it is no
412    longer necessary to compile all traced modules within the same
413    session.  (This was a real limitation.)
414    
415    ----------------------------------------------------------------------
416    Name: Matthias Blume
417    Date: 2000/06/24 12:40:00 JST
418    Tag: blume-20000624-startup
419    Description:
420    
421    Fixes startup slowdown problem.  (I was calling SrcPath.sync a _tad_
422    bit too often -- to put it mildly. :)
423    
424    ----------------------------------------------------------------------
425    Name: Matthias Blume
426    Date: 2000/06/23 18:20:00 JST
427    Tag: blume-20000623-btrace
428    Description:
429    
430    This updates adds a backtrace facility to aid programmers in debugging
431    their programs.  This involves the following changes:
432    
433    1. Module system/smlnj/init/core.sml (structure _Core) now has hooks for
434       keeping track of the current call stack.  When programs are compiled
435       in a special mode, the compiler will insert calls to these hooks
436       into the user program.
437       "Hook" means that it is possible for different implementations of
438       back-tracing to register themselves (at different times).
439    
440    2. compiler/MiscUtil/profile/btrace.sml implements the annotation phase
441       as an Absyn.dec->Absyn.dec rewrite.  Normally this phase is turned off.
442       It can be turned on using this call:
443         SMLofNJ.Internals.BTrace.mode (SOME true);
444       Turning it off again:
445         SMLofNJ.Internals.BTrace.mode (SOME false);
446       Querying the current status:
447         SMLofNJ.Internals.BTrace.mode NONE;
448       Annotated programs are about twice as big as normal ones, and they
449       run a factor of 2 to 4 slower with a dummy back-trace plugin (one
450       where all hooks do nothing).  The slowdown with a plugin that is
451       actually useful (such as the one supplied by default) is even greater,
452       but in the case of the default plugin it is still only an constant
453       factor (amortized).
454    
455    3. system/Basis/Implementation/NJ/internals.{sig,sml} have been augmented
456       with a sub-structure BTrace for controlling back-tracing.  In particular,
457       the above-mentioned function "mode" controls whether the annotation
458       phase is invoked by the compiler.  Another important function is
459       "trigger": when called it aborts the current execution and causes
460       the top-level loop to print a full back-trace.
461    
462    4. compiler/MiscUtil/profile/btimp.sml is the current default plugin
463       for back-tracing.  It keeps track of the dynamic call stack and in
464       addition to that it keeps a partial history at each "level" of that
465       stack.  For example, if a tail-calls b, b tail-calls c, and c tail-calls
466       d and b (at separate times, dynamically), then the report will show:
467    
468       GOTO   d
469             /c
470       GOTO  \b
471       CALL   a
472    
473       This shows that there was an initial non-tail call of a, then a
474       tail-call to b or c, looping behavior in a cluster of functions that
475       consist of b and c, and then a goto from that cluster (i.e., either from
476       b or from c) to d.
477    
478       Note that (depending on the user program) the amount of information
479       that the back-trace module has to keep track of at each level is bounded
480       by a constant.  Thus, the whole implementation has the same asymptotical
481       complexity as the original program (both in space and in time).
482    
483    5. compiler/TopLevel/interact/evalloop.sml has been modified to
484       handle the special exception SMLofNJ.Internals.BTrace.BTrace
485       which is raised by the "trigger" function mentioned above.
486    
487    Notes on usage:
488    
489    - Annotated code works well together with unannotated code:
490    Unannotated calls simply do not show up at all in the backtrace.
491    
492    - It is not a good idea to let modules that were annotated during
493    different sessions run at the same time.  This is because the compiler
494    chooses small integers to identify individual functions, and there
495    will be clashes if different modules were compiled in separate sessions.
496    (Nothing will crash, and you will even be told about the clashes, but
497    back-trace information will in general not be useful.)
498    
499    - Back-tracing can be confused by callcc and capture.
500    
501    - The only way of getting a back-trace right now is to explicitly
502    invoke the "trigger" function from your user program.  Eventually, we
503    should make every exception carry back-trace information (if
504    available).  But since this creates more overhead at "raise"-time
505    (similar to the current exnHistory overhead), I have not yet
506    implemented this.  (The implementation will be rather easy.)  With
507    exceptions carrying back-trace information, this facility will be even
508    more useful because users don't need to modify their programs...
509    
510    - While it is possible to compile the compiler with back-trace
511    annotations turned on (I did it to get some confidence in
512    correctness), you must make absolutely sure that core.sml and
513    btimp.sml are compiled WITHOUT annotation!  (core.sml cannot actually
514    be compiled with annotation because there is no core access yet, but
515    if you compile btimp.sml with annotation, then the system will go into
516    an infinite recursion and crash.)
517    Since CM currently does not know about BTrace, the only way to turn
518    annotations on and off for different modules of the compiler is to
519    interrupt CMB.make, change the settings, and re-invoke it.  Of course,
520    this is awkward and clumsy.
521    
522    Sample sessions:
523    
524    Standard ML of New Jersey v110.28.1 [FLINT v1.5], June 5, 2000
525    - SMLofNJ.Internals.BTrace.mode (SOME true);
526    [autoloading]
527    [autoloading done]
528    val it = false : bool
529    - structure X = struct
530    -     fun main n = let
531    -         fun a (x, 0) = d x
532    -           | a (x, n) = b (x, n - 1)
533    -         and b (x, n) = c (x, n)
534    -         and c (x, n) = a (x, n)
535    -         and d x = e (x, 3)
536    -         and e (x, 0) = f x
537    -           | e (x, n) = e (x, n - 1)
538    -         and f 0 = SMLofNJ.Internals.BTrace.trigger ()
539    -           | f n = n * g (n - 1)
540    -         and g n = a (n, 3)
541    -     in
542    -         f n
543    -     end
544    - end;
545    structure X : sig val main : int -> int end
546    - X.main 3;
547    *** BACK-TRACE ***
548    GOTO   stdIn:4.2-13.20: X.main[2].f
549    GOTO-( stdIn:4.2-13.20: X.main[2].e
550    GOTO   stdIn:4.2-13.20: X.main[2].d
551         / stdIn:4.2-13.20: X.main[2].a
552         | stdIn:4.2-13.20: X.main[2].b
553    GOTO-\ stdIn:4.2-13.20: X.main[2].c
554    CALL   stdIn:4.2-13.20: X.main[2].g
555    GOTO   stdIn:4.2-13.20: X.main[2].f
556    GOTO-( stdIn:4.2-13.20: X.main[2].e
557    GOTO   stdIn:4.2-13.20: X.main[2].d
558         / stdIn:4.2-13.20: X.main[2].a
559         | stdIn:4.2-13.20: X.main[2].b
560    GOTO-\ stdIn:4.2-13.20: X.main[2].c
561    CALL   stdIn:4.2-13.20: X.main[2].g
562    GOTO   stdIn:4.2-13.20: X.main[2].f
563    GOTO-( stdIn:4.2-13.20: X.main[2].e
564    GOTO   stdIn:4.2-13.20: X.main[2].d
565         / stdIn:4.2-13.20: X.main[2].a
566         | stdIn:4.2-13.20: X.main[2].b
567    GOTO-\ stdIn:4.2-13.20: X.main[2].c
568    CALL   stdIn:4.2-13.20: X.main[2].g
569    GOTO   stdIn:4.2-13.20: X.main[2].f
570    CALL   stdIn:2.15-17.4: X.main[2]
571    -
572    
573    (Note that because of a FLINt bug the above code currently does not
574    compile without BTrace turned on.)
575    
576    Here is another example, using my modified Tiger compiler:
577    
578    Standard ML of New Jersey v110.28.1 [FLINT v1.5], June 5, 2000
579    - SMLofNJ.Internals.BTrace.mode (SOME true);
580    [autoloading]
581    [autoloading done]
582    val it = false : bool
583    - CM.make "sources.cm";
584    [autoloading]
585    ...
586    [autoloading done]
587    [scanning sources.cm]
588    [parsing (sources.cm):parse.sml]
589    [creating directory CM/SKEL ...]
590    [parsing (sources.cm):tiger.lex.sml]
591    ...
592    [wrote CM/sparc-unix/semant.sml]
593    [compiling (sources.cm):main.sml]
594    [wrote CM/sparc-unix/main.sml]
595    [New bindings added.]
596    val it = true : bool
597    - Main.compile ("../testcases/merge.tig", "foo.out");
598    *** BACK-TRACE ***
599    CALL   lib/semant.sml:99.2-396.21: SemantFun[2].transExp.trvar
600    CALL   lib/semant.sml:99.2-396.21: SemantFun[2].transExp.trexp
601    CALL   lib/semant.sml:289.3-295.22: SemantFun[2].transExp.trexp.check[2]
602    GOTO   lib/semant.sml:289.3-295.22: SemantFun[2].transExp.trexp.check[2]
603    CALL   lib/semant.sml:99.2-396.21: SemantFun[2].transExp.trexp
604    CALL   lib/semant.sml:99.2-396.21: SemantFun[2].transExp.trexp
605    CALL   lib/semant.sml:488.3-505.6: SemantFun[2].transDec.trdec[2].transBody[2]
606         / lib/semant.sml:411.65-543.8: SemantFun[2].transDec
607    CALL-\ lib/semant.sml:413.2-540.9: SemantFun[2].transDec.trdec[2]
608    CALL   lib/semant.sml:99.2-396.21: SemantFun[2].transExp.trexp
609    CALL   lib/semant.sml:8.52-558.4: SemantFun[2].transProg[2]
610    CALL   main.sml:1.18-118.4: Main.compile[2]
611    -
612    
613    ----------------------------------------------------------------------
614    Name: Matthias Blumen
615    Date: 2000/06/21 18:00:00 JST
616    Tag: blume-20000621-manual
617    Description:
618    
619    CM manual update: Path environments documented.
620    
621    ----------------------------------------------------------------------
622    Name: Matthias Blume
623    Date: 2000/06/19 13:40:00
624    Tag: blume-20000619-manual
625    Description:
626    
627    CM manual and system/README update.  This only covers the fact that
628    there are no more implicit anchors.  (Path environments and the "bind"
629    option to "cm" have yet to be documented.)
630    
631  ----------------------------------------------------------------------  ----------------------------------------------------------------------
632  Name: Matthias Blume  Name: Matthias Blume
633  Date: 2000/06/19 11:05:00 JST  Date: 2000/06/19 11:05:00 JST

Legend:
Removed from v.671  
changed lines
  Added in v.729

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