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/branches/primop-branch-3/NOTES/HISTORY
ViewVC logotype

Diff of /sml/branches/primop-branch-3/NOTES/HISTORY

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

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

Legend:
Removed from v.1171  
changed lines
  Added in v.1902

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