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

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