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