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

Legend:
Removed from v.1140  
changed lines
  Added in v.1546

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