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