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