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

SCM Repository

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

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

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

sml/trunk/HISTORY revision 1171, Fri Mar 22 20:41:43 2002 UTC sml/branches/primop-branch-3/NOTES/HISTORY revision 2524, Wed May 9 17:44:26 2007 UTC
# Line 1  Line 1 
1  This is the HISTORY file for the Yale SML/NJ CVS repository.  This is the HISTORY file for the SML/NJ repository.
2    
3  An entry should be made for _every_ commit to the repository.  An entry should be made for _every_ commit to the repository.
4  The entries in this file will be used when creating the README  The entries in this file will be used when creating the README
# Line 7  Line 7 
7    
8  The form of an entry should be:  The form of an entry should be:
9    
10  Name:  
11    Name: Your Name (web page or e-mail)
12    Date: yyyy/mm/dd hh:mm:ss
13    Tag: cvs-tag-for-this-change
14    Description:
15    
16    ----------------------------------------------------------------------
17    Name: David MacQueen (http://www.cs.uchicago.edu/~jhr)
18    Date: 2007/05/03
19    Revision: r2492
20    Description:
21    
22    Merge of the primop3 branch (base) into the trunk to create 110.63.1.
23    Significant changes in FLINT and the front end, mostly having to do
24    with a reorganized system for handling primops.  Various bug fixes
25    and improvements in printing signatures.
26    
27    ----------------------------------------------------------------------
28    Name: John Reppy (http://www.cs.uchicago.edu/~jhr)
29    Date: 2007/04/24
30    Description:
31    
32    More Basis fixes: The Char.fromString (etc.) functions did not handle
33    the "\uxxxx" escape sequence.  There is still an outstanding bug with
34    String.fromString the tail is a format escape.  I added a comment to
35    this effect in Basis/Implementation/string.sml.
36    Thanks to Andreas Rossberg.
37    
38    ----------------------------------------------------------------------
39    Name: John Reppy (http://www.cs.uchicago.edu/~jhr)
40    Date: 2007/04/24
41    Description:
42    
43    Added next function to Fifo and Queue modules in the SML/NJ Library.
44    
45    ----------------------------------------------------------------------
46    Name: John Reppy (http://www.cs.uchicago.edu/~jhr)
47    Date: 2007/04/23
48    Description:
49    
50    More Basis fixes: Time.fmt dropped the leading "~" for negative time
51    values that had no whole part.
52    
53    ----------------------------------------------------------------------
54    Name: John Reppy (http://www.cs.uchicago.edu/~jhr)
55    Date: 2007/04/23
56    Description:
57    
58    More Basis fixes: the OS.Path module did not include the InvalidArc
59    exception and did not do sufficient argument checking.
60    Thanks to Stephen Weeks and Adam Chilpala.
61    
62    ----------------------------------------------------------------------
63    Name: Mike Rainey (http://www.cs.uchicago.edu/~mrainey)
64    Date: 2007/04/16
65    Description:
66    
67    Fixed an unbound functor bug in the AMD64 CM file.
68    
69    ----------------------------------------------------------------------
70    Name: Mike Rainey (http://www.cs.uchicago.edu/~mrainey)
71    Date: 2007/04/12
72    Description:
73    
74    Substantially changed the signature and implementation of AMD64
75    SVID.  It now looks similar to the ia32 SVID, yet uses staged
76    allocation.
77    
78    ----------------------------------------------------------------------
79    Name: John Reppy (http://www.cs.uchicago.edu/~jhr)
80    Date: 2007/04/07
81    Description:
82    
83    More Basis fixes: the WORD signature was missing {to,from}Large.
84    Thanks to Andreas Rossberg.
85    
86    ----------------------------------------------------------------------
87    Name: Matthias Blume (http://www.tti-c.org/blume/)
88    Date: 2007/03/22 16:07:00 CDT
89    Tag: release-110.63
90    Description:
91    
92    Bumped version number to 110.63.
93    
94       !!!NEW BOOTFILES!!!
95    
96    ----------------------------------------------------------------------
97    Name: Mike Rainey (http://www.cs.uchicago.edu/~mrainey)
98    Date: 2007/03/19
99    Description:
100    
101    Fixed bogus operand sizes in AMD64 instruction spilling.
102    
103    ----------------------------------------------------------------------
104    Name: John Reppy (http://www.cs.uchicago.edu/~jhr)
105    Date: 2007/03/19
106    Description:
107    
108    Fixed a number of inconsistencies between the Posix.TTY structure
109    and the Basis specification.  Thanks to Adam Chilpala.
110    
111    ----------------------------------------------------------------------
112    Name: Mike Rainey (http://www.cs.uchicago.edu/~mrainey)
113    Date: 2007/02/26
114    Description:
115    
116    Added preliminary support in MLRISC for Staged Allocation, a technique
117    for specifying calling conventions (see
118    http://www.eecs.harvard.edu/~nr/pubs/staged-abstract.html).
119    Initially, we plan to use this code to generate C calls for the AMD64.
120    
121    The staged allocation code base resides in MLRISC/staged-allocation,
122    and specialized calling conventions go in MLRISC/ARCH/staged-allocation.
123    
124    ----------------------------------------------------------------------
125    Name: John Reppy (http://www.cs.uchicago.edu/~jhr)
126    Date: 2007/02/20
127    Description:
128    
129      Bug fix: when SaveCState was called with two values to save, a subsequent
130      GC could cause the RestoreCState to fail because the saved state had been
131      promoted to tagless pair.
132    
133    ----------------------------------------------------------------------
134    Name: Allen Leung (leunga (at) reservoir (dot) com)
135    Date: 2007/02/20 19:08:00 EST
136    Description:
137    
138        Bug triggered by:
139    
140        val a1 = Word8Array.array(a1, 0w0);
141        val _  = Word8Array.update(a1, 0, 0w128);
142    
143        x86MCEmitter crashed when the immediate operand to MOVB was outside
144    of the range -128 ... 127.  I've changed the code so that the range
145    check is disabled.   Only the low order 8 bits of the immediate operand
146    are now significant.
147    
148    
149    ----------------------------------------------------------------------
150    Name: Matthias Blume (http://www.tti-c.org/blume/)
151    Date: 2007/02/15 09:20:00 CST
152    Description:
153    
154    Eliminated any mention of lexgen.  (Lexgen was an early precursor
155    to ml-ulex.)
156    
157    You should update your admin directory, so the shell scripts for
158    maintaining your local copy of the repository reflect this change.
159    
160    ----------------------------------------------------------------------
161    Name: Matthias Blume (http://www.tti-c.org/blume/)
162    Date: 2007/02/14 15:45:00 CST
163    Description:
164    
165    Fixed bug in CM's parallel make facility that failed to have
166    the master re-link modules after letting slaves compile them.
167    
168    ----------------------------------------------------------------------
169    Name: Matthias Blume (http://www.tti-c.org/blume/)
170    Date: 2007/02/12 15:10:00 CST
171    Description:
172    
173    Fixed typo in ml-build script that prevented library anchors
174    from being registered.
175    
176    ----------------------------------------------------------------------
177    Name: Matthias Blume (http://www.tti-c.org/blume/)
178    Date: 2007/02/02 15:20:00 CST
179    Tag: release-110.62
180    Description:
181    
182    New working release (110.62).  NEW BOOTFILES!
183    
184    ----------------------------------------------------------------------
185    Name: Aaron Turon (http://www.cs.uchicago.edu/~adrassi)
186    Date: 2007/01/31
187    Description:
188    
189    Brought ml-lpt manual up-to-date with the code.  Many minor
190    improvements to the tools, and a few minor bugfixes.  Prepared
191    ml-lpt-lib for integration with new UTF8 structure.  Changed
192    the interface for creating streams in ml-ulex (we now support
193    stream creation from several kinds of sources).  Overall, the
194    tools are now quite stable, and their interfaces are unlikely to
195    change in a way that would break compatibility.  More work,
196    however, is needed in the documentation.
197    
198    ----------------------------------------------------------------------
199    Name: Matthias Blume (http://www.tti-c.org/blume/)
200    Date: 2007/02/01 10:05:00 CST
201    Description:
202    
203    Implemented library installer.  Moved CM plugin code for
204    ml-burg, ml-lex, and ml-yacc out of CM source tree and into
205    their respective trees.  Implemented CM plugin for ml-ulex
206    and ml-antlr.  Used library installer for ml-burg, ml-ulex,
207    and ml-antlr.
208    
209    For ml-yacc and ml-lex we continue to have permanently "plugged-in"
210    CM tools.  (It turns out to be too messy to do otherwise because
211    there is too much code that during installation relies on the presence
212    of these tools -- resulting in a tricky ordering problem.)
213    
214    ----------------------------------------------------------------------
215    Name: Matthias Blume (http://www.tti-c.org/blume/)
216    Date: 2007/01/30 11:05:00 CST
217    Description:
218    
219    Added SMLofNJ.shiftArgs which is like a shell's "shift" command.
220    Modified CM's startup code to use shiftArgs as it processes
221    command line arguments.  This way, the init code in each .sml-file
222    or library that is mentioned at the top level will see only
223    those arguments that have not yet been processed at this point.
224    In other words, the init code can "seize control" and process the
225    remaining command line.
226    
227    ----------------------------------------------------------------------
228    Name: John Reppy (http://www.cs.uchicago.edu/~jhr)
229    Date: 2007/01/30
230    Description:
231    
232    Added fromList function to the ORD_SET interface and lookup to the
233    ORD_MAP interface.  See the SML/NJ Library CHANGES file for details.
234    
235    ----------------------------------------------------------------------
236    Name: John Reppy (http://www.cs.uchicago.edu/~jhr)
237    Date: 2007/01/28
238    Description:
239    
240    Added the UTF8 structure and signature from the Moby compiler to
241    the SML/NJ library (and the CML library).  These modules will replace
242    the version in the ml-lpt-lib.
243    
244    ----------------------------------------------------------------------
245    Name: Matthias Blume (http://www.tti-c.org/blume/)
246    Date: 2007/01/26 15:10:00 CST
247    Description:
248    
249    Added entries to handle ml-lpt-lib.cm in installer.
250    
251    ----------------------------------------------------------------------
252    Name: Matthias Blume (http://www.tti-c.org/blume/)
253    Date: 2006/12/15 11:10:00 CST
254    Tag: release-110.61
255    Description:
256    
257    New working release (110.61).  NEW BOOTFILES!
258    
259    This supersedes the pre-brown-paper-bug release (see below).
260    
261    ----------------------------------------------------------------------
262    Name: Matthias Blume (http://www.tti-c.org/blume/)
263    Date: 2006/12/15 11:00:00 CST
264    Description:
265    
266    Fixed brown-paper-bag bug with CM's pathname handling, which made
267    installation fail under Win32.
268    
269    ----------------------------------------------------------------------
270    Name: Matthias Blume (http://www.tti-c.org/blume/)
271    Date: 2006/12/14 12:00:00 CST
272    Description:
273    
274    Obsolete!
275    
276    [New working release (110.61).  NEW BOOTFILES!]
277    
278    ----------------------------------------------------------------------
279    Name: John Reppy (http://cs.uchicago.edu/~jhr)
280    Date: 2006/14/06 09:50:00 CST
281    Description:
282    
283    Fixed the code in runtime/c-libs/posix-tty/{tcgetattr,tcsetattr}.c to
284    get the c_cc termios data copied correctly.  Also moved the allocation
285    of the string to avoid problems if it caused a GC.
286    
287    Thanks to Timothy Bourke for the bug report and fix.
288    
289    ----------------------------------------------------------------------
290    Name: Matthias Blume (http://www.tti-c.org/blume)
291    Date: 2006/12/08 09:50:00 CST
292    Description:
293    
294    Added code to CM's "standard shell tool" implementation which
295    causes it to tolerate (with a warning) the situation where the shell
296    command fails (e.g., due to the shell command's non-existence)
297    as long as all target files exist.
298    
299    This makes it possible to, e.g., build ml-yacc from sources even if
300    svn checkout messed up the time stamps on files in such a way that
301    yacc.grm is younger than yacc.grm.sml or yacc.grm.sig.  (Ml-yacc would
302    be needed to re-process yacc.grm, but obviously it might not yet be
303    available at that time.)
304    
305    ----------------------------------------------------------------------
306    Name: John Reppy (http://cs.uchicago.edu/~jhr)
307    Date: 2006/12/06 12:06:00 CST
308    Description:
309    
310    Fixed the types of recvVecFrom, recvVecFrom', recvVecFromNB, and
311    recvVecFromNB' in the SOCKET signature.  This error is actually
312    in the SML Basis specification too.
313    
314    ----------------------------------------------------------------------
315    Name: Matthias Blume (http://www.tti-c.org/blume/)
316    Date: 2006/12/05 22:40:00 CST
317    Description:
318    
319    CM now reports undefined anchors as errors and aborts execution
320    rather than silently pressing on using bogus values.
321    
322    ----------------------------------------------------------------------
323    Name: Matthias Blume (http://www.tti-c.org/blume/)
324    Date: 2006/11/29 10:00:00 CST
325    Description:
326    
327    Use Say.vsay for printing the "[autoloading]" message, so
328    #set CM.Control.verbose false (or -Ccm.verbose=false) can be used
329    to suppress them.
330    
331    ----------------------------------------------------------------------
332    Name: Matthias Blume (http://www.tti-c.org/blume/)
333    Date: 2006/11/10 11:00:00 CST
334    Description:
335    
336    Fixed bug in CM where "with:" specifications that affect compilation
337    (as opposed to parsing) were ignored.
338    
339    ----------------------------------------------------------------------
340    Name: Matthias Blume (http://www.tti-c.org/blume/)
341    Date: 2006/11/09 14:30:00 CST
342    Tag: release-110.60
343    Description:
344    
345    New working release (110.60).  NEW BOOTFILES!
346    
347    This is the first subversion-hosted release.  There are also changes
348    to the directory layout.  Here is a table:
349    
350    (All pathnames are relative to the SML/NJ "root" directory.)
351    
352      config -> config
353    
354      src/cm -> base/cm
355      src/compiler -> base/compiler
356      src/runtime -> base/runtime
357      src/system -> base/system
358    
359      src/cm/pgraph -> pgraph
360    
361      src/READMES -> base/READMES
362      src/$notefile -> base/NOTES/$notefile
363         for <notefile> in BOOT CVSNOTES CYGWININSTALL HISTORY INSTALL
364                           MACOSXINSTALL WININSTALL
365    
366      src/smlnj-lib -> smlnj-lib
367      src/MLRISC -> MLRISC
368      ckit -> ckit
369      src/cml -> cml
370      src/eXene -> eXene
371      src/heap2asm -> heap2asm
372      src/lexgen -> lexgen
373      src/ml-burg -> ml-burg
374      src/ml-lex -> ml-lex
375      src/ml-yacc -> ml-yacc
376      src/ml-nlffi-lib -> nlffi/lib
377      src/ml-nlffigen -> nlffi/gen
378      src/smlnj-c -> smlnj-c
379      src/tools/TraceDebugProf -> trace-debug-profile
380    
381    In addition, there is also a new
382    
383      ml-lpt
384    
385    directory containing two new program generator tools: ml-ulex and
386    ml-antlr (a lexer generator that handles unicode and an ANTRL-inspired
387    LL(k) parser generator). These tools are currently "beta-quality"
388    
389    The latest versios of the sources can now be obtained anonymously
390    via subversion.  For this, it is useful to first check out
391    
392       svn://smlnj-gforge.cs.uchicago.edu/smlnj/admin
393    
394    and put the resulting directory on your shell's PATH.  This provides
395    access to three shell scripts: checkout-all.sh, stat-all.sh,
396    and refresh-all.sh.
397    
398    To create a freshly checked-out copy of the sources, do
399    
400       checkout-all.sh [dir]
401    
402    where dir is the optional SML/NJ root directory (default is ".").
403    
404    This creates the above directory layout.  Each subdirectory of
405    the root is under individual subversion control.  The stat-all.sh
406    and refresh-al.sh scripts apply "svn stat" or "svn update" to
407    each of these subtrees.
408    
409    ----------------------------------------------------------------------
410    Name: Matthias Blume (http://www.tti-c.org/blume/)
411    Date: 2006/11/02 12:20:00 CST
412    Description:
413    
414    Reorganized directory layout.
415    
416    This is a temporary solution, more reorganization is to come.
417    
418    The basic idea is to have a number of toplevel trees, each corresponding
419    to a well-defined part of the overall system.  Each part can be
420    maintained individually, even in separate source repositories,
421    although currently we still serve everything out of the main
422    smlnj-gforge tree.
423    
424    Installer and and scripts have been updated to reflect the new
425    layout.  The installer (base/src/system/smlnj/installer) is now
426    "scriptable" to avoid burning too much knowledge about the
427    layout into SML source code.  The main script used by the installer
428    is in config/actions.
429    
430    The main change is that many of the subdirectories of what used to
431    be known as "src" have moved to the toplevel.  The "src" directory
432    itself has moved down into a subtree called "base".  (We may eventually
433    get rid of the extra level of indirection represented by "src".)
434    
435    The layout is now as follows:
436    
437      toplevel tree name | default repository
438                         | (using gf=svn://smlnj-gforge.cs.uchicago.edu/smlnj)
439      -------------------+----------------------------------------------------
440      config             | $gf/config/trunk
441                         |
442      base               | $gf/sml/trunk
443                         |
444      smlnj-lib          | $gf/smlnj-lib/trunk
445      MLRISC             | $gf/MLRISC/trunk
446                         |
447      ml-yacc            | $gf/ml-yacc/trunk
448      ml-lex             | $gf/ml-lex/trunk
449      ml-burg            | $gf/ml-burg/trunk
450      lexgen             | $gf/lexgen/trunk
451      heap2asm           | $gf/heap2asm/trunk
452                         |
453      cml                | $gf/cml/trunk
454      eXene              | $gf/eXene/trunk
455      ckit               | $gf/ckit/trunk
456      nlffi              | $gf/nlffi/trunk
457                         |
458      smlnj-c            | $gf/smlnj-c/trunk
459    
460    In $gf/admin there are a few useful shell scripts for checking out
461    and maintaining the entire collection of trees:
462    
463       admin/checkout-all.sh [dir]
464          -- optionally creates dir and checks out all trees from their
465             default repositories; if dir is missing, checkout into .
466       admin/refresh-all.sh [dir]
467          -- looks at all trees (from the above list) in dir (default: .)
468             and runs "svn update" if the tree exists and is under
469             subversion control;
470             non-existing or non-subversion trees are skipped
471       admin/stat-all.sh [dir]
472          -- like refresh-all.sh, but runs "svn stat" instead
473    
474    ----------------------------------------------------------------------
475    Name: Matthias Blume (http://www.tti-c.org/blume/)
476    Date: 2006/10/05 11:30:00 CDT
477    Tag: blume-20061005-merge-amd64
478    Description:
479    
480    Merged code for AMD64 backend (Mike Rainey's work).
481    Everything is hooked up but untested.
482    
483    ----------------------------------------------------------------------
484    Name: Matthias Blume (http://www.tti-c.org/blume/)
485    Date: 2006/05/17 14:00:00 CST
486    Tag: Release_110_59
487    Description:
488    
489    New working version (110.59).  NEW BOOTFILES!
490    
491    I am freezing 110.59.  Changes other than the version-number increase:
492    
493      eXene:
494    
495         * committed changes to eXene from Alley Stoughton:
496             "fixed bugs in X authorization and resource handling, as well
497              as in the pile and viewport widgets"
498    
499      Runtime:
500        * fixed linking problem with NetBSD 3.x.
501    
502      Lexgen:
503        * lexgen tool handles non-ascii characters in 7-bit mode the same
504          way that ml-lex does
505    
506        * lexgen propagates exceptions the same way that ml-lex does
507    
508      CML:
509        * Fixed a bug in the SyncVar polling functions (iGetPoll,
510          mTakePoll, and mGetPoll) that could lead to livelock.
511    
512    ----------------------------------------------------------------------
513    Name: Matthias Blume (http://www.tti-c.org/blume/)
514    Date: 2006/05/12 15:20:00 CST
515    Tag: blume-20060515-makedepend
516    Description:
517    
518    Implemented ml-makedepend (i.e., CM.sources) in a better (more robust)
519    way.  This should hopefully fix the ml-makedepend problem permanently.
520    
521    ----------------------------------------------------------------------
522    Name: Matthias Blume (http://www.tti-c.org/blume/)
523    Date: 2006/05/12 15:15:00 CST
524    Tag: blume-20060512-makedepend
525    Description:
526    
527    Fixed long-standing bug with ml-makedepend where it would output a
528    spurious dependency to a non-existing file.  (This is a simple fix.
529    It might need further looking into.)
530    
531    ----------------------------------------------------------------------
532    Name: Matthias Blume (http://www.tti-c.org/blume/)
533    Date: 2006/04/20 10:30:00 CDT
534    Tag: blume-20060420-heap2exec
535    Description:
536    
537    Committed patches received from Johannes 5 Joemann (joemann@befree.free.de)
538    that enable heap2exec under Linux and FreeBSD.
539    
540    ----------------------------------------------------------------------
541    Name: John Reppy
542    Date: 2006/04/14
543    Tag:
544    Description:
545    
546    MLRISC changes:
547      1) renamed GAS_PSEUDO_OPS to AS_PSEUDO_OPS and put it in its own file.
548      2) added support for NOTB and XORB operators in pseudo-op expressions
549      3) added DarwinPseudoOp functor that supports Darwin's assembler syntax.
550      4) added support for 64-bit integer literals
551    
552    ----------------------------------------------------------------------
553    Name: Matthias Blume (http://www.tti-c.org/blume/)
554  Date: yyyy/mm/dd  Date: yyyy/mm/dd
555  Tag: <post-commit CVS tag>  Tag: Release_110_58
556    Description:
557    
558    New working version (110.58).  NEW BOOTFILES!
559    
560    ----------------------------------------------------------------------
561    Name: Matthias Blume (http://www.tti-c.org/blume/)
562    Date: 2006/03/01 22:15:00 CST
563    Tag: blume-20060301-lexgen
564    Description:
565    
566    Incorporated several bugfixes to lexgen.  Compiler now compiles to
567    fixpoint when using lexgen instead of ml-lex.
568    
569    ----------------------------------------------------------------------
570    Name: Matthias Blume (http://www.tti-c.org/blume/)
571    Date: 2006/02/28 22:45:00 CST
572    Tag: blume-20060228-lexgen
573    Description:
574    
575    Removed ml-flex and added lexgen instead, using Aaron Turon's newly
576    provided tarball.  The generated lexers still have problems.
577    
578    ----------------------------------------------------------------------
579    Name: Matthias Blume (http://www.tti-c.org/blume/)
580    Date: 2006/02/26 23:30:00 CST
581    Tag: blume-20060226-ml-flex
582    Description:
583    
584    Removed ml-flex' dependency on regexp-lib.cm.  Turned installation
585    of ml-flex on by default.
586    
587    ----------------------------------------------------------------------
588    Name: Matthias Blume (http://www.tti-c.org/blume/)
589    Date: 2006/02/24 16:30:00 CST
590    Tag: blume-20060224-ml-flex
591    Description:
592    
593    Added ml-flex sources.  Partially integrated, but should not be
594    turned on yet!  (Read: leave it commented-out in config/targets!)
595    
596    ----------------------------------------------------------------------
597    Name: John Reppy (http://www.cs.uchicago.edu/~jhr)
598    Date: 2006/02/23
599    Tag: jhr-20060223-x86-64
600    Description:
601    Changes to support building on x86-64 systems (using the 32-bit mode).
602    Also cleaned up signal handling on Linux.  Support for pre-2.2 Linux
603    kernels dropped.
604    
605    ----------------------------------------------------------------------
606    Name: Allen Leung (leunga (at) reservoir (dot) com)
607    Date: 2006/02/22 15:07:00 EST
608    Tag: leunga-20060222-mdl-gen
609    Description:
610    
611      CM has changed.  Updated the script for rebuilding the MLRISC generated
612    files.
613    
614    ----------------------------------------------------------------------
615    Name: Matthias Blume (http://www.tti-c.org/blume/)
616    Date: 2006/02/14 17:30:00 CST
617    Tag: blume-20060214-intel-mac
618  Description:  Description:
619    
620    Hooked code for Darwin-specific Intel ABI into main compiler.
621    (This is a temporary solution which relies on the fact that the
622    compiler itself does not use NLFFI.  Eventually we need to divorce
623    intel mac from generic x86 unix code and make separate sets of binaries.)
624    
625    ----------------------------------------------------------------------
626    Name: John Reppy (http://www.cs.uchicago.edu/~jhr)
627    Date: 2006/02/13
628    Tag: jhr-20060213-intel-mac
629    Description:
630    Changed MLRISC x86 CCalls for partial support of MacOS X ABI.
631    
632    ----------------------------------------------------------------------
633    Name: John Reppy (http://www.cs.uchicago.edu/~jhr)
634    Date: 2006/02/06
635    Tag: jhr-20060206-intel-mac
636    Description:
637    Changes to support MacOS X on Intel hardware.  The C-calls support in
638    MLRISC must also be updated to support the MacOS X ABI.
639    
640    ----------------------------------------------------------------------
641    Name: Matthias Blume (http://www.tti-c.org/blume/)
642    Date: 2005/12/16 00:15:00 CST
643    Tag: blume-20051216-cm
644    Description:
645    
646    Improved error reporting and handling in CM.
647    
648    ----------------------------------------------------------------------
649    Name: Matthias Blume (http://www.tti-c.org/blume/)
650    Date: 2005/11/21 14:00:00 CST
651    Tag: blume-20051121-html-lib
652    Description:
653    
654    Enabling $/html-lib.cm in config/preloads did not work.  This is fixed
655    now.  (Since the anchor mapping for html-lib.cm is not yet in effect
656    at the time when config/preloads is processed, the library has to
657    be referred to by another name.  In 110.57 this would be
658    $SMLNJ-LIB/HTML/html-lib.cm.  I arranged for $smlnj/smlnj-lib/html-lib.cm
659    to be valid as well.)
660    
661    Thanks to Todd Wilson (Fresno) for alerting me to this issue.
662    
663    ----------------------------------------------------------------------
664    Name: Matthias Blume (http://www.tti-c.org/blume/)
665    Date: 2005/11/19 13:45:00 CST
666    Tag: Release_110_57
667    Description:
668    
669    Moved release tag for 110.57.
670    
671    ----------------------------------------------------------------------
672    Name: Matthias Blume (http://www.tti-c.org/blume/)
673    Date: 2005/11/19 23:35:00 CST
674    Tag: blume-20051119-fish
675    Description:
676    
677    Fixed a problem in config/install.sh where it tries to "fish" the
678    name of the CM metadata directory from the wrong place (because
679    the physical location of basis.cm has changed).  Also, corrected the
680    path anchor for $/html-lib.cm.  (Thanks to M. Fluet for pointing out
681    these problems.)
682    
683    ----------------------------------------------------------------------
684    Name: Matthias Blume (http://www.tti-c.org/blume/)
685    Date: 2005/11/16 14:30:00 CST
686    Tag: blume-orig-110_57
687    Description:
688    
689    New working version (110.57).  NEW BOOTFILES!
690    
691    UPDATE: The release tag has been moved to include a fix for a brown-paper-
692            bag glitch (see above).
693    
694    ----------------------------------------------------------------------
695    Name: Matthias Blume (http://www.tti-c.org/blume/)
696    Date: 2005/11/16 10:25:00 CST
697    Tag: blume-22051116-btrace
698    Description:
699    
700    Fixed problem with bogus exception message when using back-trace
701    facility.
702    
703    ----------------------------------------------------------------------
704    Name: Matthias Blume (http://www.tti-c.org/blume/)
705    Date: 2005/11/15 22:35:00 CST
706    Tag: blume-22051115-array2copy
707    Description:
708    
709    Added simple implementation of Array2.copy.  (Warning: mostly untested.)
710    
711    ----------------------------------------------------------------------
712    Name: Matthias Blume (http://www.tti-c.org/blume/)
713    Date: 2005/11/15 21:35:00 CST
714    Tag: blume-22051115-versiontool
715    Description:
716    
717    Reversed change to src/system/smlnj/internals/versiontool.cm.  This
718    file gets loaded as a tool -- by the equivalent of CM.make during the
719    run of CMB.make.  Thus, CMB's path configuration is meaningless for
720    it.  Instead, it has the status of "user code", so it should use
721    $/basis.cm to refer to the Basis library.  (At least that's true for
722    the purpose of bootstrapping the previous change.  In the future it
723    might make sense to have versiontool.cm refer to
724    $smlnj/basis/basis.cm, i.e., the version of the Basis that the
725    compiler itself uses.)
726    
727    Also patched src/system/testml to have it activate those extra anchor
728    bindings in config/extrapathconfig.
729    
730    ----------------------------------------------------------------------
731    Name: Matthias Blume (http://www.tti-c.org/blume/)
732    Date: 2005/11/15 16:35:00 CST
733    Tag: blume-22051115-libraries
734    Description:
735    
736    This change affects the way the following libraries are tied into
737    the system:
738    
739       $/basis.cm
740       $/smlnj-lib.cm
741       $/pp-lib.cm
742       $/controls-lib.cm
743       $/html-lib.cm
744       $/ml-yacc-lib.cm
745    
746    These libraries are now internally (as seen from the source code
747    of the implementation itself) known by the following names:
748    
749       $smlnj/basis/basis.cm
750       $smlnj/smlnj-lib/smlnj-lib.cm
751       $smlnj/smlnj-lib/pp-lib.cm
752       $smlnj/smlnj-lib/controls-lib.cm
753       $smlnj/smlnj-lib/html-lib.cm
754       $smlnj/ml-yacc/ml-yacc-lib.cm
755    
756    This makes it possible to work with code that requires different
757    versions of these libraries, and which refers to these libraries using
758    their "default" names (i.e., the first set of names above).  In other
759    words, one can un-define or re-define those default names without
760    compromising the proper functioning of the compiler itself.
761    
762    A similar procedure had already been performed for several of the
763    MLRISC libraries that are linked into the compiler.  I did some
764    cleanup on this code.
765    
766    A new file in the config directory (named extrapathconfig) is
767    responsible for setting up path anchors that the compiler itself does
768    not need, but that are typically required by user code.
769    
770    ----------------------------------------------------------------------
771    Name: Matthias Blume
772    Date: 2005/11/07 17:05:00 CST
773    Tag: blume-20051107-slice
774    Description:
775    
776    Fixed erroneous out-of-bounds test in the "update" function of
777    various *ArraySlice modules.  (Thanks to Vesa A. Norrman for pointing
778    out the problem.)
779    
780    Pushed some Basis changes through ML-Lex, CML, and eXene.
781    
782    ----------------------------------------------------------------------
783    Name: John Reppy (http://www.cs.uchicago.edu/~jhr)
784    Date: 2005/11/07
785    Description:
786    Fixed a Basis incompatibility: The depreciated function Substring.all
787    was removed (use Substring.full instead).
788    
789    ----------------------------------------------------------------------
790    Name: John Reppy (http://www.cs.uchicago.edu/~jhr)
791    Date: 2005/11/05
792    Description:
793    Tweaked interval set API in SML/NJ library; see the CHANGES file for details.
794    
795    ----------------------------------------------------------------------
796    Name: Matthias Blume (http://www.tti-c.org/blume/)
797    Date: 2005/11/02 16:25:00 CST
798    Tag: blume-20051102-hex
799    Description:
800    
801    * Runtime system bootstrap code now accepts hex digits in BOOTLIST
802      in either upper case or lower case format.
803    * Pushed changes to names of Pack<N>{Big,Little} structures through
804      CML and eXene.
805    
806    ----------------------------------------------------------------------
807    Name: John Reppy (http://www.cs.uchicago.edu/~jhr)
808    Date: 2005/11/02
809    Description:
810    Fixed a Basis incompatibility: Pack<N>{Big,Little} structures should
811    be called PackWord<N>{Big,Little}.
812    
813    ----------------------------------------------------------------------
814    Name: John Reppy (http://www.cs.uchicago.edu/~jhr)
815    Date: 2005/10/28
816    Description:
817    Fixed a minor Basis incompatibility: hex digits should be upper case.
818    
819    ----------------------------------------------------------------------
820    Name: Matthias Blume (blume (at) tti - c (dot) org)
821    Date: 2005/10/25 16:00:00 CDT
822    Tag: Release_110_56
823    Description:
824    
825    New working version (110.56).  NEW BOOTFILES!
826    
827    ----------------------------------------------------------------------
828    Name: John Reppy (http://www.cs.uchicago.edu/~jhr)
829    Date: 2005/10/25
830    Description:
831    Added interval sets to utility library (signatures INTERVAL_DOMAIN
832    and INTERVAL_SET, and functor IntervalSetFn).
833    
834    ----------------------------------------------------------------------
835    Name: John Reppy (http://www.cs.uchicago.edu/~jhr)
836    Date: 2005/10/14
837    Description:
838    Add Zhong Shao's fix for datatype equality functions.
839    
840    ----------------------------------------------------------------------
841    Name: Allen Leung (leunga (at) reservoir (dot) com)
842    Date: 2005/10/14 12:30:00 EST
843    Tag: leunga-20051014-x86-spill
844    Description:
845    
846    Bug fix a bug found by Carl Hauser.
847    There was a typo in the reload code for FCMP in x86SpillInstr.sml.
848    
849    ----------------------------------------------------------------------
850    Name: Allen Leung (leunga (at) reservoir (dot) com)
851    Date: 2005/10/14 11:15:00 EST
852    Tag: leunga-20051014-x86-asm
853    Description:
854    
855    Removed some debugging code in file x86Asm.sml.
856    The function emit_operand was printing out debugging output.
857    
858    ----------------------------------------------------------------------
859    Name: John Reppy
860    Date: 2005/07/27
861    Tag:
862    Description:
863    
864    Fixed ml-lex to recognize "\r" as representing carriage return.
865    
866    ----------------------------------------------------------------------
867    Name: John Reppy
868    Date: 2005/07/27
869    Tag:
870    Description:
871    
872    Fixed ml-yacc to work on files with non-native end-of-line
873    encodings (e.g., Windows text file on a Unix system).
874    
875    ----------------------------------------------------------------------
876    Name: John Reppy
877    Date: 2005/07/20
878    Tag:
879    Description:
880    
881    Added changes from Dominic Evans (oldmanuk (at) gmail (dot) com)
882    to support HPUX 11.
883    
884    ----------------------------------------------------------------------
885    Name: John Reppy
886    Date: 2005/07/06
887    Tag:
888    Description:
889    
890    Changes to the SML/NJ library.  See smlnj-lib/CHANGES for details.
891    
892    ----------------------------------------------------------------------
893    Name: Matthias Blume (blume (at) tti - c (dot) org)
894    Date: 2005/07/06 00:45:00 CDT
895    Tag: blume-20050706-slice-copy
896    Description:
897    
898    Fixed reversed logic for deciding whether to "copy up" or "copy down"
899    in *-array-slice.sml.
900    
901    ----------------------------------------------------------------------
902    Name: Allen Leung (leunga (at) reservoir (dot) com)
903    Date: 2005/05/31 17:00:00 EST
904    Tag: leunga-20050531-cygwin-fault-2
905    Description:
906    
907    A typo in the cygwin code fixed.
908    
909    ----------------------------------------------------------------------
910    Name: Allen Leung (leunga (at) reservoir (dot) com)
911    Date: 2005/05/31 16:47:00 EST
912    Tag: leunga-20050531-cygwin-fault
913    Description:
914    
915    Updated Cygwin's fault/signal handling to match the Windows version.
916    Updated the export list.
917    
918    ----------------------------------------------------------------------
919    Name: Matthias Blume (blume (at) tti - c (dot) org)
920    Date: 2005/05/18 13:35:00 CDT
921    Tag: Release_110_54
922    Description:
923    
924    New working version (110.54).  NEW BOOTFILES!
925    
926    ----------------------------------------------------------------------
927    Name: Matthias Blume (blume (at) tti - c (dot) org)
928    Date: 2005/05/18 11:58:00 CDT
929    Tag: blume-20050518-installer
930    Description:
931    
932    Added support scripts for Mac OS X PackageMaker and modified
933    config/install.sh so that it supports re-dumping a heap image
934    after customization.
935    
936    ----------------------------------------------------------------------
937    Name: Matthias Blume (blume (at) tti - c (dot) org)
938    Date: 2005/05/18 10:55:00 CDT
939    Tag: blume-20050518-realdiv-noovld
940    Description:
941    
942    Un-overloaded / to work around bug in overloading resolution code.
943    
944    ----------------------------------------------------------------------
945    Name: Matthias Blume (blume (at) tti - c (dot) org)
946    Date: 2005/05/16 23:50:00 CDT
947    Tag: blume-20050516-redump-heap
948    Description:
949    
950    Added mechanism for re-creating a heap file for the interactive system
951    after configuration variables have been changed.
952    
953       CM.redump_heap : string -> unit
954    
955    This is much like SMLofNJ.exportML, but starting from the resulting
956    heap does not return to the caller of CM.redump_heap but
957    restarts the interactive system from scratch.  The original call of
958    CM.redump_heap does not return but ends the interactive session.
959    Thus, CM.redump_heap is a lot like SMLofNJ.exportFn.
960    
961    Internally, redump_heap winds the dynamic execution context back to
962    the point where the original heap image was created and re-executes
963    the heap image generation code in the boot code.
964    
965    ----------------------------------------------------------------------
966    Name: Matthias Blume (blume (at) tti - c (dot) org)
967    Date: 2005/05/09 21:55:00 CDT
968    Tag: blume-20050509-word64
969    Description:
970    
971    Added a hack to the existing hack known as Word64 to make fromString
972    behave correctly.  I am still not sure whether Word64.scan will work
973    as specified with respect to the interaction of radix and prefix.
974    
975    ----------------------------------------------------------------------
976    Name: Allen Leung (leunga (at) reservoir (dot) com)
977    Date: 2005/05/04 11:50:00 EST
978    Tag: leunga-20050504-checkgc
979    Description:
980    
981    Added a gc protocol checking phase.  This phase is enabled with
982    the flag "check-gc".  "debug-check-gc" turns on the verbose mode.
983    
984    ----------------------------------------------------------------------
985    Name: Matthias Blume (blume (at) tti - c (dot) org)
986    Date: 2005/05/04 10:45:00 CDT
987    Tag: blume-20050504-intinf
988    Description:
989    
990    Fixed a bug in the implementation of div and mod for IntInf.
991    Thanks to Neophytos Michael for reporting the problem.
992    
993    ----------------------------------------------------------------------
994    Name: Matthias Blume (blume (at) tti - c (dot) org)
995    Date: 2005/05/04 10:35:00 CDT
996    Tag: blume-20050504-join
997    Description:
998    
999    Added a "join" combinator to the ParserComb module in smlnj-lib.cm.
1000    
1001    ----------------------------------------------------------------------
1002    Name: Matthias Blume (blume (at) tti - c (dot) org)
1003    Date: 2005/02/28 23:40:00 CST
1004    Tag: blume-20050228-mVar
1005    Description:
1006    
1007    Fixed serious bug (brown paper bag variety) in new implementation of
1008    structure Atom in CML.  (I had accidentally used a mailbox instead of
1009    an mvar, leaving the door open for races.)
1010    
1011    ----------------------------------------------------------------------
1012    Name: Matthias Blume (blume (at) tti - c (dot) org)
1013    Date: 2005/02/25 15:00:00 CST
1014    Tag: Release_110_53
1015    Description:
1016    
1017    New working version (110.53).  NEW BOOTFILES!
1018    
1019    ----------------------------------------------------------------------
1020    Name: Matthias Blume (blume (at) tti - c (dot) org)
1021    Date: 2005/02/25 14:50:00 CST
1022    Tag: blume-20050225-susp
1023    Description:
1024    
1025    Brought back SMLofNJ.Susp.  The underlying suspension type is the one
1026    implemented in Core -- which means that it is the same as the one used
1027    by the lazy extension.
1028    
1029    ----------------------------------------------------------------------
1030    Name: Matthias Blume (blume (at) tti - c (dot) org)
1031    Date: 2005/02/24 16:50:00 CST
1032    Tag: blume-20050224-cml-atom
1033    Description:
1034    
1035    Simpler and at the same time more general implementation of structure
1036    Atom in CML.
1037    
1038    ----------------------------------------------------------------------
1039    Name: Matthias Blume (blume (at) tti - c (dot) org)
1040    Date: 2005/02/15 17:35:00 CST
1041    Tag: blume-20050215-tools
1042    Description:
1043    
1044    Created new "tools" directory under "src" and moved "TraceDebugProf"
1045    there.
1046    
1047    ----------------------------------------------------------------------
1048    Name: Matthias Blume (blume (at) tti - c (dot) org)
1049    Date: 2005/02/10 17:55:00 CST
1050    Tag: blume-20050210-longlong
1051    Description:
1052    
1053    Implemented "long long" arguments and results for NLFFI.  (Only the
1054    PPC/MacOS implementation is complete, the other backends still need to
1055    be updated.)
1056    
1057    ----------------------------------------------------------------------
1058    Name: Matthias Blume (blume (at) tti - c (dot) org)
1059    Date: 2005/01/24 17:40:00 CST
1060    Tag: blume-20050124-mlyacc
1061    Description:
1062    
1063    Minor cleanup in ML-Yacc rule printing mechanism.  This should fix a
1064    problem with certain "as" patterns which previously got rendered
1065    using incorrect syntax.
1066    
1067    ----------------------------------------------------------------------
1068    Name: Matthias Blume (blume (at) tti - c (dot) org)
1069    Date: 2005/01/18 12:00:00 CST
1070    Tag: blume-20050118-profile
1071    Description:
1072    
1073    Made time profiling code (interrupt handler) in runtime system aware
1074    of new array representation.
1075    
1076    ----------------------------------------------------------------------
1077    Name: Matthias Blume (blume (at) tti - c (dot) org)
1078    Date: 2005/01/14 18:00:00 CST
1079    Tag: blume-20050114-heap2exec
1080    Description:
1081    
1082    Implemented new (but still experimental) heap2exec facility.  This is
1083    tested under Mac OS X and should work under Linux (will test shortly).
1084    It will probably also work on the Sparc (will test some time later).
1085    
1086      - removed old "HACKED_STANDALONE" hack from runtime
1087    
1088    To be able to test this, uncomment the request for "heap2asm" in
1089    config/targets prior to installation.  (Notice that this is different
1090    from "heap2exec" mentioned below.  Not a typo.)
1091    
1092    To perform an actual test, run the command
1093    
1094       $ bin/heap2exec heapfile execfile
1095    
1096    (You can put heap2exec on your shell's path.)
1097    
1098    For example, run
1099    
1100      $ bin/heap2exec bin/.heap/ml-yacc.ppc-darwin mly
1101    
1102    This will create a standalone executable called "mly" which you can
1103    then invoke directly as a command.
1104    
1105    ----------------------------------------------------------------------
1106    Name: Matthias Blume (blume (at) tti - c (dot) org)
1107    Date: 2005/01/07 11:44:00 CST
1108    Tag: blume-20050107-mlstring
1109    Description:
1110    
1111    fixed off-by-one error in ML_STRING macro (globals.c)
1112    
1113    ----------------------------------------------------------------------
1114    Name: Matthias Blume (blume (at) tti - c (dot) org)
1115    Date: 2004/12/23 18:00:00 CST
1116    Tag: blume-20041223-santa
1117    Description:
1118    
1119    Made ml-build script "smarter" (but only very little).
1120    
1121    ----------------------------------------------------------------------
1122    Name: Matthias Blume (blume (at) tti - c (dot) org)
1123    Date: 2004/12/21 15:05:00 CST
1124    Tag: blume-20041221-longlong
1125    Description:
1126    
1127    * Implemented access to signed and unsigned long long data in NLFFI.
1128    (The parameter-passing part of the picture has not complete. But
1129    data structure access seems to work.)
1130    
1131    * Fixed CM's incorrect assumption that the PPC is little-endian.
1132      (On the Mac, it is big-endian.  And that's currently our only
1133      PPC platform.)
1134    
1135    ----------------------------------------------------------------------
1136    Name: Matthias Blume (blume (at) tti - c (dot) org)
1137    Date: 2004/12/21 12:50:00 CST
1138    Tag: blume-20041221-memory
1139    Description:
1140    
1141    Some cleanup in the $c/memory.cm library: separated some concerns by
1142    moving allocation code and memory access code each into their own
1143    files.
1144    
1145    ----------------------------------------------------------------------
1146    Name: Allen Leung (leunga (at) reservoir (dot) com)
1147    Date: 2004/12/17 16:12:00 EST
1148    Tag: leunga-20041217-cygwin-smlnj-home
1149    Description:
1150    
1151        The Unix I/O library of SML/NJ on cygwin does not understand
1152    Windows style pathname, so problems arise when SMLNJ_HOME is set
1153    to a Windows style pathname.  _run-sml now converts SMLNJ_HOME
1154    to a POSIX pathname on cygwin.
1155    
1156    ----------------------------------------------------------------------
1157    Name: Matthias Blume (blume (at) tti - c (dot) org)
1158    Date: 2004/12/16 13:35:00 CST
1159    Tag: Release_110_52
1160    Description:
1161    
1162    Last-minute changes incorporated into 110.52.  Release tag moved.
1163    
1164    The changes:
1165       - HashString.hashString' -> HashString.hashSubstring
1166       - bug fix in UnivariateStats
1167    
1168    ----------------------------------------------------------------------
1169    Name: Matthias Blume (blume (at) tti - c (dot) org)
1170    Date: 2004/12/15 23:40:00 CST
1171    Tag: blume-20041215-hashSubstring
1172    Description:
1173    
1174    - HashString.hashString' -> HashString.hashSubstring
1175    - corresponding changes in atom.sml
1176    - "de-compressed" (aka. un-obfuscated) code for UnivariateStats and
1177      added some comments
1178    
1179    ----------------------------------------------------------------------
1180    Name: Matthias Blume (blume (at) tti - c (dot) org)
1181    Date: 2004/12/15 15:30:00 CST
1182    Tag: (Release_110_52)
1183    Description:
1184    
1185    New working version (110.52).  NEW BOOTFILES!
1186    
1187    ----------------------------------------------------------------------
1188    Name: Matthias Blume (blume (at) tti - c (dot) org)
1189    Date: 2004/12/15 12:45:00 CST
1190    Tag: blume-20041215-spaces
1191    Description:
1192    
1193    More on the space problem (this time for Win32).
1194    
1195    ----------------------------------------------------------------------
1196    Name: Matthias Blume (blume (at) tti - c (dot) org)
1197    Date: 2004/12/14 17:30:00 CST
1198    Tag: blume-20041214-spaces
1199    Description:
1200    
1201    Hacked some of the scripts (in particular: the installer) to cope with
1202    spaces in filenames a bit better.  But beware: the current "solution"
1203    is likely still full of bugs and inherently incomplete.  (We need to
1204    do away with those shell scripts for a comprehensive solution.)
1205    
1206    ----------------------------------------------------------------------
1207    Name: Matthias Blume (blume (at) tti - c (dot) org)
1208    Date: 2004/12/13 14:45:00 CST
1209    Tag: blume-20041213-ml-makedepend
1210    Description:
1211    
1212    Fixed bug in code for ml-makedepend.
1213    
1214    ----------------------------------------------------------------------
1215    Name: Matthias Blume (blume (at) tti - c (dot) org)
1216    Date: 2004/12/09 16:30:00 CST
1217    Tag: blume-20041209-statistics
1218    Description:
1219    
1220    Added two simple but potentially useful statistics modules to SML/NJ Library.
1221    (See CHANGES file there.)
1222    
1223    ----------------------------------------------------------------------
1224    Name: Matthias Blume (blume (at) tti - c (dot) org)
1225    Date: 2004/12/01 16:50:00 CST
1226    Tag: blume-20041201-atom
1227    Description:
1228    
1229    smlnj-lib:
1230    
1231      Added function HashString.hashString' for substrings.
1232      Hand-inlined CharVector.foldl into HashString (for speed).
1233      Modified implementation of structure Atom to avoid extracting
1234      strings from substrings unless necessary.
1235      (Also see CHANGES file for smlnj-lib.)
1236    
1237    ----------------------------------------------------------------------
1238    Name: Matthias Blume (blume (at) tti - c (dot) org)
1239    Date: 2004/11/24 22:15:00 CST
1240    Tag: blume-20041124-cml
1241    Description:
1242    
1243    Made sure CML compiles when Position = Int64.
1244    
1245    ----------------------------------------------------------------------
1246    Name: Matthias Blume (blume (at) tti - c (dot) org)
1247    Date: 2004/11/24 14:30:00 CST
1248    Tag: blume-20041124-position
1249    Description:
1250    
1251    The compiler can now be compiled in a mode that makes structure Position
1252    equal to Int64.  The default, however, is unchanged (Position = Int31)
1253    for the time being.
1254    
1255    To enable 64-bit positions, use the following procedure:
1256    
1257    1. Start sml
1258    2. Autoload $smlnj/cmb.cm (if not already autoloaded)
1259    3. Type
1260          #set (CMB.symval "USE_64_BIT_POSITIONS") (SOME 1);
1261    4. Run CMB.make() as usual.
1262    
1263    This is barely tested.  The only test so far was a little SML program
1264    counting the number of characters in an 8-gigabyte file by
1265    reading it character-by-character.  That test was successful.
1266    
1267    In support of 64-bit positions, a number of new functions have been
1268    added to the runtime system.
1269    
1270    ----------------------------------------------------------------------
1271    Name: Matthias Blume (blume (at) tti - c (dot) org)
1272    Date: 2004/11/23 14:45:00 CST
1273    Tag: blume-20041123-useFile
1274    Description:
1275    
1276    Fixed a problem with unhelpful error messages related to problems with
1277    .cm- or .sml files that appear as part of the sml command line.
1278    
1279    ----------------------------------------------------------------------
1280    Name: Matthias Blume (blume (at) tti - c (dot) org)
1281    Date: 2004/11/18 15:40:00 CST
1282    Tag: Release_110_51
1283    Description:
1284    
1285    New working version (110.51).  NEW BOOTFILES!
1286    
1287    ----------------------------------------------------------------------
1288    Name: Matthias Blume (blume (at) tti - c (dot) org)
1289    Date: 2004/11/18 15:35:00 CST
1290    Tag: <none>
1291    Description:
1292    
1293    Enabled dlopen and friends for FreeBSD (as recommended by Johannes 5
1294    Joemann).
1295    
1296    ----------------------------------------------------------------------
1297    Name: Allen Leung (leunga (at) reservoir (dot) com)
1298    Date: 2004/11/17 16:05:21 EST 2004
1299    Tag: leunga-20041117-mlrisc-live-kill
1300    Description:
1301    
1302       Added support for MLTree constructs LIVE and KILL
1303    to all the architectures.
1304    
1305    ----------------------------------------------------------------------
1306    Name: Matthias Blume (blume (at) tti - c (dot) org)
1307    Date: 2004/11/13 00:20:00 CST
1308    Tag: blume-20041113-versiontool
1309    Description:
1310    
1311    - Stripped down the versiontool: It now only handles the version number.
1312      The date string is generated at bootstrap time (during makeml).
1313    
1314    - In a previous commit, fixed a minor issue with how polyequal is being
1315      translated.  In particular, the code now "looks through" abstractions.
1316      This results in slightly fewer polyEqual warnings and hopefully slightly
1317      more efficient code.  Important examples for where this matters are
1318      the new int64 and word64 types.
1319    
1320    ----------------------------------------------------------------------
1321    Name: Matthias Blume (blume (at) tti - c (dot) org)
1322    Date: 2004/11/12 00:30:00 CST
1323    Tag: blume-20041112-int64
1324    Description:
1325    
1326    Structure Int64 fully hooked in.  (The implementation is not very
1327    efficient, though.)
1328    
1329    ----------------------------------------------------------------------
1330    Name: Matthias Blume (blume (at) tti - c (dot) org)
1331    Date: 2004/11/11 17:30:00 CST
1332    Tag: blume-20041111-more64
1333    Description:
1334    
1335    All the pieces of Word64 are now there, with the exception of the
1336    conversions from and to LargeWord. (Eventually these need to be identities,
1337    but for the time being they don't even make sense because LargeWord is
1338    32-bit wide.)
1339    
1340    Also started to add similar support for Int64, but major pieces of that
1341    are still missing.
1342    
1343    ----------------------------------------------------------------------
1344    Name: Matthias Blume (blume (at) tti - c (dot) org)
1345    Date: 2004/11/11 00:15:00 CST
1346    Tag: blume-20041111-word64
1347    Description:
1348    
1349    Structure Word64 is now (almost) complete, word literals and patterns
1350    seem to work.  There are a few odd pieces missing.  In particular,
1351    I didn't do the {from,to}LargeWord parts because LargeWord is still Word32
1352    at the moment.
1353    
1354    Making Word64 official would mean that LargeWord becomes Word64.  But
1355    this requires extreme care because most word-word conversions have to
1356    go through LargeWord, so making a mistake means loss of efficiency or
1357    worse.  Eventually there will be a solution similar to (but actually
1358    simpler than) what I did with IntInf.
1359    
1360    ----------------------------------------------------------------------
1361    Name: Matthias Blume (blume (at) tti - c (dot) org)
1362    Date: 2004/11/10 18:12:00 CST
1363    Tag: blume-20041110-64bit
1364    Description:
1365    
1366    More 64-bit hacking (but still not even half-way there yet).
1367    Also, some assorted improvements to the handling of 8-bit words.
1368    
1369    ----------------------------------------------------------------------
1370    Name: Matthias Blume (blume (at) tti - c (dot) org)
1371    Date: 2004/11/09 17:50:00 CST
1372    Tag: <none>
1373    Description:
1374    
1375    Started adding some infrastructure for supporting 64-bit int- and
1376    word-types.  (Still in its very early stages.)
1377    
1378    ----------------------------------------------------------------------
1379    Name: Matthias Blume (blume (at) tti - c (dot) org)
1380    Date: 2004/10/28 10:45:00 CDT
1381    Tag: Release_110_50
1382    Description:
1383    
1384    New working version (110.50).  NEW BOOTFILES!
1385    
1386                 =====================
1387    
1388    Also:
1389    
1390      - Changend config/srcarchiveurl from a file just
1391        containing the URL string into a file containing
1392        shell script code.  The code has access to the $VERSION variable.
1393      - Made corresponding changes to config/install.sh and config/unpack.
1394      - Default contents of config/srcarchiveurl uses $VERSION and
1395        normally does not have to be edited to reflect a version change.
1396    
1397      (As a result, a version change can be done by just editing
1398       config/version, the rest is now automatic.)
1399    
1400    ----------------------------------------------------------------------
1401    Name: Matthias Blume (blume (at) tti - c (dot) org)
1402    Date: 2004/10/27 17:50:00 CDT
1403    Tag: blume-20041027-btrace-msg
1404    Description:
1405    
1406    BackTrace.monitor now also reports the source of the exception that
1407    triggered the trace.
1408    
1409    ----------------------------------------------------------------------
1410    Name: Matthias Blume (blume (at) tti - c (dot) org)
1411    Date: 2004/10/27 17:20:00 CDT
1412    Tag: blume-20041027-x86-c-calls
1413    Description:
1414    
1415    This is the HISTORY entry for two earlier commits, both concerning
1416    the x86 c-calls code in MLRISC:
1417    
1418      - added a missing LOAD in the code that deals with struct arguments
1419      - made sure the caller does not add the wrong number of bytes to the
1420        stack pointer after a call of a function returning a struct
1421        (the callee already pops the implicit argument which points to
1422         the space reserved for the result)
1423    
1424    ----------------------------------------------------------------------
1425    Name: Allen Leung (leunga (at) reservoir (dot) com)
1426    Date: 2004/10/24 14:00:00 EST
1427    Tag: leunga-20041024-x86-gas-fucomip
1428    Description:
1429    
1430       John discovered a bug in the syntax of fucomip.
1431       The opcodes FU?COMIP? have been changed to
1432    
1433           fu?comip? %st(i), %st
1434    
1435    ----------------------------------------------------------------------
1436    Name: Matthias Blume (blume (at) tti - c (dot) org)
1437    Date: 2004/10/20 15:06:00 CDT
1438    Tag: blume-20041020-standalone-backtrace
1439    Description:
1440    
1441    Added a mechanism for getting back-trace information from standalone
1442    programs.  Here is how it works:
1443    
1444       1. The part of the program from which you want to get backtrace
1445          information (usually the whole program) should be wrapped with
1446          BackTrace.monitor.  This is a (unit->'a)->'a function, and your
1447          main program could be modified from something like
1448    
1449             fun main (pgm, args) = ...
1450    
1451         to
1452    
1453            fun main (pgm, args) = BackTrace.monitor (fn () => ...)
1454    
1455       2. To be able to access BackTrace.monitor, you have to add
1456          library $smlnj-tdp/plugins.cm to the .cm file that contains your
1457          main function.
1458    
1459       3. Remove all compiled code (i.e., all the .cm/ subdirectories that
1460          CM might have created in the past for your project).
1461    
1462       4. Build the system using this command line:
1463    
1464             ml-build -Ctdp.instrument=true \$smlnj-tdp/back-trace.cm \
1465                      myprog.cm MyProg.main myprog
1466    
1467          instead of the usual
1468    
1469             ml-build myprog.cm MyProg.main myprog
1470    
1471    I changed a library name:
1472    
1473       $/trace-debug-profile.cm --> $smlnj-tdp/plugins.cm
1474    
1475    New libraries:
1476    
1477       $smlnj-tdp/back-trace.cm
1478          -- when loaded causes the back-trace plugin to be installed
1479       $smlnj-tdp/coverage.cm
1480          -- when loaded causes the coverage plugin to be installed
1481    
1482    ----------------------------------------------------------------------
1483    Name: Matthias Blume (blume (at) tti - c (dot) org)
1484    Date: 2004/10/18 16:45:00 CDT
1485    Tag: blume-20041018-groupowner
1486    Description:
1487    
1488    Added an "obsolete" warning for the "group owner" syntax to CM's parser.
1489    
1490    Eliminated group owner specs from .cm files throughout the source tree.
1491    
1492    ----------------------------------------------------------------------
1493    Name: Matthias Blume (blume (at) tti - c (dot) org)
1494    Date: 2004/10/15 15:45:00 CDT
1495    Tag: blume-20041015-coverage
1496    Description:
1497    
1498    * Test coverage tool added!
1499    * Further reorganization of tracing-, debugging-, and profiling support:
1500    
1501        - moved original BTImp -- now called BackTrace -- into a separate
1502          library called $/trace-debug-profile.cm
1503        - eliminated all mentions of BTrace from SMLofNJ.Internals
1504        - only the instrumentation mechanism is now left in the compiler proper
1505        - BackTrace module is a plugin which is NOT plugged in by default
1506        - Coverage module is another such plugin
1507    
1508    To get the benefits of any of these plugin modules, the code in
1509    question must be compiled with tdp instrumentation turned on.  This
1510    can be done by setting SMLofNJ.Internals.TDP.mode to true.
1511    (The ref cell is also controlled via the -Ctdp.instrument=... switch.)
1512    
1513    Plugins are selected at link time.  (Pre-compiled instrumented code
1514    can be re-loaded with different plugins in effect.)  When an
1515    instrumented module is linked, whatever plugins are at that time
1516    enabled will come into effect for that module.
1517    
1518    To enable the back-trace plugin, load library $/trace-debug-profile.cm
1519    and invoke BackTrace.install() (e.g., from the interactive prompt).
1520    To enable the coverage plugin, load the same library and invoke
1521    Coverage.install().
1522    
1523    Back-traces are generated automatically on uncaught exceptions and
1524    when the code in question explicitly invokes BackTrace.trigger().
1525    
1526    Coverage (and execution frequency-) information must be queried
1527    explicitly by calling Coverage.not_covered and Coverage.hot_spots.
1528    
1529    ----------------------------------------------------------------------
1530    Name: Matthias Blume (blume (at) tti - c (dot) org)
1531    Date: 2004/10/14 17:40:00 CDT
1532    Tag: blume-20041014-tdp-core
1533    Description:
1534    
1535    Snapshot of a significant overhaul of how the trace/debug/profile support
1536    is hooked into the system (specifically: Core and SMLofNJ.Internals).
1537    
1538    ----------------------------------------------------------------------
1539    Name: Matthias Blume (blume (at) tti - c (dot) org)
1540    Date: 2004/10/13 16:34:00 CDT
1541    Tag: blume-20041013-tdp
1542    Description:
1543    
1544    Some rationalization of names:
1545    
1546       structure BTrace -> structure TDPInstrument
1547       etc.
1548    
1549    This is is preparation of using the original back-trace
1550    instrumentation for other purposes.  "TDP" stands for
1551    Trace/Debug/Profile.
1552    
1553    The control flag controlling whether instrumentation is on or off is now
1554    registered under a different name, so instead of running sml as
1555    
1556     sml -Cinstrument.btrace-mode=true
1557    
1558    one has to say
1559    
1560     sml -Ctdp.instrument=true
1561    
1562    ----------------------------------------------------------------------
1563    Name: Matthias Blume (blume (at) tti - c (dot) org)
1564    Date: 2004/10/11 16:37:00 CDT
1565    Tag: blume-20041011-regions
1566    Description:
1567    
1568    Made some minor modifications to elabcore.sml to have source regions
1569    be propagated more tightly -- resulting in better (i.e., smaller)
1570    regions being reported in error- and debug messages.
1571    
1572    ----------------------------------------------------------------------
1573    Name: Matthias Blume (blume (at) tti - c (dot) org)
1574    Date: 2004/10/08 22:50:00 CDT
1575    Tag: blume-20041008-cmkw
1576    Description:
1577    
1578    Fixed handling of keywords in .cm files: After seeing "is" the lexer
1579    treats subsequent occurrences of "group", "library", "source", "is",
1580    "*", and "-" as ordinary identifiers rather than keywords.
1581    
1582    Most seriously, this fixes a problem with CM's "shell" tool.  The tool
1583    is supposed to accept a tool argument called "source", but this did
1584    not work because of the clash with the keyword.
1585    
1586    ----------------------------------------------------------------------
1587    Name: Matthias Blume (blume (at) tti - c (dot) org)
1588    Date: 2004/10/07 16:00:00 CDT
1589    Tag: blume-20041007-cleanup
1590    Description:
1591    
1592    Assorted cleanup work:
1593    
1594      - got rid of intstrmap in favor of using the library's
1595        hash table implementation
1596      - threw out most of the pathnames stuff, as it was not used anyway
1597      - simplified tokentable implementation
1598      - fixed some minor spelling errors
1599    
1600    ----------------------------------------------------------------------
1601    Name: Matthias Blume (blume (at) tti - c (dot) org)
1602    Date: 2004/10/06 15:15:15 CDT
1603    Tag: blume-20041006-handler
1604    Description:
1605    
1606    Cleaned up the absyn to reflect the invariant that HANDLE always
1607    carries a FNexp as part of the type definition.  This eliminates some
1608    superfluous sanity checks at runtime down the road.
1609    
1610    Some minor cleanup of the btrace code.
1611    
1612    ----------------------------------------------------------------------
1613    Name: Matthias Blume (blume (at) tti - c (dot) org)
1614    Date: 2004/10/01 10:20:30 CDT
1615    Tag: blume-20041001-slave
1616    Description:
1617    
1618    Added hack to make slave mode work in the presence of the version
1619    tool.  (Still, since the master does two passes over the code for
1620    CMB.make, the release number gets bumped twice when slaves are
1621    attached.  I don't know if this is worth fixing...)
1622    
1623    ----------------------------------------------------------------------
1624    Name: Matthias Blume (blume (at) tti - c (dot) org)
1625    Date: 2004/09/30 10:55:00 CDT
1626    Tag: blume-20040930-version
1627    Description:
1628    
1629    * Moved the "version" magic into its own little library under
1630      src/system/smlnj/internal.  This avoids expensive reconstruction of
1631      a stable src/compiler/core.cm.
1632    
1633    * At the same time, structure CompilerVersion is now known as
1634      structure SMLNJVersion.
1635    
1636    * Arranged for the version tool to NOT kick in when rebuilding the system
1637      (makeml -rebuild, fixpt).  Otherwise one would never reach a fixpoint.
1638      Also, loading the versiontool does not work when rebuilding the system
1639      because CM is not properly initialized at that time.
1640    
1641    ----------------------------------------------------------------------
1642    Name: Matthias Blume (blume (at) tti - c (dot) org)
1643    Date: 2004/09/29 14:00:00 CDT
1644    Tag: blume-20040929-autoversion
1645    Description:
1646    
1647    Implemented some CM magic to have
1648        file src/compiler/TopLevel/main/version.sml
1649    generated automagically.
1650    The version is taken from two files: config/version and config/release.
1651    The first is expected to contain a two-part version number such as 110.49.
1652    The second should contain a single number, but it may be missing.
1653    
1654    If the environment variable VERSIONTOOL_BUMP_RELEASE is defined at the
1655    time the version tool is loaded (which is the first time you say CMB.make),
1656    then the tool will increment the value stored in config/release every
1657    time CMB.make is invoked.
1658    
1659    The binfile format is now insensitive to anything beyond the first
1660    two components of a version number, so bumping the release does not render
1661    binfiles incompatible.  Auto-bumping can be used to keep track of versions
1662    during development without invalidating existing binfiles.
1663    
1664    In any case, every CMB.make updates the date information in version.sml.
1665    (This is the date that is printed in the banner.)
1666    
1667    ----------------------------------------------------------------------
1668    Name: Matthias Blume (blume (at) tti - c (dot) org)
1669    Date: 2004/09/28 10:53:00 CDT
1670    Tag: blume-20040928-controls
1671    Description:
1672    
1673    Some cleanup of the controls code.
1674    
1675    ----------------------------------------------------------------------
1676    Name: Matthias Blume (blume (at) tti - c (dot) org)
1677    Date: 2004/09/27 22:08:00 CDT
1678    Tag: blume-20040927-controls
1679    Description:
1680    
1681    Added two pieces of functionality to the Controls interface:
1682    
1683    1.   val save'restore: 'a control -> unit -> unit
1684    
1685       grabs the current value of the control in stage 1 and restores it
1686       in stage 2.
1687    
1688    2.   val set' : 'a control * 'a -> unit -> unit
1689    
1690       stores the given value into the control in stage 2 (i.e., delayed)
1691       but does all error checking in stage 1.
1692       (This is for string controls that need to do parse their argument --
1693        something that might fail.  In some cases, notably in CM, one
1694        already knows the intended argument but wants to delay the actual
1695        assignment until a time when error recovery would be more difficult.)
1696    
1697    Changed the handling of controls in tool arguments to classes "sml" and
1698    "lazysml":
1699       - use Controls.save'restore as a more robust way of restoring the
1700         old value (in particular: without having to re-parse the string)
1701       - use controls to handle the "overload" keyword in the init group
1702         (I believe this change actually fixes a long-standing obscure bug.)
1703    
1704    ----------------------------------------------------------------------
1705    Name: Matthias Blume (blume (at) tti - c (dot) org)
1706    Date: 2004/09/27 17:00:00 CDT
1707    Tag: blume-20040927-lazysml
1708    Description:
1709    
1710    Added a new tool class called "lazysml" to CM's tool chest.  The only
1711    difference to "sml" is that compilation is done with Control.lazysml
1712    set to true.  A source of class "lazysml" is automatically recognized
1713    by a file name suffix of ".lml".
1714    
1715    In addition to the above feature, the original class "sml" now also
1716    supports a tool argument "lazy" which has the same effect.  As a
1717    result, the following three lines are equivalent:
1718    
1719        foo.sml : lazysml
1720        foo.sml : sml (lazy)
1721        foo.sml (lazy)
1722    
1723    The setting goes into effect both during parsing and during
1724    compilation.  The original setting is restored right after parsing and
1725    after compilation, respectively.
1726    
1727    In addition to all the above, there is also a general mechanism to set
1728    ANY of the "controls" that are available at the command line via
1729    "-C..." on a per-sml-file basis.  The same rules that apply for "lazy"
1730    apply as well. (In fact, "lazy" is implemented as a special case of
1731    the general mechanism.)
1732    
1733    The .cm file syntax uses a new keyword tool argument called "with".
1734    There are several ways of indicating the desired settings:
1735    
1736        foo.sml (with:parser.quotations=true)
1737        foo.sml (with:(name:parser.quotations value:true))
1738        foo.sml (with:(name:name1 value:value1 name:name2 value:value2 ...))
1739        foo.sml (with:(name1=value1 name2=value2 ...))
1740        foo.sml (with:(name1=value1 name:name2 value:value2 name3=value3 ...))
1741    
1742        etc.
1743    
1744    Another possible abbreviation is to leave out the =v or value:v part
1745    if the name refers to a boolean control (in which case the value is
1746    taken to be true).  Thus, one could get lazy sml also by saying:
1747    
1748        foo.sml (with:parser.lazy-keyword=true)
1749        foo.sml (with:parser.lazy-keyword)
1750        foo.sml (with:(name:parser.lazy-keyword value:true))
1751        foo.sml (with:(name:parser.lazy-keyword))
1752    
1753    ----------------------------------------------------------------------
1754    Name: Matthias Blume (blume (at) tti - c (dot) org)
1755    Date: 2004/09/24 16:22:00 CDT
1756    Tag: blume-20040924-ppc-long-branch
1757    Description:
1758    
1759    Turned message about "emiting long form of branch" off by default.
1760    Added a control flag to turn it back on when desired.
1761    
1762    ----------------------------------------------------------------------
1763    Name: Matthias Blume (blume (at) tti - c (dot) org)
1764    Date: 2004/09/24 16:05:00 CDT
1765    Tag: blume-20040924-rounding
1766    Description:
1767    
1768    Applied patch for setting rounding modes under Mac OS X.  Thanks to
1769    Melissa O'Neill for providing the code!
1770    
1771    ----------------------------------------------------------------------
1772    Name: Matthias Blume (blume (at) tti - c (dot) org)
1773    Date: 2004/09/23 17:30:00 CDT
1774    Tag: blume-20040923-envvars
1775    Description:
1776    
1777    1. Changed definition of type ControlRegistry.registry_tree to
1778       include control_info (i.e., the name of the controlling environment
1779       variable).
1780    
1781    2. Added command-line flags -e and -E to print the names of environment
1782       variables that can be used to control internal settings.
1783       (This uses the new API mentioned in 1.)
1784    
1785    ----------------------------------------------------------------------
1786    Name: Matthias Blume (blume (at) tti - c (dot) org)
1787    Date: 2004/09/13 16:50:00 CDT
1788    Tag: Release_110_49
1789    Description:
1790    
1791    New working version (110.49).  NEW BOOTFILES!
1792    
1793    ----------------------------------------------------------------------
1794    Name: Matthias Blume
1795    Date: 2004/09/13 16:20:00 CDT
1796    Tag: blume-20040913-config-mlrisc
1797    Description:
1798    
1799    Put target "mlrisc" back into the default list.
1800    (There is no harm in having it, and some users have expressed their
1801    wish to have "mlrisc" included by default.)
1802    
1803    ----------------------------------------------------------------------
1804    Name: John Reppy
1805    Date: 2004/09/13
1806    Tag: jhr-20040913-signals
1807    Description:
1808    
1809    Fixed the signal masking code to properly nest mask/unmask operations
1810    on a per-signal basis.
1811    
1812    ----------------------------------------------------------------------
1813    Name: Matthias Blume (blume (at) tti - c (dot) org)
1814    Date: 2004/09/08 13:20:00 CDT
1815    Tag: blume-20040908-heap-magic
1816    Description:
1817    
1818    Bumped the heap macig number to 0x09082004 to account for the changed
1819    layout of the ML frame under MacOS X.
1820    
1821    ----------------------------------------------------------------------
1822    Name: Allen Leung (leunga (at) reservoir (dot) com)
1823    Date: 2004/09/03 11:26:00 EST
1824    Tag: leunga-20040903-cygwin-install
1825    Description:
1826    
1827       Added a patch to _arch-n-opsys to enable the Cygwin runtime.
1828    The Cygwin runtime is turned on by setting the environment
1829    variable SMLNJ_CYGWIN_RUNTIME to 1.
1830    
1831    ----------------------------------------------------------------------
1832    Name: Matthias Blume (blume (at) tti - c (dot) org)
1833    Date: 2004/08/31 17:15:00 CDT
1834    Tag: blume-20040831-core
1835    Description:
1836    
1837    Added some exports to src/compiler/core.cm upon request by J. Joemann.
1838    
1839    ----------------------------------------------------------------------
1840    Name: Matthias Blume (blume (at) tti - c (dot) org)
1841    Date: 2004/08/30 17:55:00 CDT
1842    Tag: blume-20040830-installer
1843    Description:
1844    
1845    Upon request by Johannes Joemann:
1846    
1847    - improved ML code of installer to fall back to coping when renaming
1848      fails (i.e., when source and target are on different file systems);
1849      the code compiles but has yet to be tested in anger
1850    - removed mlrisc from list of default targets (config/targets)
1851    
1852    ----------------------------------------------------------------------
1853    Name: Matthias Blume (blume (at) tti - c (dot) org)
1854    Date: 2004/08/27 17:20:00 CDT
1855    Tag: blume-20040827-ptreql
1856    Description:
1857    
1858    Added ptreql primop to structure InlineT (upon request from Larry
1859    Paulson).
1860    
1861    ----------------------------------------------------------------------
1862    Name: Allen Leung (leunga (at) reservoir (dot) com)
1863    Date: 2004/08/15 21:21:00 EST
1864    Tag: leunga-110_48-udgraph
1865    Description:
1866    
1867    Another bug fix from Carl Hauser:
1868    
1869    diff /net/niflab/smlnj48/src/MLRISC/graphs/udgraph.sml udgraph.sml
1870    > 48c48
1871    > <              | rmv((e as (k,_))::es,L) = rmv(es,if k = i then es else
1872    > e::L)
1873    > ---
1874    > >              | rmv((e as (k,_))::es,L) = rmv(es,if k = i then L else e::L)
1875    > Without this, any deletion of an edge in an undirected graph does severe
1876    > violence to the graph.
1877    
1878    ----------------------------------------------------------------------
1879    Name: Allen Leung (leunga (at) reservoir (dot) com)
1880    Date: 2004/08/10 23:35:00 EST
1881    Tag: leunga-110_48-ppc
1882    Description:
1883    
1884       The IBM/MacOS syntax switch on PPC was incorrectly swapped.
1885    
1886    ----------------------------------------------------------------------
1887    Name: Matthias Blume (blume (at) tti - c (dot) org)
1888    Date: 2004/08/10 12:00:00 CDT
1889    Tag: Release_110_48
1890    Description:
1891    
1892    New working version (110.48).  NEW BOOTFILES!
1893    
1894    ----------------------------------------------------------------------
1895    Name: Allen Leung (leunga (at) reservoir (dot) com)
1896    Date: 2004/08/09 12:21:00 EST
1897    Tag: leunga-110_47-dijsktra
1898    Description:
1899    
1900    Bug fix from Carl Hauser:
1901    
1902    single_source_shortest_paths in dijkstra.sml was observed to get wrong
1903    answers (by comparing to single_source_shortest_paths in bellman-ford.sml).
1904    
1905    The problem is that following the expression A.update(dist,s,Num.zero)
1906    it is necessary to update the priority queue using Q.decreaseWeight(Q,s).
1907    
1908    ----------------------------------------------------------------------
1909    Name: Matthias Blume (blume (at) tti - c (dot) org)
1910    Date: 2004/08/06 18:10:00 CDT
1911    Tag: blume-20040806-cmdline
1912    Description:
1913    
1914    Fiddled with handling of command-line options:
1915    
1916      * sml now quits after processing the command line
1917        if -H, -S, -h<n>, or -s<n> appears as the last
1918        command-line argument
1919      * a new option -q terminates the session when encountered on
1920        the command line; subsequent arguments will be ignored
1921      * bug fixes: short (erroneous) arguments are no longer ignored
1922        completely
1923    
1924    ----------------------------------------------------------------------
1925    Name: Allen Leung (leunga (at) reservoir (dot) com)
1926    Date: 2004/08/04 18:17:00 EST
1927    Tag: leunga-110_47-ppc-ibm-asm
1928    Description:
1929    
1930      - Added minimal IBM assembly syntax support for PowerPC.
1931    
1932      - Cygwin: manually changed the file cygwin.def.  Some exported symbols have
1933        been altered in the runtime.  We need an automatic way to keep the file
1934        in sync.
1935    
1936    ----------------------------------------------------------------------
1937    Name: Matthias Blume (blume (at) tti - c (dot) org)
1938    Date: 2004/08/04 14:00:00 CDT
1939    Tag: Release_110_47
1940    Description:
1941    
1942    New working version (110.47).  NEW BOOTFILES!
1943    
1944    ----------------------------------------------------------------------
1945    Name: Matthias Blume (blume (at) tti - c (dot) org)
1946    Date: 2004/08/03 14:25:00 CDT
1947    Tag: blume-20040803-callingconv
1948    Description:
1949    
1950    Added low-level support for choosing C calling conventions by
1951    twiddling the type of rawccall.  (See
1952    src/compiler/Semant/types/cproto.sml for details.)
1953    
1954    ----------------------------------------------------------------------
1955    Name: Matthias Blume (blume (at) tti - c (dot) org)
1956    Date: 2004/08/02 15:55:00 CDT
1957    Tag: blume-20040802-backout
1958    Description:
1959    
1960    Backed out of change to win32-filesys.c.  The earlier patch to
1961    get_file_time caused CM to produce files with the wrong time stamp.
1962    
1963    ----------------------------------------------------------------------
1964    Name: Matthias Blume (blume (at) tti - c (dot) org)
1965    Date: 2004/08/02 14:45:00 CDT
1966    Tag: blume-20040802-nlffi-win32
1967    Description:
1968    
1969    Added NLFFI support for Win32, adapted from a patch provided by David
1970    Hansel.  This is currently completely untested.  Also, the issue
1971    concerning stdcall vs. ccall is still unresolved.
1972    
1973    ----------------------------------------------------------------------
1974    Name: Matthias Blume (blume (at) tti - c (dot) org)
1975    Date: 2004/07/30 17:55:00 CDT
1976    Tag: blume-20040730-various
1977    Description:
1978    
1979    Gearing up towards 110.47...
1980    
1981    - various minor bugfixes to ml-nlffigen
1982    - a beginning of a manual for nlffi
1983    
1984    - eliminated 'export name=value' in config/install.sh as this does
1985      not work with certain versions of /bin/sh
1986      (Thanks to David King at Motorola for catching this.)
1987    
1988    - several bugfixes provided or suggested by David Hansel at Reactive Systems:
1989      - added a test for tm==NULL to gmtime.c and localtime.c
1990      - applied patch for incorrect GetFileTime under win32
1991      - toSeconds -> toMilliseconds in Win32/win32-process.sml
1992    
1993    ----------------------------------------------------------------------
1994    Name: Matthias Blume (blume (at) tti - c (dot) org)
1995    Date: 2004/07/21 18:20:00 CDT
1996    Tag: blume-20040721-nlffigen
1997    Description:
1998    
1999    - Fixed minor issue in ml-nlffigen: Now generate structure T_foo
2000      for a typedef to an incomplete type, but leave out the "typ" member.
2001      (This is just for consistency.)
2002    - Started to produce what is supposed to become better (i.e., comprehensive)
2003      documentation of what ml-nlffigen does and produces.
2004    
2005    ----------------------------------------------------------------------
2006    Name: Matthias Blume (blume (at) tti - c (dot) org)
2007    Date: 2004/07/14 16:25:00 CDT
2008    Tag: blume-20040714-union
2009    Description:
2010    
2011    Added C_UNION to c-calls/c-types.sml and updated the machinery
2012    (ml-nlffigen, cproto.sml) that conveys C function interface
2013    information to the code generator.
2014    
2015    However, the actual architecture-specific implementation of function
2016    arguments and results that are C unions is still not implemented.
2017    
2018    ----------------------------------------------------------------------
2019    Name: Allen Leung (leunga (at) reservoir (dot) com)
2020    Date: 2004/07/14 14:38:00 EST
2021    Tag: leunga-110_46_1-ppc-lwzu
2022    Description:
2023    
2024        Added these instructions to the PowerPC architecture:
2025        LBZU(X), LHZU(X), LWZU(X),
2026        STWU(X), STFDU, STFSU
2027    
2028        etc...
2029    
2030        Note: I haven't added their instruction encoding into the description.
2031    
2032    ----------------------------------------------------------------------
2033    Name: Allen Leung (leunga (at) reservoir (dot) com)
2034    Date: 2004/07/13 15:04:00 EST
2035    Tag: leunga-110_46_1-ppc-lwarx
2036    Description:
2037    
2038       Added the two instructions LWARX and STWCX to the PowerPC
2039    instruction set.
2040    
2041       A (untested) rewrite of loop-structure.sml.  The old version
2042    is completely broken.
2043    
2044    ----------------------------------------------------------------------
2045    Name: Matthias Blume (blume (at) tti - c (dot) org)
2046    Date: 2004/07/13 13:50:00 CDT
2047    Tag: blume-20040713-nlffi
2048    Description:
2049    
2050    - use paramAlloc to report c-calls with too many arguments
2051      (for PPC version where parameter area is pre-allocated)
2052    - added ccall_maxargspace to machspec (to implement the above)
2053    - made "make" commend in CM's "make" tool configurable
2054    - added option (default: on) for passing the name of the SML/NJ's "bin"
2055      directory to "make"; the call looks like this:
2056    
2057         make <options> SMLNJ_BINDIR=<dir> <target>
2058    
2059      This can be used by the Makefile to, e.g., pick the "right" version
2060      of ml-nlffigen.
2061    - minor code tweaks
2062    
2063    ----------------------------------------------------------------------
2064    Name: Matthias Blume (blume (at) tti - c (dot) org)
2065    Date: 2004/07/12 22:50:00 CDT
2066    Tag: blume-110_46_1-macosx-nlffi
2067    Description:
2068    
2069    NLFFI under Mac OS X now working (sort of).  This is largely untested,
2070    though.
2071    
2072    Note:  1. You have to make a new, clean build of the runtime system.
2073           2. There are new BOOTFILES, you have to use them!
2074              (Doing the bootstrap process yourself would be *very* painful!
2075               If you absolutely have to do it, build the system under
2076               a different architecture and then cross-compile.)
2077    
2078    Version bumped to 110.46.1 to account for runtime data format changes.
2079    
2080    ----------------------------------------------------------------------
2081    Name: Matthias Blume (blume (at) tti - c (dot) org)
2082    Date: 2004/06/18 14:30:00 CDT
2083    Tag: blume-20040618-unix
2084    Description:
2085    
2086    Changed the implementation of structure Unix so that the same stream
2087    is returned every time one of the {text,bin}{In,Out}streamOf functions
2088    is invoked on the same proc.  This is not what the spec currently
2089    says -- although IMO it arguably should.  (See discussion below.)
2090    
2091    ----------------------------------------------------------------------
2092    Name: Matthias Blume (blume (at) tti - c (dot) org)
2093    Date: 2004/06/17 18:15:00 CDT
2094    Tag: Release_110_46
2095    Description:
2096    
2097    New working version (110.46).  NEW BOOTFILES!
2098    
2099    ----------------------------------------------------------------------
2100    Name: Matthias Blume (blume (at) tti - c (dot) org)
2101    Date: 2004/06/17 17:20:00 CDT
2102    Tag: blume-20040617-timer-unix
2103    Description:
2104    
2105    Changed the interface of structures Timer and Unix to match the most
2106    recent Basis spec.
2107    
2108    In the case of Unix there still seems to be an open/weird issue:
2109    
2110       The {text,bin}{In,Out}streamOf functions are supposed to create
2111       fresh streams whenever they are called -- as opposed to have them
2112       return the same stream every time.  This design is supposed to
2113       prevent space leaks caused by proc values hanging on to streams.
2114    
2115       The reap function, on the other hand, is supposed to close the
2116       streams.  This cannot be done without having a handle on the
2117       stream in proc after all...
2118    
2119    I took the liberty to implement the following stopgap solution:
2120    
2121      The proc value hangs on to the most recently created stream(s).
2122      Reap closes those.  If either or both of the two streams hadn't
2123      been created at all yet, then reap will close the corresponding
2124      file descriptors directly.
2125    
2126    PS: I don't understand the original space leak argument anymore.  If
2127    a proc hangs on to the imperative stream, then I/O operations on those
2128    will advance the state of the cached stream and avoid the space leak.
2129    
2130    ----------------------------------------------------------------------
2131    Name: Matthias Blume (blume (at) tti - c (dot) org)
2132    Date: 2004/05/28 16:45:00 CDT
2133    Tag: blume-20040528-basis
2134    Description:
2135    
2136    Added signature PACK_REAL and exported functor PrimIO.
2137    
2138    ----------------------------------------------------------------------
2139    Name: Matthias Blume (blume (at) tti - c (dot) org)
2140    Date: 2004/05/25 16:00:00 CDT
2141    Tag: blume-20040525-group-owner
2142    Description:
2143    
2144    CM now ignores (but still accepts) the "owner" information in group
2145    descriptions.  The owner of a group is its next enclosing
2146    library. Each group must have a unique owner.  (There is a virtual
2147    "toplevel" library that owns groups which are not nested within a real
2148    library.)  Previously, each group had to explicitly declare its owner,
2149    and CM would check that such a declaration is correct.  The new scheme
2150    is to have CM check that for each group there is precisely one owning
2151    library.
2152    
2153    The advantage of the new scheme is that the programmer no longer needs
2154    to maintain the somewhat annoying owner information.  The downside is
2155    that CM cannot enforce the ownership rule across multiple runs of
2156    CM.make.  Fortunately, enclosing the same group in two different
2157    libraries A and B which are not part of the same program does not
2158    cause real problems.
2159    
2160    ----------------------------------------------------------------------
2161    Name: Matthias Blume (blume (at) tti - c (dot) org)
2162    Date: 2004/05/20 16:00:00 CDT
2163    Tag: blume-20040520-win32
2164    Description:
2165    
2166    Made the win32 version work again.  (Strangely, a misplaced comma had
2167    slipped into win32-process.c which prevented the runtime from being
2168    compiled correctly.)
2169    
2170    Also, included a minor addition to ml-build.bat analogous to what was
2171    done in blume-20040519-ml-build.
2172    
2173    ----------------------------------------------------------------------
2174    Name: Matthias Blume (blume (at) tti - c (dot) org)
2175    Date: 2004/05/19 22:10:00 CDT
2176    Tag: blume-20040519-ml-build
2177    Description:
2178    
2179    Arranged for ml-build to clean up after itself a little bit better.
2180    The script generates a temporary SML source file and compiles it using
2181    CM, so CM generates metadata (GUID, SKEL, objectfile) for it.  It now
2182    gets rid of those at the end, so they don't accumulate under .cm.
2183    
2184    This required a minor change to install.sh because the name of the
2185    metadata directory (default: .cm) is actually configurable at
2186    installation time.
2187    
2188    ----------------------------------------------------------------------
2189    Name: Matthias Blume (blume (at) tti - c (dot) org)
2190    Date: 2004/05/18 15:50:00 CDT
2191    Tag: blume-20040518-mkreader
2192    Description:
2193    
2194    Added Posix.IO.mk{Bin,Text}{Reader,Writer} by lifting their respective
2195    implementations from internal modules PosixBinPrimIO and PosixTextPrimIO.
2196    
2197    ----------------------------------------------------------------------
2198    Name: Matthias Blume (blume (at) tti - c (dot) org)
2199    Date: 2004/05/11 14:35:00 CDT
2200    Tag: blume-20040511-win32sock
2201    Description:
2202    
2203    Added previously missing support for many socket-related functions
2204    under win32.  Thanks to David Hansel <hansel@reactive-systems.com>
2205    for the voluminous patch!
2206    
2207    (I have not tested this patch under win32 yet.)
2208    
2209    Here is David's e-mail:
2210    
2211    Hi,
2212    
2213    Attached to this email you find a diff against sml/nj 110.45
2214    that will enable socket support under Windows.
2215    
2216    To apply the patch (using unix or cygwin)
2217    1) gunzip runtime.diff.gz
2218    2) "cd" into "src/runtime" in the source tree of a fresh
2219       110.45 installation.
2220    3) patch -p 1 < [your/path/to]runtime.diff
2221    
2222    The code compiles fine but has NOT yet been extensively tested.
2223    I only ran a few tests for basic socket client functionality
2224    (which worked fine).  Especially the functions that use ioctl
2225    are not tested at all and might not work (see below).
2226    
2227    I implemented this since we want to move to a newer version of sml/nj
2228    but need socket support in order to use it.  This is the first time I
2229    even had a look at the sml/nj source,  so please review my changes
2230    before making this part of the distribution!  Here are a few issues
2231    that I think might be better for someone to solve who is more
2232    familiar with the sml/nj source (and socket programming):
2233    
2234    - getnetbyaddr.c and getnetbyname.c will raise a "not implemented"
2235      exception since I could not figure out what the windows equivalent
2236      of these functions is
2237    
2238    - In sockets-osdep.h there are a some #include statements that are
2239      only used in a few files that include sockets-osdep.h
2240    
2241    - In smlnj-sock-lib.c, function init_fn() calls WSAStartup() but
2242      does not process its return value since I don't know how to
2243      report an error upwards.
2244    
2245    - It would probably be good to have a call to WSACleanup() when
2246      the library is unloaded (if there is such a possibility).
2247      Otherwise I think Windows will take care of this automatically
2248      when the process finishes.
2249    
2250    - I used ioctlsocket() as a replacement for ioctl() but I have
2251      no idea if that is actually the proper replacement on Windows.
2252    
2253    - All these issues are marked in the code by "FIXME" comments.
2254    
2255    We use sml/nj extensively in our products and are quite happy
2256    with it.  I hope this contribution will help you.
2257    
2258    Keep up the good work!
2259    
2260    David
2261    
2262    ----------------------------------------------------------------------
2263    Name: Matthias Blume (blume (at) tti - c (dot) org)
2264    Date: 2004/05/11 14:20:00 CDT
2265    Tag: blume-20040511-installml
2266    Description:
2267    
2268    Fixed two bugs in installml script.  (Thanks to Vesa A. Norrman for
2269    the patch.)
2270    
2271    ----------------------------------------------------------------------
2272    Name: Matthias Blume (blume (at) tti - c (dot) org)
2273    Date: 2004/05/11 14:05:00 CDT
2274    Tag: blume-20040511-nlffi-netbsd
2275    Description:
2276    
2277    Added support for nlffi under netbsd.  (Thanks to Vesa A. Norrman for
2278    the patch.)
2279    
2280    ----------------------------------------------------------------------
2281    Name: Matthias Blume (blume (at) tti - c (dot) org)
2282    Date: 2004/05/11 12:05:00 CDT
2283    Tag: blume-20040511-exports
2284    Description:
2285    
2286    As per request by Adam Chlipala <adam@hcoop.net>, extended various
2287    export lists in compiler-related .cm-files.
2288    
2289    ----------------------------------------------------------------------
2290    Name: Matthias Blume (blume (at) tti - c (dot) org)
2291    Date: 2004/05/11 11:35:00 CDT
2292    Tag: blume-20040511-allsource
2293    Description:
2294    
2295    The installer now honors the "src-smlnj" target again, although its meaning
2296    has changed from "all sources required for the compiler" to "all sources
2297    the installer knows about".  In other words, if you enable "src-smlnj"
2298    in the "targets" file, then the installer will pull in sources for
2299    everything.  (Notice that this refers to source code only.  Compiled
2300    code is still only installed for modules that were requested explicitly
2301    or which are required for other modules that were requested explicitly.)
2302    
2303    ----------------------------------------------------------------------
2304    Name: Matthias Blume (blume (at) tti - c (dot) org)
2305    Date: 2004/04/23 17:40:00 CDT
2306    Tag: blume-20040423-ieee-scan
2307    Description:
2308    
2309    Fixed IEEEReal.scan (and .fromString) so that if there is an overflow
2310    in the exponent calculation we get INF or ZERO (depending on the mantissa
2311    and the sign of the exponent).
2312    
2313    ----------------------------------------------------------------------
2314    Name: Matthias Blume (blume (at) tti - c (dot) org)
2315    Date: 2004/04/23 10:40:00 CDT
2316    Tag: blume-20040423-ml-build
2317    Description:
2318    
2319    The ml-build script now terminates with a non-0 status when something
2320    goes wrong.
2321    
2322    ----------------------------------------------------------------------
2323    Name: Matthias Blume (blume (at) tti - c (dot) org)
2324    Date: 2004/04/22 16:35:00 CDT
2325    Tag: blume-20040422-Option
2326    Description:
2327    
2328    Made exception Option to be the same as exception Option.Option
2329    (as it should be).
2330    
2331    ----------------------------------------------------------------------
2332    Name: Allen Leung (leunga (at) reservoir (dot) com)
2333    Date: 2004/03/19 14:40:00 EST
2334    Tag: leunga-20040319-cygwin-nlffi
2335    Description:
2336    
2337    Fixed the runtime so that ml-nlffi-lib runs on the cygwin version
2338    of SML/NJ.  The problem is that
2339    
2340       lib = dlopen(NULL, ...)
2341       f   = dlsym(lib, "malloc");
2342    
2343    does not work on Windows unless we explicitly export symbols
2344    such as 'malloc' during linking.  We fixed this by explicitly
2345    exporting the required symbols with the magic gcc incantation:
2346    
2347        -Wl,--export-all cygwin.def
2348    
2349    where cygwin.def is a file containing all the symbols that
2350    we wish to export.
2351    
2352    I suspect this is a Windows problem and we'll have to
2353    do the same (somehow with windows compilers) when
2354    we build the native win32 version with the system
2355    calls LoadLibrary/GetProcAddress.
2356    
2357    ----------------------------------------------------------------------
2358    Name: Matthias Blume (blume (at) tti - c (dot) org)
2359    Date: 2004/03/04 16:35:00 CST
2360    Tag: blume-20040304-intinf-fmt
2361    Description:
2362    
2363    Fixed problem with IntInf.fmt (sign would show up on the right instead
2364    of on the left for BIN, OCT, and HEX).
2365    
2366    ----------------------------------------------------------------------
2367    Name: Matthias Blume (blume (at) tti - c (dot) org)
2368    Date: 2004/03/04 11:25:00 CST
2369    Tag: blume-20040304-symlinks
2370    Description:
2371    
2372    Fixed problem with installer script (unix only) where bin/ml-yacc and
2373    friends pointed (via symlinks) to absolute locations instead of just
2374    .run-sml.  This was reported by Vesa A Norrman.
2375    
2376    ----------------------------------------------------------------------
2377    Name: Matthias Blume (blume (at) tti - c (dot) org)
2378    Date: 2004/02/13 14:50:00 CST
2379    Tag: Release_110_45
2380    Description:
2381    
2382    New working version (110.45). New bootfiles.
2383    
2384    ----------------------------------------------------------------------
2385    Name: Matthias Blume (blume (at) tti - c (dot) org)
2386    Date: 2004/01/26 15:15:15 CST
2387    Tag: blume-20040126-toplevel
2388    Description:
2389    
2390    Improved handling of exceptions at the interactive toplevel.
2391    
2392    ----------------------------------------------------------------------
2393    Name: Matthias Blume (blume (at) tti - c (dot) org)
2394    Date: 2004/01/26 11:25:00
2395    Tag: blume-20040126-app
2396    Description:
2397    
2398    Type of top-level "app" corrected.
2399    Added code for setting vp_limitPtrMask to Win32-specific runtime.
2400    
2401    ----------------------------------------------------------------------
2402    Name: Matthias Blume (blume (at) tti - c (dot) org)
2403    Date: 2003/11/18 17:10 CST
2404    Tag: blume-20031118-basis-fiddle
2405    Description:
2406    
2407    - changed Timer interface to what might become the spec
2408    - POSIX_FLAGS -> BIT_FLAGS according to spec
2409    - some other minor discrepancies wrt. spec eliminated
2410    
2411    ----------------------------------------------------------------------
2412    Name: Matthias Blume (blume (at) tti - c (dot) org)
2413    Date: 2003/11/06 12:00:00 CST
2414    Tag: Release_110_44
2415    Description:
2416    
2417    New working version (110.44). New bootfiles.
2418    
2419    ----------------------------------------------------------------------
2420    Name: Matthias Blume (blume (at) tti - c (dot) org)
2421    Date: 2003/11/04 11:50:00 CST
2422    Tag: blume-20031104-move-libraries
2423    Description:
2424    
2425    Eliminated the "dont_move_libraries" directive in config/targets.
2426    (The mechanism was broken and could not be fixed easily.  Moreover,
2427    there does not seem to be any reason not to move all libraries into
2428    lib during installation.  I originally implemented this directive as a
2429    backward-compatibility feature when I first introduced the new CM.
2430    Now that things have been stable for a long time and going back to the
2431    old CM is not an option, there is no reason to keep it around.)
2432    
2433    ----------------------------------------------------------------------
2434    Name: Matthias Blume (blume (at) tti - c (dot) org)
2435    Date: 2003/11/03 16:00:00 CST
2436    Tag: blume-20031103-installdir
2437    Description:
2438    
2439    Made installer honor INSTALLDIR variable again.  (Thanks to Chris
2440    Richards for pointing out the problem and providing the solution.)
2441    
2442    ----------------------------------------------------------------------
2443    Name: Matthias Blume (blume (at) tti - c (dot) org)
2444    Date: 2003/10/01 17:05:00 CDT
2445    Tag: blume-20031001-lal-mlrisc
2446    Description:
2447    
2448    MLRISC bug fix from Lal.
2449    
2450    ----------------------------------------------------------------------
2451    Name: Matthias Blume (blume (at) tti - c (dot) org)
2452    Date: 2003/09/30 16:10:00 CDT
2453    Tag: blume-20030930-primio-bat
2454    Description:
2455    
2456    1. Added openVector, nullRd, and nullWr to PRIM_IO.
2457    2. Improved .bat files (for Win32 port) to make things work under Win95.
2458       (thanks to Aaron S. Hawley for this one)
2459    
2460    ----------------------------------------------------------------------
2461    Name: Matthias Blume (blume (at) tti - c (dot) org)
2462    Date: 2003/09/26 16:05:00 CDT
2463    Tag: blume-20030926-wrappriv
2464    Description:
2465    
2466    Added missing wrapper for privilege "primitive" in $smlnj/viscomp/core.cm.
2467    
2468    ----------------------------------------------------------------------
2469    Name: Matthias Blume (blume (at) tti - c (dot) org)
2470    Date: 2003/09/26 15:00:00 CDT
2471    Tag: blume-20030926-110_43_3
2472    Description:
2473    
2474    - additional cleanup
2475    - version number bump, NEW BOOTFILES
2476    
2477    ----------------------------------------------------------------------
2478    Name: Matthias Blume (blume (at) tti - c (dot) org)
2479    Date: 2003/09/26 12:00:00 CDT
2480    Tag: blume-20030926-ppautoload
2481    Description:
2482    
2483    I modified the read-eval-print loop so that the autoloader gets
2484    invoked whenever the prettyprinter tries to look up a symbol that
2485    is not currently defined in the toplevel environment but which
2486    appears in CM's autoload registry.  As a result, we see far fewer of
2487    those ?.Foo.Bar.xxx names in the prettyprinter's output.
2488    
2489    In addition to this I tried to clean up some pieces of the Basis
2490    implementation (e.g., Socket, Word8Array) in order to prevent other
2491    instances of these ?.Foo.Bar.xxx names from being printed.
2492    
2493    The mechanism that picks names for types still needs some work, though.
2494    (Right now it seems that if there is a type A.t which is defined to
2495    be B.u, but B is unavailable at toplevel, then A.t gets printed as
2496    "?.B.u" although the perhaps more sensible solution would be to use
2497    "A.t" in this case.  In other words, the prettyprinter should follow
2498    a chain of DEFtycs not farther than there are corresponding toplevel
2499    names in the current environment.)
2500    
2501    ----------------------------------------------------------------------
2502    Name: Matthias Blume (blume (at) tti - c (dot) org)
2503    Date: 2003/09/24 16:31:00 CDT
2504    Tag: blume-20030924-installer
2505    Description:
2506    
2507    Another installer tweak:  All the ML code for the installer is now
2508    compiled during CMB.make and put into a little library called
2509    $smlnj/installer.cm.  The installation then simply invokes
2510    
2511       sml -m $smlnj/installer.cm
2512    
2513    and everything happens automagically.
2514    
2515    Win32:  ML code senses value of environment variable SMLNJ_HOME.
2516    Unix:   ML code senses values of environment variables ROOT, CONFIGDIR,
2517            and BINDIR.
2518    
2519    The new scheme guarantees that the ML code responsible for the installation
2520    is in sync with the APIs of the main system.  Also, the installer is
2521    somewhat faster because the installer script is precompiled.
2522    
2523    ----------------------------------------------------------------------
2524    Name: Matthias Blume (blume (at) tti - c (dot) org)
2525    Date: 2003/09/24 15:35:00 CDT
2526    Tag: blume-20030924-synsock
2527    Description:
2528    
2529    Added a signature SYNCHRONOUS_SOCKET to basis.cm.  This is like SOCKET
2530    but excludes all non-blocking operations.  Defined SOCKET (in Basis)
2531    and CML_SOCKET in terms of SYNCHRONOUS_SOCKET.  Removed superfluous
2532    implementations of non-blocking operations from CML's Socket
2533    structure.
2534    
2535    ----------------------------------------------------------------------
2536    Name: Matthias Blume (blume (at) tti - c (dot) org)
2537    Date: 2003/09/24 15:10:05 CDT
2538    Tag: blume-20030924-sockets
2539    Description:
2540    
2541    1. Fixed SOCKET API and implementation to match Basis spec.
2542       This required changing the internal representation of sockets to one
2543       that remembers (for each socket file descriptor) whether it is currently
2544       blocking or non-blocking.  This state is maintained lazily (i.e., a system
2545       call is made only if the state actually needs to change).
2546    
2547    2. OS-specific details of sockets were moved into separate files, thus
2548       making it possible to unify the bulk of the socket implementations
2549       between Unix and Win32.
2550    
2551    3. CML's socket API changed accordingly.
2552       (Note that we need to remove non-blocking functions from this API
2553       since they are redundant in the case of CML!)
2554    
2555    4. CML's socket implementation now makes use of non-blocking functions
2556       provided by Basis, thus removing all OS-dependent code from this part
2557       of CML.
2558    
2559    5. Changed Real64.precision from 52 to 53.  Minor cleanup in Real64 code.
2560    
2561    ----------------------------------------------------------------------
2562    Name: Matthias Blume (blume (at) tti - c (dot) org)
2563    Date: 2003/09/22 12:10:00 CDT
2564    Tag: blume-20030922-110_43_2
2565    Description:
2566    
2567    Made a new interim version and bootfiles for developer's bootstrapping
2568    convenience.
2569    
2570       110.43.2 -- NEW BOOTFILES
2571    
2572    ----------------------------------------------------------------------
2573    Name: Matthias Blume (blume (at) tti - c (dot) org)
2574    Date: 2003/09/19 15:55:00 CDT
2575    Tag: blume-20030919-cmdir
2576    Description:
2577    
2578    1. new-install.sh -> install.sh
2579    2. changed default CM "metadata" directory name to ".cm" (instead of "CM")
2580    3. tweaked installer so that another name instead of .cm can be chosen
2581       at install time (by setting the CM_DIR_ARC environment variable
2582       during installation); once installation is complete, the name is
2583       fixed
2584    
2585    ----------------------------------------------------------------------
2586    Name: Matthias Blume (blume (at) tti - c (dot) org)
2587    Date: 2003/09/18 16:00:00 CDT
2588    Tag: blume-20030918-110_43_1
2589    Description:
2590    
2591    Made a new interim version and bootfiles for developer's bootstrapping
2592    convenience.
2593    
2594       110.43.1 -- NEW BOOTFILES
2595    
2596    ----------------------------------------------------------------------
2597    Name: Matthias Blume (blume (at) tti - c (dot) org)
2598    Date: 2003/09/18 15:20:00 CDT
2599    Tag: blume-20030918-misc
2600    Description:
2601    
2602    1. Exported fractionsPerSecond etc. from TimeImp (but not from Time as
2603       this seems to be controversial at the moment) and used those in
2604       Posix.ProcEnv.times.
2605    
2606    2. Added Time.{from,to}Nanoseconds to Time.
2607    
2608    3. Improved Real.{from,to}LargeInt by avoiding needless calculations.
2609       For example, fromLargeInt never needs to look at more than 3 "big
2610       digits" to get its 53 bits of precision.
2611    
2612    ----------------------------------------------------------------------
2613    Name: Matthias Blume (blume (at) tti - c (dot) org)
2614    Date: 2003/09/17 16:30:00 CDT
2615    Tag: blume-20030917-real32-slices
2616    Description:
2617    
2618    Added an entry to the primitive environment
2619    (compiler/Semant/statenv/prim.sml) for int32->real64 conversion and
2620    added code to compiler/CodeGen/main/mlriscGen.sml to implement it.
2621    
2622    Removed some of the "magic" constants in real64.sml and replaced them
2623    with code that generates these values from their corresponding
2624    integer counterparts.
2625    
2626    Made all(?) the slice-related changes to the Basis and made everything
2627    compile again...
2628    
2629    ----------------------------------------------------------------------
2630    Name: Matthias Blume (blume (at) tti - c (dot) org)
2631    Date: 2003/09/15 17:45:00 CDT
2632    Tag: blume-20030915-rbase
2633    Description:
2634    
2635    Fixed bug in Real.fromLargeInt.
2636    
2637    ----------------------------------------------------------------------
2638    Name: Matthias Blume (blume (at) tti - c (dot) org)
2639    Date: 2003/09/13 18:11:00 CDT
2640    Tag: blume-20030913-libinstall
2641    Description:
2642    
2643    Minor bugfix in config/libinstall (set anchor with path to
2644    standalone tool after installing it, otherwise libraries that
2645    need ml-lex or ml-yacc won't compile the first time the installer
2646    runs).
2647    
2648    ----------------------------------------------------------------------
2649    Name: Matthias Blume (blume (at) tti - c (dot) org)
2650    Date: 2003/09/12 11:45:00 CDT
2651    Tag: blume-20030912-various
2652    Description:
2653    
2654     - fixed bug in Real.toLargeInt
2655     - fixed bug in Posix.ProcEnv.times
2656     - changed inputLine functions to return an option
2657     - minor installer improvements / bugfixes
2658     - changed default @SMLalloc parameter for x86/celeron to 64k
2659    
2660    ----------------------------------------------------------------------
2661    Name: Matthias Blume (blume (at) tti - c (dot) org)
2662    Date: 2003/09/09 22:00:00 CDT
2663    Tag: Release_110_43
2664    Description:
2665    
2666        New working release 110.43.  New bootfiles.
2667    
2668    ----------------------------------------------------------------------
2669    Name: Matthias Blume (blume (at) tti - c (dot) org)
2670    Date: 2003/09/09 19:20:00 CDT
2671    Tag: blume-20030909-installer
2672    Description:
2673    
2674    Rewrote large parts of config/install.sh in SML (config/libinstall.sml).
2675    Modified config/install.bat to take advantage of it.  Also modified
2676    config/install.sh (and called it config/new-install.sh) to take advantage
2677    of it on Unix systems.  (The SML code is (supposed to be) platform-
2678    independent.)
2679    
2680    The installer can now install everything under Win32
2681    as well as under *nix as long as it compiles.
2682    
2683    Other changes:
2684    
2685      - made CML compile again under Win32
2686      - made eXene compile under Win32 (by providing a fake structure UnixSock
2687        and by using OS.Process.getEnv instead of Posix.ProcEnv.getenv)
2688      - fixed a bug in nowhere: it assumed that type OS.Process.status is the
2689        same as type int;  under Win32 it isn't
2690      - fixed some slice-related problems in the win32-specific parts of CML
2691      - added a functor argument "sameVol" to os-path-fn.sml in the Basis
2692        (under Win32, the volume name is case-insensitive, and the
2693        OS.Path code compares volume names for equality)
2694    
2695    ----------------------------------------------------------------------
2696    Name: Matthias Blume (blume (at) tti - c (dot) org)
2697    Date: 2003/09/08 11:55:00 CDT
2698    Tag: blume-20030908-fullpath
2699    Description:
2700    
2701    Made Win32 version of OS.FileSys.fullPath return current directory
2702    when given an empty string.  This is what the spec says, and incidentally,
2703    CM depends on it.  (CM otherwise goes into an infinite loop in certain
2704    cases when presented with the name of a non-existing .cm file.)
2705    
2706    ----------------------------------------------------------------------
2707    Name: Matthias Blume (blume (at) tti - c (dot) org)
2708    Date: 2003/09/04 16:30:00 CDT
2709    Tag: blume-20030905-slices-etc
2710    Description:
2711    
2712      1. Changed interface to vectors and arrays in Basis to match
2713         (draft) Basis spec.
2714      2. Added signatures and implementations of slices according to
2715         Basis spec.
2716      3. Edited source code throughout the system to make it compile again
2717         under 1. and 2.  (In some cases code had to be added to have it
2718         match the new signatures.)
2719      4. MLRISC should be backward-compatible: the copies of the originals
2720         of files that needed to change under 3. were retained, the .cm files
2721         check the compiler version number and use old versions when
2722         appropriate.
2723      5. Changed type of OS.FileSys.readDir and Posix.FileSys.readdir to
2724         dirstream -> string option (in accordance with Basis spec).
2725      6. When generating code that counts lines, ml-lex used function
2726         CharVector.foldli, taking advantage of its old interface.
2727         This has been replaced with the corresponding code from
2728         CharVectorSlice.  (html-lex must be re-lexed!)
2729      7. BitArray in smlnj-lib/Util has been extended/modified to match the
2730         new MONO_ARRAY signature.  (Do we need BitArraySlice?)
2731      8. Removed temporary additions (fromInternal, toInternal) from the
2732         (now obsolete) IntInf in smlnj-lib/Util.
2733      9. Cleaned up structure Byte.
2734     10. Added localOffset, scan, and fromString to Date (according to spec).
2735         Cleaned/corrected implementation of Date.
2736         (Still need to check for correctness; implement better canonicalizeDate.)
2737     11. Added "scan" to signature IEEE_REAL.
2738     12. Some improvements to IntInf [in particular: efficiency-hack for
2739         mod and rem when second operand is 2 (for parity checks).]
2740     13. Changed representation of type Time.time, using a single IntInf.int
2741         value counting microseconds.  This considerably simplified the
2742         implementation of structure Time.  We now support negative time
2743         values; scan and fromString handle signs.
2744     14. Functor PrimIO now takes two additional arguments (VectorSlice and
2745         ArraySlice).
2746    
2747    ----------------------------------------------------------------------
2748    Name: Matthias Blume (blume (at) tti - c (dot) org)
2749    Date: 2003/08/28 17:00:00 CDT
2750    Tag: blume-20030828-intinf
2751    Description:
2752    
2753    This is a major update which comes with a version number bump
2754    (110.42.99 -- yes, we are really close to 110.43 :-), NEW BOOTFILES,
2755    and an implementation of IntInf in the Basis.
2756    
2757    There are a fairly large number of related changes and updates throughout
2758    the system:
2759    
2760    Basis:
2761            - Implemented IntInf.
2762            - Made LargeInt a projection of IntInf (by filtering through INTEGER).
2763            - Added some missing Real64 operations, most notably Real.toLargeInt.
2764            - Added FixedInt as a synonym for Int32.
2765    
2766    compiler:
2767            * Added support for a built-in intinf type.
2768              - literals
2769              - pattern matching
2770              - conversion shortcuts (Int32.fromLarge o Int.toLarge etc.)
2771              - overloading on literals and operations
2772    
2773            This required adding a primitive type intinf, some additional
2774            primops, and implementations for several non-trivial intinf
2775            operations in Core.  (The intinf type is completely abstract
2776            to the compiler; all operations get delegated back to the Core.)
2777    
2778            * Intinf equality is handled by polyequal.  However, the compiler
2779            does not print its usual warning in this case (since polyequal
2780            is the right thing to do there).
2781    
2782            * Improved the organization of structure InlineT.
2783    
2784            * A word about conversion primops:
2785            If conversions involving intinf do not cancel out during
2786            CPS contract, then the compiler must insert calls to Core functions.
2787            Since all core access must be resolved already during the FLINT
2788            translate phase, it would be too late a the time of CPS contract
2789            to add new Core calls.  For this reason, conversion primops
2790            for intinf carry two arguments:  1. the numeric argument that
2791            they are supposed to convert, and 2. the Core function that
2792            can help with this conversion if necessary.  If CPS contract
2793            eliminates a primop, then the associated Core function becomes
2794            dead and goes away.  Intinf conversion primops that do not get
2795            eliminated by CPS contract get rewritten into calls of their
2796            core functions by a separate, new phase.
2797    
2798    interactive system:
2799            - Control.Print.intinfDepth controls max length of intinf constants
2800            being printed. (Analogous to Control.Print.stringDepth.)
2801            - Cleanup in printutil and pputil: got rid of unused stuff and
2802            duplicates; replaced some of the code with code that makes better
2803            use of library functionality.
2804    
2805    CM:
2806            Bugfix: parse-errors in init group (system/smlnj/init/init.cmi)
2807            are no longer silent.
2808    
2809    CKIT:
2810            Fixed mismatched uses of Int32 and LargeInt.  I always decided
2811            in favor of LargeInt -- which is now the same as IntInf.
2812            CKIT-knowledgable people should check whether this is what's
2813            intended and otherwise change things back to using Int32 or
2814            FixedInt.
2815    
2816    Throughout the code:
2817            Started using IntInf.int literals and built-in operations
2818            (e.g., comparison with 0) where this seems appropriate.
2819    
2820    
2821    ----------------------------------------------------------------------
2822    Name: Dave MacQueen (dbm@cs.uchicago.edu)
2823    Date: 2003/08/13 11:36:00 CDT
2824    Tag: dbm-20030813-mcz-merge1
2825    Description:
2826    
2827    Merging changes from the mcz-branch development branch into trunk.
2828    These changes involve replacement of the emulated old prettyprinter
2829    interface with direct use of the SML/NJ Lib PP library, and fixing
2830    of a couple of bugs (895, 1186) relating to error messages.  A new
2831    prettyprinter for ast datatypes (Elaborator/print/ppast.{sig,sml})
2832    has been added.
2833    
2834    ----------------------------------------------------------------------
2835    Name: Matthias Blume (blume (at) tti - c (dot) org)
2836    Date: 2003/08/11 15:45:00 CDT
2837    Tag: blume-20030811-windows
2838    Description:
2839    
2840    Version number bumped to 110.42.9.  NEW BOOTFILES!!!
2841    
2842        http://smlnj.cs.uchicago.edu/dist/working/110.42.9/
2843    
2844    This patch restores SML/NJ's ability to run under win32.  There are a
2845    number of changes, including fixes for several bugs that had gone
2846    unnoticed until now:
2847    
2848      - uname "CYGWIN_NT*" is recognized as win32 (This is relevant only when
2849        trying to run the win32 version from within cygwin.)
2850    
2851      - There are a number of simple .bat scripts that substitute for their
2852        corresponding Unix shell-scripts.  (See below.)
2853    
2854      - The internals of ml-build have been modified slightly.  The main
2855        difference is that instead of calling ".link-sml" (or link-sml.bat)
2856        using OS.Process.system, the ML process delegates this task back
2857        to the script.  Otherwise problems arise in mixed environments such
2858        as Cygwin where scripts look and work like Unix scripts, but
2859        where OS.Process.system cannot run them.
2860    
2861      - In CM, the srcpath pickler used native pathname syntax -- which
2862        is incorrect in the case of cross-compilation.  The new pickle format
2863        is independent of platform-specific naming conventions.
2864    
2865      - Path configuration files (such as lib/pathconfig) can now choose
2866        between native and standard syntax.  Placing a line of the form
2867    
2868            standard!
2869    
2870        into the file causes all subsequent paths to be interpreted using
2871        CM standard pathname syntax (= Unix conventions); a line
2872    
2873            native!
2874    
2875        switches back to native style.  This was needed so that
2876        path config files can be written portably, see src/system/pathconfig.
2877    
2878      - Runtime system:
2879    
2880          - win32-filesys.c:  get_file_time and set_file_time now
2881            access modification time, not creation time.
2882    
2883          - I/O code made aware of new array representation.
2884    
2885          - Bug fixes in X86.prim.masm.
2886    
2887       - src/system/makeml made aware of win32. (For use under cygwin
2888            and other Unix-environments for windows.)
2889    
2890       - In Basis, fixed off-by-one error in win32-io.sml (function vecF)
2891         which caused BinIO.inputAll to fail consistently.
2892    
2893    .bat scripts:
2894    
2895       Windows .bat scripts assume that SMLNJ_HOME is defined.
2896    
2897       - sml.bat, ml-yacc.bat, ml-lex.bat:  Driver scripts for standalone
2898         applications (sml, ml-yacc, ml-lex).
2899       - ml-build.bat: analogous to ml-build.
2900       - config\install.bat:  Analogous to config/install.sh.  This requires
2901         that SMLNJ_HOME is set and that Microsoft Visual C is ready to use.
2902         (nmake etc. must be on the path, and vcvars32 must have been run.)
2903         Moreover, sources for ml-lex and ml-yacc need to exist under src,
2904         and the bootfile hierarchy must have been unpacked under
2905         sml.boot.x86-win32.
2906         The script is very primitive and does a poor job at error checking.
2907         It only installs the base system, ml-lex, and ml-yacc.  No other
2908         libraries are being installed (i.e., you get only those that
2909         are part of the compiler.)
2910       - link-sml.bat:  analogous to .link-sml, but not currently used
2911    
2912    Unrelated bug fixes:
2913    
2914      - ml-nlffigen now exports structures ST_* corresponding to incomplete
2915        types.
2916      - Added getDevice to PP/src/pp-debug-fn.sml.  (Would not compile
2917        otherwise.)
2918    
2919    ----------------------------------------------------------------------
2920    Name: Dave MacQueen (macqueen@cs.uchicago.edu)
2921    Date: 2003/06/17
2922    Tag: macqueen-20030617-bug895
2923    Description:
2924    
2925    Modified compiler/Elaborator/print/pptype.sml to fix bug 895.
2926    Tag will be used for new development branch (mcz-branch) for
2927    use by MacQueen, (Lucasz) Zairek, and (George) Cao at uchicago.
2928    
2929    ----------------------------------------------------------------------
2930    Name: Matthias Blume (blume (at) tti - c (dot) org)
2931    Date: 2003/05/27 16:55:00 CDT
2932    Tag: blume-20030527-polyeq
2933    Description:
2934    
2935    Tried to eliminated most cases of polymorphic equality.
2936    
2937    ----------------------------------------------------------------------
2938    Name: Matthias Blume (blume (at) tti - c (dot) org)
2939    Date: 2003/05/21 17:45:00 CDT
2940    Tag: blume-20030517-complete
2941    Description:
2942    
2943    Two changes:
2944    
2945      1. Added a flag for controlling whether non-exhaustive bindings will
2946         be treated as errors (default is false).
2947      2. Cleaned up the *entire* source tree so that CMB.make goes through
2948         without a single non-exhaustive match- or bind warning.
2949    
2950    ----------------------------------------------------------------------
2951    Name: Matthias Blume (blume (at) tti - c (dot) org)
2952    Date: 2003/05/17 10:20:00 CDT
2953    Tag: blume-20030517-absyn
2954    Description:
2955    
2956    1. Added cases for IF, WHILE, ANDALSO, and ORELSE to Absyn.
2957    
2958       This mainly affects the quality of error messages.  However, some
2959       of the code is now more straightforward than before. (Treatment of
2960       the above four constructs in translate.sml is much simpler than
2961       the "macro-expansion" that was going on before.  Plus, the mach-
2962       compiler no longer gets invoked just to be able to compile an
2963       if-expression.)
2964    
2965    2. The ErrorMsg.Error exception is now caught and absorbed by the
2966       interactive loop.
2967    
2968    ----------------------------------------------------------------------
2969    Name: Allen Leung
2970    Date: 2003/05/16 13:05:00 CDT
2971    Tag: leunga-20030516-cygwin-runtime
2972    Description:
2973    
2974        Ported the runtime system to cygwin, which uses the unix
2975    x86-unix bin files.  Missing/buggy features:
2976    
2977       o getnetbyname, getnetbyaddr: these functions seem to be missing in
2978         the Cygwin library.
2979       o Ctrl-C handling may be flaky.
2980       o Windows system calls and Windows I/O are not supported.
2981    
2982       A new set of binfiles is located at:
2983    
2984         http://www.dorsai.org/~leunga/boot.x86-unix.tgz
2985    
2986       This is only needed for bootstrapping the cygwin version of smlnj.
2987       Other x86 versions can use the existing binfiles.
2988    
2989    ----------------------------------------------------------------------
2990    Name: Matthias Blume
2991    Date: 2003/04/08 15:42:00 CDT
2992    Tag: blume-20030408-listpair
2993    Description:
2994    
2995    1. Added a target 'mlrisc' to installer.
2996    
2997    2. Added missing elements to structure ListPair.
2998    
2999    ----------------------------------------------------------------------
3000    Name: Allen Leung
3001    Date: 2003/01/07 10:40:00 EST
3002    Tag: leunga-20030107-int-rem
3003    Description:
3004    
3005    Fixed a bug in Int.rem(x,y) where y is a power of 2 on x86.
3006    The arguments to the SUBL instruction were swapped.
3007    
3008    ----------------------------------------------------------------------
3009    Name: Matthias Blume
3010    Date: 2002/12/12 16:25:00 EST
3011    Tag: blume-20021212-risc-ra
3012    Description:
3013    
3014    Fixed a serious bug in the rewrite code for FP spilling/reloading that
3015    sent the RA into an infinite loop when floating point registers get
3016    spilled.  (Because of this bug, e.g., nucleic stopped compiling between
3017    110.37 and 110.38.)
3018    There was another set of potential problems related to the handling of
3019    MLRISC annotations (but those did not yet cause real problems, apparently).
3020    
3021    ----------------------------------------------------------------------
3022    Name: Matthias Blume
3023    Date: 2002/12/06 22:40:00 EST
3024    Tag: blume-20021206-cm-fileid
3025    Description:
3026    
3027    Added a call of SrcPath.sync at the beginning of Parse.parse (in CM).
3028    This fixes the problem of CM getting confused by files that suddenly
3029    change their identity (e.g., by getting unlinked and recreated by some
3030    text editor such as vi).  There might be a better/cheaper/cleaner way
3031    of doing this, but for now this will have to do.
3032    
3033    ----------------------------------------------------------------------
3034    Name: Matthias Blume
3035    Date: 2002/10/28 09:50:00 EST
3036    Tag: blume-20021028-typecheck
3037    Description:
3038    
3039    Exported structure Typecheck from $smlnj/viscomp/core.cm.
3040    
3041    ----------------------------------------------------------------------
3042    Name: Matthias Blume
3043    Date: 2002/10/17 09:10:00 EDT
3044    Tag: Release_110_42
3045    Description:
3046    
3047    In good old tradition, there has been a slight hiccup so that we have
3048    to patch 110.42 after the fact.   The old release tag has been replaced
3049    (see below).
3050    
3051    The change solves a problem with two competing approaches the
3052    configuration problem regarding MacOS 10.1 vs. MacOS 10.2 which got in
3053    each other's way.
3054    
3055    This change only affects the runtime system code and the installer script.
3056    (No new bootfiles.)
3057    
3058    ----------------------------------------------------------------------
3059    Name: Matthias Blume
3060    Date: 2002/10/16 12:00:00 EDT
3061    Tag: Release_110_42_removed
3062    Description:
3063    
3064    New working release.  New bootfiles.
3065    
3066    ----------------------------------------------------------------------
3067    Name: Matthias Blume
3068    Date: 2002/10/10 13:10:00 EDT
3069    Tag: blume-20021010-ppc-divs
3070    Description:
3071    
3072    The mltree operator DIVS must be implemented with an overflow check on
3073    the PPC because the hardware indicates divide-by-zero using "overflow" as
3074    well.
3075    
3076    ----------------------------------------------------------------------
3077    Name: Matthias Blume
3078    Date: 2002/07/23 11:45:00
3079    Tag: blume-20020723-smlnj-home
3080    Description:
3081    
3082    Sml now senses the SMLNJ_HOME environment variable.  If this is set,
3083    then the bin dir is assumed to be in $SMLNJ_HOME/bin and (unless
3084    CM_PATHCONFIG is also set), the path configuration file is assumed
3085    to be in $SMLNJ_HOME/lib/pathconfig.  This way one can easily move
3086    the entire tree to some other place and everything will "just work".
3087    
3088    (Companion commands such as ml-build and ml-makedepend also sense this
3089    variable.)
3090    
3091    ----------------------------------------------------------------------
3092    Name: Matthias Blume
3093    Date: 2002/07/12 21:19:00 EDT
3094    Tag: blume-20020712-liveness
3095    Description:
3096    
3097    Exported two useful "step" functions from liveness module (MLRISC).
3098    
3099    ----------------------------------------------------------------------
3100    Name: Matthias Blume
3101    Date: 2002/07/05 16:00 EDT
3102    Tag: Release_110_41
3103    Description:
3104    
3105    New working release.  New bootfiles.
3106    
3107    ----------------------------------------------------------------------
3108    Name: Matthias Blume
3109    Date: 2002/07/05 10:25:00 EDT
3110    Tag: blume-20020705-btimp
3111    Description:
3112    
3113    Exported structure BTImp from $smlnj/viscomp/debugprof.cm so that
3114    other clients can set up backtracing support.
3115    
3116    ----------------------------------------------------------------------
3117    Name: Matthias Blume
3118    Date: 2002/06/25 17:23:00 EDT
3119    Tag: blume-20020625-fpmax
3120    Description:
3121    
3122    Fixed a bug in translation of INLMAX (and INLMIN) for the floating-point
3123    case.  (The sense of the isNaN test was reversed -- which made min and
3124    max always return their first argument.)
3125    
3126    ----------------------------------------------------------------------
3127    Name: Matthias Blume
3128    Date: 2002/06/11
3129    Tag: blume-20020611-unixpath
3130    Description:
3131    
3132    Back-ported OS.Path.{from,to}UnixPath from idlbasis-devel branch.
3133    
3134    ----------------------------------------------------------------------
3135    Name: Matthias Blume
3136    Date: 2002/06/10 16:35:00 EDT
3137    Tag: blume-20020610-ieeereal
3138    Description:
3139    
3140    I back-ported my implementation of IEEEReal.fromString from the
3141    idlbasis-devel branch so that we can test it.
3142    
3143    Another small change is that ppDec tries to give more information
3144    than just "<sig>" in the case of functors.  However, this code is
3145    broken in some mysterious way if the functor's body's signature
3146    has not been declared by ascription but gets inferred from the
3147    implementation.  This needs fixing...
3148    
3149    ----------------------------------------------------------------------
3150    Name: Matthias Blume
3151    Date: 2002/05/31
3152    Tag: blume-20020531-btrace-mode
3153    Description:
3154    
3155    Resurrected SMLofNJ.Internals.BTrace.mode.  (It accidentally fell by
3156    the wayside when I switched over to using Controls everywhere.)
3157    
3158    ----------------------------------------------------------------------
3159    Name: Lal George
3160    Date: 2002/05/23 12:21:40 EDT
3161    Tag: george-20020523-visual-labels
3162    Description:
3163    
3164    Labels are now displayed in the graphical output to make
3165    the fall-through and target blocks obvious.
3166    
3167    ----------------------------------------------------------------------
3168    Name: Matthias Blume
3169    Date: 2002/05/22 11:03:00 EDT
3170    Tag: blume-20020522-shrink
3171    Description:
3172    
3173    John tweaked yesterday's fix for 1131 to handle an out-of-memory
3174    situation that comes up when allocating huge arrays.
3175    
3176    ----------------------------------------------------------------------
3177    Name: Matthias Blume
3178    Date: 2002/05/21 16:00:00 EDT
3179    Tag: Release_110_40
3180    Description:
3181    
3182    New working release (110.40).  New bootfiles.
3183    
3184    [Also: John Reppy fixed GC bug 1131.]
3185    
3186    ----------------------------------------------------------------------
3187    Name: Matthias Blume
3188    Date: 2002/05/21 12:35:00 EDT
3189    Tag: blume-20020521-cmdoc
3190    Description:
3191    
3192    CM documentation update.
3193    
3194    ----------------------------------------------------------------------
3195    Name: Matthias Blume
3196    Date: 2002/05/21 10:55:00 EDT
3197    Tag: blume-20020521-misc
3198    Description:
3199    
3200    - John tweaked runtime to be silent on heap export (except when
3201      GC messages are on).
3202    - I added a few more things (cross-compiling versions of CMB) to
3203      config/preloads (as suggestions).
3204    
3205    ----------------------------------------------------------------------
3206    Name: Matthias Blume
3207    Date: 2002/05/20 22:25:00 EDT
3208    Tag: blume-20020520-controls
3209    Description:
3210    
3211    - Added ControlUtil structure to control-lib.cm.
3212    - Use it throughout.
3213    - Used Controls facility to define MLRISC controls (as opposed to
3214      registering MLRISC control ref cells with Controls after the fact)
3215    - Fixed messed-up controls priorities.
3216    
3217    * Removed again all the stuff from config/preloads that one wouldn't
3218      be able to preload at the time the initial heap image is built.
3219      (Many libraries, e.g., CML, do not exist yet at this time.  The
3220       only libraries that can be preloaded via config/preloads are those
3221       that come bundled with the bootfiles.)
3222    
3223    ----------------------------------------------------------------------
3224    Name: Matthias Blume
3225    Date: 2002/05/20 10:59:00 EDT
3226    Tag: blume-20020520-preloads
3227    Description:
3228    
3229    Added a lot of commented-out suggestions for things to be included
3230    in config/preloads.
3231    
3232    ----------------------------------------------------------------------
3233    Name: Allen Leung
3234    Date: 2002/05/18 14:20:00 EDT
3235    Tag: leunga-20020518-mdl
3236    Description:
3237    
3238    o Made the mdl tool stuff compile and run again.
3239    o I've disabled all the stuff that depends on RTL specifications; they
3240      are all badly broken anyway.
3241    
3242    ----------------------------------------------------------------------
3243    Name: Matthias Blume
3244    Date: 2002/05/17 16:49:00 EDT
3245    Tag: blume-20020517-controls
3246    Description:
3247    
3248    0. John Reppy made several modifications to the SML/NJ library.
3249       In particular, there is a shiny new controls-lib.cm.
3250    
3251    1. Pushed new controls interface through compiler so that everything
3252       compiles again.
3253    
3254    2. Added FormatComb and FORMAT_COMB to the CML version of the
3255       SML/NJ library (so that CML compiles again).
3256    
3257    3. Modified init scripts because XXX_DEFAULT environment variables
3258       are no longer with us.  (Boot-time initialization is now done
3259       using the same environment variables that are also used for
3260       startup-time initialization of controls.)
3261    
3262    ----------------------------------------------------------------------
3263    Name: Lal George
3264    Date: 2002/05/15 09:20:10 EDT
3265    Tag: george-20020515-pseudo-op-decls
3266    Description:
3267    
3268            All pseudo-ops emitted before the first segment declaration
3269    such as TEXT, DATA, and BSS directives are assumed to be global
3270    declarations and are emitted first in the assembly file. This is
3271    useful in a number of situations where one has pseudo-ops that are not
3272    specific to any segment, and also works around the constraint that one
3273    cannot have client pseudo-ops in the TEXT segment.
3274    
3275            Because no segment is associated with these declarations it is
3276    an error to allocate any space or objects before the first segment
3277    directive and an exception will be raised. However, we cannot make
3278    this check for client pseudo-ops.
3279    
3280            These top level declarations are a field in the CFG graph_info.
3281    In theory you can continue to add to this field after the CFG has been
3282    built -- provided you know what you are doing;-)
3283    
3284    ----------------------------------------------------------------------
3285    Name: Matthias Blume
3286    Date: 2002/05/13 16:40:00 EDT
3287    Tag: blume-20020513-pp-etc
3288    Description:
3289    
3290    A few minor bugfixes:
3291    
3292      - Stopgap measure for bug recently reported by Elsa Gunter (ppDec).
3293        (Bogus printouts for redefined bindings still occur.  Compiler
3294        bug should no longer occur now.  We need to redo the prettyprinter
3295        from scratch.)
3296    
3297      - CM pathname printer now also adds escape sequences for ( and )
3298    
3299      - commend and docu fixes for ml-nlffi
3300    
3301    ----------------------------------------------------------------------
3302    Name: Matthias Blume
3303    Date: 2002/05/10 16:40:00 EDT
3304    Tag: blume-20020510-erg-textio
3305    Description:
3306    
3307    Applied the following bugfix provided by Emden Gansner:
3308    
3309        Output is corrupted when outputSubstr is used rather than output.
3310    
3311        The problem occurs when a substring
3312    
3313            ss = (s, dataStart, dataLen)
3314    
3315        where dataStart > 0, fills a stream buffer with avail bytes left.
3316        avail bytes of s, starting at index dataStart, are copied into the
3317        buffer, the buffer is flushed, and then the remaining dataLen-avail
3318        bytes of ss are copied into the beginning of the buffer. Instead of
3319        starting this copy at index dataStart+avail in s, the current code
3320        starts the copy at index avail.
3321    
3322        Fix:
3323        In text-io-fn.sml, change line 695 from
3324             val needsFlush = copyVec(v, avail, dataLen-avail, buf, 0)
3325        to
3326             val needsFlush = copyVec(v, dataStart+avail, dataLen-avail, buf, 0)
3327    
3328    ----------------------------------------------------------------------
3329    Name: Matthias Blume
3330    Date: 2002/04/12 13:55:00 EDT
3331    Tag: blume-20020412-assyntax
3332    Description:
3333    
3334    1. Grabbed newer assyntax.h from the XFree86 project.
3335    2. Fiddled with how to compile X86.prim.asm without warnings.
3336    3. (Very) Minor cleanup in CM.
3337    
3338    ----------------------------------------------------------------------
3339    Name: Matthias Blume
3340    Date: 2002/04/01 (no joke!) 17:07:00 EST
3341    Tag: blume-20020401-x86div
3342    Description:
3343    
3344    Added full support for div/mod/rem/quot on the x86, using the machine
3345    instruction's two results (without clumsily recomputing the remainder)
3346    directly where appropriate.
3347    
3348    Some more extensive power-of-two support was added to the x86 instruction
3349    selector (avoiding expensive divs, mods, and muls where they can be
3350    replaced with cheaper shifts and masks).  However, this sort of thing
3351    ought to be done earlier, e.g., within the CPS optimizer so that
3352    all architectures benefit from it.
3353    
3354    The compiler compiles to a fixed point, but changes might be somewhat
3355    fragile nevertheless.  Please, report any strange things that you might
3356    see wrt. div/mod/quot/rem...
3357    
3358    ----------------------------------------------------------------------
3359    Name: Matthias Blume
3360    Date: 2002/03/29 17:22:00
3361    Tag: blume-20020329-div
3362    Description:
3363    
3364    Fixed my broken div/mod logic.  Unfortunately, this means that the
3365    inline code for div/mod now has one more comparison than before.
3366    Fast paths (quotient > 0 or remainder = 0) are not affected, though.
3367    The problem was with quotient = 0, because that alone does not tell
3368    us which way the rounding went.  One then has to look at whether
3369    remainder and divisor have the same sign...  :(
3370    
3371    Anyway, I replaced the bootfiles with fresh ones...
3372    
3373    ----------------------------------------------------------------------
3374    Name: Matthias Blume
3375    Date: 2002/03/29 14:10:00 EST
3376    Tag: blume-20020329-inlprims
3377    Description:
3378    
3379    NEW BOOTFILES!!!    Version number bumped to 110.39.3.
3380    
3381    Primops have changed. This means that the bin/boot-file formats have
3382    changed as well.
3383    
3384    To make sure that there is no confusion, I made a new version.
3385    
3386    
3387    CHANGES:
3388    
3389    * removed REMT from mltree (remainder should never overflow).
3390    
3391    * added primops to deal with divisions of all flavors to the frontend
3392    
3393    * handled these primops all the way through so they map to their respective
3394      MLRISC support
3395    
3396    * used these primops in the implementation of Int, Int32, Word, Word32
3397    
3398    * removed INLDIV, INLMOD, and INLREM as they are no longer necessary
3399    
3400    * parameterized INLMIN, INLMAX, and INLABS by a numkind
3401    
3402    * translate.sml now deals with all flavors of INL{MIN,MAX,ABS}, including
3403      floating point
3404    
3405    * used INL{MIN,MAX,ABS} in the implementation of Int, Int32, Word, Word32,
3406      and Real (but Real.abs maps to a separate floating-point-only primop)
3407    
3408    
3409    TODO items:
3410    
3411    * Hacked Alpha32 instruction selection, disabling the selection of REMx
3412      instructions because the machine instruction encoder cannot handle
3413      them.  (Hppa, PPC, and Sparc instruction selection did not handle
3414      REM in the first place, and REM is supported by the x86 machine coder.)
3415    
3416    * Handle DIV and MOD with DIV_TO_NEGINF directly in the x86 instruction
3417      selection phase.  (The two can be streamlined because the hardware
3418      delivers both quotient and remainder at the same time anyway.)
3419    
3420    * Think about what to do with "valOf(Int32.minInt) div ~1" and friends.
3421      (Currently the behavior is inconsistent both across architectures and
3422      wrt. the draft Basis spec.)
3423    
3424    * Word8 should eventually be handled natively, too.
3425    
3426    * There seems to be one serious bug in mltree-gen.sml.  It appears, though,
3427      as if there currently is no execution path that could trigger it in
3428      SML/NJ.  (The assumptions underlying functions arith and promotable do not
3429      hold for things like multiplication and division.)
3430    
3431    ----------------------------------------------------------------------
3432    Name: Matthias Blume
3433    Date: 2002/03/27 16:27:00 EST
3434    Tag: blume-20020327-mlrisc-divisions
3435    Description:
3436    
3437    Added support for all four division operations (ML's div, mod, quot,
3438    and rem) to MLRISC.  In the course of doing so, I also rationalized
3439    the naming (no more annoying switch-around of DIV and QUOT), by
3440    parameterizing the operation by div_rounding_mode (which can be either
3441    DIV_TO_ZERO or DIV_TO_NEGINF).
3442    
3443    The generic MLTreeGen functor takes care of compiling all four
3444    operations down to only round-to-zero div.
3445    
3446    Missing pieces:
3447    
3448      * Doing something smarter than relying on MLTreeGen on architectures
3449        like, e.g., the x86 where hardware division delivers both quotient and
3450        remainder at the same time.  With this, the implementation of the
3451        round-to-neginf operations could be further streamlined.
3452    
3453      * Remove inlining support for div/mod/rem from the frontend and replace it
3454        with primops that get carried through to the backend.  Do this for all
3455        int and word types.
3456    
3457    ----------------------------------------------------------------------
3458    Name: Matthias Blume
3459    Date: 2002/03/25 17:25:00 EST
3460    Tag: blume-20020325-divmod
3461    Description:
3462    
3463    I improved (hopefully without breaking them) the implementation of Int.div,
3464    Int.mod, and Int.rem.   For this, the code in translate.sml now takes
3465    advantage of the following observations:
3466    
3467      Let  q = x quot y      r = x rem y
3468           d = x div  y      m = x mod y
3469    
3470    where "quot" is the round-to-zero version of integer division that
3471    hardware usually provides.  Then we have:
3472    
3473         r = x - q * y        where neither the * nor the - will overflow
3474         d = if q >= 0 orelse x = q * y then q else q - 1
3475                              where neither the * nor the - will overflow
3476         m = if q >= 0 orelse r = 0 then r else r + y
3477                              where the + will not overflow
3478    
3479    This results in substantial simplification of the generated code.
3480    The following table shows the number of CFG nodes and edges generated
3481    for
3482            fun f (x, y) = x OPER y
3483            (* with OPER \in div, mod, quot, rem *)
3484    
3485    
3486        OPER | nodes(old) | edges(old) | nodes(new) | edges(new)
3487        --------------------------------------------------------
3488         div |         24 |         39 |         12 |         16
3489         mod |         41 |         71 |         12 |         16
3490        quot |          8 |         10 |          8 |         10
3491         rem |         10 |         14 |          8 |         10
3492    
3493    
3494    ----------------------------------------------------------------------
3495    Name: Matthias Blume
3496    Date: 2002/03/25 22:06:00 EST
3497    Tag: blume-20020325-cprotobug
3498    Description:
3499    
3500    Fixed a bug in cproto (c prototype decoder).
3501    
3502    ----------------------------------------------------------------------
3503    Name: Matthias Blume
3504    Date: 2002/03/25 16:00:00 EST
3505    Tag: blume-20020325-raw-primops
3506    Description:
3507    
3508    I did some cleanup to Allen's new primop code and
3509    replaced yesterday's bootfiles with new ones.
3510    (But they are stored in the same place.)
3511    
3512    ----------------------------------------------------------------------
3513    Name: Matthias Blume
3514    Date: 2002/03/24 22:40:00 EST
3515    Tag: blume-20020324-bootfiles
3516    Description:
3517    
3518    Made the bootfiles that Allen asked for.
3519    
3520    ----------------------------------------------------------------------
3521    Name: Allen Leung
3522    Date: 2002/03/23 15:50:00 EST
3523    Tag: leunga-20020323-flint-cps-rcc-primops
3524    Description:
3525    
3526      1. Changes to FLINT primops:
3527    
3528        (* make a call to a C-function;
3529         * The primop carries C function prototype information and specifies
3530         * which of its (ML-) arguments are floating point. C prototype
3531         * information is for use by the backend, ML information is for
3532         * use by the CPS converter. *)
3533      | RAW_CCALL of { c_proto: CTypes.c_proto,
3534                       ml_args: ccall_type list,
3535                       ml_res_opt: ccall_type option,
3536                       reentrant : bool
3537                     } option
3538       (* Allocate uninitialized storage on the heap.
3539        * The record is meant to hold short-lived C objects, i.e., they
3540        * are not ML pointers.  With the tag, the representation is
3541        * the same as RECORD with tag tag_raw32 (sz=4), or tag_fblock (sz=8)
3542        *)
3543      | RAW_RECORD of {tag:bool,sz:int}
3544      and ccall_type = CCALL_INT32 | CCALL_REAL64 | CCALL_ML_PTR
3545    
3546      2.  These CPS primops are now overloaded:
3547    
3548           rawload of {kind:numkind}
3549           rawstore of {kind:numkind}
3550    
3551          The one argument form is:
3552    
3553             rawload {kind} address
3554    
3555          The two argument form is:
3556    
3557             rawload {kind} [ml object, byte-offset]
3558    
3559      3. RAW_CCALL/RCC now takes two extra arguments:
3560    
3561         a. The first is whether the C call is reentrant, i.e., whether
3562            ML state should be saved and restored.
3563         b. The second argument is a string argument specifying the name of
3564            library and the C function.
3565    
3566         These things are currently not handled in the code generator, yet.
3567    
3568      4. In CProto,
3569    
3570         An encoding type of "bool" means "ml object" and is mapped into
3571         C prototype of PTR.  Note that "bool" is different than "string",
3572         even though "string" is also mapped into PTR, because "bool"
3573         is assigned an CPS type of BOGt, while "string" is assigned INT32t.
3574    
3575      5. Pickler/unpicker
3576    
3577         Changed to handle RAW_RECORD and newest RAW_CCALL
3578    
3579      6. MLRiscGen,
3580    
3581         1. Changed to handle the new rawload/rawstore/rawrecord operators.
3582         2. Code for handling C Calls has been moved to a new module CPSCCalls,
3583            in the file CodeGen/cpscompile/cps-c-calls.sml
3584    
3585      7. Added the conditional move operator
3586    
3587             condmove of branch
3588    
3589         to cps.  Generation of this is still buggy so it is currently
3590         disabled.
3591    
3592  ----------------------------------------------------------------------  ----------------------------------------------------------------------
3593  Name: Lal George  Name: Lal George
3594  Date: 2002/03/22 14:18:25 EST  Date: 2002/03/22 14:18:25 EST

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

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