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 1348, Fri Aug 29 17:06:53 2003 UTC revision 1791, Tue May 10 02:56:53 2005 UTC
# Line 13  Line 13 
13  Description:  Description:
14    
15  ----------------------------------------------------------------------  ----------------------------------------------------------------------
16  Name: Matthias Blume (blume@tti-c.org)  Name: Matthias Blume (blume (at) tti - c (dot) org)
17    Date: 2005/05/09 21:55:00 CDT
18    Tag: blume-20050509-word64
19    Description:
20    
21    Added a hack to the existing hack known as Word64 to make fromString
22    behave correctly.  I am still not sure whether Word64.scan will work
23    as specified with respect to the interaction of radix and prefix.
24    
25    ----------------------------------------------------------------------
26    Name: Allen Leung (leunga (at) reservoir (dot) com)
27    Date: 2005/05/04 11:50:00 EST
28    Tag: leunga-20050504-checkgc
29    Description:
30    
31    Added a gc protocol checking phase.  This phase is enabled with
32    the flag "check-gc".  "debug-check-gc" turns on the verbose mode.
33    
34    ----------------------------------------------------------------------
35    Name: Matthias Blume (blume (at) tti - c (dot) org)
36    Date: 2005/05/04 10:45:00 CDT
37    Tag: blume-20050504-intinf
38    Description:
39    
40    Fixed a bug in the implementation of div and mod for IntInf.
41    Thanks to Neophytos Michael for reporting the problem.
42    
43    ----------------------------------------------------------------------
44    Name: Matthias Blume (blume (at) tti - c (dot) org)
45    Date: 2005/05/04 10:35:00 CDT
46    Tag: blume-20050504-join
47    Description:
48    
49    Added a "join" combinator to the ParserComb module in smlnj-lib.cm.
50    
51    ----------------------------------------------------------------------
52    Name: Matthias Blume (blume (at) tti - c (dot) org)
53    Date: 2005/02/28 23:40:00 CST
54    Tag: blume-20050228-mVar
55    Description:
56    
57    Fixed serious bug (brown paper bag variety) in new implementation of
58    structure Atom in CML.  (I had accidentally used a mailbox instead of
59    an mvar, leaving the door open for races.)
60    
61    ----------------------------------------------------------------------
62    Name: Matthias Blume (blume (at) tti - c (dot) org)
63    Date: 2005/02/25 15:00:00 CST
64    Tag: Release_110_53
65    Description:
66    
67    New working version (110.53).  NEW BOOTFILES!
68    
69    ----------------------------------------------------------------------
70    Name: Matthias Blume (blume (at) tti - c (dot) org)
71    Date: 2005/02/25 14:50:00 CST
72    Tag: blume-20050225-susp
73    Description:
74    
75    Brought back SMLofNJ.Susp.  The underlying suspension type is the one
76    implemented in Core -- which means that it is the same as the one used
77    by the lazy extension.
78    
79    ----------------------------------------------------------------------
80    Name: Matthias Blume (blume (at) tti - c (dot) org)
81    Date: 2005/02/24 16:50:00 CST
82    Tag: blume-20050224-cml-atom
83    Description:
84    
85    Simpler and at the same time more general implementation of structure
86    Atom in CML.
87    
88    ----------------------------------------------------------------------
89    Name: Matthias Blume (blume (at) tti - c (dot) org)
90    Date: 2005/02/15 17:35:00 CST
91    Tag: blume-20050215-tools
92    Description:
93    
94    Created new "tools" directory under "src" and moved "TraceDebugProf"
95    there.
96    
97    ----------------------------------------------------------------------
98    Name: Matthias Blume (blume (at) tti - c (dot) org)
99    Date: 2005/02/10 17:55:00 CST
100    Tag: blume-20050210-longlong
101    Description:
102    
103    Implemented "long long" arguments and results for NLFFI.  (Only the
104    PPC/MacOS implementation is complete, the other backends still need to
105    be updated.)
106    
107    ----------------------------------------------------------------------
108    Name: Matthias Blume (blume (at) tti - c (dot) org)
109    Date: 2005/01/24 17:40:00 CST
110    Tag: blume-20050124-mlyacc
111    Description:
112    
113    Minor cleanup in ML-Yacc rule printing mechanism.  This should fix a
114    problem with certain "as" patterns which previously got rendered
115    using incorrect syntax.
116    
117    ----------------------------------------------------------------------
118    Name: Matthias Blume (blume (at) tti - c (dot) org)
119    Date: 2005/01/18 12:00:00 CST
120    Tag: blume-20050118-profile
121    Description:
122    
123    Made time profiling code (interrupt handler) in runtime system aware
124    of new array representation.
125    
126    ----------------------------------------------------------------------
127    Name: Matthias Blume (blume (at) tti - c (dot) org)
128    Date: 2005/01/14 18:00:00 CST
129    Tag: blume-20050114-heap2exec
130    Description:
131    
132    Implemented new (but still experimental) heap2exec facility.  This is
133    tested under Mac OS X and should work under Linux (will test shortly).
134    It will probably also work on the Sparc (will test some time later).
135    
136      - removed old "HACKED_STANDALONE" hack from runtime
137    
138    To be able to test this, uncomment the request for "heap2asm" in
139    config/targets prior to installation.  (Notice that this is different
140    from "heap2exec" mentioned below.  Not a typo.)
141    
142    To perform an actual test, run the command
143    
144       $ bin/heap2exec heapfile execfile
145    
146    (You can put heap2exec on your shell's path.)
147    
148    For example, run
149    
150      $ bin/heap2exec bin/.heap/ml-yacc.ppc-darwin mly
151    
152    This will create a standalone executable called "mly" which you can
153    then invoke directly as a command.
154    
155    ----------------------------------------------------------------------
156    Name: Matthias Blume (blume (at) tti - c (dot) org)
157    Date: 2005/01/07 11:44:00 CST
158    Tag: blume-20050107-mlstring
159    Description:
160    
161    fixed off-by-one error in ML_STRING macro (globals.c)
162    
163    ----------------------------------------------------------------------
164    Name: Matthias Blume (blume (at) tti - c (dot) org)
165    Date: 2004/12/23 18:00:00 CST
166    Tag: blume-20041223-santa
167    Description:
168    
169    Made ml-build script "smarter" (but only very little).
170    
171    ----------------------------------------------------------------------
172    Name: Matthias Blume (blume (at) tti - c (dot) org)
173    Date: 2004/12/21 15:05:00 CST
174    Tag: blume-20041221-longlong
175    Description:
176    
177    * Implemented access to signed and unsigned long long data in NLFFI.
178    (The parameter-passing part of the picture has not complete. But
179    data structure access seems to work.)
180    
181    * Fixed CM's incorrect assumption that the PPC is little-endian.
182      (On the Mac, it is big-endian.  And that's currently our only
183      PPC platform.)
184    
185    ----------------------------------------------------------------------
186    Name: Matthias Blume (blume (at) tti - c (dot) org)
187    Date: 2004/12/21 12:50:00 CST
188    Tag: blume-20041221-memory
189    Description:
190    
191    Some cleanup in the $c/memory.cm library: separated some concerns by
192    moving allocation code and memory access code each into their own
193    files.
194    
195    ----------------------------------------------------------------------
196    Name: Allen Leung (leunga (at) reservoir (dot) com)
197    Date: 2004/12/17 16:12:00 EST
198    Tag: leunga-20041217-cygwin-smlnj-home
199    Description:
200    
201        The Unix I/O library of SML/NJ on cygwin does not understand
202    Windows style pathname, so problems arise when SMLNJ_HOME is set
203    to a Windows style pathname.  _run-sml now converts SMLNJ_HOME
204    to a POSIX pathname on cygwin.
205    
206    ----------------------------------------------------------------------
207    Name: Matthias Blume (blume (at) tti - c (dot) org)
208    Date: 2004/12/16 13:35:00 CST
209    Tag: Release_110_52
210    Description:
211    
212    Last-minute changes incorporated into 110.52.  Release tag moved.
213    
214    The changes:
215       - HashString.hashString' -> HashString.hashSubstring
216       - bug fix in UnivariateStats
217    
218    ----------------------------------------------------------------------
219    Name: Matthias Blume (blume (at) tti - c (dot) org)
220    Date: 2004/12/15 23:40:00 CST
221    Tag: blume-20041215-hashSubstring
222    Description:
223    
224    - HashString.hashString' -> HashString.hashSubstring
225    - corresponding changes in atom.sml
226    - "de-compressed" (aka. un-obfuscated) code for UnivariateStats and
227      added some comments
228    
229    ----------------------------------------------------------------------
230    Name: Matthias Blume (blume (at) tti - c (dot) org)
231    Date: 2004/12/15 15:30:00 CST
232    Tag: (Release_110_52)
233    Description:
234    
235    New working version (110.52).  NEW BOOTFILES!
236    
237    ----------------------------------------------------------------------
238    Name: Matthias Blume (blume (at) tti - c (dot) org)
239    Date: 2004/12/15 12:45:00 CST
240    Tag: blume-20041215-spaces
241    Description:
242    
243    More on the space problem (this time for Win32).
244    
245    ----------------------------------------------------------------------
246    Name: Matthias Blume (blume (at) tti - c (dot) org)
247    Date: 2004/12/14 17:30:00 CST
248    Tag: blume-20041214-spaces
249    Description:
250    
251    Hacked some of the scripts (in particular: the installer) to cope with
252    spaces in filenames a bit better.  But beware: the current "solution"
253    is likely still full of bugs and inherently incomplete.  (We need to
254    do away with those shell scripts for a comprehensive solution.)
255    
256    ----------------------------------------------------------------------
257    Name: Matthias Blume (blume (at) tti - c (dot) org)
258    Date: 2004/12/13 14:45:00 CST
259    Tag: blume-20041213-ml-makedepend
260    Description:
261    
262    Fixed bug in code for ml-makedepend.
263    
264    ----------------------------------------------------------------------
265    Name: Matthias Blume (blume (at) tti - c (dot) org)
266    Date: 2004/12/09 16:30:00 CST
267    Tag: blume-20041209-statistics
268    Description:
269    
270    Added two simple but potentially useful statistics modules to SML/NJ Library.
271    (See CHANGES file there.)
272    
273    ----------------------------------------------------------------------
274    Name: Matthias Blume (blume (at) tti - c (dot) org)
275    Date: 2004/12/01 16:50:00 CST
276    Tag: blume-20041201-atom
277    Description:
278    
279    smlnj-lib:
280    
281      Added function HashString.hashString' for substrings.
282      Hand-inlined CharVector.foldl into HashString (for speed).
283      Modified implementation of structure Atom to avoid extracting
284      strings from substrings unless necessary.
285      (Also see CHANGES file for smlnj-lib.)
286    
287    ----------------------------------------------------------------------
288    Name: Matthias Blume (blume (at) tti - c (dot) org)
289    Date: 2004/11/24 22:15:00 CST
290    Tag: blume-20041124-cml
291    Description:
292    
293    Made sure CML compiles when Position = Int64.
294    
295    ----------------------------------------------------------------------
296    Name: Matthias Blume (blume (at) tti - c (dot) org)
297    Date: 2004/11/24 14:30:00 CST
298    Tag: blume-20041124-position
299    Description:
300    
301    The compiler can now be compiled in a mode that makes structure Position
302    equal to Int64.  The default, however, is unchanged (Position = Int31)
303    for the time being.
304    
305    To enable 64-bit positions, use the following procedure:
306    
307    1. Start sml
308    2. Autoload $smlnj/cmb.cm (if not already autoloaded)
309    3. Type
310          #set (CMB.symval "USE_64_BIT_POSITIONS") (SOME 1);
311    4. Run CMB.make() as usual.
312    
313    This is barely tested.  The only test so far was a little SML program
314    counting the number of characters in an 8-gigabyte file by
315    reading it character-by-character.  That test was successful.
316    
317    In support of 64-bit positions, a number of new functions have been
318    added to the runtime system.
319    
320    ----------------------------------------------------------------------
321    Name: Matthias Blume (blume (at) tti - c (dot) org)
322    Date: 2004/11/23 14:45:00 CST
323    Tag: blume-20041123-useFile
324    Description:
325    
326    Fixed a problem with unhelpful error messages related to problems with
327    .cm- or .sml files that appear as part of the sml command line.
328    
329    ----------------------------------------------------------------------
330    Name: Matthias Blume (blume (at) tti - c (dot) org)
331    Date: 2004/11/18 15:40:00 CST
332    Tag: Release_110_51
333    Description:
334    
335    New working version (110.51).  NEW BOOTFILES!
336    
337    ----------------------------------------------------------------------
338    Name: Matthias Blume (blume (at) tti - c (dot) org)
339    Date: 2004/11/18 15:35:00 CST
340    Tag: <none>
341    Description:
342    
343    Enabled dlopen and friends for FreeBSD (as recommended by Johannes 5
344    Joemann).
345    
346    ----------------------------------------------------------------------
347    Name: Allen Leung (leunga (at) reservoir (dot) com)
348    Date: 2004/11/17 16:05:21 EST 2004
349    Tag: leunga-20041117-mlrisc-live-kill
350    Description:
351    
352       Added support for MLTree constructs LIVE and KILL
353    to all the architectures.
354    
355    ----------------------------------------------------------------------
356    Name: Matthias Blume (blume (at) tti - c (dot) org)
357    Date: 2004/11/13 00:20:00 CST
358    Tag: blume-20041113-versiontool
359    Description:
360    
361    - Stripped down the versiontool: It now only handles the version number.
362      The date string is generated at bootstrap time (during makeml).
363    
364    - In a previous commit, fixed a minor issue with how polyequal is being
365      translated.  In particular, the code now "looks through" abstractions.
366      This results in slightly fewer polyEqual warnings and hopefully slightly
367      more efficient code.  Important examples for where this matters are
368      the new int64 and word64 types.
369    
370    ----------------------------------------------------------------------
371    Name: Matthias Blume (blume (at) tti - c (dot) org)
372    Date: 2004/11/12 00:30:00 CST
373    Tag: blume-20041112-int64
374    Description:
375    
376    Structure Int64 fully hooked in.  (The implementation is not very
377    efficient, though.)
378    
379    ----------------------------------------------------------------------
380    Name: Matthias Blume (blume (at) tti - c (dot) org)
381    Date: 2004/11/11 17:30:00 CST
382    Tag: blume-20041111-more64
383    Description:
384    
385    All the pieces of Word64 are now there, with the exception of the
386    conversions from and to LargeWord. (Eventually these need to be identities,
387    but for the time being they don't even make sense because LargeWord is
388    32-bit wide.)
389    
390    Also started to add similar support for Int64, but major pieces of that
391    are still missing.
392    
393    ----------------------------------------------------------------------
394    Name: Matthias Blume (blume (at) tti - c (dot) org)
395    Date: 2004/11/11 00:15:00 CST
396    Tag: blume-20041111-word64
397    Description:
398    
399    Structure Word64 is now (almost) complete, word literals and patterns
400    seem to work.  There are a few odd pieces missing.  In particular,
401    I didn't do the {from,to}LargeWord parts because LargeWord is still Word32
402    at the moment.
403    
404    Making Word64 official would mean that LargeWord becomes Word64.  But
405    this requires extreme care because most word-word conversions have to
406    go through LargeWord, so making a mistake means loss of efficiency or
407    worse.  Eventually there will be a solution similar to (but actually
408    simpler than) what I did with IntInf.
409    
410    ----------------------------------------------------------------------
411    Name: Matthias Blume (blume (at) tti - c (dot) org)
412    Date: 2004/11/10 18:12:00 CST
413    Tag: blume-20041110-64bit
414    Description:
415    
416    More 64-bit hacking (but still not even half-way there yet).
417    Also, some assorted improvements to the handling of 8-bit words.
418    
419    ----------------------------------------------------------------------
420    Name: Matthias Blume (blume (at) tti - c (dot) org)
421    Date: 2004/11/09 17:50:00 CST
422    Tag: <none>
423    Description:
424    
425    Started adding some infrastructure for supporting 64-bit int- and
426    word-types.  (Still in its very early stages.)
427    
428    ----------------------------------------------------------------------
429    Name: Matthias Blume (blume (at) tti - c (dot) org)
430    Date: 2004/10/28 10:45:00 CDT
431    Tag: Release_110_50
432    Description:
433    
434    New working version (110.50).  NEW BOOTFILES!
435    
436                 =====================
437    
438    Also:
439    
440      - Changend config/srcarchiveurl from a file just
441        containing the URL string into a file containing
442        shell script code.  The code has access to the $VERSION variable.
443      - Made corresponding changes to config/install.sh and config/unpack.
444      - Default contents of config/srcarchiveurl uses $VERSION and
445        normally does not have to be edited to reflect a version change.
446    
447      (As a result, a version change can be done by just editing
448       config/version, the rest is now automatic.)
449    
450    ----------------------------------------------------------------------
451    Name: Matthias Blume (blume (at) tti - c (dot) org)
452    Date: 2004/10/27 17:50:00 CDT
453    Tag: blume-20041027-btrace-msg
454    Description:
455    
456    BackTrace.monitor now also reports the source of the exception that
457    triggered the trace.
458    
459    ----------------------------------------------------------------------
460    Name: Matthias Blume (blume (at) tti - c (dot) org)
461    Date: 2004/10/27 17:20:00 CDT
462    Tag: blume-20041027-x86-c-calls
463    Description:
464    
465    This is the HISTORY entry for two earlier commits, both concerning
466    the x86 c-calls code in MLRISC:
467    
468      - added a missing LOAD in the code that deals with struct arguments
469      - made sure the caller does not add the wrong number of bytes to the
470        stack pointer after a call of a function returning a struct
471        (the callee already pops the implicit argument which points to
472         the space reserved for the result)
473    
474    ----------------------------------------------------------------------
475    Name: Allen Leung (leunga (at) reservoir (dot) com)
476    Date: 2004/10/24 14:00:00 EST
477    Tag: leunga-20041024-x86-gas-fucomip
478    Description:
479    
480       John discovered a bug in the syntax of fucomip.
481       The opcodes FU?COMIP? have been changed to
482    
483           fu?comip? %st(i), %st
484    
485    ----------------------------------------------------------------------
486    Name: Matthias Blume (blume (at) tti - c (dot) org)
487    Date: 2004/10/20 15:06:00 CDT
488    Tag: blume-20041020-standalone-backtrace
489    Description:
490    
491    Added a mechanism for getting back-trace information from standalone
492    programs.  Here is how it works:
493    
494       1. The part of the program from which you want to get backtrace
495          information (usually the whole program) should be wrapped with
496          BackTrace.monitor.  This is a (unit->'a)->'a function, and your
497          main program could be modified from something like
498    
499             fun main (pgm, args) = ...
500    
501         to
502    
503            fun main (pgm, args) = BackTrace.monitor (fn () => ...)
504    
505       2. To be able to access BackTrace.monitor, you have to add
506          library $smlnj-tdp/plugins.cm to the .cm file that contains your
507          main function.
508    
509       3. Remove all compiled code (i.e., all the .cm/ subdirectories that
510          CM might have created in the past for your project).
511    
512       4. Build the system using this command line:
513    
514             ml-build -Ctdp.instrument=true \$smlnj-tdp/back-trace.cm \
515                      myprog.cm MyProg.main myprog
516    
517          instead of the usual
518    
519             ml-build myprog.cm MyProg.main myprog
520    
521    I changed a library name:
522    
523       $/trace-debug-profile.cm --> $smlnj-tdp/plugins.cm
524    
525    New libraries:
526    
527       $smlnj-tdp/back-trace.cm
528          -- when loaded causes the back-trace plugin to be installed
529       $smlnj-tdp/coverage.cm
530          -- when loaded causes the coverage plugin to be installed
531    
532    ----------------------------------------------------------------------
533    Name: Matthias Blume (blume (at) tti - c (dot) org)
534    Date: 2004/10/18 16:45:00 CDT
535    Tag: blume-20041018-groupowner
536    Description:
537    
538    Added an "obsolete" warning for the "group owner" syntax to CM's parser.
539    
540    Eliminated group owner specs from .cm files throughout the source tree.
541    
542    ----------------------------------------------------------------------
543    Name: Matthias Blume (blume (at) tti - c (dot) org)
544    Date: 2004/10/15 15:45:00 CDT
545    Tag: blume-20041015-coverage
546    Description:
547    
548    * Test coverage tool added!
549    * Further reorganization of tracing-, debugging-, and profiling support:
550    
551        - moved original BTImp -- now called BackTrace -- into a separate
552          library called $/trace-debug-profile.cm
553        - eliminated all mentions of BTrace from SMLofNJ.Internals
554        - only the instrumentation mechanism is now left in the compiler proper
555        - BackTrace module is a plugin which is NOT plugged in by default
556        - Coverage module is another such plugin
557    
558    To get the benefits of any of these plugin modules, the code in
559    question must be compiled with tdp instrumentation turned on.  This
560    can be done by setting SMLofNJ.Internals.TDP.mode to true.
561    (The ref cell is also controlled via the -Ctdp.instrument=... switch.)
562    
563    Plugins are selected at link time.  (Pre-compiled instrumented code
564    can be re-loaded with different plugins in effect.)  When an
565    instrumented module is linked, whatever plugins are at that time
566    enabled will come into effect for that module.
567    
568    To enable the back-trace plugin, load library $/trace-debug-profile.cm
569    and invoke BackTrace.install() (e.g., from the interactive prompt).
570    To enable the coverage plugin, load the same library and invoke
571    Coverage.install().
572    
573    Back-traces are generated automatically on uncaught exceptions and
574    when the code in question explicitly invokes BackTrace.trigger().
575    
576    Coverage (and execution frequency-) information must be queried
577    explicitly by calling Coverage.not_covered and Coverage.hot_spots.
578    
579    ----------------------------------------------------------------------
580    Name: Matthias Blume (blume (at) tti - c (dot) org)
581    Date: 2004/10/14 17:40:00 CDT
582    Tag: blume-20041014-tdp-core
583    Description:
584    
585    Snapshot of a significant overhaul of how the trace/debug/profile support
586    is hooked into the system (specifically: Core and SMLofNJ.Internals).
587    
588    ----------------------------------------------------------------------
589    Name: Matthias Blume (blume (at) tti - c (dot) org)
590    Date: 2004/10/13 16:34:00 CDT
591    Tag: blume-20041013-tdp
592    Description:
593    
594    Some rationalization of names:
595    
596       structure BTrace -> structure TDPInstrument
597       etc.
598    
599    This is is preparation of using the original back-trace
600    instrumentation for other purposes.  "TDP" stands for
601    Trace/Debug/Profile.
602    
603    The control flag controlling whether instrumentation is on or off is now
604    registered under a different name, so instead of running sml as
605    
606     sml -Cinstrument.btrace-mode=true
607    
608    one has to say
609    
610     sml -Ctdp.instrument=true
611    
612    ----------------------------------------------------------------------
613    Name: Matthias Blume (blume (at) tti - c (dot) org)
614    Date: 2004/10/11 16:37:00 CDT
615    Tag: blume-20041011-regions
616    Description:
617    
618    Made some minor modifications to elabcore.sml to have source regions
619    be propagated more tightly -- resulting in better (i.e., smaller)
620    regions being reported in error- and debug messages.
621    
622    ----------------------------------------------------------------------
623    Name: Matthias Blume (blume (at) tti - c (dot) org)
624    Date: 2004/10/08 22:50:00 CDT
625    Tag: blume-20041008-cmkw
626    Description:
627    
628    Fixed handling of keywords in .cm files: After seeing "is" the lexer
629    treats subsequent occurrences of "group", "library", "source", "is",
630    "*", and "-" as ordinary identifiers rather than keywords.
631    
632    Most seriously, this fixes a problem with CM's "shell" tool.  The tool
633    is supposed to accept a tool argument called "source", but this did
634    not work because of the clash with the keyword.
635    
636    ----------------------------------------------------------------------
637    Name: Matthias Blume (blume (at) tti - c (dot) org)
638    Date: 2004/10/07 16:00:00 CDT
639    Tag: blume-20041007-cleanup
640    Description:
641    
642    Assorted cleanup work:
643    
644      - got rid of intstrmap in favor of using the library's
645        hash table implementation
646      - threw out most of the pathnames stuff, as it was not used anyway
647      - simplified tokentable implementation
648      - fixed some minor spelling errors
649    
650    ----------------------------------------------------------------------
651    Name: Matthias Blume (blume (at) tti - c (dot) org)
652    Date: 2004/10/06 15:15:15 CDT
653    Tag: blume-20041006-handler
654    Description:
655    
656    Cleaned up the absyn to reflect the invariant that HANDLE always
657    carries a FNexp as part of the type definition.  This eliminates some
658    superfluous sanity checks at runtime down the road.
659    
660    Some minor cleanup of the btrace code.
661    
662    ----------------------------------------------------------------------
663    Name: Matthias Blume (blume (at) tti - c (dot) org)
664    Date: 2004/10/01 10:20:30 CDT
665    Tag: blume-20041001-slave
666    Description:
667    
668    Added hack to make slave mode work in the presence of the version
669    tool.  (Still, since the master does two passes over the code for
670    CMB.make, the release number gets bumped twice when slaves are
671    attached.  I don't know if this is worth fixing...)
672    
673    ----------------------------------------------------------------------
674    Name: Matthias Blume (blume (at) tti - c (dot) org)
675    Date: 2004/09/30 10:55:00 CDT
676    Tag: blume-20040930-version
677    Description:
678    
679    * Moved the "version" magic into its own little library under
680      src/system/smlnj/internal.  This avoids expensive reconstruction of
681      a stable src/compiler/core.cm.
682    
683    * At the same time, structure CompilerVersion is now known as
684      structure SMLNJVersion.
685    
686    * Arranged for the version tool to NOT kick in when rebuilding the system
687      (makeml -rebuild, fixpt).  Otherwise one would never reach a fixpoint.
688      Also, loading the versiontool does not work when rebuilding the system
689      because CM is not properly initialized at that time.
690    
691    ----------------------------------------------------------------------
692    Name: Matthias Blume (blume (at) tti - c (dot) org)
693    Date: 2004/09/29 14:00:00 CDT
694    Tag: blume-20040929-autoversion
695    Description:
696    
697    Implemented some CM magic to have
698        file src/compiler/TopLevel/main/version.sml
699    generated automagically.
700    The version is taken from two files: config/version and config/release.
701    The first is expected to contain a two-part version number such as 110.49.
702    The second should contain a single number, but it may be missing.
703    
704    If the environment variable VERSIONTOOL_BUMP_RELEASE is defined at the
705    time the version tool is loaded (which is the first time you say CMB.make),
706    then the tool will increment the value stored in config/release every
707    time CMB.make is invoked.
708    
709    The binfile format is now insensitive to anything beyond the first
710    two components of a version number, so bumping the release does not render
711    binfiles incompatible.  Auto-bumping can be used to keep track of versions
712    during development without invalidating existing binfiles.
713    
714    In any case, every CMB.make updates the date information in version.sml.
715    (This is the date that is printed in the banner.)
716    
717    ----------------------------------------------------------------------
718    Name: Matthias Blume (blume (at) tti - c (dot) org)
719    Date: 2004/09/28 10:53:00 CDT
720    Tag: blume-20040928-controls
721    Description:
722    
723    Some cleanup of the controls code.
724    
725    ----------------------------------------------------------------------
726    Name: Matthias Blume (blume (at) tti - c (dot) org)
727    Date: 2004/09/27 22:08:00 CDT
728    Tag: blume-20040927-controls
729    Description:
730    
731    Added two pieces of functionality to the Controls interface:
732    
733    1.   val save'restore: 'a control -> unit -> unit
734    
735       grabs the current value of the control in stage 1 and restores it
736       in stage 2.
737    
738    2.   val set' : 'a control * 'a -> unit -> unit
739    
740       stores the given value into the control in stage 2 (i.e., delayed)
741       but does all error checking in stage 1.
742       (This is for string controls that need to do parse their argument --
743        something that might fail.  In some cases, notably in CM, one
744        already knows the intended argument but wants to delay the actual
745        assignment until a time when error recovery would be more difficult.)
746    
747    Changed the handling of controls in tool arguments to classes "sml" and
748    "lazysml":
749       - use Controls.save'restore as a more robust way of restoring the
750         old value (in particular: without having to re-parse the string)
751       - use controls to handle the "overload" keyword in the init group
752         (I believe this change actually fixes a long-standing obscure bug.)
753    
754    ----------------------------------------------------------------------
755    Name: Matthias Blume (blume (at) tti - c (dot) org)
756    Date: 2004/09/27 17:00:00 CDT
757    Tag: blume-20040927-lazysml
758    Description:
759    
760    Added a new tool class called "lazysml" to CM's tool chest.  The only
761    difference to "sml" is that compilation is done with Control.lazysml
762    set to true.  A source of class "lazysml" is automatically recognized
763    by a file name suffix of ".lml".
764    
765    In addition to the above feature, the original class "sml" now also
766    supports a tool argument "lazy" which has the same effect.  As a
767    result, the following three lines are equivalent:
768    
769        foo.sml : lazysml
770        foo.sml : sml (lazy)
771        foo.sml (lazy)
772    
773    The setting goes into effect both during parsing and during
774    compilation.  The original setting is restored right after parsing and
775    after compilation, respectively.
776    
777    In addition to all the above, there is also a general mechanism to set
778    ANY of the "controls" that are available at the command line via
779    "-C..." on a per-sml-file basis.  The same rules that apply for "lazy"
780    apply as well. (In fact, "lazy" is implemented as a special case of
781    the general mechanism.)
782    
783    The .cm file syntax uses a new keyword tool argument called "with".
784    There are several ways of indicating the desired settings:
785    
786        foo.sml (with:parser.quotations=true)
787        foo.sml (with:(name:parser.quotations value:true))
788        foo.sml (with:(name:name1 value:value1 name:name2 value:value2 ...))
789        foo.sml (with:(name1=value1 name2=value2 ...))
790        foo.sml (with:(name1=value1 name:name2 value:value2 name3=value3 ...))
791    
792        etc.
793    
794    Another possible abbreviation is to leave out the =v or value:v part
795    if the name refers to a boolean control (in which case the value is
796    taken to be true).  Thus, one could get lazy sml also by saying:
797    
798        foo.sml (with:parser.lazy-keyword=true)
799        foo.sml (with:parser.lazy-keyword)
800        foo.sml (with:(name:parser.lazy-keyword value:true))
801        foo.sml (with:(name:parser.lazy-keyword))
802    
803    ----------------------------------------------------------------------
804    Name: Matthias Blume (blume (at) tti - c (dot) org)
805    Date: 2004/09/24 16:22:00 CDT
806    Tag: blume-20040924-ppc-long-branch
807    Description:
808    
809    Turned message about "emiting long form of branch" off by default.
810    Added a control flag to turn it back on when desired.
811    
812    ----------------------------------------------------------------------
813    Name: Matthias Blume (blume (at) tti - c (dot) org)
814    Date: 2004/09/24 16:05:00 CDT
815    Tag: blume-20040924-rounding
816    Description:
817    
818    Applied patch for setting rounding modes under Mac OS X.  Thanks to
819    Melissa O'Neill for providing the code!
820    
821    ----------------------------------------------------------------------
822    Name: Matthias Blume (blume (at) tti - c (dot) org)
823    Date: 2004/09/23 17:30:00 CDT
824    Tag: blume-20040923-envvars
825    Description:
826    
827    1. Changed definition of type ControlRegistry.registry_tree to
828       include control_info (i.e., the name of the controlling environment
829       variable).
830    
831    2. Added command-line flags -e and -E to print the names of environment
832       variables that can be used to control internal settings.
833       (This uses the new API mentioned in 1.)
834    
835    ----------------------------------------------------------------------
836    Name: Matthias Blume (blume (at) tti - c (dot) org)
837    Date: 2004/09/13 16:50:00 CDT
838    Tag: Release_110_49
839    Description:
840    
841    New working version (110.49).  NEW BOOTFILES!
842    
843    ----------------------------------------------------------------------
844    Name: Matthias Blume
845    Date: 2004/09/13 16:20:00 CDT
846    Tag: blume-20040913-config-mlrisc
847    Description:
848    
849    Put target "mlrisc" back into the default list.
850    (There is no harm in having it, and some users have expressed their
851    wish to have "mlrisc" included by default.)
852    
853    ----------------------------------------------------------------------
854    Name: John Reppy
855    Date: 2004/09/13
856    Tag: jhr-20040913-signals
857    Description:
858    
859    Fixed the signal masking code to properly nest mask/unmask operations
860    on a per-signal basis.
861    
862    ----------------------------------------------------------------------
863    Name: Matthias Blume (blume (at) tti - c (dot) org)
864    Date: 2004/09/08 13:20:00 CDT
865    Tag: blume-20040908-heap-magic
866    Description:
867    
868    Bumped the heap macig number to 0x09082004 to account for the changed
869    layout of the ML frame under MacOS X.
870    
871    ----------------------------------------------------------------------
872    Name: Allen Leung (leunga (at) reservoir (dot) com)
873    Date: 2004/09/03 11:26:00 EST
874    Tag: leunga-20040903-cygwin-install
875    Description:
876    
877       Added a patch to _arch-n-opsys to enable the Cygwin runtime.
878    The Cygwin runtime is turned on by setting the environment
879    variable SMLNJ_CYGWIN_RUNTIME to 1.
880    
881    ----------------------------------------------------------------------
882    Name: Matthias Blume (blume (at) tti - c (dot) org)
883    Date: 2004/08/31 17:15:00 CDT
884    Tag: blume-20040831-core
885    Description:
886    
887    Added some exports to src/compiler/core.cm upon request by J. Joemann.
888    
889    ----------------------------------------------------------------------
890    Name: Matthias Blume (blume (at) tti - c (dot) org)
891    Date: 2004/08/30 17:55:00 CDT
892    Tag: blume-20040830-installer
893    Description:
894    
895    Upon request by Johannes Joemann:
896    
897    - improved ML code of installer to fall back to coping when renaming
898      fails (i.e., when source and target are on different file systems);
899      the code compiles but has yet to be tested in anger
900    - removed mlrisc from list of default targets (config/targets)
901    
902    ----------------------------------------------------------------------
903    Name: Matthias Blume (blume (at) tti - c (dot) org)
904    Date: 2004/08/27 17:20:00 CDT
905    Tag: blume-20040827-ptreql
906    Description:
907    
908    Added ptreql primop to structure InlineT (upon request from Larry
909    Paulson).
910    
911    ----------------------------------------------------------------------
912    Name: Allen Leung (leunga (at) reservoir (dot) com)
913    Date: 2004/08/15 21:21:00 EST
914    Tag: leunga-110_48-udgraph
915    Description:
916    
917    Another bug fix from Carl Hauser:
918    
919    diff /net/niflab/smlnj48/src/MLRISC/graphs/udgraph.sml udgraph.sml
920    > 48c48
921    > <              | rmv((e as (k,_))::es,L) = rmv(es,if k = i then es else
922    > e::L)
923    > ---
924    > >              | rmv((e as (k,_))::es,L) = rmv(es,if k = i then L else e::L)
925    > Without this, any deletion of an edge in an undirected graph does severe
926    > violence to the graph.
927    
928    ----------------------------------------------------------------------
929    Name: Allen Leung (leunga (at) reservoir (dot) com)
930    Date: 2004/08/10 23:35:00 EST
931    Tag: leunga-110_48-ppc
932    Description:
933    
934       The IBM/MacOS syntax switch on PPC was incorrectly swapped.
935    
936    ----------------------------------------------------------------------
937    Name: Matthias Blume (blume (at) tti - c (dot) org)
938    Date: 2004/08/10 12:00:00 CDT
939    Tag: Release_110_48
940    Description:
941    
942    New working version (110.48).  NEW BOOTFILES!
943    
944    ----------------------------------------------------------------------
945    Name: Allen Leung (leunga (at) reservoir (dot) com)
946    Date: 2004/08/09 12:21:00 EST
947    Tag: leunga-110_47-dijsktra
948    Description:
949    
950    Bug fix from Carl Hauser:
951    
952    single_source_shortest_paths in dijkstra.sml was observed to get wrong
953    answers (by comparing to single_source_shortest_paths in bellman-ford.sml).
954    
955    The problem is that following the expression A.update(dist,s,Num.zero)
956    it is necessary to update the priority queue using Q.decreaseWeight(Q,s).
957    
958    ----------------------------------------------------------------------
959    Name: Matthias Blume (blume (at) tti - c (dot) org)
960    Date: 2004/08/06 18:10:00 CDT
961    Tag: blume-20040806-cmdline
962    Description:
963    
964    Fiddled with handling of command-line options:
965    
966      * sml now quits after processing the command line
967        if -H, -S, -h<n>, or -s<n> appears as the last
968        command-line argument
969      * a new option -q terminates the session when encountered on
970        the command line; subsequent arguments will be ignored
971      * bug fixes: short (erroneous) arguments are no longer ignored
972        completely
973    
974    ----------------------------------------------------------------------
975    Name: Allen Leung (leunga (at) reservoir (dot) com)
976    Date: 2004/08/04 18:17:00 EST
977    Tag: leunga-110_47-ppc-ibm-asm
978    Description:
979    
980      - Added minimal IBM assembly syntax support for PowerPC.
981    
982      - Cygwin: manually changed the file cygwin.def.  Some exported symbols have
983        been altered in the runtime.  We need an automatic way to keep the file
984        in sync.
985    
986    ----------------------------------------------------------------------
987    Name: Matthias Blume (blume (at) tti - c (dot) org)
988    Date: 2004/08/04 14:00:00 CDT
989    Tag: Release_110_47
990    Description:
991    
992    New working version (110.47).  NEW BOOTFILES!
993    
994    ----------------------------------------------------------------------
995    Name: Matthias Blume (blume (at) tti - c (dot) org)
996    Date: 2004/08/03 14:25:00 CDT
997    Tag: blume-20040803-callingconv
998    Description:
999    
1000    Added low-level support for choosing C calling conventions by
1001    twiddling the type of rawccall.  (See
1002    src/compiler/Semant/types/cproto.sml for details.)
1003    
1004    ----------------------------------------------------------------------
1005    Name: Matthias Blume (blume (at) tti - c (dot) org)
1006    Date: 2004/08/02 15:55:00 CDT
1007    Tag: blume-20040802-backout
1008    Description:
1009    
1010    Backed out of change to win32-filesys.c.  The earlier patch to
1011    get_file_time caused CM to produce files with the wrong time stamp.
1012    
1013    ----------------------------------------------------------------------
1014    Name: Matthias Blume (blume (at) tti - c (dot) org)
1015    Date: 2004/08/02 14:45:00 CDT
1016    Tag: blume-20040802-nlffi-win32
1017    Description:
1018    
1019    Added NLFFI support for Win32, adapted from a patch provided by David
1020    Hansel.  This is currently completely untested.  Also, the issue
1021    concerning stdcall vs. ccall is still unresolved.
1022    
1023    ----------------------------------------------------------------------
1024    Name: Matthias Blume (blume (at) tti - c (dot) org)
1025    Date: 2004/07/30 17:55:00 CDT
1026    Tag: blume-20040730-various
1027    Description:
1028    
1029    Gearing up towards 110.47...
1030    
1031    - various minor bugfixes to ml-nlffigen
1032    - a beginning of a manual for nlffi
1033    
1034    - eliminated 'export name=value' in config/install.sh as this does
1035      not work with certain versions of /bin/sh
1036      (Thanks to David King at Motorola for catching this.)
1037    
1038    - several bugfixes provided or suggested by David Hansel at Reactive Systems:
1039      - added a test for tm==NULL to gmtime.c and localtime.c
1040      - applied patch for incorrect GetFileTime under win32
1041      - toSeconds -> toMilliseconds in Win32/win32-process.sml
1042    
1043    ----------------------------------------------------------------------
1044    Name: Matthias Blume (blume (at) tti - c (dot) org)
1045    Date: 2004/07/21 18:20:00 CDT
1046    Tag: blume-20040721-nlffigen
1047    Description:
1048    
1049    - Fixed minor issue in ml-nlffigen: Now generate structure T_foo
1050      for a typedef to an incomplete type, but leave out the "typ" member.
1051      (This is just for consistency.)
1052    - Started to produce what is supposed to become better (i.e., comprehensive)
1053      documentation of what ml-nlffigen does and produces.
1054    
1055    ----------------------------------------------------------------------
1056    Name: Matthias Blume (blume (at) tti - c (dot) org)
1057    Date: 2004/07/14 16:25:00 CDT
1058    Tag: blume-20040714-union
1059    Description:
1060    
1061    Added C_UNION to c-calls/c-types.sml and updated the machinery
1062    (ml-nlffigen, cproto.sml) that conveys C function interface
1063    information to the code generator.
1064    
1065    However, the actual architecture-specific implementation of function
1066    arguments and results that are C unions is still not implemented.
1067    
1068    ----------------------------------------------------------------------
1069    Name: Allen Leung (leunga (at) reservoir (dot) com)
1070    Date: 2004/07/14 14:38:00 EST
1071    Tag: leunga-110_46_1-ppc-lwzu
1072    Description:
1073    
1074        Added these instructions to the PowerPC architecture:
1075        LBZU(X), LHZU(X), LWZU(X),
1076        STWU(X), STFDU, STFSU
1077    
1078        etc...
1079    
1080        Note: I haven't added their instruction encoding into the description.
1081    
1082    ----------------------------------------------------------------------
1083    Name: Allen Leung (leunga (at) reservoir (dot) com)
1084    Date: 2004/07/13 15:04:00 EST
1085    Tag: leunga-110_46_1-ppc-lwarx
1086    Description:
1087    
1088       Added the two instructions LWARX and STWCX to the PowerPC
1089    instruction set.
1090    
1091       A (untested) rewrite of loop-structure.sml.  The old version
1092    is completely broken.
1093    
1094    ----------------------------------------------------------------------
1095    Name: Matthias Blume (blume (at) tti - c (dot) org)
1096    Date: 2004/07/13 13:50:00 CDT
1097    Tag: blume-20040713-nlffi
1098    Description:
1099    
1100    - use paramAlloc to report c-calls with too many arguments
1101      (for PPC version where parameter area is pre-allocated)
1102    - added ccall_maxargspace to machspec (to implement the above)
1103    - made "make" commend in CM's "make" tool configurable
1104    - added option (default: on) for passing the name of the SML/NJ's "bin"
1105      directory to "make"; the call looks like this:
1106    
1107         make <options> SMLNJ_BINDIR=<dir> <target>
1108    
1109      This can be used by the Makefile to, e.g., pick the "right" version
1110      of ml-nlffigen.
1111    - minor code tweaks
1112    
1113    ----------------------------------------------------------------------
1114    Name: Matthias Blume (blume (at) tti - c (dot) org)
1115    Date: 2004/07/12 22:50:00 CDT
1116    Tag: blume-110_46_1-macosx-nlffi
1117    Description:
1118    
1119    NLFFI under Mac OS X now working (sort of).  This is largely untested,
1120    though.
1121    
1122    Note:  1. You have to make a new, clean build of the runtime system.
1123           2. There are new BOOTFILES, you have to use them!
1124              (Doing the bootstrap process yourself would be *very* painful!
1125               If you absolutely have to do it, build the system under
1126               a different architecture and then cross-compile.)
1127    
1128    Version bumped to 110.46.1 to account for runtime data format changes.
1129    
1130    ----------------------------------------------------------------------
1131    Name: Matthias Blume (blume (at) tti - c (dot) org)
1132    Date: 2004/06/18 14:30:00 CDT
1133    Tag: blume-20040618-unix
1134    Description:
1135    
1136    Changed the implementation of structure Unix so that the same stream
1137    is returned every time one of the {text,bin}{In,Out}streamOf functions
1138    is invoked on the same proc.  This is not what the spec currently
1139    says -- although IMO it arguably should.  (See discussion below.)
1140    
1141    ----------------------------------------------------------------------
1142    Name: Matthias Blume (blume (at) tti - c (dot) org)
1143    Date: 2004/06/17 18:15:00 CDT
1144    Tag: Release_110_46
1145    Description:
1146    
1147    New working version (110.46).  NEW BOOTFILES!
1148    
1149    ----------------------------------------------------------------------
1150    Name: Matthias Blume (blume (at) tti - c (dot) org)
1151    Date: 2004/06/17 17:20:00 CDT
1152    Tag: blume-20040617-timer-unix
1153    Description:
1154    
1155    Changed the interface of structures Timer and Unix to match the most
1156    recent Basis spec.
1157    
1158    In the case of Unix there still seems to be an open/weird issue:
1159    
1160       The {text,bin}{In,Out}streamOf functions are supposed to create
1161       fresh streams whenever they are called -- as opposed to have them
1162       return the same stream every time.  This design is supposed to
1163       prevent space leaks caused by proc values hanging on to streams.
1164    
1165       The reap function, on the other hand, is supposed to close the
1166       streams.  This cannot be done without having a handle on the
1167       stream in proc after all...
1168    
1169    I took the liberty to implement the following stopgap solution:
1170    
1171      The proc value hangs on to the most recently created stream(s).
1172      Reap closes those.  If either or both of the two streams hadn't
1173      been created at all yet, then reap will close the corresponding
1174      file descriptors directly.
1175    
1176    PS: I don't understand the original space leak argument anymore.  If
1177    a proc hangs on to the imperative stream, then I/O operations on those
1178    will advance the state of the cached stream and avoid the space leak.
1179    
1180    ----------------------------------------------------------------------
1181    Name: Matthias Blume (blume (at) tti - c (dot) org)
1182    Date: 2004/05/28 16:45:00 CDT
1183    Tag: blume-20040528-basis
1184    Description:
1185    
1186    Added signature PACK_REAL and exported functor PrimIO.
1187    
1188    ----------------------------------------------------------------------
1189    Name: Matthias Blume (blume (at) tti - c (dot) org)
1190    Date: 2004/05/25 16:00:00 CDT
1191    Tag: blume-20040525-group-owner
1192    Description:
1193    
1194    CM now ignores (but still accepts) the "owner" information in group
1195    descriptions.  The owner of a group is its next enclosing
1196    library. Each group must have a unique owner.  (There is a virtual
1197    "toplevel" library that owns groups which are not nested within a real
1198    library.)  Previously, each group had to explicitly declare its owner,
1199    and CM would check that such a declaration is correct.  The new scheme
1200    is to have CM check that for each group there is precisely one owning
1201    library.
1202    
1203    The advantage of the new scheme is that the programmer no longer needs
1204    to maintain the somewhat annoying owner information.  The downside is
1205    that CM cannot enforce the ownership rule across multiple runs of
1206    CM.make.  Fortunately, enclosing the same group in two different
1207    libraries A and B which are not part of the same program does not
1208    cause real problems.
1209    
1210    ----------------------------------------------------------------------
1211    Name: Matthias Blume (blume (at) tti - c (dot) org)
1212    Date: 2004/05/20 16:00:00 CDT
1213    Tag: blume-20040520-win32
1214    Description:
1215    
1216    Made the win32 version work again.  (Strangely, a misplaced comma had
1217    slipped into win32-process.c which prevented the runtime from being
1218    compiled correctly.)
1219    
1220    Also, included a minor addition to ml-build.bat analogous to what was
1221    done in blume-20040519-ml-build.
1222    
1223    ----------------------------------------------------------------------
1224    Name: Matthias Blume (blume (at) tti - c (dot) org)
1225    Date: 2004/05/19 22:10:00 CDT
1226    Tag: blume-20040519-ml-build
1227    Description:
1228    
1229    Arranged for ml-build to clean up after itself a little bit better.
1230    The script generates a temporary SML source file and compiles it using
1231    CM, so CM generates metadata (GUID, SKEL, objectfile) for it.  It now
1232    gets rid of those at the end, so they don't accumulate under .cm.
1233    
1234    This required a minor change to install.sh because the name of the
1235    metadata directory (default: .cm) is actually configurable at
1236    installation time.
1237    
1238    ----------------------------------------------------------------------
1239    Name: Matthias Blume (blume (at) tti - c (dot) org)
1240    Date: 2004/05/18 15:50:00 CDT
1241    Tag: blume-20040518-mkreader
1242    Description:
1243    
1244    Added Posix.IO.mk{Bin,Text}{Reader,Writer} by lifting their respective
1245    implementations from internal modules PosixBinPrimIO and PosixTextPrimIO.
1246    
1247    ----------------------------------------------------------------------
1248    Name: Matthias Blume (blume (at) tti - c (dot) org)
1249    Date: 2004/05/11 14:35:00 CDT
1250    Tag: blume-20040511-win32sock
1251    Description:
1252    
1253    Added previously missing support for many socket-related functions
1254    under win32.  Thanks to David Hansel <hansel@reactive-systems.com>
1255    for the voluminous patch!
1256    
1257    (I have not tested this patch under win32 yet.)
1258    
1259    Here is David's e-mail:
1260    
1261    Hi,
1262    
1263    Attached to this email you find a diff against sml/nj 110.45
1264    that will enable socket support under Windows.
1265    
1266    To apply the patch (using unix or cygwin)
1267    1) gunzip runtime.diff.gz
1268    2) "cd" into "src/runtime" in the source tree of a fresh
1269       110.45 installation.
1270    3) patch -p 1 < [your/path/to]runtime.diff
1271    
1272    The code compiles fine but has NOT yet been extensively tested.
1273    I only ran a few tests for basic socket client functionality
1274    (which worked fine).  Especially the functions that use ioctl
1275    are not tested at all and might not work (see below).
1276    
1277    I implemented this since we want to move to a newer version of sml/nj
1278    but need socket support in order to use it.  This is the first time I
1279    even had a look at the sml/nj source,  so please review my changes
1280    before making this part of the distribution!  Here are a few issues
1281    that I think might be better for someone to solve who is more
1282    familiar with the sml/nj source (and socket programming):
1283    
1284    - getnetbyaddr.c and getnetbyname.c will raise a "not implemented"
1285      exception since I could not figure out what the windows equivalent
1286      of these functions is
1287    
1288    - In sockets-osdep.h there are a some #include statements that are
1289      only used in a few files that include sockets-osdep.h
1290    
1291    - In smlnj-sock-lib.c, function init_fn() calls WSAStartup() but
1292      does not process its return value since I don't know how to
1293      report an error upwards.
1294    
1295    - It would probably be good to have a call to WSACleanup() when
1296      the library is unloaded (if there is such a possibility).
1297      Otherwise I think Windows will take care of this automatically
1298      when the process finishes.
1299    
1300    - I used ioctlsocket() as a replacement for ioctl() but I have
1301      no idea if that is actually the proper replacement on Windows.
1302    
1303    - All these issues are marked in the code by "FIXME" comments.
1304    
1305    We use sml/nj extensively in our products and are quite happy
1306    with it.  I hope this contribution will help you.
1307    
1308    Keep up the good work!
1309    
1310    David
1311    
1312    ----------------------------------------------------------------------
1313    Name: Matthias Blume (blume (at) tti - c (dot) org)
1314    Date: 2004/05/11 14:20:00 CDT
1315    Tag: blume-20040511-installml
1316    Description:
1317    
1318    Fixed two bugs in installml script.  (Thanks to Vesa A. Norrman for
1319    the patch.)
1320    
1321    ----------------------------------------------------------------------
1322    Name: Matthias Blume (blume (at) tti - c (dot) org)
1323    Date: 2004/05/11 14:05:00 CDT
1324    Tag: blume-20040511-nlffi-netbsd
1325    Description:
1326    
1327    Added support for nlffi under netbsd.  (Thanks to Vesa A. Norrman for
1328    the patch.)
1329    
1330    ----------------------------------------------------------------------
1331    Name: Matthias Blume (blume (at) tti - c (dot) org)
1332    Date: 2004/05/11 12:05:00 CDT
1333    Tag: blume-20040511-exports
1334    Description:
1335    
1336    As per request by Adam Chlipala <adam@hcoop.net>, extended various
1337    export lists in compiler-related .cm-files.
1338    
1339    ----------------------------------------------------------------------
1340    Name: Matthias Blume (blume (at) tti - c (dot) org)
1341    Date: 2004/05/11 11:35:00 CDT
1342    Tag: blume-20040511-allsource
1343    Description:
1344    
1345    The installer now honors the "src-smlnj" target again, although its meaning
1346    has changed from "all sources required for the compiler" to "all sources
1347    the installer knows about".  In other words, if you enable "src-smlnj"
1348    in the "targets" file, then the installer will pull in sources for
1349    everything.  (Notice that this refers to source code only.  Compiled
1350    code is still only installed for modules that were requested explicitly
1351    or which are required for other modules that were requested explicitly.)
1352    
1353    ----------------------------------------------------------------------
1354    Name: Matthias Blume (blume (at) tti - c (dot) org)
1355    Date: 2004/04/23 17:40:00 CDT
1356    Tag: blume-20040423-ieee-scan
1357    Description:
1358    
1359    Fixed IEEEReal.scan (and .fromString) so that if there is an overflow
1360    in the exponent calculation we get INF or ZERO (depending on the mantissa
1361    and the sign of the exponent).
1362    
1363    ----------------------------------------------------------------------
1364    Name: Matthias Blume (blume (at) tti - c (dot) org)
1365    Date: 2004/04/23 10:40:00 CDT
1366    Tag: blume-20040423-ml-build
1367    Description:
1368    
1369    The ml-build script now terminates with a non-0 status when something
1370    goes wrong.
1371    
1372    ----------------------------------------------------------------------
1373    Name: Matthias Blume (blume (at) tti - c (dot) org)
1374    Date: 2004/04/22 16:35:00 CDT
1375    Tag: blume-20040422-Option
1376    Description:
1377    
1378    Made exception Option to be the same as exception Option.Option
1379    (as it should be).
1380    
1381    ----------------------------------------------------------------------
1382    Name: Allen Leung (leunga (at) reservoir (dot) com)
1383    Date: 2004/03/19 14:40:00 EST
1384    Tag: leunga-20040319-cygwin-nlffi
1385    Description:
1386    
1387    Fixed the runtime so that ml-nlffi-lib runs on the cygwin version
1388    of SML/NJ.  The problem is that
1389    
1390       lib = dlopen(NULL, ...)
1391       f   = dlsym(lib, "malloc");
1392    
1393    does not work on Windows unless we explicitly export symbols
1394    such as 'malloc' during linking.  We fixed this by explicitly
1395    exporting the required symbols with the magic gcc incantation:
1396    
1397        -Wl,--export-all cygwin.def
1398    
1399    where cygwin.def is a file containing all the symbols that
1400    we wish to export.
1401    
1402    I suspect this is a Windows problem and we'll have to
1403    do the same (somehow with windows compilers) when
1404    we build the native win32 version with the system
1405    calls LoadLibrary/GetProcAddress.
1406    
1407    ----------------------------------------------------------------------
1408    Name: Matthias Blume (blume (at) tti - c (dot) org)
1409    Date: 2004/03/04 16:35:00 CST
1410    Tag: blume-20040304-intinf-fmt
1411    Description:
1412    
1413    Fixed problem with IntInf.fmt (sign would show up on the right instead
1414    of on the left for BIN, OCT, and HEX).
1415    
1416    ----------------------------------------------------------------------
1417    Name: Matthias Blume (blume (at) tti - c (dot) org)
1418    Date: 2004/03/04 11:25:00 CST
1419    Tag: blume-20040304-symlinks
1420    Description:
1421    
1422    Fixed problem with installer script (unix only) where bin/ml-yacc and
1423    friends pointed (via symlinks) to absolute locations instead of just
1424    .run-sml.  This was reported by Vesa A Norrman.
1425    
1426    ----------------------------------------------------------------------
1427    Name: Matthias Blume (blume (at) tti - c (dot) org)
1428    Date: 2004/02/13 14:50:00 CST
1429    Tag: Release_110_45
1430    Description:
1431    
1432    New working version (110.45). New bootfiles.
1433    
1434    ----------------------------------------------------------------------
1435    Name: Matthias Blume (blume (at) tti - c (dot) org)
1436    Date: 2004/01/26 15:15:15 CST
1437    Tag: blume-20040126-toplevel
1438    Description:
1439    
1440    Improved handling of exceptions at the interactive toplevel.
1441    
1442    ----------------------------------------------------------------------
1443    Name: Matthias Blume (blume (at) tti - c (dot) org)
1444    Date: 2004/01/26 11:25:00
1445    Tag: blume-20040126-app
1446    Description:
1447    
1448    Type of top-level "app" corrected.
1449    Added code for setting vp_limitPtrMask to Win32-specific runtime.
1450    
1451    ----------------------------------------------------------------------
1452    Name: Matthias Blume (blume (at) tti - c (dot) org)
1453    Date: 2003/11/18 17:10 CST
1454    Tag: blume-20031118-basis-fiddle
1455    Description:
1456    
1457    - changed Timer interface to what might become the spec
1458    - POSIX_FLAGS -> BIT_FLAGS according to spec
1459    - some other minor discrepancies wrt. spec eliminated
1460    
1461    ----------------------------------------------------------------------
1462    Name: Matthias Blume (blume (at) tti - c (dot) org)
1463    Date: 2003/11/06 12:00:00 CST
1464    Tag: Release_110_44
1465    Description:
1466    
1467    New working version (110.44). New bootfiles.
1468    
1469    ----------------------------------------------------------------------
1470    Name: Matthias Blume (blume (at) tti - c (dot) org)
1471    Date: 2003/11/04 11:50:00 CST
1472    Tag: blume-20031104-move-libraries
1473    Description:
1474    
1475    Eliminated the "dont_move_libraries" directive in config/targets.
1476    (The mechanism was broken and could not be fixed easily.  Moreover,
1477    there does not seem to be any reason not to move all libraries into
1478    lib during installation.  I originally implemented this directive as a
1479    backward-compatibility feature when I first introduced the new CM.
1480    Now that things have been stable for a long time and going back to the
1481    old CM is not an option, there is no reason to keep it around.)
1482    
1483    ----------------------------------------------------------------------
1484    Name: Matthias Blume (blume (at) tti - c (dot) org)
1485    Date: 2003/11/03 16:00:00 CST
1486    Tag: blume-20031103-installdir
1487    Description:
1488    
1489    Made installer honor INSTALLDIR variable again.  (Thanks to Chris
1490    Richards for pointing out the problem and providing the solution.)
1491    
1492    ----------------------------------------------------------------------
1493    Name: Matthias Blume (blume (at) tti - c (dot) org)
1494    Date: 2003/10/01 17:05:00 CDT
1495    Tag: blume-20031001-lal-mlrisc
1496    Description:
1497    
1498    MLRISC bug fix from Lal.
1499    
1500    ----------------------------------------------------------------------
1501    Name: Matthias Blume (blume (at) tti - c (dot) org)
1502    Date: 2003/09/30 16:10:00 CDT
1503    Tag: blume-20030930-primio-bat
1504    Description:
1505    
1506    1. Added openVector, nullRd, and nullWr to PRIM_IO.
1507    2. Improved .bat files (for Win32 port) to make things work under Win95.
1508       (thanks to Aaron S. Hawley for this one)
1509    
1510    ----------------------------------------------------------------------
1511    Name: Matthias Blume (blume (at) tti - c (dot) org)
1512    Date: 2003/09/26 16:05:00 CDT
1513    Tag: blume-20030926-wrappriv
1514    Description:
1515    
1516    Added missing wrapper for privilege "primitive" in $smlnj/viscomp/core.cm.
1517    
1518    ----------------------------------------------------------------------
1519    Name: Matthias Blume (blume (at) tti - c (dot) org)
1520    Date: 2003/09/26 15:00:00 CDT
1521    Tag: blume-20030926-110_43_3
1522    Description:
1523    
1524    - additional cleanup
1525    - version number bump, NEW BOOTFILES
1526    
1527    ----------------------------------------------------------------------
1528    Name: Matthias Blume (blume (at) tti - c (dot) org)
1529    Date: 2003/09/26 12:00:00 CDT
1530    Tag: blume-20030926-ppautoload
1531    Description:
1532    
1533    I modified the read-eval-print loop so that the autoloader gets
1534    invoked whenever the prettyprinter tries to look up a symbol that
1535    is not currently defined in the toplevel environment but which
1536    appears in CM's autoload registry.  As a result, we see far fewer of
1537    those ?.Foo.Bar.xxx names in the prettyprinter's output.
1538    
1539    In addition to this I tried to clean up some pieces of the Basis
1540    implementation (e.g., Socket, Word8Array) in order to prevent other
1541    instances of these ?.Foo.Bar.xxx names from being printed.
1542    
1543    The mechanism that picks names for types still needs some work, though.
1544    (Right now it seems that if there is a type A.t which is defined to
1545    be B.u, but B is unavailable at toplevel, then A.t gets printed as
1546    "?.B.u" although the perhaps more sensible solution would be to use
1547    "A.t" in this case.  In other words, the prettyprinter should follow
1548    a chain of DEFtycs not farther than there are corresponding toplevel
1549    names in the current environment.)
1550    
1551    ----------------------------------------------------------------------
1552    Name: Matthias Blume (blume (at) tti - c (dot) org)
1553    Date: 2003/09/24 16:31:00 CDT
1554    Tag: blume-20030924-installer
1555    Description:
1556    
1557    Another installer tweak:  All the ML code for the installer is now
1558    compiled during CMB.make and put into a little library called
1559    $smlnj/installer.cm.  The installation then simply invokes
1560    
1561       sml -m $smlnj/installer.cm
1562    
1563    and everything happens automagically.
1564    
1565    Win32:  ML code senses value of environment variable SMLNJ_HOME.
1566    Unix:   ML code senses values of environment variables ROOT, CONFIGDIR,
1567            and BINDIR.
1568    
1569    The new scheme guarantees that the ML code responsible for the installation
1570    is in sync with the APIs of the main system.  Also, the installer is
1571    somewhat faster because the installer script is precompiled.
1572    
1573    ----------------------------------------------------------------------
1574    Name: Matthias Blume (blume (at) tti - c (dot) org)
1575    Date: 2003/09/24 15:35:00 CDT
1576    Tag: blume-20030924-synsock
1577    Description:
1578    
1579    Added a signature SYNCHRONOUS_SOCKET to basis.cm.  This is like SOCKET
1580    but excludes all non-blocking operations.  Defined SOCKET (in Basis)
1581    and CML_SOCKET in terms of SYNCHRONOUS_SOCKET.  Removed superfluous
1582    implementations of non-blocking operations from CML's Socket
1583    structure.
1584    
1585    ----------------------------------------------------------------------
1586    Name: Matthias Blume (blume (at) tti - c (dot) org)
1587    Date: 2003/09/24 15:10:05 CDT
1588    Tag: blume-20030924-sockets
1589    Description:
1590    
1591    1. Fixed SOCKET API and implementation to match Basis spec.
1592       This required changing the internal representation of sockets to one
1593       that remembers (for each socket file descriptor) whether it is currently
1594       blocking or non-blocking.  This state is maintained lazily (i.e., a system
1595       call is made only if the state actually needs to change).
1596    
1597    2. OS-specific details of sockets were moved into separate files, thus
1598       making it possible to unify the bulk of the socket implementations
1599       between Unix and Win32.
1600    
1601    3. CML's socket API changed accordingly.
1602       (Note that we need to remove non-blocking functions from this API
1603       since they are redundant in the case of CML!)
1604    
1605    4. CML's socket implementation now makes use of non-blocking functions
1606       provided by Basis, thus removing all OS-dependent code from this part
1607       of CML.
1608    
1609    5. Changed Real64.precision from 52 to 53.  Minor cleanup in Real64 code.
1610    
1611    ----------------------------------------------------------------------
1612    Name: Matthias Blume (blume (at) tti - c (dot) org)
1613    Date: 2003/09/22 12:10:00 CDT
1614    Tag: blume-20030922-110_43_2
1615    Description:
1616    
1617    Made a new interim version and bootfiles for developer's bootstrapping
1618    convenience.
1619    
1620       110.43.2 -- NEW BOOTFILES
1621    
1622    ----------------------------------------------------------------------
1623    Name: Matthias Blume (blume (at) tti - c (dot) org)
1624    Date: 2003/09/19 15:55:00 CDT
1625    Tag: blume-20030919-cmdir
1626    Description:
1627    
1628    1. new-install.sh -> install.sh
1629    2. changed default CM "metadata" directory name to ".cm" (instead of "CM")
1630    3. tweaked installer so that another name instead of .cm can be chosen
1631       at install time (by setting the CM_DIR_ARC environment variable
1632       during installation); once installation is complete, the name is
1633       fixed
1634    
1635    ----------------------------------------------------------------------
1636    Name: Matthias Blume (blume (at) tti - c (dot) org)
1637    Date: 2003/09/18 16:00:00 CDT
1638    Tag: blume-20030918-110_43_1
1639    Description:
1640    
1641    Made a new interim version and bootfiles for developer's bootstrapping
1642    convenience.
1643    
1644       110.43.1 -- NEW BOOTFILES
1645    
1646    ----------------------------------------------------------------------
1647    Name: Matthias Blume (blume (at) tti - c (dot) org)
1648    Date: 2003/09/18 15:20:00 CDT
1649    Tag: blume-20030918-misc
1650    Description:
1651    
1652    1. Exported fractionsPerSecond etc. from TimeImp (but not from Time as
1653       this seems to be controversial at the moment) and used those in
1654       Posix.ProcEnv.times.
1655    
1656    2. Added Time.{from,to}Nanoseconds to Time.
1657    
1658    3. Improved Real.{from,to}LargeInt by avoiding needless calculations.
1659       For example, fromLargeInt never needs to look at more than 3 "big
1660       digits" to get its 53 bits of precision.
1661    
1662    ----------------------------------------------------------------------
1663    Name: Matthias Blume (blume (at) tti - c (dot) org)
1664    Date: 2003/09/17 16:30:00 CDT
1665    Tag: blume-20030917-real32-slices
1666    Description:
1667    
1668    Added an entry to the primitive environment
1669    (compiler/Semant/statenv/prim.sml) for int32->real64 conversion and
1670    added code to compiler/CodeGen/main/mlriscGen.sml to implement it.
1671    
1672    Removed some of the "magic" constants in real64.sml and replaced them
1673    with code that generates these values from their corresponding
1674    integer counterparts.
1675    
1676    Made all(?) the slice-related changes to the Basis and made everything
1677    compile again...
1678    
1679    ----------------------------------------------------------------------
1680    Name: Matthias Blume (blume (at) tti - c (dot) org)
1681    Date: 2003/09/15 17:45:00 CDT
1682    Tag: blume-20030915-rbase
1683    Description:
1684    
1685    Fixed bug in Real.fromLargeInt.
1686    
1687    ----------------------------------------------------------------------
1688    Name: Matthias Blume (blume (at) tti - c (dot) org)
1689    Date: 2003/09/13 18:11:00 CDT
1690    Tag: blume-20030913-libinstall
1691    Description:
1692    
1693    Minor bugfix in config/libinstall (set anchor with path to
1694    standalone tool after installing it, otherwise libraries that
1695    need ml-lex or ml-yacc won't compile the first time the installer
1696    runs).
1697    
1698    ----------------------------------------------------------------------
1699    Name: Matthias Blume (blume (at) tti - c (dot) org)
1700    Date: 2003/09/12 11:45:00 CDT
1701    Tag: blume-20030912-various
1702    Description:
1703    
1704     - fixed bug in Real.toLargeInt
1705     - fixed bug in Posix.ProcEnv.times
1706     - changed inputLine functions to return an option
1707     - minor installer improvements / bugfixes
1708     - changed default @SMLalloc parameter for x86/celeron to 64k
1709    
1710    ----------------------------------------------------------------------
1711    Name: Matthias Blume (blume (at) tti - c (dot) org)
1712    Date: 2003/09/09 22:00:00 CDT
1713    Tag: Release_110_43
1714    Description:
1715    
1716        New working release 110.43.  New bootfiles.
1717    
1718    ----------------------------------------------------------------------
1719    Name: Matthias Blume (blume (at) tti - c (dot) org)
1720    Date: 2003/09/09 19:20:00 CDT
1721    Tag: blume-20030909-installer
1722    Description:
1723    
1724    Rewrote large parts of config/install.sh in SML (config/libinstall.sml).
1725    Modified config/install.bat to take advantage of it.  Also modified
1726    config/install.sh (and called it config/new-install.sh) to take advantage
1727    of it on Unix systems.  (The SML code is (supposed to be) platform-
1728    independent.)
1729    
1730    The installer can now install everything under Win32
1731    as well as under *nix as long as it compiles.
1732    
1733    Other changes:
1734    
1735      - made CML compile again under Win32
1736      - made eXene compile under Win32 (by providing a fake structure UnixSock
1737        and by using OS.Process.getEnv instead of Posix.ProcEnv.getenv)
1738      - fixed a bug in nowhere: it assumed that type OS.Process.status is the
1739        same as type int;  under Win32 it isn't
1740      - fixed some slice-related problems in the win32-specific parts of CML
1741      - added a functor argument "sameVol" to os-path-fn.sml in the Basis
1742        (under Win32, the volume name is case-insensitive, and the
1743        OS.Path code compares volume names for equality)
1744    
1745    ----------------------------------------------------------------------
1746    Name: Matthias Blume (blume (at) tti - c (dot) org)
1747    Date: 2003/09/08 11:55:00 CDT
1748    Tag: blume-20030908-fullpath
1749    Description:
1750    
1751    Made Win32 version of OS.FileSys.fullPath return current directory
1752    when given an empty string.  This is what the spec says, and incidentally,
1753    CM depends on it.  (CM otherwise goes into an infinite loop in certain
1754    cases when presented with the name of a non-existing .cm file.)
1755    
1756    ----------------------------------------------------------------------
1757    Name: Matthias Blume (blume (at) tti - c (dot) org)
1758    Date: 2003/09/04 16:30:00 CDT
1759    Tag: blume-20030905-slices-etc
1760    Description:
1761    
1762      1. Changed interface to vectors and arrays in Basis to match
1763         (draft) Basis spec.
1764      2. Added signatures and implementations of slices according to
1765         Basis spec.
1766      3. Edited source code throughout the system to make it compile again
1767         under 1. and 2.  (In some cases code had to be added to have it
1768         match the new signatures.)
1769      4. MLRISC should be backward-compatible: the copies of the originals
1770         of files that needed to change under 3. were retained, the .cm files
1771         check the compiler version number and use old versions when
1772         appropriate.
1773      5. Changed type of OS.FileSys.readDir and Posix.FileSys.readdir to
1774         dirstream -> string option (in accordance with Basis spec).
1775      6. When generating code that counts lines, ml-lex used function
1776         CharVector.foldli, taking advantage of its old interface.
1777         This has been replaced with the corresponding code from
1778         CharVectorSlice.  (html-lex must be re-lexed!)
1779      7. BitArray in smlnj-lib/Util has been extended/modified to match the
1780         new MONO_ARRAY signature.  (Do we need BitArraySlice?)
1781      8. Removed temporary additions (fromInternal, toInternal) from the
1782         (now obsolete) IntInf in smlnj-lib/Util.
1783      9. Cleaned up structure Byte.
1784     10. Added localOffset, scan, and fromString to Date (according to spec).
1785         Cleaned/corrected implementation of Date.
1786         (Still need to check for correctness; implement better canonicalizeDate.)
1787     11. Added "scan" to signature IEEE_REAL.
1788     12. Some improvements to IntInf [in particular: efficiency-hack for
1789         mod and rem when second operand is 2 (for parity checks).]
1790     13. Changed representation of type Time.time, using a single IntInf.int
1791         value counting microseconds.  This considerably simplified the
1792         implementation of structure Time.  We now support negative time
1793         values; scan and fromString handle signs.
1794     14. Functor PrimIO now takes two additional arguments (VectorSlice and
1795         ArraySlice).
1796    
1797    ----------------------------------------------------------------------
1798    Name: Matthias Blume (blume (at) tti - c (dot) org)
1799  Date: 2003/08/28 17:00:00 CDT  Date: 2003/08/28 17:00:00 CDT
1800  Tag: blume-20030828-intinf  Tag: blume-20030828-intinf
1801  Description:  Description:
# Line 100  Line 1882 
1882  has been added.  has been added.
1883    
1884  ----------------------------------------------------------------------  ----------------------------------------------------------------------
1885  Name: Matthias Blume (blume@tti-c.org)  Name: Matthias Blume (blume (at) tti - c (dot) org)
1886  Date: 2003/08/11 15:45:00 CDT  Date: 2003/08/11 15:45:00 CDT
1887  Tag: blume-20030811-windows  Tag: blume-20030811-windows
1888  Description:  Description:
# Line 195  Line 1977 
1977  use by MacQueen, (Lucasz) Zairek, and (George) Cao at uchicago.  use by MacQueen, (Lucasz) Zairek, and (George) Cao at uchicago.
1978    
1979  ----------------------------------------------------------------------  ----------------------------------------------------------------------
1980  Name: Matthias Blume (blume@tti-c.org)  Name: Matthias Blume (blume (at) tti - c (dot) org)
1981  Date: 2003/05/27 16:55:00 CDT  Date: 2003/05/27 16:55:00 CDT
1982  Tag: blume-20030527-polyeq  Tag: blume-20030527-polyeq
1983  Description:  Description:
# Line 203  Line 1985 
1985  Tried to eliminated most cases of polymorphic equality.  Tried to eliminated most cases of polymorphic equality.
1986    
1987  ----------------------------------------------------------------------  ----------------------------------------------------------------------
1988  Name: Matthias Blume (blume@tti-c.org)  Name: Matthias Blume (blume (at) tti - c (dot) org)
1989  Date: 2003/05/21 17:45:00 CDT  Date: 2003/05/21 17:45:00 CDT
1990  Tag: blume-20030517-complete  Tag: blume-20030517-complete
1991  Description:  Description:
# Line 216  Line 1998 
1998       without a single non-exhaustive match- or bind warning.       without a single non-exhaustive match- or bind warning.
1999    
2000  ----------------------------------------------------------------------  ----------------------------------------------------------------------
2001  Name: Matthias Blume (blume@tti-c.org)  Name: Matthias Blume (blume (at) tti - c (dot) org)
2002  Date: 2003/05/17 10:20:00 CDT  Date: 2003/05/17 10:20:00 CDT
2003  Tag: blume-20030517-absyn  Tag: blume-20030517-absyn
2004  Description:  Description:

Legend:
Removed from v.1348  
changed lines
  Added in v.1791

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