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