Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Diff of /sml/trunk/NOTES/HISTORY
ViewVC logotype

Diff of /sml/trunk/NOTES/HISTORY

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

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