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

SCM Repository

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

Diff of /sml/trunk/NOTES/HISTORY

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

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