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