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

Legend:
Removed from v.1181  
changed lines
  Added in v.2259

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