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