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