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

SCM Repository

[smlnj] Diff of /sml/branches/primop-branch-3/NOTES/HISTORY
ViewVC logotype

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

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

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

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

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