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

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