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