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

SCM Repository

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

Diff of /sml/trunk/HISTORY

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

revision 1174, Sat Mar 23 21:14:40 2002 UTC revision 1411, Tue Nov 4 17:50:53 2003 UTC
# Line 13  Line 13 
13  Description:  Description:
14    
15  ----------------------------------------------------------------------  ----------------------------------------------------------------------
16    Name: Matthias Blume (blume (at) tti - c (dot) org)
17    Date: 2003/11/04 11:50:00 CST
18    Tag: blume-20031104-move-libraries
19    Description:
20    
21    Eliminated the "dont_move_libraries" directive in config/targets.
22    (The mechanism was broken and could not be fixed easily.  Moreover,
23    there does not seem to be any reason not to move all libraries into
24    lib during installation.  I originally implemented this directive as a
25    backward-compatibility feature when I first introduced the new CM.
26    Now that things have been stable for a long time and going back to the
27    old CM is not an option, there is no reason to keep it around.)
28    
29    ----------------------------------------------------------------------
30    Name: Matthias Blume (blume (at) tti - c (dot) org)
31    Date: 2003/11/03 16:00:00 CST
32    Tag: blume-20031103-installdir
33    Description:
34    
35    Made installer honor INSTALLDIR variable again.  (Thanks to Chris
36    Richards for pointing out the problem and providing the solution.)
37    
38    ----------------------------------------------------------------------
39    Name: Matthias Blume (blume (at) tti - c (dot) org)
40    Date: 2003/10/01 17:05:00 CDT
41    Tag: blume-20031001-lal-mlrisc
42    Description:
43    
44    MLRISC bug fix from Lal.
45    
46    ----------------------------------------------------------------------
47    Name: Matthias Blume (blume (at) tti - c (dot) org)
48    Date: 2003/09/30 16:10:00 CDT
49    Tag: blume-20030930-primio-bat
50    Description:
51    
52    1. Added openVector, nullRd, and nullWr to PRIM_IO.
53    2. Improved .bat files (for Win32 port) to make things work under Win95.
54       (thanks to Aaron S. Hawley for this one)
55    
56    ----------------------------------------------------------------------
57    Name: Matthias Blume (blume (at) tti - c (dot) org)
58    Date: 2003/09/26 16:05:00 CDT
59    Tag: blume-20030926-wrappriv
60    Description:
61    
62    Added missing wrapper for privilege "primitive" in $smlnj/viscomp/core.cm.
63    
64    ----------------------------------------------------------------------
65    Name: Matthias Blume (blume (at) tti - c (dot) org)
66    Date: 2003/09/26 15:00:00 CDT
67    Tag: blume-20030926-110_43_3
68    Description:
69    
70    - additional cleanup
71    - version number bump, NEW BOOTFILES
72    
73    ----------------------------------------------------------------------
74    Name: Matthias Blume (blume (at) tti - c (dot) org)
75    Date: 2003/09/26 12:00:00 CDT
76    Tag: blume-20030926-ppautoload
77    Description:
78    
79    I modified the read-eval-print loop so that the autoloader gets
80    invoked whenever the prettyprinter tries to look up a symbol that
81    is not currently defined in the toplevel environment but which
82    appears in CM's autoload registry.  As a result, we see far fewer of
83    those ?.Foo.Bar.xxx names in the prettyprinter's output.
84    
85    In addition to this I tried to clean up some pieces of the Basis
86    implementation (e.g., Socket, Word8Array) in order to prevent other
87    instances of these ?.Foo.Bar.xxx names from being printed.
88    
89    The mechanism that picks names for types still needs some work, though.
90    (Right now it seems that if there is a type A.t which is defined to
91    be B.u, but B is unavailable at toplevel, then A.t gets printed as
92    "?.B.u" although the perhaps more sensible solution would be to use
93    "A.t" in this case.  In other words, the prettyprinter should follow
94    a chain of DEFtycs not farther than there are corresponding toplevel
95    names in the current environment.)
96    
97    ----------------------------------------------------------------------
98    Name: Matthias Blume (blume (at) tti - c (dot) org)
99    Date: 2003/09/24 16:31:00 CDT
100    Tag: blume-20030924-installer
101    Description:
102    
103    Another installer tweak:  All the ML code for the installer is now
104    compiled during CMB.make and put into a little library called
105    $smlnj/installer.cm.  The installation then simply invokes
106    
107       sml -m $smlnj/installer.cm
108    
109    and everything happens automagically.
110    
111    Win32:  ML code senses value of environment variable SMLNJ_HOME.
112    Unix:   ML code senses values of environment variables ROOT, CONFIGDIR,
113            and BINDIR.
114    
115    The new scheme guarantees that the ML code responsible for the installation
116    is in sync with the APIs of the main system.  Also, the installer is
117    somewhat faster because the installer script is precompiled.
118    
119    ----------------------------------------------------------------------
120    Name: Matthias Blume (blume (at) tti - c (dot) org)
121    Date: 2003/09/24 15:35:00 CDT
122    Tag: blume-20030924-synsock
123    Description:
124    
125    Added a signature SYNCHRONOUS_SOCKET to basis.cm.  This is like SOCKET
126    but excludes all non-blocking operations.  Defined SOCKET (in Basis)
127    and CML_SOCKET in terms of SYNCHRONOUS_SOCKET.  Removed superfluous
128    implementations of non-blocking operations from CML's Socket
129    structure.
130    
131    ----------------------------------------------------------------------
132    Name: Matthias Blume (blume (at) tti - c (dot) org)
133    Date: 2003/09/24 15:10:05 CDT
134    Tag: blume-20030924-sockets
135    Description:
136    
137    1. Fixed SOCKET API and implementation to match Basis spec.
138       This required changing the internal representation of sockets to one
139       that remembers (for each socket file descriptor) whether it is currently
140       blocking or non-blocking.  This state is maintained lazily (i.e., a system
141       call is made only if the state actually needs to change).
142    
143    2. OS-specific details of sockets were moved into separate files, thus
144       making it possible to unify the bulk of the socket implementations
145       between Unix and Win32.
146    
147    3. CML's socket API changed accordingly.
148       (Note that we need to remove non-blocking functions from this API
149       since they are redundant in the case of CML!)
150    
151    4. CML's socket implementation now makes use of non-blocking functions
152       provided by Basis, thus removing all OS-dependent code from this part
153       of CML.
154    
155    5. Changed Real64.precision from 52 to 53.  Minor cleanup in Real64 code.
156    
157    ----------------------------------------------------------------------
158    Name: Matthias Blume (blume (at) tti - c (dot) org)
159    Date: 2003/09/22 12:10:00 CDT
160    Tag: blume-20030922-110_43_2
161    Description:
162    
163    Made a new interim version and bootfiles for developer's bootstrapping
164    convenience.
165    
166       110.43.2 -- NEW BOOTFILES
167    
168    ----------------------------------------------------------------------
169    Name: Matthias Blume (blume (at) tti - c (dot) org)
170    Date: 2003/09/19 15:55:00 CDT
171    Tag: blume-20030919-cmdir
172    Description:
173    
174    1. new-install.sh -> install.sh
175    2. changed default CM "metadata" directory name to ".cm" (instead of "CM")
176    3. tweaked installer so that another name instead of .cm can be chosen
177       at install time (by setting the CM_DIR_ARC environment variable
178       during installation); once installation is complete, the name is
179       fixed
180    
181    ----------------------------------------------------------------------
182    Name: Matthias Blume (blume (at) tti - c (dot) org)
183    Date: 2003/09/18 16:00:00 CDT
184    Tag: blume-20030918-110_43_1
185    Description:
186    
187    Made a new interim version and bootfiles for developer's bootstrapping
188    convenience.
189    
190       110.43.1 -- NEW BOOTFILES
191    
192    ----------------------------------------------------------------------
193    Name: Matthias Blume (blume (at) tti - c (dot) org)
194    Date: 2003/09/18 15:20:00 CDT
195    Tag: blume-20030918-misc
196    Description:
197    
198    1. Exported fractionsPerSecond etc. from TimeImp (but not from Time as
199       this seems to be controversial at the moment) and used those in
200       Posix.ProcEnv.times.
201    
202    2. Added Time.{from,to}Nanoseconds to Time.
203    
204    3. Improved Real.{from,to}LargeInt by avoiding needless calculations.
205       For example, fromLargeInt never needs to look at more than 3 "big
206       digits" to get its 53 bits of precision.
207    
208    ----------------------------------------------------------------------
209    Name: Matthias Blume (blume (at) tti - c (dot) org)
210    Date: 2003/09/17 16:30:00 CDT
211    Tag: blume-20030917-real32-slices
212    Description:
213    
214    Added an entry to the primitive environment
215    (compiler/Semant/statenv/prim.sml) for int32->real64 conversion and
216    added code to compiler/CodeGen/main/mlriscGen.sml to implement it.
217    
218    Removed some of the "magic" constants in real64.sml and replaced them
219    with code that generates these values from their corresponding
220    integer counterparts.
221    
222    Made all(?) the slice-related changes to the Basis and made everything
223    compile again...
224    
225    ----------------------------------------------------------------------
226    Name: Matthias Blume (blume (at) tti - c (dot) org)
227    Date: 2003/09/15 17:45:00 CDT
228    Tag: blume-20030915-rbase
229    Description:
230    
231    Fixed bug in Real.fromLargeInt.
232    
233    ----------------------------------------------------------------------
234    Name: Matthias Blume (blume (at) tti - c (dot) org)
235    Date: 2003/09/13 18:11:00 CDT
236    Tag: blume-20030913-libinstall
237    Description:
238    
239    Minor bugfix in config/libinstall (set anchor with path to
240    standalone tool after installing it, otherwise libraries that
241    need ml-lex or ml-yacc won't compile the first time the installer
242    runs).
243    
244    ----------------------------------------------------------------------
245    Name: Matthias Blume (blume (at) tti - c (dot) org)
246    Date: 2003/09/12 11:45:00 CDT
247    Tag: blume-20030912-various
248    Description:
249    
250     - fixed bug in Real.toLargeInt
251     - fixed bug in Posix.ProcEnv.times
252     - changed inputLine functions to return an option
253     - minor installer improvements / bugfixes
254     - changed default @SMLalloc parameter for x86/celeron to 64k
255    
256    ----------------------------------------------------------------------
257    Name: Matthias Blume (blume (at) tti - c (dot) org)
258    Date: 2003/09/09 22:00:00 CDT
259    Tag: Release_110_43
260    Description:
261    
262        New working release 110.43.  New bootfiles.
263    
264    ----------------------------------------------------------------------
265    Name: Matthias Blume (blume (at) tti - c (dot) org)
266    Date: 2003/09/09 19:20:00 CDT
267    Tag: blume-20030909-installer
268    Description:
269    
270    Rewrote large parts of config/install.sh in SML (config/libinstall.sml).
271    Modified config/install.bat to take advantage of it.  Also modified
272    config/install.sh (and called it config/new-install.sh) to take advantage
273    of it on Unix systems.  (The SML code is (supposed to be) platform-
274    independent.)
275    
276    The installer can now install everything under Win32
277    as well as under *nix as long as it compiles.
278    
279    Other changes:
280    
281      - made CML compile again under Win32
282      - made eXene compile under Win32 (by providing a fake structure UnixSock
283        and by using OS.Process.getEnv instead of Posix.ProcEnv.getenv)
284      - fixed a bug in nowhere: it assumed that type OS.Process.status is the
285        same as type int;  under Win32 it isn't
286      - fixed some slice-related problems in the win32-specific parts of CML
287      - added a functor argument "sameVol" to os-path-fn.sml in the Basis
288        (under Win32, the volume name is case-insensitive, and the
289        OS.Path code compares volume names for equality)
290    
291    ----------------------------------------------------------------------
292    Name: Matthias Blume (blume (at) tti - c (dot) org)
293    Date: 2003/09/08 11:55:00 CDT
294    Tag: blume-20030908-fullpath
295    Description:
296    
297    Made Win32 version of OS.FileSys.fullPath return current directory
298    when given an empty string.  This is what the spec says, and incidentally,
299    CM depends on it.  (CM otherwise goes into an infinite loop in certain
300    cases when presented with the name of a non-existing .cm file.)
301    
302    ----------------------------------------------------------------------
303    Name: Matthias Blume (blume (at) tti - c (dot) org)
304    Date: 2003/09/04 16:30:00 CDT
305    Tag: blume-20030905-slices-etc
306    Description:
307    
308      1. Changed interface to vectors and arrays in Basis to match
309         (draft) Basis spec.
310      2. Added signatures and implementations of slices according to
311         Basis spec.
312      3. Edited source code throughout the system to make it compile again
313         under 1. and 2.  (In some cases code had to be added to have it
314         match the new signatures.)
315      4. MLRISC should be backward-compatible: the copies of the originals
316         of files that needed to change under 3. were retained, the .cm files
317         check the compiler version number and use old versions when
318         appropriate.
319      5. Changed type of OS.FileSys.readDir and Posix.FileSys.readdir to
320         dirstream -> string option (in accordance with Basis spec).
321      6. When generating code that counts lines, ml-lex used function
322         CharVector.foldli, taking advantage of its old interface.
323         This has been replaced with the corresponding code from
324         CharVectorSlice.  (html-lex must be re-lexed!)
325      7. BitArray in smlnj-lib/Util has been extended/modified to match the
326         new MONO_ARRAY signature.  (Do we need BitArraySlice?)
327      8. Removed temporary additions (fromInternal, toInternal) from the
328         (now obsolete) IntInf in smlnj-lib/Util.
329      9. Cleaned up structure Byte.
330     10. Added localOffset, scan, and fromString to Date (according to spec).
331         Cleaned/corrected implementation of Date.
332         (Still need to check for correctness; implement better canonicalizeDate.)
333     11. Added "scan" to signature IEEE_REAL.
334     12. Some improvements to IntInf [in particular: efficiency-hack for
335         mod and rem when second operand is 2 (for parity checks).]
336     13. Changed representation of type Time.time, using a single IntInf.int
337         value counting microseconds.  This considerably simplified the
338         implementation of structure Time.  We now support negative time
339         values; scan and fromString handle signs.
340     14. Functor PrimIO now takes two additional arguments (VectorSlice and
341         ArraySlice).
342    
343    ----------------------------------------------------------------------
344    Name: Matthias Blume (blume (at) tti - c (dot) org)
345    Date: 2003/08/28 17:00:00 CDT
346    Tag: blume-20030828-intinf
347    Description:
348    
349    This is a major update which comes with a version number bump
350    (110.42.99 -- yes, we are really close to 110.43 :-), NEW BOOTFILES,
351    and an implementation of IntInf in the Basis.
352    
353    There are a fairly large number of related changes and updates throughout
354    the system:
355    
356    Basis:
357            - Implemented IntInf.
358            - Made LargeInt a projection of IntInf (by filtering through INTEGER).
359            - Added some missing Real64 operations, most notably Real.toLargeInt.
360            - Added FixedInt as a synonym for Int32.
361    
362    compiler:
363            * Added support for a built-in intinf type.
364              - literals
365              - pattern matching
366              - conversion shortcuts (Int32.fromLarge o Int.toLarge etc.)
367              - overloading on literals and operations
368    
369            This required adding a primitive type intinf, some additional
370            primops, and implementations for several non-trivial intinf
371            operations in Core.  (The intinf type is completely abstract
372            to the compiler; all operations get delegated back to the Core.)
373    
374            * Intinf equality is handled by polyequal.  However, the compiler
375            does not print its usual warning in this case (since polyequal
376            is the right thing to do there).
377    
378            * Improved the organization of structure InlineT.
379    
380            * A word about conversion primops:
381            If conversions involving intinf do not cancel out during
382            CPS contract, then the compiler must insert calls to Core functions.
383            Since all core access must be resolved already during the FLINT
384            translate phase, it would be too late a the time of CPS contract
385            to add new Core calls.  For this reason, conversion primops
386            for intinf carry two arguments:  1. the numeric argument that
387            they are supposed to convert, and 2. the Core function that
388            can help with this conversion if necessary.  If CPS contract
389            eliminates a primop, then the associated Core function becomes
390            dead and goes away.  Intinf conversion primops that do not get
391            eliminated by CPS contract get rewritten into calls of their
392            core functions by a separate, new phase.
393    
394    interactive system:
395            - Control.Print.intinfDepth controls max length of intinf constants
396            being printed. (Analogous to Control.Print.stringDepth.)
397            - Cleanup in printutil and pputil: got rid of unused stuff and
398            duplicates; replaced some of the code with code that makes better
399            use of library functionality.
400    
401    CM:
402            Bugfix: parse-errors in init group (system/smlnj/init/init.cmi)
403            are no longer silent.
404    
405    CKIT:
406            Fixed mismatched uses of Int32 and LargeInt.  I always decided
407            in favor of LargeInt -- which is now the same as IntInf.
408            CKIT-knowledgable people should check whether this is what's
409            intended and otherwise change things back to using Int32 or
410            FixedInt.
411    
412    Throughout the code:
413            Started using IntInf.int literals and built-in operations
414            (e.g., comparison with 0) where this seems appropriate.
415    
416    
417    ----------------------------------------------------------------------
418    Name: Dave MacQueen (dbm@cs.uchicago.edu)
419    Date: 2003/08/13 11:36:00 CDT
420    Tag: dbm-20030813-mcz-merge1
421    Description:
422    
423    Merging changes from the mcz-branch development branch into trunk.
424    These changes involve replacement of the emulated old prettyprinter
425    interface with direct use of the SML/NJ Lib PP library, and fixing
426    of a couple of bugs (895, 1186) relating to error messages.  A new
427    prettyprinter for ast datatypes (Elaborator/print/ppast.{sig,sml})
428    has been added.
429    
430    ----------------------------------------------------------------------
431    Name: Matthias Blume (blume (at) tti - c (dot) org)
432    Date: 2003/08/11 15:45:00 CDT
433    Tag: blume-20030811-windows
434    Description:
435    
436    Version number bumped to 110.42.9.  NEW BOOTFILES!!!
437    
438        http://smlnj.cs.uchicago.edu/dist/working/110.42.9/
439    
440    This patch restores SML/NJ's ability to run under win32.  There are a
441    number of changes, including fixes for several bugs that had gone
442    unnoticed until now:
443    
444      - uname "CYGWIN_NT*" is recognized as win32 (This is relevant only when
445        trying to run the win32 version from within cygwin.)
446    
447      - There are a number of simple .bat scripts that substitute for their
448        corresponding Unix shell-scripts.  (See below.)
449    
450      - The internals of ml-build have been modified slightly.  The main
451        difference is that instead of calling ".link-sml" (or link-sml.bat)
452        using OS.Process.system, the ML process delegates this task back
453        to the script.  Otherwise problems arise in mixed environments such
454        as Cygwin where scripts look and work like Unix scripts, but
455        where OS.Process.system cannot run them.
456    
457      - In CM, the srcpath pickler used native pathname syntax -- which
458        is incorrect in the case of cross-compilation.  The new pickle format
459        is independent of platform-specific naming conventions.
460    
461      - Path configuration files (such as lib/pathconfig) can now choose
462        between native and standard syntax.  Placing a line of the form
463    
464            standard!
465    
466        into the file causes all subsequent paths to be interpreted using
467        CM standard pathname syntax (= Unix conventions); a line
468    
469            native!
470    
471        switches back to native style.  This was needed so that
472        path config files can be written portably, see src/system/pathconfig.
473    
474      - Runtime system:
475    
476          - win32-filesys.c:  get_file_time and set_file_time now
477            access modification time, not creation time.
478    
479          - I/O code made aware of new array representation.
480    
481          - Bug fixes in X86.prim.masm.
482    
483       - src/system/makeml made aware of win32. (For use under cygwin
484            and other Unix-environments for windows.)
485    
486       - In Basis, fixed off-by-one error in win32-io.sml (function vecF)
487         which caused BinIO.inputAll to fail consistently.
488    
489    .bat scripts:
490    
491       Windows .bat scripts assume that SMLNJ_HOME is defined.
492    
493       - sml.bat, ml-yacc.bat, ml-lex.bat:  Driver scripts for standalone
494         applications (sml, ml-yacc, ml-lex).
495       - ml-build.bat: analogous to ml-build.
496       - config\install.bat:  Analogous to config/install.sh.  This requires
497         that SMLNJ_HOME is set and that Microsoft Visual C is ready to use.
498         (nmake etc. must be on the path, and vcvars32 must have been run.)
499         Moreover, sources for ml-lex and ml-yacc need to exist under src,
500         and the bootfile hierarchy must have been unpacked under
501         sml.boot.x86-win32.
502         The script is very primitive and does a poor job at error checking.
503         It only installs the base system, ml-lex, and ml-yacc.  No other
504         libraries are being installed (i.e., you get only those that
505         are part of the compiler.)
506       - link-sml.bat:  analogous to .link-sml, but not currently used
507    
508    Unrelated bug fixes:
509    
510      - ml-nlffigen now exports structures ST_* corresponding to incomplete
511        types.
512      - Added getDevice to PP/src/pp-debug-fn.sml.  (Would not compile
513        otherwise.)
514    
515    ----------------------------------------------------------------------
516    Name: Dave MacQueen (macqueen@cs.uchicago.edu)
517    Date: 2003/06/17
518    Tag: macqueen-20030617-bug895
519    Description:
520    
521    Modified compiler/Elaborator/print/pptype.sml to fix bug 895.
522    Tag will be used for new development branch (mcz-branch) for
523    use by MacQueen, (Lucasz) Zairek, and (George) Cao at uchicago.
524    
525    ----------------------------------------------------------------------
526    Name: Matthias Blume (blume (at) tti - c (dot) org)
527    Date: 2003/05/27 16:55:00 CDT
528    Tag: blume-20030527-polyeq
529    Description:
530    
531    Tried to eliminated most cases of polymorphic equality.
532    
533    ----------------------------------------------------------------------
534    Name: Matthias Blume (blume (at) tti - c (dot) org)
535    Date: 2003/05/21 17:45:00 CDT
536    Tag: blume-20030517-complete
537    Description:
538    
539    Two changes:
540    
541      1. Added a flag for controlling whether non-exhaustive bindings will
542         be treated as errors (default is false).
543      2. Cleaned up the *entire* source tree so that CMB.make goes through
544         without a single non-exhaustive match- or bind warning.
545    
546    ----------------------------------------------------------------------
547    Name: Matthias Blume (blume (at) tti - c (dot) org)
548    Date: 2003/05/17 10:20:00 CDT
549    Tag: blume-20030517-absyn
550    Description:
551    
552    1. Added cases for IF, WHILE, ANDALSO, and ORELSE to Absyn.
553    
554       This mainly affects the quality of error messages.  However, some
555       of the code is now more straightforward than before. (Treatment of
556       the above four constructs in translate.sml is much simpler than
557       the "macro-expansion" that was going on before.  Plus, the mach-
558       compiler no longer gets invoked just to be able to compile an
559       if-expression.)
560    
561    2. The ErrorMsg.Error exception is now caught and absorbed by the
562       interactive loop.
563    
564    ----------------------------------------------------------------------
565    Name: Allen Leung
566    Date: 2003/05/16 13:05:00 CDT
567    Tag: leunga-20030516-cygwin-runtime
568    Description:
569    
570        Ported the runtime system to cygwin, which uses the unix
571    x86-unix bin files.  Missing/buggy features:
572    
573       o getnetbyname, getnetbyaddr: these functions seem to be missing in
574         the Cygwin library.
575       o Ctrl-C handling may be flaky.
576       o Windows system calls and Windows I/O are not supported.
577    
578       A new set of binfiles is located at:
579    
580         http://www.dorsai.org/~leunga/boot.x86-unix.tgz
581    
582       This is only needed for bootstrapping the cygwin version of smlnj.
583       Other x86 versions can use the existing binfiles.
584    
585    ----------------------------------------------------------------------
586    Name: Matthias Blume
587    Date: 2003/04/08 15:42:00 CDT
588    Tag: blume-20030408-listpair
589    Description:
590    
591    1. Added a target 'mlrisc' to installer.
592    
593    2. Added missing elements to structure ListPair.
594    
595    ----------------------------------------------------------------------
596    Name: Allen Leung
597    Date: 2003/01/07 10:40:00 EST
598    Tag: leunga-20030107-int-rem
599    Description:
600    
601    Fixed a bug in Int.rem(x,y) where y is a power of 2 on x86.
602    The arguments to the SUBL instruction were swapped.
603    
604    ----------------------------------------------------------------------
605    Name: Matthias Blume
606    Date: 2002/12/12 16:25:00 EST
607    Tag: blume-20021212-risc-ra
608    Description:
609    
610    Fixed a serious bug in the rewrite code for FP spilling/reloading that
611    sent the RA into an infinite loop when floating point registers get
612    spilled.  (Because of this bug, e.g., nucleic stopped compiling between
613    110.37 and 110.38.)
614    There was another set of potential problems related to the handling of
615    MLRISC annotations (but those did not yet cause real problems, apparently).
616    
617    ----------------------------------------------------------------------
618    Name: Matthias Blume
619    Date: 2002/12/06 22:40:00 EST
620    Tag: blume-20021206-cm-fileid
621    Description:
622    
623    Added a call of SrcPath.sync at the beginning of Parse.parse (in CM).
624    This fixes the problem of CM getting confused by files that suddenly
625    change their identity (e.g., by getting unlinked and recreated by some
626    text editor such as vi).  There might be a better/cheaper/cleaner way
627    of doing this, but for now this will have to do.
628    
629    ----------------------------------------------------------------------
630    Name: Matthias Blume
631    Date: 2002/10/28 09:50:00 EST
632    Tag: blume-20021028-typecheck
633    Description:
634    
635    Exported structure Typecheck from $smlnj/viscomp/core.cm.
636    
637    ----------------------------------------------------------------------
638    Name: Matthias Blume
639    Date: 2002/10/17 09:10:00 EDT
640    Tag: Release_110_42
641    Description:
642    
643    In good old tradition, there has been a slight hiccup so that we have
644    to patch 110.42 after the fact.   The old release tag has been replaced
645    (see below).
646    
647    The change solves a problem with two competing approaches the
648    configuration problem regarding MacOS 10.1 vs. MacOS 10.2 which got in
649    each other's way.
650    
651    This change only affects the runtime system code and the installer script.
652    (No new bootfiles.)
653    
654    ----------------------------------------------------------------------
655    Name: Matthias Blume
656    Date: 2002/10/16 12:00:00 EDT
657    Tag: Release_110_42_removed
658    Description:
659    
660    New working release.  New bootfiles.
661    
662    ----------------------------------------------------------------------
663    Name: Matthias Blume
664    Date: 2002/10/10 13:10:00 EDT
665    Tag: blume-20021010-ppc-divs
666    Description:
667    
668    The mltree operator DIVS must be implemented with an overflow check on
669    the PPC because the hardware indicates divide-by-zero using "overflow" as
670    well.
671    
672    ----------------------------------------------------------------------
673    Name: Matthias Blume
674    Date: 2002/07/23 11:45:00
675    Tag: blume-20020723-smlnj-home
676    Description:
677    
678    Sml now senses the SMLNJ_HOME environment variable.  If this is set,
679    then the bin dir is assumed to be in $SMLNJ_HOME/bin and (unless
680    CM_PATHCONFIG is also set), the path configuration file is assumed
681    to be in $SMLNJ_HOME/lib/pathconfig.  This way one can easily move
682    the entire tree to some other place and everything will "just work".
683    
684    (Companion commands such as ml-build and ml-makedepend also sense this
685    variable.)
686    
687    ----------------------------------------------------------------------
688    Name: Matthias Blume
689    Date: 2002/07/12 21:19:00 EDT
690    Tag: blume-20020712-liveness
691    Description:
692    
693    Exported two useful "step" functions from liveness module (MLRISC).
694    
695    ----------------------------------------------------------------------
696    Name: Matthias Blume
697    Date: 2002/07/05 16:00 EDT
698    Tag: Release_110_41
699    Description:
700    
701    New working release.  New bootfiles.
702    
703    ----------------------------------------------------------------------
704    Name: Matthias Blume
705    Date: 2002/07/05 10:25:00 EDT
706    Tag: blume-20020705-btimp
707    Description:
708    
709    Exported structure BTImp from $smlnj/viscomp/debugprof.cm so that
710    other clients can set up backtracing support.
711    
712    ----------------------------------------------------------------------
713    Name: Matthias Blume
714    Date: 2002/06/25 17:23:00 EDT
715    Tag: blume-20020625-fpmax
716    Description:
717    
718    Fixed a bug in translation of INLMAX (and INLMIN) for the floating-point
719    case.  (The sense of the isNaN test was reversed -- which made min and
720    max always return their first argument.)
721    
722    ----------------------------------------------------------------------
723    Name: Matthias Blume
724    Date: 2002/06/11
725    Tag: blume-20020611-unixpath
726    Description:
727    
728    Back-ported OS.Path.{from,to}UnixPath from idlbasis-devel branch.
729    
730    ----------------------------------------------------------------------
731    Name: Matthias Blume
732    Date: 2002/06/10 16:35:00 EDT
733    Tag: blume-20020610-ieeereal
734    Description:
735    
736    I back-ported my implementation of IEEEReal.fromString from the
737    idlbasis-devel branch so that we can test it.
738    
739    Another small change is that ppDec tries to give more information
740    than just "<sig>" in the case of functors.  However, this code is
741    broken in some mysterious way if the functor's body's signature
742    has not been declared by ascription but gets inferred from the
743    implementation.  This needs fixing...
744    
745    ----------------------------------------------------------------------
746    Name: Matthias Blume
747    Date: 2002/05/31
748    Tag: blume-20020531-btrace-mode
749    Description:
750    
751    Resurrected SMLofNJ.Internals.BTrace.mode.  (It accidentally fell by
752    the wayside when I switched over to using Controls everywhere.)
753    
754    ----------------------------------------------------------------------
755    Name: Lal George
756    Date: 2002/05/23 12:21:40 EDT
757    Tag: george-20020523-visual-labels
758    Description:
759    
760    Labels are now displayed in the graphical output to make
761    the fall-through and target blocks obvious.
762    
763    ----------------------------------------------------------------------
764    Name: Matthias Blume
765    Date: 2002/05/22 11:03:00 EDT
766    Tag: blume-20020522-shrink
767    Description:
768    
769    John tweaked yesterday's fix for 1131 to handle an out-of-memory
770    situation that comes up when allocating huge arrays.
771    
772    ----------------------------------------------------------------------
773    Name: Matthias Blume
774    Date: 2002/05/21 16:00:00 EDT
775    Tag: Release_110_40
776    Description:
777    
778    New working release (110.40).  New bootfiles.
779    
780    [Also: John Reppy fixed GC bug 1131.]
781    
782    ----------------------------------------------------------------------
783    Name: Matthias Blume
784    Date: 2002/05/21 12:35:00 EDT
785    Tag: blume-20020521-cmdoc
786    Description:
787    
788    CM documentation update.
789    
790    ----------------------------------------------------------------------
791    Name: Matthias Blume
792    Date: 2002/05/21 10:55:00 EDT
793    Tag: blume-20020521-misc
794    Description:
795    
796    - John tweaked runtime to be silent on heap export (except when
797      GC messages are on).
798    - I added a few more things (cross-compiling versions of CMB) to
799      config/preloads (as suggestions).
800    
801    ----------------------------------------------------------------------
802    Name: Matthias Blume
803    Date: 2002/05/20 22:25:00 EDT
804    Tag: blume-20020520-controls
805    Description:
806    
807    - Added ControlUtil structure to control-lib.cm.
808    - Use it throughout.
809    - Used Controls facility to define MLRISC controls (as opposed to
810      registering MLRISC control ref cells with Controls after the fact)
811    - Fixed messed-up controls priorities.
812    
813    * Removed again all the stuff from config/preloads that one wouldn't
814      be able to preload at the time the initial heap image is built.
815      (Many libraries, e.g., CML, do not exist yet at this time.  The
816       only libraries that can be preloaded via config/preloads are those
817       that come bundled with the bootfiles.)
818    
819    ----------------------------------------------------------------------
820    Name: Matthias Blume
821    Date: 2002/05/20 10:59:00 EDT
822    Tag: blume-20020520-preloads
823    Description:
824    
825    Added a lot of commented-out suggestions for things to be included
826    in config/preloads.
827    
828    ----------------------------------------------------------------------
829    Name: Allen Leung
830    Date: 2002/05/18 14:20:00 EDT
831    Tag: leunga-20020518-mdl
832    Description:
833    
834    o Made the mdl tool stuff compile and run again.
835    o I've disabled all the stuff that depends on RTL specifications; they
836      are all badly broken anyway.
837    
838    ----------------------------------------------------------------------
839    Name: Matthias Blume
840    Date: 2002/05/17 16:49:00 EDT
841    Tag: blume-20020517-controls
842    Description:
843    
844    0. John Reppy made several modifications to the SML/NJ library.
845       In particular, there is a shiny new controls-lib.cm.
846    
847    1. Pushed new controls interface through compiler so that everything
848       compiles again.
849    
850    2. Added FormatComb and FORMAT_COMB to the CML version of the
851       SML/NJ library (so that CML compiles again).
852    
853    3. Modified init scripts because XXX_DEFAULT environment variables
854       are no longer with us.  (Boot-time initialization is now done
855       using the same environment variables that are also used for
856       startup-time initialization of controls.)
857    
858    ----------------------------------------------------------------------
859    Name: Lal George
860    Date: 2002/05/15 09:20:10 EDT
861    Tag: george-20020515-pseudo-op-decls
862    Description:
863    
864            All pseudo-ops emitted before the first segment declaration
865    such as TEXT, DATA, and BSS directives are assumed to be global
866    declarations and are emitted first in the assembly file. This is
867    useful in a number of situations where one has pseudo-ops that are not
868    specific to any segment, and also works around the constraint that one
869    cannot have client pseudo-ops in the TEXT segment.
870    
871            Because no segment is associated with these declarations it is
872    an error to allocate any space or objects before the first segment
873    directive and an exception will be raised. However, we cannot make
874    this check for client pseudo-ops.
875    
876            These top level declarations are a field in the CFG graph_info.
877    In theory you can continue to add to this field after the CFG has been
878    built -- provided you know what you are doing;-)
879    
880    ----------------------------------------------------------------------
881    Name: Matthias Blume
882    Date: 2002/05/13 16:40:00 EDT
883    Tag: blume-20020513-pp-etc
884    Description:
885    
886    A few minor bugfixes:
887    
888      - Stopgap measure for bug recently reported by Elsa Gunter (ppDec).
889        (Bogus printouts for redefined bindings still occur.  Compiler
890        bug should no longer occur now.  We need to redo the prettyprinter
891        from scratch.)
892    
893      - CM pathname printer now also adds escape sequences for ( and )
894    
895      - commend and docu fixes for ml-nlffi
896    
897    ----------------------------------------------------------------------
898    Name: Matthias Blume
899    Date: 2002/05/10 16:40:00 EDT
900    Tag: blume-20020510-erg-textio
901    Description:
902    
903    Applied the following bugfix provided by Emden Gansner:
904    
905        Output is corrupted when outputSubstr is used rather than output.
906    
907        The problem occurs when a substring
908    
909            ss = (s, dataStart, dataLen)
910    
911        where dataStart > 0, fills a stream buffer with avail bytes left.
912        avail bytes of s, starting at index dataStart, are copied into the
913        buffer, the buffer is flushed, and then the remaining dataLen-avail
914        bytes of ss are copied into the beginning of the buffer. Instead of
915        starting this copy at index dataStart+avail in s, the current code
916        starts the copy at index avail.
917    
918        Fix:
919        In text-io-fn.sml, change line 695 from
920             val needsFlush = copyVec(v, avail, dataLen-avail, buf, 0)
921        to
922             val needsFlush = copyVec(v, dataStart+avail, dataLen-avail, buf, 0)
923    
924    ----------------------------------------------------------------------
925    Name: Matthias Blume
926    Date: 2002/04/12 13:55:00 EDT
927    Tag: blume-20020412-assyntax
928    Description:
929    
930    1. Grabbed newer assyntax.h from the XFree86 project.
931    2. Fiddled with how to compile X86.prim.asm without warnings.
932    3. (Very) Minor cleanup in CM.
933    
934    ----------------------------------------------------------------------
935    Name: Matthias Blume
936    Date: 2002/04/01 (no joke!) 17:07:00 EST
937    Tag: blume-20020401-x86div
938    Description:
939    
940    Added full support for div/mod/rem/quot on the x86, using the machine
941    instruction's two results (without clumsily recomputing the remainder)
942    directly where appropriate.
943    
944    Some more extensive power-of-two support was added to the x86 instruction
945    selector (avoiding expensive divs, mods, and muls where they can be
946    replaced with cheaper shifts and masks).  However, this sort of thing
947    ought to be done earlier, e.g., within the CPS optimizer so that
948    all architectures benefit from it.
949    
950    The compiler compiles to a fixed point, but changes might be somewhat
951    fragile nevertheless.  Please, report any strange things that you might
952    see wrt. div/mod/quot/rem...
953    
954    ----------------------------------------------------------------------
955    Name: Matthias Blume
956    Date: 2002/03/29 17:22:00
957    Tag: blume-20020329-div
958    Description:
959    
960    Fixed my broken div/mod logic.  Unfortunately, this means that the
961    inline code for div/mod now has one more comparison than before.
962    Fast paths (quotient > 0 or remainder = 0) are not affected, though.
963    The problem was with quotient = 0, because that alone does not tell
964    us which way the rounding went.  One then has to look at whether
965    remainder and divisor have the same sign...  :(
966    
967    Anyway, I replaced the bootfiles with fresh ones...
968    
969    ----------------------------------------------------------------------
970    Name: Matthias Blume
971    Date: 2002/03/29 14:10:00 EST
972    Tag: blume-20020329-inlprims
973    Description:
974    
975    NEW BOOTFILES!!!    Version number bumped to 110.39.3.
976    
977    Primops have changed. This means that the bin/boot-file formats have
978    changed as well.
979    
980    To make sure that there is no confusion, I made a new version.
981    
982    
983    CHANGES:
984    
985    * removed REMT from mltree (remainder should never overflow).
986    
987    * added primops to deal with divisions of all flavors to the frontend
988    
989    * handled these primops all the way through so they map to their respective
990      MLRISC support
991    
992    * used these primops in the implementation of Int, Int32, Word, Word32
993    
994    * removed INLDIV, INLMOD, and INLREM as they are no longer necessary
995    
996    * parameterized INLMIN, INLMAX, and INLABS by a numkind
997    
998    * translate.sml now deals with all flavors of INL{MIN,MAX,ABS}, including
999      floating point
1000    
1001    * used INL{MIN,MAX,ABS} in the implementation of Int, Int32, Word, Word32,
1002      and Real (but Real.abs maps to a separate floating-point-only primop)
1003    
1004    
1005    TODO items:
1006    
1007    * Hacked Alpha32 instruction selection, disabling the selection of REMx
1008      instructions because the machine instruction encoder cannot handle
1009      them.  (Hppa, PPC, and Sparc instruction selection did not handle
1010      REM in the first place, and REM is supported by the x86 machine coder.)
1011    
1012    * Handle DIV and MOD with DIV_TO_NEGINF directly in the x86 instruction
1013      selection phase.  (The two can be streamlined because the hardware
1014      delivers both quotient and remainder at the same time anyway.)
1015    
1016    * Think about what to do with "valOf(Int32.minInt) div ~1" and friends.
1017      (Currently the behavior is inconsistent both across architectures and
1018      wrt. the draft Basis spec.)
1019    
1020    * Word8 should eventually be handled natively, too.
1021    
1022    * There seems to be one serious bug in mltree-gen.sml.  It appears, though,
1023      as if there currently is no execution path that could trigger it in
1024      SML/NJ.  (The assumptions underlying functions arith and promotable do not
1025      hold for things like multiplication and division.)
1026    
1027    ----------------------------------------------------------------------
1028    Name: Matthias Blume
1029    Date: 2002/03/27 16:27:00 EST
1030    Tag: blume-20020327-mlrisc-divisions
1031    Description:
1032    
1033    Added support for all four division operations (ML's div, mod, quot,
1034    and rem) to MLRISC.  In the course of doing so, I also rationalized
1035    the naming (no more annoying switch-around of DIV and QUOT), by
1036    parameterizing the operation by div_rounding_mode (which can be either
1037    DIV_TO_ZERO or DIV_TO_NEGINF).
1038    
1039    The generic MLTreeGen functor takes care of compiling all four
1040    operations down to only round-to-zero div.
1041    
1042    Missing pieces:
1043    
1044      * Doing something smarter than relying on MLTreeGen on architectures
1045        like, e.g., the x86 where hardware division delivers both quotient and
1046        remainder at the same time.  With this, the implementation of the
1047        round-to-neginf operations could be further streamlined.
1048    
1049      * Remove inlining support for div/mod/rem from the frontend and replace it
1050        with primops that get carried through to the backend.  Do this for all
1051        int and word types.
1052    
1053    ----------------------------------------------------------------------
1054    Name: Matthias Blume
1055    Date: 2002/03/25 17:25:00 EST
1056    Tag: blume-20020325-divmod
1057    Description:
1058    
1059    I improved (hopefully without breaking them) the implementation of Int.div,
1060    Int.mod, and Int.rem.   For this, the code in translate.sml now takes
1061    advantage of the following observations:
1062    
1063      Let  q = x quot y      r = x rem y
1064           d = x div  y      m = x mod y
1065    
1066    where "quot" is the round-to-zero version of integer division that
1067    hardware usually provides.  Then we have:
1068    
1069         r = x - q * y        where neither the * nor the - will overflow
1070         d = if q >= 0 orelse x = q * y then q else q - 1
1071                              where neither the * nor the - will overflow
1072         m = if q >= 0 orelse r = 0 then r else r + y
1073                              where the + will not overflow
1074    
1075    This results in substantial simplification of the generated code.
1076    The following table shows the number of CFG nodes and edges generated
1077    for
1078            fun f (x, y) = x OPER y
1079            (* with OPER \in div, mod, quot, rem *)
1080    
1081    
1082        OPER | nodes(old) | edges(old) | nodes(new) | edges(new)
1083        --------------------------------------------------------
1084         div |         24 |         39 |         12 |         16
1085         mod |         41 |         71 |         12 |         16
1086        quot |          8 |         10 |          8 |         10
1087         rem |         10 |         14 |          8 |         10
1088    
1089    
1090    ----------------------------------------------------------------------
1091    Name: Matthias Blume
1092    Date: 2002/03/25 22:06:00 EST
1093    Tag: blume-20020325-cprotobug
1094    Description:
1095    
1096    Fixed a bug in cproto (c prototype decoder).
1097    
1098    ----------------------------------------------------------------------
1099    Name: Matthias Blume
1100    Date: 2002/03/25 16:00:00 EST
1101    Tag: blume-20020325-raw-primops
1102    Description:
1103    
1104    I did some cleanup to Allen's new primop code and
1105    replaced yesterday's bootfiles with new ones.
1106    (But they are stored in the same place.)
1107    
1108    ----------------------------------------------------------------------
1109    Name: Matthias Blume
1110    Date: 2002/03/24 22:40:00 EST
1111    Tag: blume-20020324-bootfiles
1112    Description:
1113    
1114    Made the bootfiles that Allen asked for.
1115    
1116    ----------------------------------------------------------------------
1117  Name: Allen Leung  Name: Allen Leung
1118  Date: 2002/03/23 15:50:00 EST  Date: 2002/03/23 15:50:00 EST
1119  Tag: leunga-20020323-flint-cps-rcc-primops  Tag: leunga-20020323-flint-cps-rcc-primops

Legend:
Removed from v.1174  
changed lines
  Added in v.1411

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