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

Legend:
Removed from v.1133  
changed lines
  Added in v.1922

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0