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

SCM Repository

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

Diff of /sml/trunk/NOTES/HISTORY

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

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