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/NOTES/HISTORY
ViewVC logotype

Diff of /sml/trunk/NOTES/HISTORY

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

sml/trunk/HISTORY revision 1175, Mon Mar 25 03:38:44 2002 UTC sml/trunk/NOTES/HISTORY revision 2237, Thu Dec 14 18:13:09 2006 UTC
# Line 1  Line 1 
1  This is the HISTORY file for the Yale SML/NJ CVS repository.  This is the HISTORY file for the SML/NJ repository.
2    
3  An entry should be made for _every_ commit to the repository.  An entry should be made for _every_ commit to the repository.
4  The entries in this file will be used when creating the README  The entries in this file will be used when creating the README
# Line 7  Line 7 
7    
8  The form of an entry should be:  The form of an entry should be:
9    
10  Name:  
11    Name: Your Name (web page or e-mail)
12    Date: yyyy/mm/dd hh:mm:ss
13    Tag: cvs-tag-for-this-change
14    Description:
15    
16    ----------------------------------------------------------------------
17    Name: Matthias Blume (http://www.tti-c.org/blume/)
18    Date: 2006/12/14 12:00:00 CST
19    Tag: release-110.61
20    Description:
21    
22    New working release (110.61).  NEW BOOTFILES!
23    
24    ----------------------------------------------------------------------
25    Name: John Reppy (http://cs.uchicago.edu/~jhr)
26    Date: 2006/14/06 09:50:00 CST
27    Description:
28    
29    Fixed the code in runtime/c-libs/posix-tty/{tcgetattr,tcsetattr}.c to
30    get the c_cc termios data copied correctly.  Also moved the allocation
31    of the string to avoid problems if it caused a GC.
32    
33    Thanks to Timothy Bourke for the bug report and fix.
34    
35    ----------------------------------------------------------------------
36    Name: Matthias Blume (http://www.tti-c.org/blume)
37    Date: 2006/12/08 09:50:00 CST
38    Description:
39    
40    Added code to CM's "standard shell tool" implementation which
41    causes it to tolerate (with a warning) the situation where the shell
42    command fails (e.g., due to the shell command's non-existence)
43    as long as all target files exist.
44    
45    This makes it possible to, e.g., build ml-yacc from sources even if
46    svn checkout messed up the time stamps on files in such a way that
47    yacc.grm is younger than yacc.grm.sml or yacc.grm.sig.  (Ml-yacc would
48    be needed to re-process yacc.grm, but obviously it might not yet be
49    available at that time.)
50    
51    ----------------------------------------------------------------------
52    Name: John Reppy (http://cs.uchicago.edu/~jhr)
53    Date: 2006/12/06 12:06:00 CST
54    Description:
55    
56    Fixed the types of recvVecFrom, recvVecFrom', recvVecFromNB, and
57    recvVecFromNB' in the SOCKET signature.  This error is actually
58    in the SML Basis specification too.
59    
60    ----------------------------------------------------------------------
61    Name: Matthias Blume (http://www.tti-c.org/blume/)
62    Date: 2006/12/05 22:40:00 CST
63    Description:
64    
65    CM now reports undefined anchors as errors and aborts execution
66    rather than silently pressing on using bogus values.
67    
68    ----------------------------------------------------------------------
69    Name: Matthias Blume (http://www.tti-c.org/blume/)
70    Date: 2006/11/29 10:00:00 CST
71    Description:
72    
73    Use Say.vsay for printing the "[autoloading]" message, so
74    #set CM.Control.verbose false (or -Ccm.verbose=false) can be used
75    to suppress them.
76    
77    ----------------------------------------------------------------------
78    Name: Matthias Blume (http://www.tti-c.org/blume/)
79    Date: 2006/11/10 11:00:00 CST
80    Description:
81    
82    Fixed bug in CM where "with:" specifications that affect compilation
83    (as opposed to parsing) were ignored.
84    
85    ----------------------------------------------------------------------
86    Name: Matthias Blume (http://www.tti-c.org/blume/)
87    Date: 2006/11/09 14:30:00 CST
88    Tag: release-110.60
89    Description:
90    
91    New working release (110.60).  NEW BOOTFILES!
92    
93    This is the first subversion-hosted release.  There are also changes
94    to the directory layout.  Here is a table:
95    
96    (All pathnames are relative to the SML/NJ "root" directory.)
97    
98      config -> config
99    
100      src/cm -> base/cm
101      src/compiler -> base/compiler
102      src/runtime -> base/runtime
103      src/system -> base/system
104    
105      src/cm/pgraph -> pgraph
106    
107      src/READMES -> base/READMES
108      src/$notefile -> base/NOTES/$notefile
109         for <notefile> in BOOT CVSNOTES CYGWININSTALL HISTORY INSTALL
110                           MACOSXINSTALL WININSTALL
111    
112      src/smlnj-lib -> smlnj-lib
113      src/MLRISC -> MLRISC
114      ckit -> ckit
115      src/cml -> cml
116      src/eXene -> eXene
117      src/heap2asm -> heap2asm
118      src/lexgen -> lexgen
119      src/ml-burg -> ml-burg
120      src/ml-lex -> ml-lex
121      src/ml-yacc -> ml-yacc
122      src/ml-nlffi-lib -> nlffi/lib
123      src/ml-nlffigen -> nlffi/gen
124      src/smlnj-c -> smlnj-c
125      src/tools/TraceDebugProf -> trace-debug-profile
126    
127    In addition, there is also a new
128    
129      ml-lpt
130    
131    directory containing two new program generator tools: ml-ulex and
132    ml-antlr (a lexer generator that handles unicode and an ANTRL-inspired
133    LL(k) parser generator). These tools are currently "beta-quality"
134    
135    The latest versios of the sources can now be obtained anonymously
136    via subversion.  For this, it is useful to first check out
137    
138       svn://smlnj-gforge.cs.uchicago.edu/smlnj/admin
139    
140    and put the resulting directory on your shell's PATH.  This provides
141    access to three shell scripts: checkout-all.sh, stat-all.sh,
142    and refresh-all.sh.
143    
144    To create a freshly checked-out copy of the sources, do
145    
146       checkout-all.sh [dir]
147    
148    where dir is the optional SML/NJ root directory (default is ".").
149    
150    This creates the above directory layout.  Each subdirectory of
151    the root is under individual subversion control.  The stat-all.sh
152    and refresh-al.sh scripts apply "svn stat" or "svn update" to
153    each of these subtrees.
154    
155    ----------------------------------------------------------------------
156    Name: Matthias Blume (http://www.tti-c.org/blume/)
157    Date: 2006/11/02 12:20:00 CST
158    Description:
159    
160    Reorganized directory layout.
161    
162    This is a temporary solution, more reorganization is to come.
163    
164    The basic idea is to have a number of toplevel trees, each corresponding
165    to a well-defined part of the overall system.  Each part can be
166    maintained individually, even in separate source repositories,
167    although currently we still serve everything out of the main
168    smlnj-gforge tree.
169    
170    Installer and and scripts have been updated to reflect the new
171    layout.  The installer (base/src/system/smlnj/installer) is now
172    "scriptable" to avoid burning too much knowledge about the
173    layout into SML source code.  The main script used by the installer
174    is in config/actions.
175    
176    The main change is that many of the subdirectories of what used to
177    be known as "src" have moved to the toplevel.  The "src" directory
178    itself has moved down into a subtree called "base".  (We may eventually
179    get rid of the extra level of indirection represented by "src".)
180    
181    The layout is now as follows:
182    
183      toplevel tree name | default repository
184                         | (using gf=svn://smlnj-gforge.cs.uchicago.edu/smlnj)
185      -------------------+----------------------------------------------------
186      config             | $gf/config/trunk
187                         |
188      base               | $gf/sml/trunk
189                         |
190      smlnj-lib          | $gf/smlnj-lib/trunk
191      MLRISC             | $gf/MLRISC/trunk
192                         |
193      ml-yacc            | $gf/ml-yacc/trunk
194      ml-lex             | $gf/ml-lex/trunk
195      ml-burg            | $gf/ml-burg/trunk
196      lexgen             | $gf/lexgen/trunk
197      heap2asm           | $gf/heap2asm/trunk
198                         |
199      cml                | $gf/cml/trunk
200      eXene              | $gf/eXene/trunk
201      ckit               | $gf/ckit/trunk
202      nlffi              | $gf/nlffi/trunk
203                         |
204      smlnj-c            | $gf/smlnj-c/trunk
205    
206    In $gf/admin there are a few useful shell scripts for checking out
207    and maintaining the entire collection of trees:
208    
209       admin/checkout-all.sh [dir]
210          -- optionally creates dir and checks out all trees from their
211             default repositories; if dir is missing, checkout into .
212       admin/refresh-all.sh [dir]
213          -- looks at all trees (from the above list) in dir (default: .)
214             and runs "svn update" if the tree exists and is under
215             subversion control;
216             non-existing or non-subversion trees are skipped
217       admin/stat-all.sh [dir]
218          -- like refresh-all.sh, but runs "svn stat" instead
219    
220    ----------------------------------------------------------------------
221    Name: Matthias Blume (http://www.tti-c.org/blume/)
222    Date: 2006/10/05 11:30:00 CDT
223    Tag: blume-20061005-merge-amd64
224    Description:
225    
226    Merged code for AMD64 backend (Mike Rainey's work).
227    Everything is hooked up but untested.
228    
229    ----------------------------------------------------------------------
230    Name: Matthias Blume (http://www.tti-c.org/blume/)
231    Date: 2006/05/17 14:00:00 CST
232    Tag: Release_110_59
233    Description:
234    
235    New working version (110.59).  NEW BOOTFILES!
236    
237    I am freezing 110.59.  Changes other than the version-number increase:
238    
239      eXene:
240    
241         * committed changes to eXene from Alley Stoughton:
242             "fixed bugs in X authorization and resource handling, as well
243              as in the pile and viewport widgets"
244    
245      Runtime:
246        * fixed linking problem with NetBSD 3.x.
247    
248      Lexgen:
249        * lexgen tool handles non-ascii characters in 7-bit mode the same
250          way that ml-lex does
251    
252        * lexgen propagates exceptions the same way that ml-lex does
253    
254      CML:
255        * Fixed a bug in the SyncVar polling functions (iGetPoll,
256          mTakePoll, and mGetPoll) that could lead to livelock.
257    
258    ----------------------------------------------------------------------
259    Name: Matthias Blume (http://www.tti-c.org/blume/)
260    Date: 2006/05/12 15:20:00 CST
261    Tag: blume-20060515-makedepend
262    Description:
263    
264    Implemented ml-makedepend (i.e., CM.sources) in a better (more robust)
265    way.  This should hopefully fix the ml-makedepend problem permanently.
266    
267    ----------------------------------------------------------------------
268    Name: Matthias Blume (http://www.tti-c.org/blume/)
269    Date: 2006/05/12 15:15:00 CST
270    Tag: blume-20060512-makedepend
271    Description:
272    
273    Fixed long-standing bug with ml-makedepend where it would output a
274    spurious dependency to a non-existing file.  (This is a simple fix.
275    It might need further looking into.)
276    
277    ----------------------------------------------------------------------
278    Name: Matthias Blume (http://www.tti-c.org/blume/)
279    Date: 2006/04/20 10:30:00 CDT
280    Tag: blume-20060420-heap2exec
281    Description:
282    
283    Committed patches received from Johannes 5 Joemann (joemann@befree.free.de)
284    that enable heap2exec under Linux and FreeBSD.
285    
286    ----------------------------------------------------------------------
287    Name: John Reppy
288    Date: 2006/04/14
289    Tag:
290    Description:
291    
292    MLRISC changes:
293      1) renamed GAS_PSEUDO_OPS to AS_PSEUDO_OPS and put it in its own file.
294      2) added support for NOTB and XORB operators in pseudo-op expressions
295      3) added DarwinPseudoOp functor that supports Darwin's assembler syntax.
296      4) added support for 64-bit integer literals
297    
298    ----------------------------------------------------------------------
299    Name: Matthias Blume (http://www.tti-c.org/blume/)
300  Date: yyyy/mm/dd  Date: yyyy/mm/dd
301  Tag: <post-commit CVS tag>  Tag: Release_110_58
302    Description:
303    
304    New working version (110.58).  NEW BOOTFILES!
305    
306    ----------------------------------------------------------------------
307    Name: Matthias Blume (http://www.tti-c.org/blume/)
308    Date: 2006/03/01 22:15:00 CST
309    Tag: blume-20060301-lexgen
310    Description:
311    
312    Incorporated several bugfixes to lexgen.  Compiler now compiles to
313    fixpoint when using lexgen instead of ml-lex.
314    
315    ----------------------------------------------------------------------
316    Name: Matthias Blume (http://www.tti-c.org/blume/)
317    Date: 2006/02/28 22:45:00 CST
318    Tag: blume-20060228-lexgen
319    Description:
320    
321    Removed ml-flex and added lexgen instead, using Aaron Turon's newly
322    provided tarball.  The generated lexers still have problems.
323    
324    ----------------------------------------------------------------------
325    Name: Matthias Blume (http://www.tti-c.org/blume/)
326    Date: 2006/02/26 23:30:00 CST
327    Tag: blume-20060226-ml-flex
328    Description:
329    
330    Removed ml-flex' dependency on regexp-lib.cm.  Turned installation
331    of ml-flex on by default.
332    
333    ----------------------------------------------------------------------
334    Name: Matthias Blume (http://www.tti-c.org/blume/)
335    Date: 2006/02/24 16:30:00 CST
336    Tag: blume-20060224-ml-flex
337    Description:
338    
339    Added ml-flex sources.  Partially integrated, but should not be
340    turned on yet!  (Read: leave it commented-out in config/targets!)
341    
342    ----------------------------------------------------------------------
343    Name: John Reppy (http://www.cs.uchicago.edu/~jhr)
344    Date: 2006/02/23
345    Tag: jhr-20060223-x86-64
346    Description:
347    Changes to support building on x86-64 systems (using the 32-bit mode).
348    Also cleaned up signal handling on Linux.  Support for pre-2.2 Linux
349    kernels dropped.
350    
351    ----------------------------------------------------------------------
352    Name: Allen Leung (leunga (at) reservoir (dot) com)
353    Date: 2006/02/22 15:07:00 EST
354    Tag: leunga-20060222-mdl-gen
355    Description:
356    
357      CM has changed.  Updated the script for rebuilding the MLRISC generated
358    files.
359    
360    ----------------------------------------------------------------------
361    Name: Matthias Blume (http://www.tti-c.org/blume/)
362    Date: 2006/02/14 17:30:00 CST
363    Tag: blume-20060214-intel-mac
364    Description:
365    
366    Hooked code for Darwin-specific Intel ABI into main compiler.
367    (This is a temporary solution which relies on the fact that the
368    compiler itself does not use NLFFI.  Eventually we need to divorce
369    intel mac from generic x86 unix code and make separate sets of binaries.)
370    
371    ----------------------------------------------------------------------
372    Name: John Reppy (http://www.cs.uchicago.edu/~jhr)
373    Date: 2006/02/13
374    Tag: jhr-20060213-intel-mac
375    Description:
376    Changed MLRISC x86 CCalls for partial support of MacOS X ABI.
377    
378    ----------------------------------------------------------------------
379    Name: John Reppy (http://www.cs.uchicago.edu/~jhr)
380    Date: 2006/02/06
381    Tag: jhr-20060206-intel-mac
382    Description:
383    Changes to support MacOS X on Intel hardware.  The C-calls support in
384    MLRISC must also be updated to support the MacOS X ABI.
385    
386    ----------------------------------------------------------------------
387    Name: Matthias Blume (http://www.tti-c.org/blume/)
388    Date: 2005/12/16 00:15:00 CST
389    Tag: blume-20051216-cm
390    Description:
391    
392    Improved error reporting and handling in CM.
393    
394    ----------------------------------------------------------------------
395    Name: Matthias Blume (http://www.tti-c.org/blume/)
396    Date: 2005/11/21 14:00:00 CST
397    Tag: blume-20051121-html-lib
398    Description:
399    
400    Enabling $/html-lib.cm in config/preloads did not work.  This is fixed
401    now.  (Since the anchor mapping for html-lib.cm is not yet in effect
402    at the time when config/preloads is processed, the library has to
403    be referred to by another name.  In 110.57 this would be
404    $SMLNJ-LIB/HTML/html-lib.cm.  I arranged for $smlnj/smlnj-lib/html-lib.cm
405    to be valid as well.)
406    
407    Thanks to Todd Wilson (Fresno) for alerting me to this issue.
408    
409    ----------------------------------------------------------------------
410    Name: Matthias Blume (http://www.tti-c.org/blume/)
411    Date: 2005/11/19 13:45:00 CST
412    Tag: Release_110_57
413    Description:
414    
415    Moved release tag for 110.57.
416    
417    ----------------------------------------------------------------------
418    Name: Matthias Blume (http://www.tti-c.org/blume/)
419    Date: 2005/11/19 23:35:00 CST
420    Tag: blume-20051119-fish
421    Description:
422    
423    Fixed a problem in config/install.sh where it tries to "fish" the
424    name of the CM metadata directory from the wrong place (because
425    the physical location of basis.cm has changed).  Also, corrected the
426    path anchor for $/html-lib.cm.  (Thanks to M. Fluet for pointing out
427    these problems.)
428    
429    ----------------------------------------------------------------------
430    Name: Matthias Blume (http://www.tti-c.org/blume/)
431    Date: 2005/11/16 14:30:00 CST
432    Tag: blume-orig-110_57
433    Description:
434    
435    New working version (110.57).  NEW BOOTFILES!
436    
437    UPDATE: The release tag has been moved to include a fix for a brown-paper-
438            bag glitch (see above).
439    
440    ----------------------------------------------------------------------
441    Name: Matthias Blume (http://www.tti-c.org/blume/)
442    Date: 2005/11/16 10:25:00 CST
443    Tag: blume-22051116-btrace
444    Description:
445    
446    Fixed problem with bogus exception message when using back-trace
447    facility.
448    
449    ----------------------------------------------------------------------
450    Name: Matthias Blume (http://www.tti-c.org/blume/)
451    Date: 2005/11/15 22:35:00 CST
452    Tag: blume-22051115-array2copy
453    Description:
454    
455    Added simple implementation of Array2.copy.  (Warning: mostly untested.)
456    
457    ----------------------------------------------------------------------
458    Name: Matthias Blume (http://www.tti-c.org/blume/)
459    Date: 2005/11/15 21:35:00 CST
460    Tag: blume-22051115-versiontool
461    Description:
462    
463    Reversed change to src/system/smlnj/internals/versiontool.cm.  This
464    file gets loaded as a tool -- by the equivalent of CM.make during the
465    run of CMB.make.  Thus, CMB's path configuration is meaningless for
466    it.  Instead, it has the status of "user code", so it should use
467    $/basis.cm to refer to the Basis library.  (At least that's true for
468    the purpose of bootstrapping the previous change.  In the future it
469    might make sense to have versiontool.cm refer to
470    $smlnj/basis/basis.cm, i.e., the version of the Basis that the
471    compiler itself uses.)
472    
473    Also patched src/system/testml to have it activate those extra anchor
474    bindings in config/extrapathconfig.
475    
476    ----------------------------------------------------------------------
477    Name: Matthias Blume (http://www.tti-c.org/blume/)
478    Date: 2005/11/15 16:35:00 CST
479    Tag: blume-22051115-libraries
480    Description:
481    
482    This change affects the way the following libraries are tied into
483    the system:
484    
485       $/basis.cm
486       $/smlnj-lib.cm
487       $/pp-lib.cm
488       $/controls-lib.cm
489       $/html-lib.cm
490       $/ml-yacc-lib.cm
491    
492    These libraries are now internally (as seen from the source code
493    of the implementation itself) known by the following names:
494    
495       $smlnj/basis/basis.cm
496       $smlnj/smlnj-lib/smlnj-lib.cm
497       $smlnj/smlnj-lib/pp-lib.cm
498       $smlnj/smlnj-lib/controls-lib.cm
499       $smlnj/smlnj-lib/html-lib.cm
500       $smlnj/ml-yacc/ml-yacc-lib.cm
501    
502    This makes it possible to work with code that requires different
503    versions of these libraries, and which refers to these libraries using
504    their "default" names (i.e., the first set of names above).  In other
505    words, one can un-define or re-define those default names without
506    compromising the proper functioning of the compiler itself.
507    
508    A similar procedure had already been performed for several of the
509    MLRISC libraries that are linked into the compiler.  I did some
510    cleanup on this code.
511    
512    A new file in the config directory (named extrapathconfig) is
513    responsible for setting up path anchors that the compiler itself does
514    not need, but that are typically required by user code.
515    
516    ----------------------------------------------------------------------
517    Name: Matthias Blume
518    Date: 2005/11/07 17:05:00 CST
519    Tag: blume-20051107-slice
520    Description:
521    
522    Fixed erroneous out-of-bounds test in the "update" function of
523    various *ArraySlice modules.  (Thanks to Vesa A. Norrman for pointing
524    out the problem.)
525    
526    Pushed some Basis changes through ML-Lex, CML, and eXene.
527    
528    ----------------------------------------------------------------------
529    Name: John Reppy (http://www.cs.uchicago.edu/~jhr)
530    Date: 2005/11/07
531    Description:
532    Fixed a Basis incompatibility: The depreciated function Substring.all
533    was removed (use Substring.full instead).
534    
535    ----------------------------------------------------------------------
536    Name: John Reppy (http://www.cs.uchicago.edu/~jhr)
537    Date: 2005/11/05
538    Description:
539    Tweaked interval set API in SML/NJ library; see the CHANGES file for details.
540    
541    ----------------------------------------------------------------------
542    Name: Matthias Blume (http://www.tti-c.org/blume/)
543    Date: 2005/11/02 16:25:00 CST
544    Tag: blume-20051102-hex
545    Description:
546    
547    * Runtime system bootstrap code now accepts hex digits in BOOTLIST
548      in either upper case or lower case format.
549    * Pushed changes to names of Pack<N>{Big,Little} structures through
550      CML and eXene.
551    
552    ----------------------------------------------------------------------
553    Name: John Reppy (http://www.cs.uchicago.edu/~jhr)
554    Date: 2005/11/02
555    Description:
556    Fixed a Basis incompatibility: Pack<N>{Big,Little} structures should
557    be called PackWord<N>{Big,Little}.
558    
559    ----------------------------------------------------------------------
560    Name: John Reppy (http://www.cs.uchicago.edu/~jhr)
561    Date: 2005/10/28
562    Description:
563    Fixed a minor Basis incompatibility: hex digits should be upper case.
564    
565    ----------------------------------------------------------------------
566    Name: Matthias Blume (blume (at) tti - c (dot) org)
567    Date: 2005/10/25 16:00:00 CDT
568    Tag: Release_110_56
569    Description:
570    
571    New working version (110.56).  NEW BOOTFILES!
572    
573    ----------------------------------------------------------------------
574    Name: John Reppy (http://www.cs.uchicago.edu/~jhr)
575    Date: 2005/10/25
576    Description:
577    Added interval sets to utility library (signatures INTERVAL_DOMAIN
578    and INTERVAL_SET, and functor IntervalSetFn).
579    
580    ----------------------------------------------------------------------
581    Name: John Reppy (http://www.cs.uchicago.edu/~jhr)
582    Date: 2005/10/14
583    Description:
584    Add Zhong Shao's fix for datatype equality functions.
585    
586    ----------------------------------------------------------------------
587    Name: Allen Leung (leunga (at) reservoir (dot) com)
588    Date: 2005/10/14 12:30:00 EST
589    Tag: leunga-20051014-x86-spill
590    Description:
591    
592    Bug fix a bug found by Carl Hauser.
593    There was a typo in the reload code for FCMP in x86SpillInstr.sml.
594    
595    ----------------------------------------------------------------------
596    Name: Allen Leung (leunga (at) reservoir (dot) com)
597    Date: 2005/10/14 11:15:00 EST
598    Tag: leunga-20051014-x86-asm
599    Description:
600    
601    Removed some debugging code in file x86Asm.sml.
602    The function emit_operand was printing out debugging output.
603    
604    ----------------------------------------------------------------------
605    Name: John Reppy
606    Date: 2005/07/27
607    Tag:
608    Description:
609    
610    Fixed ml-lex to recognize "\r" as representing carriage return.
611    
612    ----------------------------------------------------------------------
613    Name: John Reppy
614    Date: 2005/07/27
615    Tag:
616    Description:
617    
618    Fixed ml-yacc to work on files with non-native end-of-line
619    encodings (e.g., Windows text file on a Unix system).
620    
621    ----------------------------------------------------------------------
622    Name: John Reppy
623    Date: 2005/07/20
624    Tag:
625    Description:
626    
627    Added changes from Dominic Evans (oldmanuk (at) gmail (dot) com)
628    to support HPUX 11.
629    
630    ----------------------------------------------------------------------
631    Name: John Reppy
632    Date: 2005/07/06
633    Tag:
634    Description:
635    
636    Changes to the SML/NJ library.  See smlnj-lib/CHANGES for details.
637    
638    ----------------------------------------------------------------------
639    Name: Matthias Blume (blume (at) tti - c (dot) org)
640    Date: 2005/07/06 00:45:00 CDT
641    Tag: blume-20050706-slice-copy
642    Description:
643    
644    Fixed reversed logic for deciding whether to "copy up" or "copy down"
645    in *-array-slice.sml.
646    
647    ----------------------------------------------------------------------
648    Name: Allen Leung (leunga (at) reservoir (dot) com)
649    Date: 2005/05/31 17:00:00 EST
650    Tag: leunga-20050531-cygwin-fault-2
651    Description:
652    
653    A typo in the cygwin code fixed.
654    
655    ----------------------------------------------------------------------
656    Name: Allen Leung (leunga (at) reservoir (dot) com)
657    Date: 2005/05/31 16:47:00 EST
658    Tag: leunga-20050531-cygwin-fault
659    Description:
660    
661    Updated Cygwin's fault/signal handling to match the Windows version.
662    Updated the export list.
663    
664    ----------------------------------------------------------------------
665    Name: Matthias Blume (blume (at) tti - c (dot) org)
666    Date: 2005/05/18 13:35:00 CDT
667    Tag: Release_110_54
668  Description:  Description:
669    
670    New working version (110.54).  NEW BOOTFILES!
671    
672    ----------------------------------------------------------------------
673    Name: Matthias Blume (blume (at) tti - c (dot) org)
674    Date: 2005/05/18 11:58:00 CDT
675    Tag: blume-20050518-installer
676    Description:
677    
678    Added support scripts for Mac OS X PackageMaker and modified
679    config/install.sh so that it supports re-dumping a heap image
680    after customization.
681    
682    ----------------------------------------------------------------------
683    Name: Matthias Blume (blume (at) tti - c (dot) org)
684    Date: 2005/05/18 10:55:00 CDT
685    Tag: blume-20050518-realdiv-noovld
686    Description:
687    
688    Un-overloaded / to work around bug in overloading resolution code.
689    
690    ----------------------------------------------------------------------
691    Name: Matthias Blume (blume (at) tti - c (dot) org)
692    Date: 2005/05/16 23:50:00 CDT
693    Tag: blume-20050516-redump-heap
694    Description:
695    
696    Added mechanism for re-creating a heap file for the interactive system
697    after configuration variables have been changed.
698    
699       CM.redump_heap : string -> unit
700    
701    This is much like SMLofNJ.exportML, but starting from the resulting
702    heap does not return to the caller of CM.redump_heap but
703    restarts the interactive system from scratch.  The original call of
704    CM.redump_heap does not return but ends the interactive session.
705    Thus, CM.redump_heap is a lot like SMLofNJ.exportFn.
706    
707    Internally, redump_heap winds the dynamic execution context back to
708    the point where the original heap image was created and re-executes
709    the heap image generation code in the boot code.
710    
711    ----------------------------------------------------------------------
712    Name: Matthias Blume (blume (at) tti - c (dot) org)
713    Date: 2005/05/09 21:55:00 CDT
714    Tag: blume-20050509-word64
715    Description:
716    
717    Added a hack to the existing hack known as Word64 to make fromString
718    behave correctly.  I am still not sure whether Word64.scan will work
719    as specified with respect to the interaction of radix and prefix.
720    
721    ----------------------------------------------------------------------
722    Name: Allen Leung (leunga (at) reservoir (dot) com)
723    Date: 2005/05/04 11:50:00 EST
724    Tag: leunga-20050504-checkgc
725    Description:
726    
727    Added a gc protocol checking phase.  This phase is enabled with
728    the flag "check-gc".  "debug-check-gc" turns on the verbose mode.
729    
730    ----------------------------------------------------------------------
731    Name: Matthias Blume (blume (at) tti - c (dot) org)
732    Date: 2005/05/04 10:45:00 CDT
733    Tag: blume-20050504-intinf
734    Description:
735    
736    Fixed a bug in the implementation of div and mod for IntInf.
737    Thanks to Neophytos Michael for reporting the problem.
738    
739    ----------------------------------------------------------------------
740    Name: Matthias Blume (blume (at) tti - c (dot) org)
741    Date: 2005/05/04 10:35:00 CDT
742    Tag: blume-20050504-join
743    Description:
744    
745    Added a "join" combinator to the ParserComb module in smlnj-lib.cm.
746    
747    ----------------------------------------------------------------------
748    Name: Matthias Blume (blume (at) tti - c (dot) org)
749    Date: 2005/02/28 23:40:00 CST
750    Tag: blume-20050228-mVar
751    Description:
752    
753    Fixed serious bug (brown paper bag variety) in new implementation of
754    structure Atom in CML.  (I had accidentally used a mailbox instead of
755    an mvar, leaving the door open for races.)
756    
757    ----------------------------------------------------------------------
758    Name: Matthias Blume (blume (at) tti - c (dot) org)
759    Date: 2005/02/25 15:00:00 CST
760    Tag: Release_110_53
761    Description:
762    
763    New working version (110.53).  NEW BOOTFILES!
764    
765    ----------------------------------------------------------------------
766    Name: Matthias Blume (blume (at) tti - c (dot) org)
767    Date: 2005/02/25 14:50:00 CST
768    Tag: blume-20050225-susp
769    Description:
770    
771    Brought back SMLofNJ.Susp.  The underlying suspension type is the one
772    implemented in Core -- which means that it is the same as the one used
773    by the lazy extension.
774    
775    ----------------------------------------------------------------------
776    Name: Matthias Blume (blume (at) tti - c (dot) org)
777    Date: 2005/02/24 16:50:00 CST
778    Tag: blume-20050224-cml-atom
779    Description:
780    
781    Simpler and at the same time more general implementation of structure
782    Atom in CML.
783    
784    ----------------------------------------------------------------------
785    Name: Matthias Blume (blume (at) tti - c (dot) org)
786    Date: 2005/02/15 17:35:00 CST
787    Tag: blume-20050215-tools
788    Description:
789    
790    Created new "tools" directory under "src" and moved "TraceDebugProf"
791    there.
792    
793    ----------------------------------------------------------------------
794    Name: Matthias Blume (blume (at) tti - c (dot) org)
795    Date: 2005/02/10 17:55:00 CST
796    Tag: blume-20050210-longlong
797    Description:
798    
799    Implemented "long long" arguments and results for NLFFI.  (Only the
800    PPC/MacOS implementation is complete, the other backends still need to
801    be updated.)
802    
803    ----------------------------------------------------------------------
804    Name: Matthias Blume (blume (at) tti - c (dot) org)
805    Date: 2005/01/24 17:40:00 CST
806    Tag: blume-20050124-mlyacc
807    Description:
808    
809    Minor cleanup in ML-Yacc rule printing mechanism.  This should fix a
810    problem with certain "as" patterns which previously got rendered
811    using incorrect syntax.
812    
813    ----------------------------------------------------------------------
814    Name: Matthias Blume (blume (at) tti - c (dot) org)
815    Date: 2005/01/18 12:00:00 CST
816    Tag: blume-20050118-profile
817    Description:
818    
819    Made time profiling code (interrupt handler) in runtime system aware
820    of new array representation.
821    
822    ----------------------------------------------------------------------
823    Name: Matthias Blume (blume (at) tti - c (dot) org)
824    Date: 2005/01/14 18:00:00 CST
825    Tag: blume-20050114-heap2exec
826    Description:
827    
828    Implemented new (but still experimental) heap2exec facility.  This is
829    tested under Mac OS X and should work under Linux (will test shortly).
830    It will probably also work on the Sparc (will test some time later).
831    
832      - removed old "HACKED_STANDALONE" hack from runtime
833    
834    To be able to test this, uncomment the request for "heap2asm" in
835    config/targets prior to installation.  (Notice that this is different
836    from "heap2exec" mentioned below.  Not a typo.)
837    
838    To perform an actual test, run the command
839    
840       $ bin/heap2exec heapfile execfile
841    
842    (You can put heap2exec on your shell's path.)
843    
844    For example, run
845    
846      $ bin/heap2exec bin/.heap/ml-yacc.ppc-darwin mly
847    
848    This will create a standalone executable called "mly" which you can
849    then invoke directly as a command.
850    
851    ----------------------------------------------------------------------
852    Name: Matthias Blume (blume (at) tti - c (dot) org)
853    Date: 2005/01/07 11:44:00 CST
854    Tag: blume-20050107-mlstring
855    Description:
856    
857    fixed off-by-one error in ML_STRING macro (globals.c)
858    
859    ----------------------------------------------------------------------
860    Name: Matthias Blume (blume (at) tti - c (dot) org)
861    Date: 2004/12/23 18:00:00 CST
862    Tag: blume-20041223-santa
863    Description:
864    
865    Made ml-build script "smarter" (but only very little).
866    
867    ----------------------------------------------------------------------
868    Name: Matthias Blume (blume (at) tti - c (dot) org)
869    Date: 2004/12/21 15:05:00 CST
870    Tag: blume-20041221-longlong
871    Description:
872    
873    * Implemented access to signed and unsigned long long data in NLFFI.
874    (The parameter-passing part of the picture has not complete. But
875    data structure access seems to work.)
876    
877    * Fixed CM's incorrect assumption that the PPC is little-endian.
878      (On the Mac, it is big-endian.  And that's currently our only
879      PPC platform.)
880    
881    ----------------------------------------------------------------------
882    Name: Matthias Blume (blume (at) tti - c (dot) org)
883    Date: 2004/12/21 12:50:00 CST
884    Tag: blume-20041221-memory
885    Description:
886    
887    Some cleanup in the $c/memory.cm library: separated some concerns by
888    moving allocation code and memory access code each into their own
889    files.
890    
891    ----------------------------------------------------------------------
892    Name: Allen Leung (leunga (at) reservoir (dot) com)
893    Date: 2004/12/17 16:12:00 EST
894    Tag: leunga-20041217-cygwin-smlnj-home
895    Description:
896    
897        The Unix I/O library of SML/NJ on cygwin does not understand
898    Windows style pathname, so problems arise when SMLNJ_HOME is set
899    to a Windows style pathname.  _run-sml now converts SMLNJ_HOME
900    to a POSIX pathname on cygwin.
901    
902    ----------------------------------------------------------------------
903    Name: Matthias Blume (blume (at) tti - c (dot) org)
904    Date: 2004/12/16 13:35:00 CST
905    Tag: Release_110_52
906    Description:
907    
908    Last-minute changes incorporated into 110.52.  Release tag moved.
909    
910    The changes:
911       - HashString.hashString' -> HashString.hashSubstring
912       - bug fix in UnivariateStats
913    
914    ----------------------------------------------------------------------
915    Name: Matthias Blume (blume (at) tti - c (dot) org)
916    Date: 2004/12/15 23:40:00 CST
917    Tag: blume-20041215-hashSubstring
918    Description:
919    
920    - HashString.hashString' -> HashString.hashSubstring
921    - corresponding changes in atom.sml
922    - "de-compressed" (aka. un-obfuscated) code for UnivariateStats and
923      added some comments
924    
925    ----------------------------------------------------------------------
926    Name: Matthias Blume (blume (at) tti - c (dot) org)
927    Date: 2004/12/15 15:30:00 CST
928    Tag: (Release_110_52)
929    Description:
930    
931    New working version (110.52).  NEW BOOTFILES!
932    
933    ----------------------------------------------------------------------
934    Name: Matthias Blume (blume (at) tti - c (dot) org)
935    Date: 2004/12/15 12:45:00 CST
936    Tag: blume-20041215-spaces
937    Description:
938    
939    More on the space problem (this time for Win32).
940    
941    ----------------------------------------------------------------------
942    Name: Matthias Blume (blume (at) tti - c (dot) org)
943    Date: 2004/12/14 17:30:00 CST
944    Tag: blume-20041214-spaces
945    Description:
946    
947    Hacked some of the scripts (in particular: the installer) to cope with
948    spaces in filenames a bit better.  But beware: the current "solution"
949    is likely still full of bugs and inherently incomplete.  (We need to
950    do away with those shell scripts for a comprehensive solution.)
951    
952    ----------------------------------------------------------------------
953    Name: Matthias Blume (blume (at) tti - c (dot) org)
954    Date: 2004/12/13 14:45:00 CST
955    Tag: blume-20041213-ml-makedepend
956    Description:
957    
958    Fixed bug in code for ml-makedepend.
959    
960    ----------------------------------------------------------------------
961    Name: Matthias Blume (blume (at) tti - c (dot) org)
962    Date: 2004/12/09 16:30:00 CST
963    Tag: blume-20041209-statistics
964    Description:
965    
966    Added two simple but potentially useful statistics modules to SML/NJ Library.
967    (See CHANGES file there.)
968    
969    ----------------------------------------------------------------------
970    Name: Matthias Blume (blume (at) tti - c (dot) org)
971    Date: 2004/12/01 16:50:00 CST
972    Tag: blume-20041201-atom
973    Description:
974    
975    smlnj-lib:
976    
977      Added function HashString.hashString' for substrings.
978      Hand-inlined CharVector.foldl into HashString (for speed).
979      Modified implementation of structure Atom to avoid extracting
980      strings from substrings unless necessary.
981      (Also see CHANGES file for smlnj-lib.)
982    
983    ----------------------------------------------------------------------
984    Name: Matthias Blume (blume (at) tti - c (dot) org)
985    Date: 2004/11/24 22:15:00 CST
986    Tag: blume-20041124-cml
987    Description:
988    
989    Made sure CML compiles when Position = Int64.
990    
991    ----------------------------------------------------------------------
992    Name: Matthias Blume (blume (at) tti - c (dot) org)
993    Date: 2004/11/24 14:30:00 CST
994    Tag: blume-20041124-position
995    Description:
996    
997    The compiler can now be compiled in a mode that makes structure Position
998    equal to Int64.  The default, however, is unchanged (Position = Int31)
999    for the time being.
1000    
1001    To enable 64-bit positions, use the following procedure:
1002    
1003    1. Start sml
1004    2. Autoload $smlnj/cmb.cm (if not already autoloaded)
1005    3. Type
1006          #set (CMB.symval "USE_64_BIT_POSITIONS") (SOME 1);
1007    4. Run CMB.make() as usual.
1008    
1009    This is barely tested.  The only test so far was a little SML program
1010    counting the number of characters in an 8-gigabyte file by
1011    reading it character-by-character.  That test was successful.
1012    
1013    In support of 64-bit positions, a number of new functions have been
1014    added to the runtime system.
1015    
1016    ----------------------------------------------------------------------
1017    Name: Matthias Blume (blume (at) tti - c (dot) org)
1018    Date: 2004/11/23 14:45:00 CST
1019    Tag: blume-20041123-useFile
1020    Description:
1021    
1022    Fixed a problem with unhelpful error messages related to problems with
1023    .cm- or .sml files that appear as part of the sml command line.
1024    
1025    ----------------------------------------------------------------------
1026    Name: Matthias Blume (blume (at) tti - c (dot) org)
1027    Date: 2004/11/18 15:40:00 CST
1028    Tag: Release_110_51
1029    Description:
1030    
1031    New working version (110.51).  NEW BOOTFILES!
1032    
1033    ----------------------------------------------------------------------
1034    Name: Matthias Blume (blume (at) tti - c (dot) org)
1035    Date: 2004/11/18 15:35:00 CST
1036    Tag: <none>
1037    Description:
1038    
1039    Enabled dlopen and friends for FreeBSD (as recommended by Johannes 5
1040    Joemann).
1041    
1042    ----------------------------------------------------------------------
1043    Name: Allen Leung (leunga (at) reservoir (dot) com)
1044    Date: 2004/11/17 16:05:21 EST 2004
1045    Tag: leunga-20041117-mlrisc-live-kill
1046    Description:
1047    
1048       Added support for MLTree constructs LIVE and KILL
1049    to all the architectures.
1050    
1051    ----------------------------------------------------------------------
1052    Name: Matthias Blume (blume (at) tti - c (dot) org)
1053    Date: 2004/11/13 00:20:00 CST
1054    Tag: blume-20041113-versiontool
1055    Description:
1056    
1057    - Stripped down the versiontool: It now only handles the version number.
1058      The date string is generated at bootstrap time (during makeml).
1059    
1060    - In a previous commit, fixed a minor issue with how polyequal is being
1061      translated.  In particular, the code now "looks through" abstractions.
1062      This results in slightly fewer polyEqual warnings and hopefully slightly
1063      more efficient code.  Important examples for where this matters are
1064      the new int64 and word64 types.
1065    
1066    ----------------------------------------------------------------------
1067    Name: Matthias Blume (blume (at) tti - c (dot) org)
1068    Date: 2004/11/12 00:30:00 CST
1069    Tag: blume-20041112-int64
1070    Description:
1071    
1072    Structure Int64 fully hooked in.  (The implementation is not very
1073    efficient, though.)
1074    
1075    ----------------------------------------------------------------------
1076    Name: Matthias Blume (blume (at) tti - c (dot) org)
1077    Date: 2004/11/11 17:30:00 CST
1078    Tag: blume-20041111-more64
1079    Description:
1080    
1081    All the pieces of Word64 are now there, with the exception of the
1082    conversions from and to LargeWord. (Eventually these need to be identities,
1083    but for the time being they don't even make sense because LargeWord is
1084    32-bit wide.)
1085    
1086    Also started to add similar support for Int64, but major pieces of that
1087    are still missing.
1088    
1089    ----------------------------------------------------------------------
1090    Name: Matthias Blume (blume (at) tti - c (dot) org)
1091    Date: 2004/11/11 00:15:00 CST
1092    Tag: blume-20041111-word64
1093    Description:
1094    
1095    Structure Word64 is now (almost) complete, word literals and patterns
1096    seem to work.  There are a few odd pieces missing.  In particular,
1097    I didn't do the {from,to}LargeWord parts because LargeWord is still Word32
1098    at the moment.
1099    
1100    Making Word64 official would mean that LargeWord becomes Word64.  But
1101    this requires extreme care because most word-word conversions have to
1102    go through LargeWord, so making a mistake means loss of efficiency or
1103    worse.  Eventually there will be a solution similar to (but actually
1104    simpler than) what I did with IntInf.
1105    
1106    ----------------------------------------------------------------------
1107    Name: Matthias Blume (blume (at) tti - c (dot) org)
1108    Date: 2004/11/10 18:12:00 CST
1109    Tag: blume-20041110-64bit
1110    Description:
1111    
1112    More 64-bit hacking (but still not even half-way there yet).
1113    Also, some assorted improvements to the handling of 8-bit words.
1114    
1115    ----------------------------------------------------------------------
1116    Name: Matthias Blume (blume (at) tti - c (dot) org)
1117    Date: 2004/11/09 17:50:00 CST
1118    Tag: <none>
1119    Description:
1120    
1121    Started adding some infrastructure for supporting 64-bit int- and
1122    word-types.  (Still in its very early stages.)
1123    
1124    ----------------------------------------------------------------------
1125    Name: Matthias Blume (blume (at) tti - c (dot) org)
1126    Date: 2004/10/28 10:45:00 CDT
1127    Tag: Release_110_50
1128    Description:
1129    
1130    New working version (110.50).  NEW BOOTFILES!
1131    
1132                 =====================
1133    
1134    Also:
1135    
1136      - Changend config/srcarchiveurl from a file just
1137        containing the URL string into a file containing
1138        shell script code.  The code has access to the $VERSION variable.
1139      - Made corresponding changes to config/install.sh and config/unpack.
1140      - Default contents of config/srcarchiveurl uses $VERSION and
1141        normally does not have to be edited to reflect a version change.
1142    
1143      (As a result, a version change can be done by just editing
1144       config/version, the rest is now automatic.)
1145    
1146    ----------------------------------------------------------------------
1147    Name: Matthias Blume (blume (at) tti - c (dot) org)
1148    Date: 2004/10/27 17:50:00 CDT
1149    Tag: blume-20041027-btrace-msg
1150    Description:
1151    
1152    BackTrace.monitor now also reports the source of the exception that
1153    triggered the trace.
1154    
1155    ----------------------------------------------------------------------
1156    Name: Matthias Blume (blume (at) tti - c (dot) org)
1157    Date: 2004/10/27 17:20:00 CDT
1158    Tag: blume-20041027-x86-c-calls
1159    Description:
1160    
1161    This is the HISTORY entry for two earlier commits, both concerning
1162    the x86 c-calls code in MLRISC:
1163    
1164      - added a missing LOAD in the code that deals with struct arguments
1165      - made sure the caller does not add the wrong number of bytes to the
1166        stack pointer after a call of a function returning a struct
1167        (the callee already pops the implicit argument which points to
1168         the space reserved for the result)
1169    
1170    ----------------------------------------------------------------------
1171    Name: Allen Leung (leunga (at) reservoir (dot) com)
1172    Date: 2004/10/24 14:00:00 EST
1173    Tag: leunga-20041024-x86-gas-fucomip
1174    Description:
1175    
1176       John discovered a bug in the syntax of fucomip.
1177       The opcodes FU?COMIP? have been changed to
1178    
1179           fu?comip? %st(i), %st
1180    
1181    ----------------------------------------------------------------------
1182    Name: Matthias Blume (blume (at) tti - c (dot) org)
1183    Date: 2004/10/20 15:06:00 CDT
1184    Tag: blume-20041020-standalone-backtrace
1185    Description:
1186    
1187    Added a mechanism for getting back-trace information from standalone
1188    programs.  Here is how it works:
1189    
1190       1. The part of the program from which you want to get backtrace
1191          information (usually the whole program) should be wrapped with
1192          BackTrace.monitor.  This is a (unit->'a)->'a function, and your
1193          main program could be modified from something like
1194    
1195             fun main (pgm, args) = ...
1196    
1197         to
1198    
1199            fun main (pgm, args) = BackTrace.monitor (fn () => ...)
1200    
1201       2. To be able to access BackTrace.monitor, you have to add
1202          library $smlnj-tdp/plugins.cm to the .cm file that contains your
1203          main function.
1204    
1205       3. Remove all compiled code (i.e., all the .cm/ subdirectories that
1206          CM might have created in the past for your project).
1207    
1208       4. Build the system using this command line:
1209    
1210             ml-build -Ctdp.instrument=true \$smlnj-tdp/back-trace.cm \
1211                      myprog.cm MyProg.main myprog
1212    
1213          instead of the usual
1214    
1215             ml-build myprog.cm MyProg.main myprog
1216    
1217    I changed a library name:
1218    
1219       $/trace-debug-profile.cm --> $smlnj-tdp/plugins.cm
1220    
1221    New libraries:
1222    
1223       $smlnj-tdp/back-trace.cm
1224          -- when loaded causes the back-trace plugin to be installed
1225       $smlnj-tdp/coverage.cm
1226          -- when loaded causes the coverage plugin to be installed
1227    
1228    ----------------------------------------------------------------------
1229    Name: Matthias Blume (blume (at) tti - c (dot) org)
1230    Date: 2004/10/18 16:45:00 CDT
1231    Tag: blume-20041018-groupowner
1232    Description:
1233    
1234    Added an "obsolete" warning for the "group owner" syntax to CM's parser.
1235    
1236    Eliminated group owner specs from .cm files throughout the source tree.
1237    
1238    ----------------------------------------------------------------------
1239    Name: Matthias Blume (blume (at) tti - c (dot) org)
1240    Date: 2004/10/15 15:45:00 CDT
1241    Tag: blume-20041015-coverage
1242    Description:
1243    
1244    * Test coverage tool added!
1245    * Further reorganization of tracing-, debugging-, and profiling support:
1246    
1247        - moved original BTImp -- now called BackTrace -- into a separate
1248          library called $/trace-debug-profile.cm
1249        - eliminated all mentions of BTrace from SMLofNJ.Internals
1250        - only the instrumentation mechanism is now left in the compiler proper
1251        - BackTrace module is a plugin which is NOT plugged in by default
1252        - Coverage module is another such plugin
1253    
1254    To get the benefits of any of these plugin modules, the code in
1255    question must be compiled with tdp instrumentation turned on.  This
1256    can be done by setting SMLofNJ.Internals.TDP.mode to true.
1257    (The ref cell is also controlled via the -Ctdp.instrument=... switch.)
1258    
1259    Plugins are selected at link time.  (Pre-compiled instrumented code
1260    can be re-loaded with different plugins in effect.)  When an
1261    instrumented module is linked, whatever plugins are at that time
1262    enabled will come into effect for that module.
1263    
1264    To enable the back-trace plugin, load library $/trace-debug-profile.cm
1265    and invoke BackTrace.install() (e.g., from the interactive prompt).
1266    To enable the coverage plugin, load the same library and invoke
1267    Coverage.install().
1268    
1269    Back-traces are generated automatically on uncaught exceptions and
1270    when the code in question explicitly invokes BackTrace.trigger().
1271    
1272    Coverage (and execution frequency-) information must be queried
1273    explicitly by calling Coverage.not_covered and Coverage.hot_spots.
1274    
1275    ----------------------------------------------------------------------
1276    Name: Matthias Blume (blume (at) tti - c (dot) org)
1277    Date: 2004/10/14 17:40:00 CDT
1278    Tag: blume-20041014-tdp-core
1279    Description:
1280    
1281    Snapshot of a significant overhaul of how the trace/debug/profile support
1282    is hooked into the system (specifically: Core and SMLofNJ.Internals).
1283    
1284    ----------------------------------------------------------------------
1285    Name: Matthias Blume (blume (at) tti - c (dot) org)
1286    Date: 2004/10/13 16:34:00 CDT
1287    Tag: blume-20041013-tdp
1288    Description:
1289    
1290    Some rationalization of names:
1291    
1292       structure BTrace -> structure TDPInstrument
1293       etc.
1294    
1295    This is is preparation of using the original back-trace
1296    instrumentation for other purposes.  "TDP" stands for
1297    Trace/Debug/Profile.
1298    
1299    The control flag controlling whether instrumentation is on or off is now
1300    registered under a different name, so instead of running sml as
1301    
1302     sml -Cinstrument.btrace-mode=true
1303    
1304    one has to say
1305    
1306     sml -Ctdp.instrument=true
1307    
1308    ----------------------------------------------------------------------
1309    Name: Matthias Blume (blume (at) tti - c (dot) org)
1310    Date: 2004/10/11 16:37:00 CDT
1311    Tag: blume-20041011-regions
1312    Description:
1313    
1314    Made some minor modifications to elabcore.sml to have source regions
1315    be propagated more tightly -- resulting in better (i.e., smaller)
1316    regions being reported in error- and debug messages.
1317    
1318    ----------------------------------------------------------------------
1319    Name: Matthias Blume (blume (at) tti - c (dot) org)
1320    Date: 2004/10/08 22:50:00 CDT
1321    Tag: blume-20041008-cmkw
1322    Description:
1323    
1324    Fixed handling of keywords in .cm files: After seeing "is" the lexer
1325    treats subsequent occurrences of "group", "library", "source", "is",
1326    "*", and "-" as ordinary identifiers rather than keywords.
1327    
1328    Most seriously, this fixes a problem with CM's "shell" tool.  The tool
1329    is supposed to accept a tool argument called "source", but this did
1330    not work because of the clash with the keyword.
1331    
1332    ----------------------------------------------------------------------
1333    Name: Matthias Blume (blume (at) tti - c (dot) org)
1334    Date: 2004/10/07 16:00:00 CDT
1335    Tag: blume-20041007-cleanup
1336    Description:
1337    
1338    Assorted cleanup work:
1339    
1340      - got rid of intstrmap in favor of using the library's
1341        hash table implementation
1342      - threw out most of the pathnames stuff, as it was not used anyway
1343      - simplified tokentable implementation
1344      - fixed some minor spelling errors
1345    
1346    ----------------------------------------------------------------------
1347    Name: Matthias Blume (blume (at) tti - c (dot) org)
1348    Date: 2004/10/06 15:15:15 CDT
1349    Tag: blume-20041006-handler
1350    Description:
1351    
1352    Cleaned up the absyn to reflect the invariant that HANDLE always
1353    carries a FNexp as part of the type definition.  This eliminates some
1354    superfluous sanity checks at runtime down the road.
1355    
1356    Some minor cleanup of the btrace code.
1357    
1358    ----------------------------------------------------------------------
1359    Name: Matthias Blume (blume (at) tti - c (dot) org)
1360    Date: 2004/10/01 10:20:30 CDT
1361    Tag: blume-20041001-slave
1362    Description:
1363    
1364    Added hack to make slave mode work in the presence of the version
1365    tool.  (Still, since the master does two passes over the code for
1366    CMB.make, the release number gets bumped twice when slaves are
1367    attached.  I don't know if this is worth fixing...)
1368    
1369    ----------------------------------------------------------------------
1370    Name: Matthias Blume (blume (at) tti - c (dot) org)
1371    Date: 2004/09/30 10:55:00 CDT
1372    Tag: blume-20040930-version
1373    Description:
1374    
1375    * Moved the "version" magic into its own little library under
1376      src/system/smlnj/internal.  This avoids expensive reconstruction of
1377      a stable src/compiler/core.cm.
1378    
1379    * At the same time, structure CompilerVersion is now known as
1380      structure SMLNJVersion.
1381    
1382    * Arranged for the version tool to NOT kick in when rebuilding the system
1383      (makeml -rebuild, fixpt).  Otherwise one would never reach a fixpoint.
1384      Also, loading the versiontool does not work when rebuilding the system
1385      because CM is not properly initialized at that time.
1386    
1387    ----------------------------------------------------------------------
1388    Name: Matthias Blume (blume (at) tti - c (dot) org)
1389    Date: 2004/09/29 14:00:00 CDT
1390    Tag: blume-20040929-autoversion
1391    Description:
1392    
1393    Implemented some CM magic to have
1394        file src/compiler/TopLevel/main/version.sml
1395    generated automagically.
1396    The version is taken from two files: config/version and config/release.
1397    The first is expected to contain a two-part version number such as 110.49.
1398    The second should contain a single number, but it may be missing.
1399    
1400    If the environment variable VERSIONTOOL_BUMP_RELEASE is defined at the
1401    time the version tool is loaded (which is the first time you say CMB.make),
1402    then the tool will increment the value stored in config/release every
1403    time CMB.make is invoked.
1404    
1405    The binfile format is now insensitive to anything beyond the first
1406    two components of a version number, so bumping the release does not render
1407    binfiles incompatible.  Auto-bumping can be used to keep track of versions
1408    during development without invalidating existing binfiles.
1409    
1410    In any case, every CMB.make updates the date information in version.sml.
1411    (This is the date that is printed in the banner.)
1412    
1413    ----------------------------------------------------------------------
1414    Name: Matthias Blume (blume (at) tti - c (dot) org)
1415    Date: 2004/09/28 10:53:00 CDT
1416    Tag: blume-20040928-controls
1417    Description:
1418    
1419    Some cleanup of the controls code.
1420    
1421    ----------------------------------------------------------------------
1422    Name: Matthias Blume (blume (at) tti - c (dot) org)
1423    Date: 2004/09/27 22:08:00 CDT
1424    Tag: blume-20040927-controls
1425    Description:
1426    
1427    Added two pieces of functionality to the Controls interface:
1428    
1429    1.   val save'restore: 'a control -> unit -> unit
1430    
1431       grabs the current value of the control in stage 1 and restores it
1432       in stage 2.
1433    
1434    2.   val set' : 'a control * 'a -> unit -> unit
1435    
1436       stores the given value into the control in stage 2 (i.e., delayed)
1437       but does all error checking in stage 1.
1438       (This is for string controls that need to do parse their argument --
1439        something that might fail.  In some cases, notably in CM, one
1440        already knows the intended argument but wants to delay the actual
1441        assignment until a time when error recovery would be more difficult.)
1442    
1443    Changed the handling of controls in tool arguments to classes "sml" and
1444    "lazysml":
1445       - use Controls.save'restore as a more robust way of restoring the
1446         old value (in particular: without having to re-parse the string)
1447       - use controls to handle the "overload" keyword in the init group
1448         (I believe this change actually fixes a long-standing obscure bug.)
1449    
1450    ----------------------------------------------------------------------
1451    Name: Matthias Blume (blume (at) tti - c (dot) org)
1452    Date: 2004/09/27 17:00:00 CDT
1453    Tag: blume-20040927-lazysml
1454    Description:
1455    
1456    Added a new tool class called "lazysml" to CM's tool chest.  The only
1457    difference to "sml" is that compilation is done with Control.lazysml
1458    set to true.  A source of class "lazysml" is automatically recognized
1459    by a file name suffix of ".lml".
1460    
1461    In addition to the above feature, the original class "sml" now also
1462    supports a tool argument "lazy" which has the same effect.  As a
1463    result, the following three lines are equivalent:
1464    
1465        foo.sml : lazysml
1466        foo.sml : sml (lazy)
1467        foo.sml (lazy)
1468    
1469    The setting goes into effect both during parsing and during
1470    compilation.  The original setting is restored right after parsing and
1471    after compilation, respectively.
1472    
1473    In addition to all the above, there is also a general mechanism to set
1474    ANY of the "controls" that are available at the command line via
1475    "-C..." on a per-sml-file basis.  The same rules that apply for "lazy"
1476    apply as well. (In fact, "lazy" is implemented as a special case of
1477    the general mechanism.)
1478    
1479    The .cm file syntax uses a new keyword tool argument called "with".
1480    There are several ways of indicating the desired settings:
1481    
1482        foo.sml (with:parser.quotations=true)
1483        foo.sml (with:(name:parser.quotations value:true))
1484        foo.sml (with:(name:name1 value:value1 name:name2 value:value2 ...))
1485        foo.sml (with:(name1=value1 name2=value2 ...))
1486        foo.sml (with:(name1=value1 name:name2 value:value2 name3=value3 ...))
1487    
1488        etc.
1489    
1490    Another possible abbreviation is to leave out the =v or value:v part
1491    if the name refers to a boolean control (in which case the value is
1492    taken to be true).  Thus, one could get lazy sml also by saying:
1493    
1494        foo.sml (with:parser.lazy-keyword=true)
1495        foo.sml (with:parser.lazy-keyword)
1496        foo.sml (with:(name:parser.lazy-keyword value:true))
1497        foo.sml (with:(name:parser.lazy-keyword))
1498    
1499    ----------------------------------------------------------------------
1500    Name: Matthias Blume (blume (at) tti - c (dot) org)
1501    Date: 2004/09/24 16:22:00 CDT
1502    Tag: blume-20040924-ppc-long-branch
1503    Description:
1504    
1505    Turned message about "emiting long form of branch" off by default.
1506    Added a control flag to turn it back on when desired.
1507    
1508    ----------------------------------------------------------------------
1509    Name: Matthias Blume (blume (at) tti - c (dot) org)
1510    Date: 2004/09/24 16:05:00 CDT
1511    Tag: blume-20040924-rounding
1512    Description:
1513    
1514    Applied patch for setting rounding modes under Mac OS X.  Thanks to
1515    Melissa O'Neill for providing the code!
1516    
1517    ----------------------------------------------------------------------
1518    Name: Matthias Blume (blume (at) tti - c (dot) org)
1519    Date: 2004/09/23 17:30:00 CDT
1520    Tag: blume-20040923-envvars
1521    Description:
1522    
1523    1. Changed definition of type ControlRegistry.registry_tree to
1524       include control_info (i.e., the name of the controlling environment
1525       variable).
1526    
1527    2. Added command-line flags -e and -E to print the names of environment
1528       variables that can be used to control internal settings.
1529       (This uses the new API mentioned in 1.)
1530    
1531    ----------------------------------------------------------------------
1532    Name: Matthias Blume (blume (at) tti - c (dot) org)
1533    Date: 2004/09/13 16:50:00 CDT
1534    Tag: Release_110_49
1535    Description:
1536    
1537    New working version (110.49).  NEW BOOTFILES!
1538    
1539    ----------------------------------------------------------------------
1540    Name: Matthias Blume
1541    Date: 2004/09/13 16:20:00 CDT
1542    Tag: blume-20040913-config-mlrisc
1543    Description:
1544    
1545    Put target "mlrisc" back into the default list.
1546    (There is no harm in having it, and some users have expressed their
1547    wish to have "mlrisc" included by default.)
1548    
1549    ----------------------------------------------------------------------
1550    Name: John Reppy
1551    Date: 2004/09/13
1552    Tag: jhr-20040913-signals
1553    Description:
1554    
1555    Fixed the signal masking code to properly nest mask/unmask operations
1556    on a per-signal basis.
1557    
1558    ----------------------------------------------------------------------
1559    Name: Matthias Blume (blume (at) tti - c (dot) org)
1560    Date: 2004/09/08 13:20:00 CDT
1561    Tag: blume-20040908-heap-magic
1562    Description:
1563    
1564    Bumped the heap macig number to 0x09082004 to account for the changed
1565    layout of the ML frame under MacOS X.
1566    
1567    ----------------------------------------------------------------------
1568    Name: Allen Leung (leunga (at) reservoir (dot) com)
1569    Date: 2004/09/03 11:26:00 EST
1570    Tag: leunga-20040903-cygwin-install
1571    Description:
1572    
1573       Added a patch to _arch-n-opsys to enable the Cygwin runtime.
1574    The Cygwin runtime is turned on by setting the environment
1575    variable SMLNJ_CYGWIN_RUNTIME to 1.
1576    
1577    ----------------------------------------------------------------------
1578    Name: Matthias Blume (blume (at) tti - c (dot) org)
1579    Date: 2004/08/31 17:15:00 CDT
1580    Tag: blume-20040831-core
1581    Description:
1582    
1583    Added some exports to src/compiler/core.cm upon request by J. Joemann.
1584    
1585    ----------------------------------------------------------------------
1586    Name: Matthias Blume (blume (at) tti - c (dot) org)
1587    Date: 2004/08/30 17:55:00 CDT
1588    Tag: blume-20040830-installer
1589    Description:
1590    
1591    Upon request by Johannes Joemann:
1592    
1593    - improved ML code of installer to fall back to coping when renaming
1594      fails (i.e., when source and target are on different file systems);
1595      the code compiles but has yet to be tested in anger
1596    - removed mlrisc from list of default targets (config/targets)
1597    
1598    ----------------------------------------------------------------------
1599    Name: Matthias Blume (blume (at) tti - c (dot) org)
1600    Date: 2004/08/27 17:20:00 CDT
1601    Tag: blume-20040827-ptreql
1602    Description:
1603    
1604    Added ptreql primop to structure InlineT (upon request from Larry
1605    Paulson).
1606    
1607    ----------------------------------------------------------------------
1608    Name: Allen Leung (leunga (at) reservoir (dot) com)
1609    Date: 2004/08/15 21:21:00 EST
1610    Tag: leunga-110_48-udgraph
1611    Description:
1612    
1613    Another bug fix from Carl Hauser:
1614    
1615    diff /net/niflab/smlnj48/src/MLRISC/graphs/udgraph.sml udgraph.sml
1616    > 48c48
1617    > <              | rmv((e as (k,_))::es,L) = rmv(es,if k = i then es else
1618    > e::L)
1619    > ---
1620    > >              | rmv((e as (k,_))::es,L) = rmv(es,if k = i then L else e::L)
1621    > Without this, any deletion of an edge in an undirected graph does severe
1622    > violence to the graph.
1623    
1624    ----------------------------------------------------------------------
1625    Name: Allen Leung (leunga (at) reservoir (dot) com)
1626    Date: 2004/08/10 23:35:00 EST
1627    Tag: leunga-110_48-ppc
1628    Description:
1629    
1630       The IBM/MacOS syntax switch on PPC was incorrectly swapped.
1631    
1632    ----------------------------------------------------------------------
1633    Name: Matthias Blume (blume (at) tti - c (dot) org)
1634    Date: 2004/08/10 12:00:00 CDT
1635    Tag: Release_110_48
1636    Description:
1637    
1638    New working version (110.48).  NEW BOOTFILES!
1639    
1640    ----------------------------------------------------------------------
1641    Name: Allen Leung (leunga (at) reservoir (dot) com)
1642    Date: 2004/08/09 12:21:00 EST
1643    Tag: leunga-110_47-dijsktra
1644    Description:
1645    
1646    Bug fix from Carl Hauser:
1647    
1648    single_source_shortest_paths in dijkstra.sml was observed to get wrong
1649    answers (by comparing to single_source_shortest_paths in bellman-ford.sml).
1650    
1651    The problem is that following the expression A.update(dist,s,Num.zero)
1652    it is necessary to update the priority queue using Q.decreaseWeight(Q,s).
1653    
1654    ----------------------------------------------------------------------
1655    Name: Matthias Blume (blume (at) tti - c (dot) org)
1656    Date: 2004/08/06 18:10:00 CDT
1657    Tag: blume-20040806-cmdline
1658    Description:
1659    
1660    Fiddled with handling of command-line options:
1661    
1662      * sml now quits after processing the command line
1663        if -H, -S, -h<n>, or -s<n> appears as the last
1664        command-line argument
1665      * a new option -q terminates the session when encountered on
1666        the command line; subsequent arguments will be ignored
1667      * bug fixes: short (erroneous) arguments are no longer ignored
1668        completely
1669    
1670    ----------------------------------------------------------------------
1671    Name: Allen Leung (leunga (at) reservoir (dot) com)
1672    Date: 2004/08/04 18:17:00 EST
1673    Tag: leunga-110_47-ppc-ibm-asm
1674    Description:
1675    
1676      - Added minimal IBM assembly syntax support for PowerPC.
1677    
1678      - Cygwin: manually changed the file cygwin.def.  Some exported symbols have
1679        been altered in the runtime.  We need an automatic way to keep the file
1680        in sync.
1681    
1682    ----------------------------------------------------------------------
1683    Name: Matthias Blume (blume (at) tti - c (dot) org)
1684    Date: 2004/08/04 14:00:00 CDT
1685    Tag: Release_110_47
1686    Description:
1687    
1688    New working version (110.47).  NEW BOOTFILES!
1689    
1690    ----------------------------------------------------------------------
1691    Name: Matthias Blume (blume (at) tti - c (dot) org)
1692    Date: 2004/08/03 14:25:00 CDT
1693    Tag: blume-20040803-callingconv
1694    Description:
1695    
1696    Added low-level support for choosing C calling conventions by
1697    twiddling the type of rawccall.  (See
1698    src/compiler/Semant/types/cproto.sml for details.)
1699    
1700    ----------------------------------------------------------------------
1701    Name: Matthias Blume (blume (at) tti - c (dot) org)
1702    Date: 2004/08/02 15:55:00 CDT
1703    Tag: blume-20040802-backout
1704    Description:
1705    
1706    Backed out of change to win32-filesys.c.  The earlier patch to
1707    get_file_time caused CM to produce files with the wrong time stamp.
1708    
1709    ----------------------------------------------------------------------
1710    Name: Matthias Blume (blume (at) tti - c (dot) org)
1711    Date: 2004/08/02 14:45:00 CDT
1712    Tag: blume-20040802-nlffi-win32
1713    Description:
1714    
1715    Added NLFFI support for Win32, adapted from a patch provided by David
1716    Hansel.  This is currently completely untested.  Also, the issue
1717    concerning stdcall vs. ccall is still unresolved.
1718    
1719    ----------------------------------------------------------------------
1720    Name: Matthias Blume (blume (at) tti - c (dot) org)
1721    Date: 2004/07/30 17:55:00 CDT
1722    Tag: blume-20040730-various
1723    Description:
1724    
1725    Gearing up towards 110.47...
1726    
1727    - various minor bugfixes to ml-nlffigen
1728    - a beginning of a manual for nlffi
1729    
1730    - eliminated 'export name=value' in config/install.sh as this does
1731      not work with certain versions of /bin/sh
1732      (Thanks to David King at Motorola for catching this.)
1733    
1734    - several bugfixes provided or suggested by David Hansel at Reactive Systems:
1735      - added a test for tm==NULL to gmtime.c and localtime.c
1736      - applied patch for incorrect GetFileTime under win32
1737      - toSeconds -> toMilliseconds in Win32/win32-process.sml
1738    
1739    ----------------------------------------------------------------------
1740    Name: Matthias Blume (blume (at) tti - c (dot) org)
1741    Date: 2004/07/21 18:20:00 CDT
1742    Tag: blume-20040721-nlffigen
1743    Description:
1744    
1745    - Fixed minor issue in ml-nlffigen: Now generate structure T_foo
1746      for a typedef to an incomplete type, but leave out the "typ" member.
1747      (This is just for consistency.)
1748    - Started to produce what is supposed to become better (i.e., comprehensive)
1749      documentation of what ml-nlffigen does and produces.
1750    
1751    ----------------------------------------------------------------------
1752    Name: Matthias Blume (blume (at) tti - c (dot) org)
1753    Date: 2004/07/14 16:25:00 CDT
1754    Tag: blume-20040714-union
1755    Description:
1756    
1757    Added C_UNION to c-calls/c-types.sml and updated the machinery
1758    (ml-nlffigen, cproto.sml) that conveys C function interface
1759    information to the code generator.
1760    
1761    However, the actual architecture-specific implementation of function
1762    arguments and results that are C unions is still not implemented.
1763    
1764    ----------------------------------------------------------------------
1765    Name: Allen Leung (leunga (at) reservoir (dot) com)
1766    Date: 2004/07/14 14:38:00 EST
1767    Tag: leunga-110_46_1-ppc-lwzu
1768    Description:
1769    
1770        Added these instructions to the PowerPC architecture:
1771        LBZU(X), LHZU(X), LWZU(X),
1772        STWU(X), STFDU, STFSU
1773    
1774        etc...
1775    
1776        Note: I haven't added their instruction encoding into the description.
1777    
1778    ----------------------------------------------------------------------
1779    Name: Allen Leung (leunga (at) reservoir (dot) com)
1780    Date: 2004/07/13 15:04:00 EST
1781    Tag: leunga-110_46_1-ppc-lwarx
1782    Description:
1783    
1784       Added the two instructions LWARX and STWCX to the PowerPC
1785    instruction set.
1786    
1787       A (untested) rewrite of loop-structure.sml.  The old version
1788    is completely broken.
1789    
1790    ----------------------------------------------------------------------
1791    Name: Matthias Blume (blume (at) tti - c (dot) org)
1792    Date: 2004/07/13 13:50:00 CDT
1793    Tag: blume-20040713-nlffi
1794    Description:
1795    
1796    - use paramAlloc to report c-calls with too many arguments
1797      (for PPC version where parameter area is pre-allocated)
1798    - added ccall_maxargspace to machspec (to implement the above)
1799    - made "make" commend in CM's "make" tool configurable
1800    - added option (default: on) for passing the name of the SML/NJ's "bin"
1801      directory to "make"; the call looks like this:
1802    
1803         make <options> SMLNJ_BINDIR=<dir> <target>
1804    
1805      This can be used by the Makefile to, e.g., pick the "right" version
1806      of ml-nlffigen.
1807    - minor code tweaks
1808    
1809    ----------------------------------------------------------------------
1810    Name: Matthias Blume (blume (at) tti - c (dot) org)
1811    Date: 2004/07/12 22:50:00 CDT
1812    Tag: blume-110_46_1-macosx-nlffi
1813    Description:
1814    
1815    NLFFI under Mac OS X now working (sort of).  This is largely untested,
1816    though.
1817    
1818    Note:  1. You have to make a new, clean build of the runtime system.
1819           2. There are new BOOTFILES, you have to use them!
1820              (Doing the bootstrap process yourself would be *very* painful!
1821               If you absolutely have to do it, build the system under
1822               a different architecture and then cross-compile.)
1823    
1824    Version bumped to 110.46.1 to account for runtime data format changes.
1825    
1826    ----------------------------------------------------------------------
1827    Name: Matthias Blume (blume (at) tti - c (dot) org)
1828    Date: 2004/06/18 14:30:00 CDT
1829    Tag: blume-20040618-unix
1830    Description:
1831    
1832    Changed the implementation of structure Unix so that the same stream
1833    is returned every time one of the {text,bin}{In,Out}streamOf functions
1834    is invoked on the same proc.  This is not what the spec currently
1835    says -- although IMO it arguably should.  (See discussion below.)
1836    
1837    ----------------------------------------------------------------------
1838    Name: Matthias Blume (blume (at) tti - c (dot) org)
1839    Date: 2004/06/17 18:15:00 CDT
1840    Tag: Release_110_46
1841    Description:
1842    
1843    New working version (110.46).  NEW BOOTFILES!
1844    
1845    ----------------------------------------------------------------------
1846    Name: Matthias Blume (blume (at) tti - c (dot) org)
1847    Date: 2004/06/17 17:20:00 CDT
1848    Tag: blume-20040617-timer-unix
1849    Description:
1850    
1851    Changed the interface of structures Timer and Unix to match the most
1852    recent Basis spec.
1853    
1854    In the case of Unix there still seems to be an open/weird issue:
1855    
1856       The {text,bin}{In,Out}streamOf functions are supposed to create
1857       fresh streams whenever they are called -- as opposed to have them
1858       return the same stream every time.  This design is supposed to
1859       prevent space leaks caused by proc values hanging on to streams.
1860    
1861       The reap function, on the other hand, is supposed to close the
1862       streams.  This cannot be done without having a handle on the
1863       stream in proc after all...
1864    
1865    I took the liberty to implement the following stopgap solution:
1866    
1867      The proc value hangs on to the most recently created stream(s).
1868      Reap closes those.  If either or both of the two streams hadn't
1869      been created at all yet, then reap will close the corresponding
1870      file descriptors directly.
1871    
1872    PS: I don't understand the original space leak argument anymore.  If
1873    a proc hangs on to the imperative stream, then I/O operations on those
1874    will advance the state of the cached stream and avoid the space leak.
1875    
1876    ----------------------------------------------------------------------
1877    Name: Matthias Blume (blume (at) tti - c (dot) org)
1878    Date: 2004/05/28 16:45:00 CDT
1879    Tag: blume-20040528-basis
1880    Description:
1881    
1882    Added signature PACK_REAL and exported functor PrimIO.
1883    
1884    ----------------------------------------------------------------------
1885    Name: Matthias Blume (blume (at) tti - c (dot) org)
1886    Date: 2004/05/25 16:00:00 CDT
1887    Tag: blume-20040525-group-owner
1888    Description:
1889    
1890    CM now ignores (but still accepts) the "owner" information in group
1891    descriptions.  The owner of a group is its next enclosing
1892    library. Each group must have a unique owner.  (There is a virtual
1893    "toplevel" library that owns groups which are not nested within a real
1894    library.)  Previously, each group had to explicitly declare its owner,
1895    and CM would check that such a declaration is correct.  The new scheme
1896    is to have CM check that for each group there is precisely one owning
1897    library.
1898    
1899    The advantage of the new scheme is that the programmer no longer needs
1900    to maintain the somewhat annoying owner information.  The downside is
1901    that CM cannot enforce the ownership rule across multiple runs of
1902    CM.make.  Fortunately, enclosing the same group in two different
1903    libraries A and B which are not part of the same program does not
1904    cause real problems.
1905    
1906    ----------------------------------------------------------------------
1907    Name: Matthias Blume (blume (at) tti - c (dot) org)
1908    Date: 2004/05/20 16:00:00 CDT
1909    Tag: blume-20040520-win32
1910    Description:
1911    
1912    Made the win32 version work again.  (Strangely, a misplaced comma had
1913    slipped into win32-process.c which prevented the runtime from being
1914    compiled correctly.)
1915    
1916    Also, included a minor addition to ml-build.bat analogous to what was
1917    done in blume-20040519-ml-build.
1918    
1919    ----------------------------------------------------------------------
1920    Name: Matthias Blume (blume (at) tti - c (dot) org)
1921    Date: 2004/05/19 22:10:00 CDT
1922    Tag: blume-20040519-ml-build
1923    Description:
1924    
1925    Arranged for ml-build to clean up after itself a little bit better.
1926    The script generates a temporary SML source file and compiles it using
1927    CM, so CM generates metadata (GUID, SKEL, objectfile) for it.  It now
1928    gets rid of those at the end, so they don't accumulate under .cm.
1929    
1930    This required a minor change to install.sh because the name of the
1931    metadata directory (default: .cm) is actually configurable at
1932    installation time.
1933    
1934    ----------------------------------------------------------------------
1935    Name: Matthias Blume (blume (at) tti - c (dot) org)
1936    Date: 2004/05/18 15:50:00 CDT
1937    Tag: blume-20040518-mkreader
1938    Description:
1939    
1940    Added Posix.IO.mk{Bin,Text}{Reader,Writer} by lifting their respective
1941    implementations from internal modules PosixBinPrimIO and PosixTextPrimIO.
1942    
1943    ----------------------------------------------------------------------
1944    Name: Matthias Blume (blume (at) tti - c (dot) org)
1945    Date: 2004/05/11 14:35:00 CDT
1946    Tag: blume-20040511-win32sock
1947    Description:
1948    
1949    Added previously missing support for many socket-related functions
1950    under win32.  Thanks to David Hansel <hansel@reactive-systems.com>
1951    for the voluminous patch!
1952    
1953    (I have not tested this patch under win32 yet.)
1954    
1955    Here is David's e-mail:
1956    
1957    Hi,
1958    
1959    Attached to this email you find a diff against sml/nj 110.45
1960    that will enable socket support under Windows.
1961    
1962    To apply the patch (using unix or cygwin)
1963    1) gunzip runtime.diff.gz
1964    2) "cd" into "src/runtime" in the source tree of a fresh
1965       110.45 installation.
1966    3) patch -p 1 < [your/path/to]runtime.diff
1967    
1968    The code compiles fine but has NOT yet been extensively tested.
1969    I only ran a few tests for basic socket client functionality
1970    (which worked fine).  Especially the functions that use ioctl
1971    are not tested at all and might not work (see below).
1972    
1973    I implemented this since we want to move to a newer version of sml/nj
1974    but need socket support in order to use it.  This is the first time I
1975    even had a look at the sml/nj source,  so please review my changes
1976    before making this part of the distribution!  Here are a few issues
1977    that I think might be better for someone to solve who is more
1978    familiar with the sml/nj source (and socket programming):
1979    
1980    - getnetbyaddr.c and getnetbyname.c will raise a "not implemented"
1981      exception since I could not figure out what the windows equivalent
1982      of these functions is
1983    
1984    - In sockets-osdep.h there are a some #include statements that are
1985      only used in a few files that include sockets-osdep.h
1986    
1987    - In smlnj-sock-lib.c, function init_fn() calls WSAStartup() but
1988      does not process its return value since I don't know how to
1989      report an error upwards.
1990    
1991    - It would probably be good to have a call to WSACleanup() when
1992      the library is unloaded (if there is such a possibility).
1993      Otherwise I think Windows will take care of this automatically
1994      when the process finishes.
1995    
1996    - I used ioctlsocket() as a replacement for ioctl() but I have
1997      no idea if that is actually the proper replacement on Windows.
1998    
1999    - All these issues are marked in the code by "FIXME" comments.
2000    
2001    We use sml/nj extensively in our products and are quite happy
2002    with it.  I hope this contribution will help you.
2003    
2004    Keep up the good work!
2005    
2006    David
2007    
2008    ----------------------------------------------------------------------
2009    Name: Matthias Blume (blume (at) tti - c (dot) org)
2010    Date: 2004/05/11 14:20:00 CDT
2011    Tag: blume-20040511-installml
2012    Description:
2013    
2014    Fixed two bugs in installml script.  (Thanks to Vesa A. Norrman for
2015    the patch.)
2016    
2017    ----------------------------------------------------------------------
2018    Name: Matthias Blume (blume (at) tti - c (dot) org)
2019    Date: 2004/05/11 14:05:00 CDT
2020    Tag: blume-20040511-nlffi-netbsd
2021    Description:
2022    
2023    Added support for nlffi under netbsd.  (Thanks to Vesa A. Norrman for
2024    the patch.)
2025    
2026    ----------------------------------------------------------------------
2027    Name: Matthias Blume (blume (at) tti - c (dot) org)
2028    Date: 2004/05/11 12:05:00 CDT
2029    Tag: blume-20040511-exports
2030    Description:
2031    
2032    As per request by Adam Chlipala <adam@hcoop.net>, extended various
2033    export lists in compiler-related .cm-files.
2034    
2035    ----------------------------------------------------------------------
2036    Name: Matthias Blume (blume (at) tti - c (dot) org)
2037    Date: 2004/05/11 11:35:00 CDT
2038    Tag: blume-20040511-allsource
2039    Description:
2040    
2041    The installer now honors the "src-smlnj" target again, although its meaning
2042    has changed from "all sources required for the compiler" to "all sources
2043    the installer knows about".  In other words, if you enable "src-smlnj"
2044    in the "targets" file, then the installer will pull in sources for
2045    everything.  (Notice that this refers to source code only.  Compiled
2046    code is still only installed for modules that were requested explicitly
2047    or which are required for other modules that were requested explicitly.)
2048    
2049    ----------------------------------------------------------------------
2050    Name: Matthias Blume (blume (at) tti - c (dot) org)
2051    Date: 2004/04/23 17:40:00 CDT
2052    Tag: blume-20040423-ieee-scan
2053    Description:
2054    
2055    Fixed IEEEReal.scan (and .fromString) so that if there is an overflow
2056    in the exponent calculation we get INF or ZERO (depending on the mantissa
2057    and the sign of the exponent).
2058    
2059    ----------------------------------------------------------------------
2060    Name: Matthias Blume (blume (at) tti - c (dot) org)
2061    Date: 2004/04/23 10:40:00 CDT
2062    Tag: blume-20040423-ml-build
2063    Description:
2064    
2065    The ml-build script now terminates with a non-0 status when something
2066    goes wrong.
2067    
2068    ----------------------------------------------------------------------
2069    Name: Matthias Blume (blume (at) tti - c (dot) org)
2070    Date: 2004/04/22 16:35:00 CDT
2071    Tag: blume-20040422-Option
2072    Description:
2073    
2074    Made exception Option to be the same as exception Option.Option
2075    (as it should be).
2076    
2077    ----------------------------------------------------------------------
2078    Name: Allen Leung (leunga (at) reservoir (dot) com)
2079    Date: 2004/03/19 14:40:00 EST
2080    Tag: leunga-20040319-cygwin-nlffi
2081    Description:
2082    
2083    Fixed the runtime so that ml-nlffi-lib runs on the cygwin version
2084    of SML/NJ.  The problem is that
2085    
2086       lib = dlopen(NULL, ...)
2087       f   = dlsym(lib, "malloc");
2088    
2089    does not work on Windows unless we explicitly export symbols
2090    such as 'malloc' during linking.  We fixed this by explicitly
2091    exporting the required symbols with the magic gcc incantation:
2092    
2093        -Wl,--export-all cygwin.def
2094    
2095    where cygwin.def is a file containing all the symbols that
2096    we wish to export.
2097    
2098    I suspect this is a Windows problem and we'll have to
2099    do the same (somehow with windows compilers) when
2100    we build the native win32 version with the system
2101    calls LoadLibrary/GetProcAddress.
2102    
2103    ----------------------------------------------------------------------
2104    Name: Matthias Blume (blume (at) tti - c (dot) org)
2105    Date: 2004/03/04 16:35:00 CST
2106    Tag: blume-20040304-intinf-fmt
2107    Description:
2108    
2109    Fixed problem with IntInf.fmt (sign would show up on the right instead
2110    of on the left for BIN, OCT, and HEX).
2111    
2112    ----------------------------------------------------------------------
2113    Name: Matthias Blume (blume (at) tti - c (dot) org)
2114    Date: 2004/03/04 11:25:00 CST
2115    Tag: blume-20040304-symlinks
2116    Description:
2117    
2118    Fixed problem with installer script (unix only) where bin/ml-yacc and
2119    friends pointed (via symlinks) to absolute locations instead of just
2120    .run-sml.  This was reported by Vesa A Norrman.
2121    
2122    ----------------------------------------------------------------------
2123    Name: Matthias Blume (blume (at) tti - c (dot) org)
2124    Date: 2004/02/13 14:50:00 CST
2125    Tag: Release_110_45
2126    Description:
2127    
2128    New working version (110.45). New bootfiles.
2129    
2130    ----------------------------------------------------------------------
2131    Name: Matthias Blume (blume (at) tti - c (dot) org)
2132    Date: 2004/01/26 15:15:15 CST
2133    Tag: blume-20040126-toplevel
2134    Description:
2135    
2136    Improved handling of exceptions at the interactive toplevel.
2137    
2138    ----------------------------------------------------------------------
2139    Name: Matthias Blume (blume (at) tti - c (dot) org)
2140    Date: 2004/01/26 11:25:00
2141    Tag: blume-20040126-app
2142    Description:
2143    
2144    Type of top-level "app" corrected.
2145    Added code for setting vp_limitPtrMask to Win32-specific runtime.
2146    
2147    ----------------------------------------------------------------------
2148    Name: Matthias Blume (blume (at) tti - c (dot) org)
2149    Date: 2003/11/18 17:10 CST
2150    Tag: blume-20031118-basis-fiddle
2151    Description:
2152    
2153    - changed Timer interface to what might become the spec
2154    - POSIX_FLAGS -> BIT_FLAGS according to spec
2155    - some other minor discrepancies wrt. spec eliminated
2156    
2157    ----------------------------------------------------------------------
2158    Name: Matthias Blume (blume (at) tti - c (dot) org)
2159    Date: 2003/11/06 12:00:00 CST
2160    Tag: Release_110_44
2161    Description:
2162    
2163    New working version (110.44). New bootfiles.
2164    
2165    ----------------------------------------------------------------------
2166    Name: Matthias Blume (blume (at) tti - c (dot) org)
2167    Date: 2003/11/04 11:50:00 CST
2168    Tag: blume-20031104-move-libraries
2169    Description:
2170    
2171    Eliminated the "dont_move_libraries" directive in config/targets.
2172    (The mechanism was broken and could not be fixed easily.  Moreover,
2173    there does not seem to be any reason not to move all libraries into
2174    lib during installation.  I originally implemented this directive as a
2175    backward-compatibility feature when I first introduced the new CM.
2176    Now that things have been stable for a long time and going back to the
2177    old CM is not an option, there is no reason to keep it around.)
2178    
2179    ----------------------------------------------------------------------
2180    Name: Matthias Blume (blume (at) tti - c (dot) org)
2181    Date: 2003/11/03 16:00:00 CST
2182    Tag: blume-20031103-installdir
2183    Description:
2184    
2185    Made installer honor INSTALLDIR variable again.  (Thanks to Chris
2186    Richards for pointing out the problem and providing the solution.)
2187    
2188    ----------------------------------------------------------------------
2189    Name: Matthias Blume (blume (at) tti - c (dot) org)
2190    Date: 2003/10/01 17:05:00 CDT
2191    Tag: blume-20031001-lal-mlrisc
2192    Description:
2193    
2194    MLRISC bug fix from Lal.
2195    
2196    ----------------------------------------------------------------------
2197    Name: Matthias Blume (blume (at) tti - c (dot) org)
2198    Date: 2003/09/30 16:10:00 CDT
2199    Tag: blume-20030930-primio-bat
2200    Description:
2201    
2202    1. Added openVector, nullRd, and nullWr to PRIM_IO.
2203    2. Improved .bat files (for Win32 port) to make things work under Win95.
2204       (thanks to Aaron S. Hawley for this one)
2205    
2206    ----------------------------------------------------------------------
2207    Name: Matthias Blume (blume (at) tti - c (dot) org)
2208    Date: 2003/09/26 16:05:00 CDT
2209    Tag: blume-20030926-wrappriv
2210    Description:
2211    
2212    Added missing wrapper for privilege "primitive" in $smlnj/viscomp/core.cm.
2213    
2214    ----------------------------------------------------------------------
2215    Name: Matthias Blume (blume (at) tti - c (dot) org)
2216    Date: 2003/09/26 15:00:00 CDT
2217    Tag: blume-20030926-110_43_3
2218    Description:
2219    
2220    - additional cleanup
2221    - version number bump, NEW BOOTFILES
2222    
2223    ----------------------------------------------------------------------
2224    Name: Matthias Blume (blume (at) tti - c (dot) org)
2225    Date: 2003/09/26 12:00:00 CDT
2226    Tag: blume-20030926-ppautoload
2227    Description:
2228    
2229    I modified the read-eval-print loop so that the autoloader gets
2230    invoked whenever the prettyprinter tries to look up a symbol that
2231    is not currently defined in the toplevel environment but which
2232    appears in CM's autoload registry.  As a result, we see far fewer of
2233    those ?.Foo.Bar.xxx names in the prettyprinter's output.
2234    
2235    In addition to this I tried to clean up some pieces of the Basis
2236    implementation (e.g., Socket, Word8Array) in order to prevent other
2237    instances of these ?.Foo.Bar.xxx names from being printed.
2238    
2239    The mechanism that picks names for types still needs some work, though.
2240    (Right now it seems that if there is a type A.t which is defined to
2241    be B.u, but B is unavailable at toplevel, then A.t gets printed as
2242    "?.B.u" although the perhaps more sensible solution would be to use
2243    "A.t" in this case.  In other words, the prettyprinter should follow
2244    a chain of DEFtycs not farther than there are corresponding toplevel
2245    names in the current environment.)
2246    
2247    ----------------------------------------------------------------------
2248    Name: Matthias Blume (blume (at) tti - c (dot) org)
2249    Date: 2003/09/24 16:31:00 CDT
2250    Tag: blume-20030924-installer
2251    Description:
2252    
2253    Another installer tweak:  All the ML code for the installer is now
2254    compiled during CMB.make and put into a little library called
2255    $smlnj/installer.cm.  The installation then simply invokes
2256    
2257       sml -m $smlnj/installer.cm
2258    
2259    and everything happens automagically.
2260    
2261    Win32:  ML code senses value of environment variable SMLNJ_HOME.
2262    Unix:   ML code senses values of environment variables ROOT, CONFIGDIR,
2263            and BINDIR.
2264    
2265    The new scheme guarantees that the ML code responsible for the installation
2266    is in sync with the APIs of the main system.  Also, the installer is
2267    somewhat faster because the installer script is precompiled.
2268    
2269    ----------------------------------------------------------------------
2270    Name: Matthias Blume (blume (at) tti - c (dot) org)
2271    Date: 2003/09/24 15:35:00 CDT
2272    Tag: blume-20030924-synsock
2273    Description:
2274    
2275    Added a signature SYNCHRONOUS_SOCKET to basis.cm.  This is like SOCKET
2276    but excludes all non-blocking operations.  Defined SOCKET (in Basis)
2277    and CML_SOCKET in terms of SYNCHRONOUS_SOCKET.  Removed superfluous
2278    implementations of non-blocking operations from CML's Socket
2279    structure.
2280    
2281    ----------------------------------------------------------------------
2282    Name: Matthias Blume (blume (at) tti - c (dot) org)
2283    Date: 2003/09/24 15:10:05 CDT
2284    Tag: blume-20030924-sockets
2285    Description:
2286    
2287    1. Fixed SOCKET API and implementation to match Basis spec.
2288       This required changing the internal representation of sockets to one
2289       that remembers (for each socket file descriptor) whether it is currently
2290       blocking or non-blocking.  This state is maintained lazily (i.e., a system
2291       call is made only if the state actually needs to change).
2292    
2293    2. OS-specific details of sockets were moved into separate files, thus
2294       making it possible to unify the bulk of the socket implementations
2295       between Unix and Win32.
2296    
2297    3. CML's socket API changed accordingly.
2298       (Note that we need to remove non-blocking functions from this API
2299       since they are redundant in the case of CML!)
2300    
2301    4. CML's socket implementation now makes use of non-blocking functions
2302       provided by Basis, thus removing all OS-dependent code from this part
2303       of CML.
2304    
2305    5. Changed Real64.precision from 52 to 53.  Minor cleanup in Real64 code.
2306    
2307    ----------------------------------------------------------------------
2308    Name: Matthias Blume (blume (at) tti - c (dot) org)
2309    Date: 2003/09/22 12:10:00 CDT
2310    Tag: blume-20030922-110_43_2
2311    Description:
2312    
2313    Made a new interim version and bootfiles for developer's bootstrapping
2314    convenience.
2315    
2316       110.43.2 -- NEW BOOTFILES
2317    
2318    ----------------------------------------------------------------------
2319    Name: Matthias Blume (blume (at) tti - c (dot) org)
2320    Date: 2003/09/19 15:55:00 CDT
2321    Tag: blume-20030919-cmdir
2322    Description:
2323    
2324    1. new-install.sh -> install.sh
2325    2. changed default CM "metadata" directory name to ".cm" (instead of "CM")
2326    3. tweaked installer so that another name instead of .cm can be chosen
2327       at install time (by setting the CM_DIR_ARC environment variable
2328       during installation); once installation is complete, the name is
2329       fixed
2330    
2331    ----------------------------------------------------------------------
2332    Name: Matthias Blume (blume (at) tti - c (dot) org)
2333    Date: 2003/09/18 16:00:00 CDT
2334    Tag: blume-20030918-110_43_1
2335    Description:
2336    
2337    Made a new interim version and bootfiles for developer's bootstrapping
2338    convenience.
2339    
2340       110.43.1 -- NEW BOOTFILES
2341    
2342    ----------------------------------------------------------------------
2343    Name: Matthias Blume (blume (at) tti - c (dot) org)
2344    Date: 2003/09/18 15:20:00 CDT
2345    Tag: blume-20030918-misc
2346    Description:
2347    
2348    1. Exported fractionsPerSecond etc. from TimeImp (but not from Time as
2349       this seems to be controversial at the moment) and used those in
2350       Posix.ProcEnv.times.
2351    
2352    2. Added Time.{from,to}Nanoseconds to Time.
2353    
2354    3. Improved Real.{from,to}LargeInt by avoiding needless calculations.
2355       For example, fromLargeInt never needs to look at more than 3 "big
2356       digits" to get its 53 bits of precision.
2357    
2358    ----------------------------------------------------------------------
2359    Name: Matthias Blume (blume (at) tti - c (dot) org)
2360    Date: 2003/09/17 16:30:00 CDT
2361    Tag: blume-20030917-real32-slices
2362    Description:
2363    
2364    Added an entry to the primitive environment
2365    (compiler/Semant/statenv/prim.sml) for int32->real64 conversion and
2366    added code to compiler/CodeGen/main/mlriscGen.sml to implement it.
2367    
2368    Removed some of the "magic" constants in real64.sml and replaced them
2369    with code that generates these values from their corresponding
2370    integer counterparts.
2371    
2372    Made all(?) the slice-related changes to the Basis and made everything
2373    compile again...
2374    
2375    ----------------------------------------------------------------------
2376    Name: Matthias Blume (blume (at) tti - c (dot) org)
2377    Date: 2003/09/15 17:45:00 CDT
2378    Tag: blume-20030915-rbase
2379    Description:
2380    
2381    Fixed bug in Real.fromLargeInt.
2382    
2383    ----------------------------------------------------------------------
2384    Name: Matthias Blume (blume (at) tti - c (dot) org)
2385    Date: 2003/09/13 18:11:00 CDT
2386    Tag: blume-20030913-libinstall
2387    Description:
2388    
2389    Minor bugfix in config/libinstall (set anchor with path to
2390    standalone tool after installing it, otherwise libraries that
2391    need ml-lex or ml-yacc won't compile the first time the installer
2392    runs).
2393    
2394    ----------------------------------------------------------------------
2395    Name: Matthias Blume (blume (at) tti - c (dot) org)
2396    Date: 2003/09/12 11:45:00 CDT
2397    Tag: blume-20030912-various
2398    Description:
2399    
2400     - fixed bug in Real.toLargeInt
2401     - fixed bug in Posix.ProcEnv.times
2402     - changed inputLine functions to return an option
2403     - minor installer improvements / bugfixes
2404     - changed default @SMLalloc parameter for x86/celeron to 64k
2405    
2406    ----------------------------------------------------------------------
2407    Name: Matthias Blume (blume (at) tti - c (dot) org)
2408    Date: 2003/09/09 22:00:00 CDT
2409    Tag: Release_110_43
2410    Description:
2411    
2412        New working release 110.43.  New bootfiles.
2413    
2414    ----------------------------------------------------------------------
2415    Name: Matthias Blume (blume (at) tti - c (dot) org)
2416    Date: 2003/09/09 19:20:00 CDT
2417    Tag: blume-20030909-installer
2418    Description:
2419    
2420    Rewrote large parts of config/install.sh in SML (config/libinstall.sml).
2421    Modified config/install.bat to take advantage of it.  Also modified
2422    config/install.sh (and called it config/new-install.sh) to take advantage
2423    of it on Unix systems.  (The SML code is (supposed to be) platform-
2424    independent.)
2425    
2426    The installer can now install everything under Win32
2427    as well as under *nix as long as it compiles.
2428    
2429    Other changes:
2430    
2431      - made CML compile again under Win32
2432      - made eXene compile under Win32 (by providing a fake structure UnixSock
2433        and by using OS.Process.getEnv instead of Posix.ProcEnv.getenv)
2434      - fixed a bug in nowhere: it assumed that type OS.Process.status is the
2435        same as type int;  under Win32 it isn't
2436      - fixed some slice-related problems in the win32-specific parts of CML
2437      - added a functor argument "sameVol" to os-path-fn.sml in the Basis
2438        (under Win32, the volume name is case-insensitive, and the
2439        OS.Path code compares volume names for equality)
2440    
2441    ----------------------------------------------------------------------
2442    Name: Matthias Blume (blume (at) tti - c (dot) org)
2443    Date: 2003/09/08 11:55:00 CDT
2444    Tag: blume-20030908-fullpath
2445    Description:
2446    
2447    Made Win32 version of OS.FileSys.fullPath return current directory
2448    when given an empty string.  This is what the spec says, and incidentally,
2449    CM depends on it.  (CM otherwise goes into an infinite loop in certain
2450    cases when presented with the name of a non-existing .cm file.)
2451    
2452    ----------------------------------------------------------------------
2453    Name: Matthias Blume (blume (at) tti - c (dot) org)
2454    Date: 2003/09/04 16:30:00 CDT
2455    Tag: blume-20030905-slices-etc
2456    Description:
2457    
2458      1. Changed interface to vectors and arrays in Basis to match
2459         (draft) Basis spec.
2460      2. Added signatures and implementations of slices according to
2461         Basis spec.
2462      3. Edited source code throughout the system to make it compile again
2463         under 1. and 2.  (In some cases code had to be added to have it
2464         match the new signatures.)
2465      4. MLRISC should be backward-compatible: the copies of the originals
2466         of files that needed to change under 3. were retained, the .cm files
2467         check the compiler version number and use old versions when
2468         appropriate.
2469      5. Changed type of OS.FileSys.readDir and Posix.FileSys.readdir to
2470         dirstream -> string option (in accordance with Basis spec).
2471      6. When generating code that counts lines, ml-lex used function
2472         CharVector.foldli, taking advantage of its old interface.
2473         This has been replaced with the corresponding code from
2474         CharVectorSlice.  (html-lex must be re-lexed!)
2475      7. BitArray in smlnj-lib/Util has been extended/modified to match the
2476         new MONO_ARRAY signature.  (Do we need BitArraySlice?)
2477      8. Removed temporary additions (fromInternal, toInternal) from the
2478         (now obsolete) IntInf in smlnj-lib/Util.
2479      9. Cleaned up structure Byte.
2480     10. Added localOffset, scan, and fromString to Date (according to spec).
2481         Cleaned/corrected implementation of Date.
2482         (Still need to check for correctness; implement better canonicalizeDate.)
2483     11. Added "scan" to signature IEEE_REAL.
2484     12. Some improvements to IntInf [in particular: efficiency-hack for
2485         mod and rem when second operand is 2 (for parity checks).]
2486     13. Changed representation of type Time.time, using a single IntInf.int
2487         value counting microseconds.  This considerably simplified the
2488         implementation of structure Time.  We now support negative time
2489         values; scan and fromString handle signs.
2490     14. Functor PrimIO now takes two additional arguments (VectorSlice and
2491         ArraySlice).
2492    
2493    ----------------------------------------------------------------------
2494    Name: Matthias Blume (blume (at) tti - c (dot) org)
2495    Date: 2003/08/28 17:00:00 CDT
2496    Tag: blume-20030828-intinf
2497    Description:
2498    
2499    This is a major update which comes with a version number bump
2500    (110.42.99 -- yes, we are really close to 110.43 :-), NEW BOOTFILES,
2501    and an implementation of IntInf in the Basis.
2502    
2503    There are a fairly large number of related changes and updates throughout
2504    the system:
2505    
2506    Basis:
2507            - Implemented IntInf.
2508            - Made LargeInt a projection of IntInf (by filtering through INTEGER).
2509            - Added some missing Real64 operations, most notably Real.toLargeInt.
2510            - Added FixedInt as a synonym for Int32.
2511    
2512    compiler:
2513            * Added support for a built-in intinf type.
2514              - literals
2515              - pattern matching
2516              - conversion shortcuts (Int32.fromLarge o Int.toLarge etc.)
2517              - overloading on literals and operations
2518    
2519            This required adding a primitive type intinf, some additional
2520            primops, and implementations for several non-trivial intinf
2521            operations in Core.  (The intinf type is completely abstract
2522            to the compiler; all operations get delegated back to the Core.)
2523    
2524            * Intinf equality is handled by polyequal.  However, the compiler
2525            does not print its usual warning in this case (since polyequal
2526            is the right thing to do there).
2527    
2528            * Improved the organization of structure InlineT.
2529    
2530            * A word about conversion primops:
2531            If conversions involving intinf do not cancel out during
2532            CPS contract, then the compiler must insert calls to Core functions.
2533            Since all core access must be resolved already during the FLINT
2534            translate phase, it would be too late a the time of CPS contract
2535            to add new Core calls.  For this reason, conversion primops
2536            for intinf carry two arguments:  1. the numeric argument that
2537            they are supposed to convert, and 2. the Core function that
2538            can help with this conversion if necessary.  If CPS contract
2539            eliminates a primop, then the associated Core function becomes
2540            dead and goes away.  Intinf conversion primops that do not get
2541            eliminated by CPS contract get rewritten into calls of their
2542            core functions by a separate, new phase.
2543    
2544    interactive system:
2545            - Control.Print.intinfDepth controls max length of intinf constants
2546            being printed. (Analogous to Control.Print.stringDepth.)
2547            - Cleanup in printutil and pputil: got rid of unused stuff and
2548            duplicates; replaced some of the code with code that makes better
2549            use of library functionality.
2550    
2551    CM:
2552            Bugfix: parse-errors in init group (system/smlnj/init/init.cmi)
2553            are no longer silent.
2554    
2555    CKIT:
2556            Fixed mismatched uses of Int32 and LargeInt.  I always decided
2557            in favor of LargeInt -- which is now the same as IntInf.
2558            CKIT-knowledgable people should check whether this is what's
2559            intended and otherwise change things back to using Int32 or
2560            FixedInt.
2561    
2562    Throughout the code:
2563            Started using IntInf.int literals and built-in operations
2564            (e.g., comparison with 0) where this seems appropriate.
2565    
2566    
2567    ----------------------------------------------------------------------
2568    Name: Dave MacQueen (dbm@cs.uchicago.edu)
2569    Date: 2003/08/13 11:36:00 CDT
2570    Tag: dbm-20030813-mcz-merge1
2571    Description:
2572    
2573    Merging changes from the mcz-branch development branch into trunk.
2574    These changes involve replacement of the emulated old prettyprinter
2575    interface with direct use of the SML/NJ Lib PP library, and fixing
2576    of a couple of bugs (895, 1186) relating to error messages.  A new
2577    prettyprinter for ast datatypes (Elaborator/print/ppast.{sig,sml})
2578    has been added.
2579    
2580    ----------------------------------------------------------------------
2581    Name: Matthias Blume (blume (at) tti - c (dot) org)
2582    Date: 2003/08/11 15:45:00 CDT
2583    Tag: blume-20030811-windows
2584    Description:
2585    
2586    Version number bumped to 110.42.9.  NEW BOOTFILES!!!
2587    
2588        http://smlnj.cs.uchicago.edu/dist/working/110.42.9/
2589    
2590    This patch restores SML/NJ's ability to run under win32.  There are a
2591    number of changes, including fixes for several bugs that had gone
2592    unnoticed until now:
2593    
2594      - uname "CYGWIN_NT*" is recognized as win32 (This is relevant only when
2595        trying to run the win32 version from within cygwin.)
2596    
2597      - There are a number of simple .bat scripts that substitute for their
2598        corresponding Unix shell-scripts.  (See below.)
2599    
2600      - The internals of ml-build have been modified slightly.  The main
2601        difference is that instead of calling ".link-sml" (or link-sml.bat)
2602        using OS.Process.system, the ML process delegates this task back
2603        to the script.  Otherwise problems arise in mixed environments such
2604        as Cygwin where scripts look and work like Unix scripts, but
2605        where OS.Process.system cannot run them.
2606    
2607      - In CM, the srcpath pickler used native pathname syntax -- which
2608        is incorrect in the case of cross-compilation.  The new pickle format
2609        is independent of platform-specific naming conventions.
2610    
2611      - Path configuration files (such as lib/pathconfig) can now choose
2612        between native and standard syntax.  Placing a line of the form
2613    
2614            standard!
2615    
2616        into the file causes all subsequent paths to be interpreted using
2617        CM standard pathname syntax (= Unix conventions); a line
2618    
2619            native!
2620    
2621        switches back to native style.  This was needed so that
2622        path config files can be written portably, see src/system/pathconfig.
2623    
2624      - Runtime system:
2625    
2626          - win32-filesys.c:  get_file_time and set_file_time now
2627            access modification time, not creation time.
2628    
2629          - I/O code made aware of new array representation.
2630    
2631          - Bug fixes in X86.prim.masm.
2632    
2633       - src/system/makeml made aware of win32. (For use under cygwin
2634            and other Unix-environments for windows.)
2635    
2636       - In Basis, fixed off-by-one error in win32-io.sml (function vecF)
2637         which caused BinIO.inputAll to fail consistently.
2638    
2639    .bat scripts:
2640    
2641       Windows .bat scripts assume that SMLNJ_HOME is defined.
2642    
2643       - sml.bat, ml-yacc.bat, ml-lex.bat:  Driver scripts for standalone
2644         applications (sml, ml-yacc, ml-lex).
2645       - ml-build.bat: analogous to ml-build.
2646       - config\install.bat:  Analogous to config/install.sh.  This requires
2647         that SMLNJ_HOME is set and that Microsoft Visual C is ready to use.
2648         (nmake etc. must be on the path, and vcvars32 must have been run.)
2649         Moreover, sources for ml-lex and ml-yacc need to exist under src,
2650         and the bootfile hierarchy must have been unpacked under
2651         sml.boot.x86-win32.
2652         The script is very primitive and does a poor job at error checking.
2653         It only installs the base system, ml-lex, and ml-yacc.  No other
2654         libraries are being installed (i.e., you get only those that
2655         are part of the compiler.)
2656       - link-sml.bat:  analogous to .link-sml, but not currently used
2657    
2658    Unrelated bug fixes:
2659    
2660      - ml-nlffigen now exports structures ST_* corresponding to incomplete
2661        types.
2662      - Added getDevice to PP/src/pp-debug-fn.sml.  (Would not compile
2663        otherwise.)
2664    
2665    ----------------------------------------------------------------------
2666    Name: Dave MacQueen (macqueen@cs.uchicago.edu)
2667    Date: 2003/06/17
2668    Tag: macqueen-20030617-bug895
2669    Description:
2670    
2671    Modified compiler/Elaborator/print/pptype.sml to fix bug 895.
2672    Tag will be used for new development branch (mcz-branch) for
2673    use by MacQueen, (Lucasz) Zairek, and (George) Cao at uchicago.
2674    
2675    ----------------------------------------------------------------------
2676    Name: Matthias Blume (blume (at) tti - c (dot) org)
2677    Date: 2003/05/27 16:55:00 CDT
2678    Tag: blume-20030527-polyeq
2679    Description:
2680    
2681    Tried to eliminated most cases of polymorphic equality.
2682    
2683    ----------------------------------------------------------------------
2684    Name: Matthias Blume (blume (at) tti - c (dot) org)
2685    Date: 2003/05/21 17:45:00 CDT
2686    Tag: blume-20030517-complete
2687    Description:
2688    
2689    Two changes:
2690    
2691      1. Added a flag for controlling whether non-exhaustive bindings will
2692         be treated as errors (default is false).
2693      2. Cleaned up the *entire* source tree so that CMB.make goes through
2694         without a single non-exhaustive match- or bind warning.
2695    
2696    ----------------------------------------------------------------------
2697    Name: Matthias Blume (blume (at) tti - c (dot) org)
2698    Date: 2003/05/17 10:20:00 CDT
2699    Tag: blume-20030517-absyn
2700    Description:
2701    
2702    1. Added cases for IF, WHILE, ANDALSO, and ORELSE to Absyn.
2703    
2704       This mainly affects the quality of error messages.  However, some
2705       of the code is now more straightforward than before. (Treatment of
2706       the above four constructs in translate.sml is much simpler than
2707       the "macro-expansion" that was going on before.  Plus, the mach-
2708       compiler no longer gets invoked just to be able to compile an
2709       if-expression.)
2710    
2711    2. The ErrorMsg.Error exception is now caught and absorbed by the
2712       interactive loop.
2713    
2714    ----------------------------------------------------------------------
2715    Name: Allen Leung
2716    Date: 2003/05/16 13:05:00 CDT
2717    Tag: leunga-20030516-cygwin-runtime
2718    Description:
2719    
2720        Ported the runtime system to cygwin, which uses the unix
2721    x86-unix bin files.  Missing/buggy features:
2722    
2723       o getnetbyname, getnetbyaddr: these functions seem to be missing in
2724         the Cygwin library.
2725       o Ctrl-C handling may be flaky.
2726       o Windows system calls and Windows I/O are not supported.
2727    
2728       A new set of binfiles is located at:
2729    
2730         http://www.dorsai.org/~leunga/boot.x86-unix.tgz
2731    
2732       This is only needed for bootstrapping the cygwin version of smlnj.
2733       Other x86 versions can use the existing binfiles.
2734    
2735    ----------------------------------------------------------------------
2736    Name: Matthias Blume
2737    Date: 2003/04/08 15:42:00 CDT
2738    Tag: blume-20030408-listpair
2739    Description:
2740    
2741    1. Added a target 'mlrisc' to installer.
2742    
2743    2. Added missing elements to structure ListPair.
2744    
2745    ----------------------------------------------------------------------
2746    Name: Allen Leung
2747    Date: 2003/01/07 10:40:00 EST
2748    Tag: leunga-20030107-int-rem
2749    Description:
2750    
2751    Fixed a bug in Int.rem(x,y) where y is a power of 2 on x86.
2752    The arguments to the SUBL instruction were swapped.
2753    
2754    ----------------------------------------------------------------------
2755    Name: Matthias Blume
2756    Date: 2002/12/12 16:25:00 EST
2757    Tag: blume-20021212-risc-ra
2758    Description:
2759    
2760    Fixed a serious bug in the rewrite code for FP spilling/reloading that
2761    sent the RA into an infinite loop when floating point registers get
2762    spilled.  (Because of this bug, e.g., nucleic stopped compiling between
2763    110.37 and 110.38.)
2764    There was another set of potential problems related to the handling of
2765    MLRISC annotations (but those did not yet cause real problems, apparently).
2766    
2767    ----------------------------------------------------------------------
2768    Name: Matthias Blume
2769    Date: 2002/12/06 22:40:00 EST
2770    Tag: blume-20021206-cm-fileid
2771    Description:
2772    
2773    Added a call of SrcPath.sync at the beginning of Parse.parse (in CM).
2774    This fixes the problem of CM getting confused by files that suddenly
2775    change their identity (e.g., by getting unlinked and recreated by some
2776    text editor such as vi).  There might be a better/cheaper/cleaner way
2777    of doing this, but for now this will have to do.
2778    
2779    ----------------------------------------------------------------------
2780    Name: Matthias Blume
2781    Date: 2002/10/28 09:50:00 EST
2782    Tag: blume-20021028-typecheck
2783    Description:
2784    
2785    Exported structure Typecheck from $smlnj/viscomp/core.cm.
2786    
2787    ----------------------------------------------------------------------
2788    Name: Matthias Blume
2789    Date: 2002/10/17 09:10:00 EDT
2790    Tag: Release_110_42
2791    Description:
2792    
2793    In good old tradition, there has been a slight hiccup so that we have
2794    to patch 110.42 after the fact.   The old release tag has been replaced
2795    (see below).
2796    
2797    The change solves a problem with two competing approaches the
2798    configuration problem regarding MacOS 10.1 vs. MacOS 10.2 which got in
2799    each other's way.
2800    
2801    This change only affects the runtime system code and the installer script.
2802    (No new bootfiles.)
2803    
2804    ----------------------------------------------------------------------
2805    Name: Matthias Blume
2806    Date: 2002/10/16 12:00:00 EDT
2807    Tag: Release_110_42_removed
2808    Description:
2809    
2810    New working release.  New bootfiles.
2811    
2812    ----------------------------------------------------------------------
2813    Name: Matthias Blume
2814    Date: 2002/10/10 13:10:00 EDT
2815    Tag: blume-20021010-ppc-divs
2816    Description:
2817    
2818    The mltree operator DIVS must be implemented with an overflow check on
2819    the PPC because the hardware indicates divide-by-zero using "overflow" as
2820    well.
2821    
2822    ----------------------------------------------------------------------
2823    Name: Matthias Blume
2824    Date: 2002/07/23 11:45:00
2825    Tag: blume-20020723-smlnj-home
2826    Description:
2827    
2828    Sml now senses the SMLNJ_HOME environment variable.  If this is set,
2829    then the bin dir is assumed to be in $SMLNJ_HOME/bin and (unless
2830    CM_PATHCONFIG is also set), the path configuration file is assumed
2831    to be in $SMLNJ_HOME/lib/pathconfig.  This way one can easily move
2832    the entire tree to some other place and everything will "just work".
2833    
2834    (Companion commands such as ml-build and ml-makedepend also sense this
2835    variable.)
2836    
2837    ----------------------------------------------------------------------
2838    Name: Matthias Blume
2839    Date: 2002/07/12 21:19:00 EDT
2840    Tag: blume-20020712-liveness
2841    Description:
2842    
2843    Exported two useful "step" functions from liveness module (MLRISC).
2844    
2845    ----------------------------------------------------------------------
2846    Name: Matthias Blume
2847    Date: 2002/07/05 16:00 EDT
2848    Tag: Release_110_41
2849    Description:
2850    
2851    New working release.  New bootfiles.
2852    
2853    ----------------------------------------------------------------------
2854    Name: Matthias Blume
2855    Date: 2002/07/05 10:25:00 EDT
2856    Tag: blume-20020705-btimp
2857    Description:
2858    
2859    Exported structure BTImp from $smlnj/viscomp/debugprof.cm so that
2860    other clients can set up backtracing support.
2861    
2862    ----------------------------------------------------------------------
2863    Name: Matthias Blume
2864    Date: 2002/06/25 17:23:00 EDT
2865    Tag: blume-20020625-fpmax
2866    Description:
2867    
2868    Fixed a bug in translation of INLMAX (and INLMIN) for the floating-point
2869    case.  (The sense of the isNaN test was reversed -- which made min and
2870    max always return their first argument.)
2871    
2872    ----------------------------------------------------------------------
2873    Name: Matthias Blume
2874    Date: 2002/06/11
2875    Tag: blume-20020611-unixpath
2876    Description:
2877    
2878    Back-ported OS.Path.{from,to}UnixPath from idlbasis-devel branch.
2879    
2880    ----------------------------------------------------------------------
2881    Name: Matthias Blume
2882    Date: 2002/06/10 16:35:00 EDT
2883    Tag: blume-20020610-ieeereal
2884    Description:
2885    
2886    I back-ported my implementation of IEEEReal.fromString from the
2887    idlbasis-devel branch so that we can test it.
2888    
2889    Another small change is that ppDec tries to give more information
2890    than just "<sig>" in the case of functors.  However, this code is
2891    broken in some mysterious way if the functor's body's signature
2892    has not been declared by ascription but gets inferred from the
2893    implementation.  This needs fixing...
2894    
2895    ----------------------------------------------------------------------
2896    Name: Matthias Blume
2897    Date: 2002/05/31
2898    Tag: blume-20020531-btrace-mode
2899    Description:
2900    
2901    Resurrected SMLofNJ.Internals.BTrace.mode.  (It accidentally fell by
2902    the wayside when I switched over to using Controls everywhere.)
2903    
2904    ----------------------------------------------------------------------
2905    Name: Lal George
2906    Date: 2002/05/23 12:21:40 EDT
2907    Tag: george-20020523-visual-labels
2908    Description:
2909    
2910    Labels are now displayed in the graphical output to make
2911    the fall-through and target blocks obvious.
2912    
2913    ----------------------------------------------------------------------
2914    Name: Matthias Blume
2915    Date: 2002/05/22 11:03:00 EDT
2916    Tag: blume-20020522-shrink
2917    Description:
2918    
2919    John tweaked yesterday's fix for 1131 to handle an out-of-memory
2920    situation that comes up when allocating huge arrays.
2921    
2922    ----------------------------------------------------------------------
2923    Name: Matthias Blume
2924    Date: 2002/05/21 16:00:00 EDT
2925    Tag: Release_110_40
2926    Description:
2927    
2928    New working release (110.40).  New bootfiles.
2929    
2930    [Also: John Reppy fixed GC bug 1131.]
2931    
2932    ----------------------------------------------------------------------
2933    Name: Matthias Blume
2934    Date: 2002/05/21 12:35:00 EDT
2935    Tag: blume-20020521-cmdoc
2936    Description:
2937    
2938    CM documentation update.
2939    
2940    ----------------------------------------------------------------------
2941    Name: Matthias Blume
2942    Date: 2002/05/21 10:55:00 EDT
2943    Tag: blume-20020521-misc
2944    Description:
2945    
2946    - John tweaked runtime to be silent on heap export (except when
2947      GC messages are on).
2948    - I added a few more things (cross-compiling versions of CMB) to
2949      config/preloads (as suggestions).
2950    
2951    ----------------------------------------------------------------------
2952    Name: Matthias Blume
2953    Date: 2002/05/20 22:25:00 EDT
2954    Tag: blume-20020520-controls
2955    Description:
2956    
2957    - Added ControlUtil structure to control-lib.cm.
2958    - Use it throughout.
2959    - Used Controls facility to define MLRISC controls (as opposed to
2960      registering MLRISC control ref cells with Controls after the fact)
2961    - Fixed messed-up controls priorities.
2962    
2963    * Removed again all the stuff from config/preloads that one wouldn't
2964      be able to preload at the time the initial heap image is built.
2965      (Many libraries, e.g., CML, do not exist yet at this time.  The
2966       only libraries that can be preloaded via config/preloads are those
2967       that come bundled with the bootfiles.)
2968    
2969    ----------------------------------------------------------------------
2970    Name: Matthias Blume
2971    Date: 2002/05/20 10:59:00 EDT
2972    Tag: blume-20020520-preloads
2973    Description:
2974    
2975    Added a lot of commented-out suggestions for things to be included
2976    in config/preloads.
2977    
2978    ----------------------------------------------------------------------
2979    Name: Allen Leung
2980    Date: 2002/05/18 14:20:00 EDT
2981    Tag: leunga-20020518-mdl
2982    Description:
2983    
2984    o Made the mdl tool stuff compile and run again.
2985    o I've disabled all the stuff that depends on RTL specifications; they
2986      are all badly broken anyway.
2987    
2988    ----------------------------------------------------------------------
2989    Name: Matthias Blume
2990    Date: 2002/05/17 16:49:00 EDT
2991    Tag: blume-20020517-controls
2992    Description:
2993    
2994    0. John Reppy made several modifications to the SML/NJ library.
2995       In particular, there is a shiny new controls-lib.cm.
2996    
2997    1. Pushed new controls interface through compiler so that everything
2998       compiles again.
2999    
3000    2. Added FormatComb and FORMAT_COMB to the CML version of the
3001       SML/NJ library (so that CML compiles again).
3002    
3003    3. Modified init scripts because XXX_DEFAULT environment variables
3004       are no longer with us.  (Boot-time initialization is now done
3005       using the same environment variables that are also used for
3006       startup-time initialization of controls.)
3007    
3008    ----------------------------------------------------------------------
3009    Name: Lal George
3010    Date: 2002/05/15 09:20:10 EDT
3011    Tag: george-20020515-pseudo-op-decls
3012    Description:
3013    
3014            All pseudo-ops emitted before the first segment declaration
3015    such as TEXT, DATA, and BSS directives are assumed to be global
3016    declarations and are emitted first in the assembly file. This is
3017    useful in a number of situations where one has pseudo-ops that are not
3018    specific to any segment, and also works around the constraint that one
3019    cannot have client pseudo-ops in the TEXT segment.
3020    
3021            Because no segment is associated with these declarations it is
3022    an error to allocate any space or objects before the first segment
3023    directive and an exception will be raised. However, we cannot make
3024    this check for client pseudo-ops.
3025    
3026            These top level declarations are a field in the CFG graph_info.
3027    In theory you can continue to add to this field after the CFG has been
3028    built -- provided you know what you are doing;-)
3029    
3030    ----------------------------------------------------------------------
3031    Name: Matthias Blume
3032    Date: 2002/05/13 16:40:00 EDT
3033    Tag: blume-20020513-pp-etc
3034    Description:
3035    
3036    A few minor bugfixes:
3037    
3038      - Stopgap measure for bug recently reported by Elsa Gunter (ppDec).
3039        (Bogus printouts for redefined bindings still occur.  Compiler
3040        bug should no longer occur now.  We need to redo the prettyprinter
3041        from scratch.)
3042    
3043      - CM pathname printer now also adds escape sequences for ( and )
3044    
3045      - commend and docu fixes for ml-nlffi
3046    
3047    ----------------------------------------------------------------------
3048    Name: Matthias Blume
3049    Date: 2002/05/10 16:40:00 EDT
3050    Tag: blume-20020510-erg-textio
3051    Description:
3052    
3053    Applied the following bugfix provided by Emden Gansner:
3054    
3055        Output is corrupted when outputSubstr is used rather than output.
3056    
3057        The problem occurs when a substring
3058    
3059            ss = (s, dataStart, dataLen)
3060    
3061        where dataStart > 0, fills a stream buffer with avail bytes left.
3062        avail bytes of s, starting at index dataStart, are copied into the
3063        buffer, the buffer is flushed, and then the remaining dataLen-avail
3064        bytes of ss are copied into the beginning of the buffer. Instead of
3065        starting this copy at index dataStart+avail in s, the current code
3066        starts the copy at index avail.
3067    
3068        Fix:
3069        In text-io-fn.sml, change line 695 from
3070             val needsFlush = copyVec(v, avail, dataLen-avail, buf, 0)
3071        to
3072             val needsFlush = copyVec(v, dataStart+avail, dataLen-avail, buf, 0)
3073    
3074    ----------------------------------------------------------------------
3075    Name: Matthias Blume
3076    Date: 2002/04/12 13:55:00 EDT
3077    Tag: blume-20020412-assyntax
3078    Description:
3079    
3080    1. Grabbed newer assyntax.h from the XFree86 project.
3081    2. Fiddled with how to compile X86.prim.asm without warnings.
3082    3. (Very) Minor cleanup in CM.
3083    
3084    ----------------------------------------------------------------------
3085    Name: Matthias Blume
3086    Date: 2002/04/01 (no joke!) 17:07:00 EST
3087    Tag: blume-20020401-x86div
3088    Description:
3089    
3090    Added full support for div/mod/rem/quot on the x86, using the machine
3091    instruction's two results (without clumsily recomputing the remainder)
3092    directly where appropriate.
3093    
3094    Some more extensive power-of-two support was added to the x86 instruction
3095    selector (avoiding expensive divs, mods, and muls where they can be
3096    replaced with cheaper shifts and masks).  However, this sort of thing
3097    ought to be done earlier, e.g., within the CPS optimizer so that
3098    all architectures benefit from it.
3099    
3100    The compiler compiles to a fixed point, but changes might be somewhat
3101    fragile nevertheless.  Please, report any strange things that you might
3102    see wrt. div/mod/quot/rem...
3103    
3104    ----------------------------------------------------------------------
3105    Name: Matthias Blume
3106    Date: 2002/03/29 17:22:00
3107    Tag: blume-20020329-div
3108    Description:
3109    
3110    Fixed my broken div/mod logic.  Unfortunately, this means that the
3111    inline code for div/mod now has one more comparison than before.
3112    Fast paths (quotient > 0 or remainder = 0) are not affected, though.
3113    The problem was with quotient = 0, because that alone does not tell
3114    us which way the rounding went.  One then has to look at whether
3115    remainder and divisor have the same sign...  :(
3116    
3117    Anyway, I replaced the bootfiles with fresh ones...
3118    
3119    ----------------------------------------------------------------------
3120    Name: Matthias Blume
3121    Date: 2002/03/29 14:10:00 EST
3122    Tag: blume-20020329-inlprims
3123    Description:
3124    
3125    NEW BOOTFILES!!!    Version number bumped to 110.39.3.
3126    
3127    Primops have changed. This means that the bin/boot-file formats have
3128    changed as well.
3129    
3130    To make sure that there is no confusion, I made a new version.
3131    
3132    
3133    CHANGES:
3134    
3135    * removed REMT from mltree (remainder should never overflow).
3136    
3137    * added primops to deal with divisions of all flavors to the frontend
3138    
3139    * handled these primops all the way through so they map to their respective
3140      MLRISC support
3141    
3142    * used these primops in the implementation of Int, Int32, Word, Word32
3143    
3144    * removed INLDIV, INLMOD, and INLREM as they are no longer necessary
3145    
3146    * parameterized INLMIN, INLMAX, and INLABS by a numkind
3147    
3148    * translate.sml now deals with all flavors of INL{MIN,MAX,ABS}, including
3149      floating point
3150    
3151    * used INL{MIN,MAX,ABS} in the implementation of Int, Int32, Word, Word32,
3152      and Real (but Real.abs maps to a separate floating-point-only primop)
3153    
3154    
3155    TODO items:
3156    
3157    * Hacked Alpha32 instruction selection, disabling the selection of REMx
3158      instructions because the machine instruction encoder cannot handle
3159      them.  (Hppa, PPC, and Sparc instruction selection did not handle
3160      REM in the first place, and REM is supported by the x86 machine coder.)
3161    
3162    * Handle DIV and MOD with DIV_TO_NEGINF directly in the x86 instruction
3163      selection phase.  (The two can be streamlined because the hardware
3164      delivers both quotient and remainder at the same time anyway.)
3165    
3166    * Think about what to do with "valOf(Int32.minInt) div ~1" and friends.
3167      (Currently the behavior is inconsistent both across architectures and
3168      wrt. the draft Basis spec.)
3169    
3170    * Word8 should eventually be handled natively, too.
3171    
3172    * There seems to be one serious bug in mltree-gen.sml.  It appears, though,
3173      as if there currently is no execution path that could trigger it in
3174      SML/NJ.  (The assumptions underlying functions arith and promotable do not
3175      hold for things like multiplication and division.)
3176    
3177    ----------------------------------------------------------------------
3178    Name: Matthias Blume
3179    Date: 2002/03/27 16:27:00 EST
3180    Tag: blume-20020327-mlrisc-divisions
3181    Description:
3182    
3183    Added support for all four division operations (ML's div, mod, quot,
3184    and rem) to MLRISC.  In the course of doing so, I also rationalized
3185    the naming (no more annoying switch-around of DIV and QUOT), by
3186    parameterizing the operation by div_rounding_mode (which can be either
3187    DIV_TO_ZERO or DIV_TO_NEGINF).
3188    
3189    The generic MLTreeGen functor takes care of compiling all four
3190    operations down to only round-to-zero div.
3191    
3192    Missing pieces:
3193    
3194      * Doing something smarter than relying on MLTreeGen on architectures
3195        like, e.g., the x86 where hardware division delivers both quotient and
3196        remainder at the same time.  With this, the implementation of the
3197        round-to-neginf operations could be further streamlined.
3198    
3199      * Remove inlining support for div/mod/rem from the frontend and replace it
3200        with primops that get carried through to the backend.  Do this for all
3201        int and word types.
3202    
3203    ----------------------------------------------------------------------
3204    Name: Matthias Blume
3205    Date: 2002/03/25 17:25:00 EST
3206    Tag: blume-20020325-divmod
3207    Description:
3208    
3209    I improved (hopefully without breaking them) the implementation of Int.div,
3210    Int.mod, and Int.rem.   For this, the code in translate.sml now takes
3211    advantage of the following observations:
3212    
3213      Let  q = x quot y      r = x rem y
3214           d = x div  y      m = x mod y
3215    
3216    where "quot" is the round-to-zero version of integer division that
3217    hardware usually provides.  Then we have:
3218    
3219         r = x - q * y        where neither the * nor the - will overflow
3220         d = if q >= 0 orelse x = q * y then q else q - 1
3221                              where neither the * nor the - will overflow
3222         m = if q >= 0 orelse r = 0 then r else r + y
3223                              where the + will not overflow
3224    
3225    This results in substantial simplification of the generated code.
3226    The following table shows the number of CFG nodes and edges generated
3227    for
3228            fun f (x, y) = x OPER y
3229            (* with OPER \in div, mod, quot, rem *)
3230    
3231    
3232        OPER | nodes(old) | edges(old) | nodes(new) | edges(new)
3233        --------------------------------------------------------
3234         div |         24 |         39 |         12 |         16
3235         mod |         41 |         71 |         12 |         16
3236        quot |          8 |         10 |          8 |         10
3237         rem |         10 |         14 |          8 |         10
3238    
3239    
3240    ----------------------------------------------------------------------
3241    Name: Matthias Blume
3242    Date: 2002/03/25 22:06:00 EST
3243    Tag: blume-20020325-cprotobug
3244    Description:
3245    
3246    Fixed a bug in cproto (c prototype decoder).
3247    
3248    ----------------------------------------------------------------------
3249    Name: Matthias Blume
3250    Date: 2002/03/25 16:00:00 EST
3251    Tag: blume-20020325-raw-primops
3252    Description:
3253    
3254    I did some cleanup to Allen's new primop code and
3255    replaced yesterday's bootfiles with new ones.
3256    (But they are stored in the same place.)
3257    
3258  ----------------------------------------------------------------------  ----------------------------------------------------------------------
3259  Name: Matthias Blume  Name: Matthias Blume
3260  Date: 2002/03/24 22:40:00 EST  Date: 2002/03/24 22:40:00 EST

Legend:
Removed from v.1175  
changed lines
  Added in v.2237

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