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