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

SCM Repository

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

Diff of /sml/trunk/NOTES/HISTORY

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

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

Legend:
Removed from v.1175  
changed lines
  Added in v.1395

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