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