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