Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Diff of /sml/trunk/HISTORY
ViewVC logotype

Diff of /sml/trunk/HISTORY

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

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

Legend:
Removed from v.1137  
changed lines
  Added in v.1750

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