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

SCM Repository

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

Diff of /sml/trunk/HISTORY

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

revision 756, Thu Dec 14 16:01:33 2000 UTC revision 1085, Fri Feb 22 00:15:55 2002 UTC
# Line 8  Line 8 
8  The form of an entry should be:  The form of an entry should be:
9    
10  Name:  Name:
11  Date:  Date: yyyy/mm/dd
12  Tag: <post-commit CVS tag>  Tag: <post-commit CVS tag>
13  Description:  Description:
14    
15    ----------------------------------------------------------------------
16    Name: Allen Leung
17    Date: 2002/02/21 20:20:00 EST
18    Tag: leunga-20020221-peephole
19    
20    Regenerated the peephole files.  Some contained typos in the specification
21    and some didn't compile because of pretty printing bugs in the old version
22    of 'nowhere'.
23    
24    ----------------------------------------------------------------------
25    Name: Allen Leung
26    Date: 2002/02/19 20:20:00 EST
27    Tag: leunga-20020219-mlrisc-tools
28    Description:
29    
30       Minor bug fixes to the mlrisc-tools library:
31    
32       1.  Fixed up parsing colon suffixed keywords
33       2.  Added the ability to shut the error messages up
34       3.  Reimplemented the pretty printer and fixed up/improved
35           the pretty printing of handle and -> types.
36       4.  Fixed up generation of literal symbols in the nowhere tool.
37       5.  Added some SML keywords to to sml.sty
38    
39    ----------------------------------------------------------------------
40    Name: Matthias Blume
41    Date: 2002/02/19 16:20:00 EST
42    Tag: blume-20020219-cmffi
43    Description:
44    
45    A wild mix of changes, some minor, some major:
46    
47    * All C FFI-related libraries are now anchored under $c:
48        $/c.cm      --> $c/c.cm
49        $/c-int.cm  --> $c/internals/c-int.cm
50        $/memory.cm --> $c/memory/memory.cm
51    
52    * "make" tool (in CM) now treats its argument pathname slightly
53      differently:
54        1. If the native expansion is an absolute name, then before invoking
55           the "make" command on it, CM will apply OS.Path.mkRelative
56           (with relativeTo = OS.FileSys.getDir()) to it.
57        2. The argument will be passed through to subsequent phases of CM
58           processing without "going native".  In particular, if the argument
59           was an anchored path, then "make" will not lose track of that anchor.
60    
61    * Compiler backends now "know" their respective C calling conventions
62      instead of having to be told about it by ml-nlffigen.  This relieves
63      ml-nlffigen from one of its burdens.
64    
65    * The X86Backend has been split into X86CCallBackend and X86StdCallBackend.
66    
67    * Export C_DEBUG and C_Debug from $c/c.cm.
68    
69    * C type encoding in ml-nlffi-lib has been improved to model the conceptual
70      subtyping relationship between incomplete pointers and their complete
71      counterparts.  For this, ('t, 'c) ptr has been changed to 'o ptr --
72      with the convention of instantiating 'o with ('t, 'c) obj whenever
73      the pointer target type is complete.  In the incomplete case, 'o
74      will be instantiated with some "'c iobj" -- a type obtained by
75      using one of the functors PointerToIncompleteType or PointerToCompleteType.
76    
77      Operations that work on both incomplete and complete pointer types are
78      typed as taking an 'o ptr while operations that require the target to
79      be known are typed as taking some ('t, 'c) obj ptr.
80    
81      voidptr is now a bit "more concrete", namely "type voidptr = void ptr'"
82      where void is an eqtype without any values.  This makes it possible
83      to work on voidptr values using functions meant to operate on light
84      incomplete pointers.
85    
86    * As a result of the above, signature POINTER_TO_INCOMPLETE_TYPE has
87      been vastly simplified.
88    
89    ----------------------------------------------------------------------
90    Name: Matthias Blume
91    Date: 2002/02/19 10:48:00 EST
92    Tag: blume-20020219-pqfix
93    Description:
94    
95    Applied Chris Okasaki's bug fix for priority queues.
96    
97    ----------------------------------------------------------------------
98    Name: Matthias Blume
99    Date: 2002/02/15 17:05:00
100    Tag: Release_110_39
101    Description:
102    
103    Last-minute retagging is becoming a tradition... :-(
104    
105    This is the working release 110.39.
106    
107    ----------------------------------------------------------------------
108    Name: Matthias Blume
109    Date: 2002/02/15 16:00:00 EST
110    Tag: Release_110_39-orig
111    Description:
112    
113    Working release 110.39.  New bootfiles.
114    
115    (Update: There was a small bug in the installer so it wouldn't work
116    with all shells.  So I retagged. -Matthias)
117    
118    ----------------------------------------------------------------------
119    Name: Matthias Blume
120    Date: 2002/02/15 14:17:00 EST
121    Tag: blume-20020215-showbindings
122    Description:
123    
124    Added EnvRef.listBoundSymbols and CM.State.showBindings.  Especially
125    the latter can be useful for exploring what bindings are available at
126    the interactive prompt.  (The first function returns only the list
127    of symbols that are really bound, the second prints those but also the
128    ones that CM's autoloading mechanism knows about.)
129    
130    ----------------------------------------------------------------------
131    Name: Matthias Blume
132    Date: 2002/02/15 12:08:00 EST
133    Tag: blume-20020215-iptrs
134    Description:
135    
136    Two improvements to ml-nlffigen:
137    
138      1. Write files only if they do not exist or if their current contents
139         do not coincide with what's being written.  (That is, avoid messing
140         with the time stamps unless absolutely necessary.)
141    
142      2. Implement a "repository" mechanism for generated files related
143         to "incomplete pointer types".   See the README file for details.
144    
145    ----------------------------------------------------------------------
146    Name: Matthias Blume
147    Date: 2002/02/14 11:50:00 EST
148    Tag: blume-20020214-quote
149    Description:
150    
151    Added a type 't t_' to tag.sml (in ml-nlffi-lib.cm).  This is required
152    because of the new and improved tag generation scheme.  (Thanks to Allen
153    Leung for pointing it out.)
154    
155    ----------------------------------------------------------------------
156    Name: Lal George
157    Date: 2002/02/14 09:55:27 EST 2002
158    Tag: george-20020214-isabelle-bug
159    Description:
160    
161    Fixed the MLRISC bug sent by Markus Wenzel regarding the compilation
162    of Isabelle on the x86.
163    
164    From Allen:
165    -----------
166     I've found the problem:
167    
168         in ra-core.sml, I use the counter "blocked" to keep track of the
169         true number of elements in the freeze queue.  When the counter goes
170         to zero, I skip examining the queue.  But I've messed up the
171         bookkeeping in combine():
172    
173             else ();
174             case !ucol of
175               PSEUDO => (if !cntv > 0 then
176                     (if !cntu > 0 then blocked := !blocked - 1 else ();
177                                        ^^^^^^^^^^^^^^^^^^^^^^^
178                      moveu := mergeMoveList(!movev, !moveu)
179                     )
180                  else ();
181    
182         combine() is called to coalesce two nodes u and v.
183         I think I was thinking that if the move counts of u and v are both
184         greater than zero then after they are coalesced then one node is
185         removed from the freeze queue.  Apparently I was thinking that
186         both u and v are of low degree, but that's clearly not necessarily true.
187    
188    
189    02/12/2002:
190        Here's the patch.  HOL now compiles.
191    
192        I don't know how this impact on performance (compile
193        time or runtime).  This bug caused the RA (especially on the x86)
194        to go thru the potential spill phase when there are still nodes on the
195        freeze queue.
196    
197    
198    
199    
200    ----------------------------------------------------------------------
201    Name: Matthias Blume
202    Date: 2002/02/13 22:40:00 EST
203    Tag: blume-20020213-fptr-rtti
204    Description:
205    
206    Fixed a bug in ml-nlffigen that was introduced with one of the previous
207    updates.
208    
209    ----------------------------------------------------------------------
210    Name: Matthias Blume
211    Date: 2002/02/13 16:41:00 EST
212    Tag: blume-20020213-cmlpq
213    Description:
214    
215    Added new priority queue export symbols (which have just been added to
216    smlnj-lib.cm) to CML's version of smlnj-lib.cm.  (Otherwise CML would
217    not compile and the installer would choke.)
218    
219    ----------------------------------------------------------------------
220    Name: Matthias Blume
221    Date: 2002/02/13 16:15:00 EST
222    Tag: blume-20020213-various
223    Description:
224    
225    1. More tweaks to ml-nlffigen:
226    
227       - better internal datastructures (resulting in slight speedup)
228       - "-match" option requires exact match
229       - "localized" gensym counters (untagged structs/unions nested within
230         other structs/unions or within typedefs get a fresh counter; their
231         tag will be prefixed by a concatenation of their parents' tags)
232       - bug fixes (related to calculation of transitive closure of types
233         to be included in the output)
234    
235    2. Minor Basis updates:
236    
237       - added implementations for List.collate and Option.app
238    
239    ----------------------------------------------------------------------
240    Name: Matthias Blume
241    Date: 2002/02/11 15:55:00 EST
242    Tag: blume-20020211-gensym
243    Description:
244    
245    Added a "-gensym" option to command line of ml-nlffigen.  This can be
246    used to specify a "stem" -- a string that is inserted in all "gensym'd"
247    names (ML structure names that correspond to unnamed C structs, unions,
248    and enums), so that separate runs of ml-nlffigen do not clash.
249    
250    ----------------------------------------------------------------------
251    Name: Matthias Blume
252    Date: 2002/02/11 12:05:00 EST
253    Tag: blume-20020211-gensml
254    Description:
255    
256    A quick fix for a problem with GenSML (in the pgraph-util library):
257    Make generation of toplevel "local" optional.  (Strictly speaking,
258    signature definitions within "local" are not legal SML.)
259    
260    Other than that: updates to INSTALL and cm/TODO.
261    
262    ----------------------------------------------------------------------
263    Name: Matthias Blume
264    Date: 2002/02/08 15:00:00 EST
265    Tag: blume-20020208-uniquepid
266    Description:
267    
268    0. Version number has been bumped to 110.38.1.  NEW BOOTFILES!!!
269    
270    1. The installer (config/install.sh) has gotten smarter:
271    
272         - Configuration options are a bit easier to specify now
273           (in config/targets).
274         - Bug in recognizing .tar.bz2 files fixed.
275         - Installer automatically resolves dependencies between
276           configuration options (e.g., if you ask for eXene, you will
277           also get cml -- regardless whether you asked for it or not).
278         - Installer can run in "quieter mode" by setting the environment
279           variable INSTALL_QUIETLY to "true".  "Quieter" does not mean
280           "completely silent", though.
281         - Build HashCons library as part of smlnj-lib.
282    
283    2. A new scheme for assigning persistent identifiers to compilation
284       units (and, by extension, to types etc.) has been put into place.
285       This fixes a long-standing bug where types and even dynamic values
286       can get internally confused, thereby compromising type safety
287       (abstraction) and dynamic correctness.  See
288    
289         http://cm.bell-labs.com/cm/cs/who/blume/pid-confusion.tgz
290    
291       for an example of how things could go wrong until now.
292    
293       The downside of the new scheme is that pids are not quite as
294       persistent as they used to be: CM will generate a fresh pid
295       for every compilation unit that it thinks it sees for the first
296       time.  That means that if you compile starting from a clean, fresh
297       source tree at two different times, you end up with different
298       binaries.
299    
300       Cutoff recompilation, however, has not been compromised because
301       CM keeps pid information in special caches between runs.
302    
303    ----------------------------------------------------------------------
304    Name: Lal George
305    Date: 2002/02/07 15:34:13 EST 2002
306    Tag: <none>
307    Description:
308    
309    Compilers that generate assembly code may produce  global labels
310    whose value is resolved at link time. The various peephole optimization
311    modules did not take this in account.
312    
313    TODO. The Labels.addrOf function should really return an option
314    type so that clients are forced to deal with this issue, rather
315    than an exception being raised.
316    
317    ----------------------------------------------------------------------
318    Name: Lal George
319    Date: 2002/02/06 13:55:02 EST
320    Tag: george-20020206-ra-breakup
321    Description:
322    
323    1. A bug fix from Allen.
324    
325        A typo causes extra fstp %st(0)'s to be generated at compensation
326        edges, which might cause stack underflow traps at runtime.  This
327        occurs in fft where there are extraneous fstps right before the 'into'
328        trap instruction (in this case they are harmless since none of the
329        integers overflow.)
330    
331    2. Pulled out various utility modules that were embedded in the modules
332       of the register allocator. I need these modules for other purposes, but
333       they are not complete enough to put into a library (just yet).
334    ----------------------------------------------------------------------
335    Name: Matthias Blume
336    Date: 2002/01/31 16:05:00 EST
337    Tag: blume-20020131-sparc-ccalls
338    Description:
339    
340    1. C-calls on Sparc needlessly allocated a huge chunk (96 bytes)
341       of extra stack space by mistake.  Fixed.
342    
343    2. Bug in logic of handling of command-line options in ml-nlffigen fixed.
344    
345    ----------------------------------------------------------------------
346    Name: Allen Leung
347    Date: 2002/01/30
348    Tag: leunga-20020130-nowhere-bug-fix
349    Description:
350    
351       MLRISC bug fixes:
352       1. Fixed a bindings computation bug in the 'nowhere' program generator tool.
353       2. MachineInt.fromString was negating its value.
354    
355    ----------------------------------------------------------------------
356    Name: Matthias Blume
357    Date: 2002/01/29
358    Tag: blume-20020129-INSTALL
359    Description:
360    
361    - Added somewhat detailed installation instructions (file INSTALL).
362    - Fixed curl-detection bug in config/install.sh.
363    - It is now possible to select the URL getter using the URLGETTER
364      environment variable:
365    
366          not set / "unknown"      --> automatic detection (script tries wget,
367                                       curl, and lynx)
368          "wget" / "curl" / "lynx" --> use the specified program (script "knows"
369                                       how to properly invoke them)
370          other                    --> use $URLGETTER directly, it must take
371                                       precisely two command-line arguments
372                                       (source URL and destination file name)
373    
374    ----------------------------------------------------------------------
375    Name: Matthias Blume
376    Date: 2002/01/28
377    Tag: blume-20020128-sparc-ccalls
378    Description:
379    
380    - Fixed problem with calculation of "used" registers in sparc-c-calls.
381    - Make use of the allocParam argument in sparc-c-calls.
382    
383    ----------------------------------------------------------------------
384    Name: Matthias Blume
385    Date: 2002/01/28
386    Tag: blume-20020128-allocParam
387    Description:
388    
389    John Reppy:  Changes c-calls API to accept client-callback for
390    allocating extra stack space.
391    me: Corresponding changes to mlriscGen (using a dummy argument that
392        does not change the current behavior).
393    
394    ----------------------------------------------------------------------
395    Name: Matthias Blume
396    Date: 2002/01/28 12:00:00
397    Tag: Release_110_38
398    Description:
399    
400    This time for real!!!
401    
402    ----------------------------------------------------------------------
403    Name: Matthias Blume
404    Date: 2002/01/28 10:56:00 EST
405    Tag: blume-20020128-retraction
406    Description:
407    
408    0. Retracted earlier 110.38.  (The Release_110_38 tag has been replaced
409       with blume-Release_110_38-retracted.)
410    
411    1. Fixed a problem with incorrect rounding modes in real64.sml.
412       (Thanks to Andrew Mccreight <andrew.mccreight@yale.edu>.)
413    
414    2. A bug in ml-nlffigen related to the handling of unnamed structs, unions,
415       and enums fixed.  The naming of corresponding ML identifiers should
416       now be consistent again.
417    
418    ----------------------------------------------------------------------
419    Name: Allen Leung
420    Date: 2002/01/27
421    Tag: leunga-20020127-nowhere
422    Description:
423    
424       Added a target called nowhere in the configuration scripts.
425       Enabling this will build the MLRISC 'nowhere' tool (for translating
426       programs with where-clauses into legal SML code) during installation.
427    
428    ----------------------------------------------------------------------
429    Name: Matthias Blume
430    Date: 2002/01/25 21:27:00 EST
431    Tag: blume-Release_110_38-retracted
432    Description:
433    
434    Call it a (working) release!  Version is 110.38. Bootfiles are ready.
435    
436    README will be added later.
437    
438    !!! NOTE:  Re-tagged as blume-Release_110_38-retracted. Original tag
439    (Release_110_38) removed.  Reason: Last-minute bug fixes.
440    
441    ----------------------------------------------------------------------
442    Name: Matthias Blume
443    Date: 2002/01/25
444    Tag: blume-20020125-ffi
445    Description:
446    
447    A large number of tweaks and improvements to ml-nlffi-lib and
448    ml-nlffigen:
449    
450       - ML represenation types have been streamlined
451       - getter and setter functions work with concrete values, not abstract
452         ones where possible
453       - ml-nlffigen command line more flexible (see README file there)
454       - some bugs have been fixed (hopefully)
455    
456    ----------------------------------------------------------------------
457    Name: Lal George
458    Date: 2002/01/24
459    Tag: george-20020124-risc-ra-interface
460    Description:
461    
462       There is a dramatic simplification in the interface to the
463       register allocator for RISC architectures as a result of making
464       parallel copy instructions explicit.
465    
466    ----------------------------------------------------------------------
467    Name: Matthias Blume
468    Date: 2002/01/22
469    Tag: blume-20020122-x86-ccalls
470    Description:
471    
472    Bug fix for c-calls on x86 (having to do with how char- and
473    short-arguments are being handled).
474    
475    ----------------------------------------------------------------------
476    Name: Matthias Blume
477    Date: 2002/01/21
478    Tag: blume-20020121-ff
479    Description:
480    
481    Another day of fiddling with the FFI...
482    
483    1. Bug fix/workaround:  CKIT does not complain about negative array
484       dimensions, so ml-nlffigen has to guard itself against this possibility.
485       (Otherwise a negative dimension would send it into an infinite loop.)
486    
487    2. Some of the abstract types (light objects, light pointers, most "base"
488       types) in structure C are now eqtypes.
489    
490    3. Added constructors and test functions for NULL function pointers.
491    
492    ----------------------------------------------------------------------
493    Name: Matthias Blume
494    Date: 2002/01/18
495    Tag: blume-20020118-ready-for-new-release
496    Description:
497    
498    Made config/srcarchiveurl point to a new place.  (Will provide boot
499    files shortly.)
500    
501    Maybe we christen this to be 110.38?
502    
503    ----------------------------------------------------------------------
504    Name: Matthias Blume
505    Date: 2002/01/18
506    Tag: blume-20020118-more-ffifiddle
507    Description:
508    
509    Today's FFI fiddling:
510    
511      - Provided a structure CGetSet with "convenient" versions of C.Get.* and
512        C.Set.* that use concrete (MLRep.*) arguments and results instead
513        of abstract ones.
514    
515      - Provided word-style bit operations etc. for "int" representation
516        types in MLRep.S<Foo>Bitops where <Foo> ranges over Char, Int, Short,
517        and Long.
518    
519    ----------------------------------------------------------------------
520    Name: Matthias Blume
521    Date: 2002/01/18
522    Tag: blume-20020118-use-x86-fp
523    Description:
524    
525    Now that x86-fast-fp seems to be working, I turned it back on again
526    by default.  (Seems to work fine now, even with the FFI.)
527    
528    Other than that, I added some documentation about the FFI to
529    src/ml-nlffigen/README and updated the FFI test examples in
530    src/ml-nlffi-lib/Tests/*.
531    
532    ----------------------------------------------------------------------
533    Name: Allen Leung
534    Date: 2002/01/17
535    Tag: leunga-20020117-x86-fast-fp-call
536    Description:
537    
538       1. Fixed a problem with handling return fp values when x86's fast fp
539          mode is turned on.
540    
541       2. Minor pretty printing fix for cellset.  Print %st(0) as %st(0) instead
542          of %f32.
543    
544       3. Added a constructor INT32lit to the ast of MLRISC tools.
545    
546    ----------------------------------------------------------------------
547    Name: Matthias Blume
548    Date: 2002/01/16
549    Tag: blume-20020116-ffifiddle
550    Description:
551    
552    More fiddling with the FFI interface:
553    
554     - Make constness 'c instead of rw wherever possible.  This eliminates
555       the need for certain explicit coercions.  (However, due to ML's
556       value polymorphism, there will still be many cases where explicit
557       coercions are necessary.  Phantom types are not the whole answer
558       to modeling a subtyping relationship in ML.)
559    
560     - ro/rw coersions for pointers added.  (Avoids the detour through */&.)
561    
562     - "printf" test example added to src/ml-nlffi-lib/Tests.  (Demonstrates
563       clumsy workaround for varargs problem.)
564    
565    ----------------------------------------------------------------------
566    Name: Lal George
567    Date: 2002/01/15
568    Tag: <none>
569    Description:
570    
571    1. Since COPY instructions are no longer native to the architecture,
572       a generic functor can be used to implement the expandCopies function.
573    
574    2. Allowed EXPORT and IMPORT pseudo-op declarations to appear inside a
575       TEXT segment.
576    
577    ----------------------------------------------------------------------
578    Name: Matthias Blume
579    Date: 2002/01/15
580    Tag: blume-20020115-ffiupdates
581    Description:
582    
583    1. Fix for bug resulting in single-precision float values being returned
584       incorrectly from FFI calls.
585    
586    2. Small modifications to C FFI API:
587    
588        - memory-allocation routines return straight objects (no options)
589          and raise an exception in out-of-memory situations
590        - unsafe extensions to cast between function pointers and pointers
591          from/to ints
592        - added structure C_Debug as an alternative to structure C where
593          pointer-dereferencing (|*| and |*!) always check for null-pointers
594        - added open_lib' to DynLinkage;  open_lib' works like open_lib
595          but also takes a (possibly empty) list of existing library handles
596          that the current library depends on
597    
598    ----------------------------------------------------------------------
599    Name: Matthias Blume
600    Date: 2002/01/10
601    Tag: blume-20020110-newffigen
602    Description:
603    
604    1. Updates to portable graph code.
605    
606    2. Major update to ml-nlffigen and ml-nlffi-lib.  Things are much
607       more scalable now so that even huge interfaces such as the one
608       for GTK compile in finite time and space. :-)
609       See src/ml-nlffigen/README for details on what's new.
610    
611    ----------------------------------------------------------------------
612    Name: Lal George
613    Date: 2001/01/09 14:31:35 EST 2002
614    Tag: george-20011206-rm-native-copy
615    Description:
616    
617            Removed the native COPY and FCOPY instructions
618            from all the architectures and replaced it with the
619            explicit COPY instruction from the previous commit.
620    
621            It is now possible to simplify many of the optimizations
622            modules that manipulate copies. This has not been
623            done in this change.
624    
625    ----------------------------------------------------------------------
626    Name: Lal George
627    Date: 2001/12/06 16:50:13 EST 2001
628    Tag: george-20011206-mlrisc-instruction
629    Description:
630    
631    Changed the representation of instructions from being fully abstract
632    to being partially concrete. That is to say:
633    
634      from
635            type instruction
636    
637      to
638            type instr                              (* machine instruction *)
639    
640            datatype instruction =
641                LIVE of {regs: C.cellset, spilled: C.cellset}
642              | KILL of {regs: C.cellset, spilled: C.cellset}
643              | COPYXXX of {k: CB.cellkind, dst: CB.cell list, src: CB.cell list}
644              | ANNOTATION of {i: instruction, a: Annotations.annotation}
645              | INSTR of instr
646    
647    This makes the handling of certain special instructions that appear on
648    all architectures easier and uniform.
649    
650    LIVE and KILL say that a list of registers are live or killed at the
651    program point where they appear. No spill code is generated when an
652    element of the 'regs' field is spilled, but the register is moved to
653    the 'spilled' (which is present, more for debugging than anything else).
654    
655    LIVE replaces the (now deprecated) DEFFREG instruction on the alpha.
656    We used to generate:
657    
658            DEFFREG f1
659            f1 := f2 + f3
660            trapb
661    
662    but now generate:
663    
664            f1 := f2 + f3
665            trapb
666            LIVE {regs=[f1,f2,f3], spilled=[]}
667    
668    Furthermore, the DEFFREG (hack) required that all floating point instruction
669    use all registers mentioned in the instruction. Therefore f1 := f2 + f3,
670    defines f1 and uses [f1,f2,f3]! This hack is no longer required resulting
671    in a cleaner alpha implementation. (Hopefully, intel will not get rid of
672    this architecture).
673    
674    COPYXXX is intended to replace the parallel COPY and FCOPY  available on
675    all the architectures. This will result in further simplification of the
676    register allocator that must be aware of them for coalescing purposes, and
677    will also simplify certain aspects of the machine description that provides
678    callbacks related to parallel copies.
679    
680    ANNOTATION should be obvious, and now INSTR represents the honest to God
681    machine instruction set!
682    
683    The <arch>/instructions/<arch>Instr.sml files define certain utility
684    functions for making porting easier -- essentially converting upper case
685    to lower case. All machine instructions (of type instr) are in upper case,
686    and the lower case form generates an MLRISC instruction. For example on
687    the alpha we have:
688    
689      datatype instr =
690         LDA of {r:cell, b:cell, d:operand}
691       | ...
692    
693      val lda : {r:cell, b:cell, d:operand} -> instruction
694        ...
695    
696    where lda is just (INSTR o LDA), etc.
697    
698    ----------------------------------------------------------------------
699    Name: Matthias Blume
700    Date: 2001/11/22 21:40:00 EST
701    Tag: Release_110_37
702    Description:
703    
704    Release 110.37.  This time for real.
705    
706    ----------------------------------------------------------------------
707    Name: Matthias Blume
708    Date: 2001/11/21 16:35:00 EST
709    Tag: blume-20011121-foot-in-mouth
710    Description:
711    
712    Removed the "Release_110_37" tag because of a serious bug.
713    This will be re-tagged once the bug is fixed.
714    
715    ----------------------------------------------------------------------
716    Name: Matthias Blume
717    Date: 2001/11/21 16:14:00 EST
718    Tag: blume-20011121-forgottenfile
719    Description:
720    
721    Forgot to add a file.  (Just a .tex-file -- part of
722    the CM manual source.)
723    
724    ----------------------------------------------------------------------
725    Name: Matthias Blume
726    Date: 2001/11/21 16:10:00 EST
727    Tag: blume-20011121-invalid_110_37
728    Description:
729    
730    Note: I removed the original tag "Release_110_37" from this commit
731          because we found a serious bug in all non-x86 backends.
732          - Matthias
733    
734    1. Modifications to the SML/NJ code generator and to the runtime system
735       so that code object name strings are directly inserted into code
736       objects at code generation time.  The only business the runtime system
737       has with this is now to read the name strings on occasions.
738       (The encoding of the name string has also changed somewhat.)
739    
740    2. CM now implements a simple "set calculus" for specifying export lists.
741       In particular, it is now possible to refer to the export lists of
742       other libraries/groups/sources and form unions as well as differences.
743       See the latest CM manual for details.
744    
745    3. An separate notion of "proxy" libraries has again be eliminated from
746       CM's model.  (Proxy libraries are now simply a special case of using
747       the export list calculus.)
748    
749    4. Some of the existing libraries now take advantage of the new set
750       calculus.
751       (Notice that not all libraries have been converted because some
752       of the existing .cm-files are supposed to be backward compatible
753       with 110.0.x.)
754    
755    5. Some cleanup in stand-alone programs.  (Don't use "exnMessage" -- use
756       "General.exnMessage"!  The former relies on a certain hook to be
757       initialized, and that often does not happen in the stand-alone case.)
758    
759    ----------------------------------------------------------------------
760    Name: Lal George
761    Date: 2001/11/21  13:56:18 EST
762    Tag: george-2001121-pseudo-ops
763    Description:
764    
765      Implemented a complete redesign of MLRISC pseudo-ops. Now there
766      ought to never be any question of incompatabilities with
767      pseudo-op syntax expected by host assemblers.
768    
769      For now, only modules supporting GAS syntax are implemented
770      but more should follow, such as MASM, and vendor assembler
771      syntax, e.g. IBM as, Sun as, etc.
772    
773    ----------------------------------------------------------------------
774    Name: Matthias Blume
775    Date: 2001/11/14 11:52:00 EST
776    Tag: blume-20011114-srcname
777    Description:
778    
779    1. Routed the name of the current source file to mlriscgen where it
780       should be directly emitted into the code object.  (This last part
781       is yet to be done.)
782    
783    2. Some cleanup of the pgraph code to make it match the proposal that
784       I put out the other day.  (The proposal notwithstanding, things are
785       still in flux here.)
786    
787    ----------------------------------------------------------------------
788    Name: Lal George
789    Date: 2001/11/14 09:44:04 EST
790    Tag:
791    Description:
792    
793      Fix for a backpatching bug reported by Allen.
794    
795      Because the boundary between short and long span-dependent
796      instructions is +/- 128, there are an astounding number of
797      span-dependent instructions whose size is over estimated.
798    
799      Allen came up with the idea of letting the size of span
800      dependent instructions be non-monotonic, for a maxIter
801      number of times, after which the size must be monotonically
802      increasing.
803    
804      This table shows the number of span-dependent instructions
805      whose size was over-estimated as a function of maxIter, for the
806      file Parse/parse/ml.grm.sml:
807    
808         maxIter            # of instructions:
809            10                      687
810            20                      438
811            30                      198
812            40                        0
813    
814      In compiling the compiler, there is no significant difference in
815      compilation speed between maxIter=10 and maxIter=40. Actually,
816      my measurements showed that maxIter=40 was a tad faster than
817      maxIter=10! Also 96% of the  files in the compiler reach a fix
818      point within 13 iterations, so fixing maxIter at 40, while high,
819      is okay.
820    
821    ----------------------------------------------------------------------
822    Name: Matthias Blume
823    Date: 2001/10/31 15:25:00 EST
824    Tag: blume-20011031-pgraph
825    Description:
826    
827    CKIT:
828    * Changed the "Function" constructor of type Ast.ctype to carry optional
829      argument identifiers.
830    * Changed the return type of TypeUtil.getFunction accordingly.
831    * Type equality ignores the argument names.
832    * TypeUtil.composite tries to preserve argument names but gives up quickly
833      if there is a mismatch.
834    
835    installation script:
836    * attempts to use "curl" if available (unless "wget" is available as well)
837    
838    CM:
839    * has an experimental implementation of "portable graphs" which I will
840      soon propose as an implementation-independent library format
841    * there are also new libraries $/pgraph.cm and $/pgraph-util.cm
842    
843    NLFFI-LIB:
844    * some cleanup (all cosmetic)
845    
846    NLFFIGEN:
847    * temporarily disabled the mechanism that suppresses ML output for
848      C definitions whose identifiers start with an underscore character
849    * generate val bindings for enum constants
850    * user can request that only one style (light or heavy) is being used;
851      default is to use both (command-line arguments: -heavy and -light)
852    * fixed bug in handling of function types involving incomplete pointers
853    * generate ML entry points that take record arguments (i.e., using
854      named arguments) for C functions that have a prototype with named
855      arguments
856      (see changes to CKIT)
857    
858    ----------------------------------------------------------------------
859    Name: Allen Leung
860    Date: 2001/10/27 20:34:00 EDT
861    Tag: leunga-20011027-x86-fast-fp-call
862    Description:
863    
864       Fixed the bug described in blume-20010920-slowfp.
865    
866       The fix involves
867          1. generating FCOPYs in FSTP in ia32-svid
868          2. marking a CALL with the appropriate annotation
869    
870    ----------------------------------------------------------------------
871    Name: Matthias Blume
872    Date: 2001/10/16 11:32:00 EDT
873    Tag: blume-20011016-netbsd
874    Description:
875    
876    Underscore patch from Chris Richards (fixing problem with compiling
877    runtime system under recent NetBSD).
878    
879    ----------------------------------------------------------------------
880    Name: Allen Leung
881    Date: 2001/10/12 17:18:32 EDT 2001
882    Tag: leung-20011012-x86-printflowgraph
883    Description:
884    
885    X86RA now uses a valid (instead of dummy) PrintFlowgraph module.
886    
887    ----------------------------------------------------------------------
888    Name: Lal George
889    Date: 2001/10/11 23:51:34 EDT
890    Tag: george-20011011-too-many-instrs
891    Description:
892    
893    The representation of a program point never expected to see more
894    than 65536 instructions in a basic block!
895    
896    ----------------------------------------------------------------------
897    Name: Lal George
898    Date: 2001/10/09 09:41:37 EDT
899    Tag: george-20011008-mlrisc-labels
900    Description:
901    
902    Changed the machine description files to support printing of
903    local and global labels in assembly code, based on host assembler
904    conventions.
905    
906    ----------------------------------------------------------------------
907    Name: Matthias Blume
908    Date: 2001/09/25 15:25:00 EDT
909    Tag: blume-20010925-exninfo
910    Description:
911    
912    I provided a non-hook implementation of exnName (at the toplevel) and
913    made the "dummy" implementation of exnMessage (at the toplevel) more
914    useful: if nothing gets "hooked in", then at least you are going to
915    see the exception name and a message indicating why you don't see more.
916    
917    [For the time being, programs that need exnMessage and want to use
918    ml-build should either use General.exnMessage (strongly recommended) or
919    refer to structure General at some other point so that CM sees a
920    static dependency.]
921    
922    [Similar remarks go for "print" and "use":  If you want to use their
923    functionality in stand-alone programs generated by ml-build, then use
924    TextIO.output and Backend.Interact.useFile (from $smlnj/compiler.cm).]
925    
926    ----------------------------------------------------------------------
927    Name: Matthias Blume
928    Date: 2001/09/20 17:28:00 EDT
929    Tag: blume-20010920-slowfp
930    Description:
931    
932    Allen says that x86-fast-fp is not safe yet, so I turned it off again...
933    
934    ----------------------------------------------------------------------
935    Name: Matthias Blume
936    Date: 2001/09/20 17:20:00 EDT
937    Tag: blume-20010920-canonicalpaths
938    Description:
939    
940    0. Updated the BOOT file (something that I forgot to do earlier).
941    
942    1. Small internal change to CM so that it avoids "/../" in filenames
943       as much as possible (but only where it is safe).
944    
945    2. Changed config/_run-sml (resulting in a changed bin/.run-sml) so
946       that arguments that contain delimiters are passed through correctly.
947       This change also means that all "special" arguments of the form
948       @SMLxxx... must come first.
949    
950    3. Changed install script to put relative anchor names for tool commands
951       into pathconfig.
952    
953    ----------------------------------------------------------------------
954    Name: Matthias Blume
955    Date: 2001/09/18 15:35:00 EDT
956    Tag: blume-20010918-readme11036
957    Description:
958    
959    Added README files.
960    
961    ----------------------------------------------------------------------
962    Name: Matthias Blume
963    Date: 2001/09/18 11:45:00 EDT
964    Tag: Release_110_36 (retag)
965    Description:
966    
967    Fixed mistake in config/preloads. Retagged as 110.36.
968    
969    ----------------------------------------------------------------------
970    Name: Matthias Blume
971    Date: 2001/09/18 09:40:00 EDT
972    Tag: Release_110_36_orig (tag changed)
973    Description:
974    
975    New version (110.36).  New bootfiles.
976    
977    ----------------------------------------------------------------------
978    Name: Matthias Blume
979    Date: 2001/09/14 16:15:00 EDT
980    Tag: blume-20010914-x86fastfp
981    Description:
982    
983    John committed some changes that Allen made, in particular a (hopefully)
984    correctly working version of the x86-fp module.
985    
986    I changed the default setting of the Control.MLRISC.getFlag "x86-fast-fp"
987    flag to "true".  Everything seems to compile to a fixpoint ok, and
988    "mandelbrot" speeds up by about 15%.
989    
990    ----------------------------------------------------------------------
991    Name: Matthias Blume
992    Date: 2001/09/13 11:20:00 EDT
993    Tag: blume-20010913-minimal
994    Description:
995    
996    1. Stefan Monnier's patch to fix a miscompilation problem that
997       was brought to light by John Reppy's work on Moby.
998    
999    2. Implemented a minimal "structure Compiler" that contains just
1000       "version" and "architecture".  The minimal version will be
1001       available when the full version is not.  This is for backward-
1002       compatibility with code that wants to test Compiler.version.
1003    
1004    ----------------------------------------------------------------------
1005    Name: Matthias Blume
1006    Date: 2001/08/28 14:03:00 EDT
1007    Tag: blume-20010828-ml-lex
1008    Description:
1009    
1010    Fix for bug 1581, received from Neophytos Michael.
1011    
1012    ----------------------------------------------------------------------
1013    Name: Matthias Blume
1014    Date: 2001/08/27 11:20:00 EDT
1015    Tag: blume-20010827-readme11035
1016    Description:
1017    
1018    Fleshed out the README file for 110.35.
1019    
1020    ----------------------------------------------------------------------
1021    Name: Matthias Blume
1022    Date: 2001/08/24 17:10:00 EDT
1023    Tag: Release_110_35
1024    Description:
1025    
1026    New version number (110.35).  New bootfiles.
1027    
1028    ----------------------------------------------------------------------
1029    Name: Lal George
1030    Date: 2001/08/24 13:47:18 EDT 2001
1031    Tag: george-20010824-MLRISC-graphs
1032    Description:
1033    
1034     removed clusters from MLRISC completely and replaced with graphs.
1035    
1036    ----------------------------------------------------------------------
1037    Name: Matthias Blume
1038    Date: 2001/08/23 17:50:00 EDT
1039    Tag: blume-20010823-toplevel
1040    Description:
1041    
1042    - some reorganization of the code that implements various kinds of
1043      environments in the compiler (static, dynamic, symbolic, combined)
1044    - re-implemented the EnvRef module so that evalStream works properly
1045      (if the stream contains references to "use", "CM.make", etc.)
1046    - cleaned up evalloop.sml and interact.sml (but they need more cleaning)
1047    
1048    ----------------------------------------------------------------------
1049    Name: Matthias Blume
1050    Date: 2001/08/20 15:50 EDT
1051    Tag: blume20010820-slipup
1052    Description:
1053    
1054    I forgot to commit a few files.  Here they are...
1055    
1056    ----------------------------------------------------------------------
1057    Name: Matthias Blume
1058    Date: 2001/08/20 15:35:00 EDT
1059    Tag: blume-20010820-debugprof
1060    Description:
1061    
1062    !!!! NEW BOOTFILES !!!!
1063    
1064    This is another round of reorganizing the compiler sources.  This
1065    time the main goal was to factor out all the "instrumentation"
1066    passes (for profiling and backtracing) into their own library.
1067    The difficulty was to do it in such a way that it does not depend
1068    on elaborate.cm but only on elabdata.cm.
1069    
1070    Therefore there have been further changes to both elaborate.cm and
1071    elabdata.cm -- more "generic" things have been moved from the former
1072    to the latter.  As a result, I was forced to split the assignment
1073    of numbers indicating "primtyc"s into two portions: SML-generic and
1074    SML/NJ-specific.  Since it would have been awkward to maintain,
1075    I bit the bullet and actually _changed_ the mapping between these
1076    numbers and primtycs.  The bottom line of this is that you need
1077    a new set of bin- and bootfiles.
1078    
1079    I have built new bootfiles for all architectures, so doing a fresh
1080    checkout and config/install.sh should be all you need.
1081    
1082    The newly created library's name is
1083    
1084        $smlnj/viscomp/debugprof.cm
1085    
1086    and its sources live under
1087    
1088        src/compiler/DebugProf
1089    
1090    ----------------------------------------------------------------------
1091    Name: Matthias Blume
1092    Date: 2001/08/15 17:15:00 EDT
1093    Tag: blume-20010815-compreorg
1094    Description:
1095    
1096    This is a first cut at reorganizing the CM libraries that make up the
1097    core of the compiler.  The idea is to separate out pieces that could
1098    be used independently by tools, e.g., the parser, the typechecker, etc.
1099    
1100    The current status is a step in this direction, but it is not quite
1101    satisfactory yet.  Expect more changes in the future.
1102    
1103    Here is the current (new) organization...
1104    
1105        What used to be $smlnj/viscomp/core.cm is now divided into
1106        six CM libraries:
1107    
1108             $smlnj/viscomp/basics.cm
1109                           /parser.cm
1110                           /elabdata.cm
1111                           /elaborate.cm
1112                           /execute.cm
1113                           /core.cm
1114    
1115        The CM files for these libraries live under src/system/smlnj/viscomp.
1116        All these libraries are proxy libraries that contain precisely
1117        one CM library component.  Here are the locations of the components
1118        (all within the src/compiler tree):
1119    
1120             Basics/basics.cm
1121             Parse/parser.cm
1122             ElabData/elabdata.cm
1123             Elaborator/elaborate.cm
1124             Execution/execute.cm
1125             core.cm
1126    
1127         [This organization is the same that has been used already
1128         for a while for the architecture-specific parts of the visible
1129         compiler and for the old version of core.cm.]
1130    
1131         As you will notice, many source files have been moved from their
1132         respective original locations to a new home in one of the above
1133         subtrees.
1134    
1135         The division of labor between the new libraries is the following:
1136    
1137             basics.cm:
1138                - Simple, basic definitions that pertain to many (or all) of
1139                  the other libraries.
1140             parser.cm:
1141                - The SML parser, producing output of type Ast.dec.
1142                - The type family for Ast is also defined and exported here.
1143             elabdata.cm:
1144                - The datatypes that describe input and output of the elaborator.
1145                  This includes types, absyn, and static environments.
1146             elaborator.cm:
1147                - The SML/NJ type checker and elaborator.
1148                  This maps an Ast.dec (with a given static environment) to
1149                  an Absyn.dec (with a new static environment).
1150                - This libraries implements certain modules that used to be
1151                  structures as functors (to remove dependencies on FLINT).
1152             execute.cm:
1153                - Everything having to do with executing binary code objects.
1154                - Dynamic environments.
1155             core.cm:
1156                - SML/NJ-specific instantiations of the elaborator and MLRISC.
1157                - Top-level modules.
1158                - FLINT (this should eventually become its own library)
1159    
1160    Notes:
1161    
1162    I am not 100% happy with the way I separated the elaborator (and its
1163    data structures) from FLINT.  Two instances of the same problem:
1164    
1165        1. Data structures contain certain fields that carry FLINT-specific
1166           information.  I hacked around this using exn and the property list
1167           module from smlnj-lib.  But the fact that there are middle-end
1168           specific fields around at all is a bit annoying.
1169    
1170        2. The elaborator calculates certain FLINT-related information.  I tried
1171           to make this as abstract as I could using functorization, but, again,
1172           the fact that the elaborator has to perform calculations on behalf
1173           of the middle-end at all is not nice.
1174    
1175        3. Having to used exn and property lists is unfortunate because it
1176           weakens type checking.  The other alternative (parameterizing
1177           nearly *everything*) is not appealing, though.
1178    
1179    I removed the "rebinding =" warning hack because due to the new organization
1180    it was awkward to maintain it.  As a result, the compiler now issues some of
1181    these warnings when compiling init.cmi during bootstrap compilation. On
1182    the plus side, you also get a warning when you do, for example:
1183       val op = = Int32.+
1184    which was not the case up to now.
1185    
1186    I placed "assign" and "deref" into the _Core structure so that the
1187    code that deals with the "lazy" keyword can find them there.  This
1188    removes the need for having access to the primitive environment
1189    during elaboration.
1190    
1191    ----------------------------------------------------------------------
1192    Name: Matthias Blume
1193    Date: 2001/08/13
1194    Tag: blume-20010813-closures
1195    Description:
1196    
1197    This fix was sent to us by Zhong Shao.  It is supposed to improve the
1198    performance of certain loops by avoiding needless closure allocation.
1199    
1200    ----------------------------------------------------------------------
1201    Name: Lal George
1202    Date: 2001/07/31 10:03:23 EDT 2001
1203    Tag: george-20010731-x86-fmalloc
1204    Description: Fixed bug in x86 calls
1205    
1206        There was a bug where call instructions would mysteriously
1207        vanish. The call instruction had to be one that returned
1208        a floating point value.
1209    
1210    ----------------------------------------------------------------------
1211    Name: Lal George
1212    Date: 2001/07/19 16:36:29 EDT 2001
1213    Tag: george-20010719-simple-cells
1214    Description:
1215    
1216    I have dramatically simplified the interface for CELLS in MLRISC.
1217    
1218    In summary, the cells interface is broken up into three parts:
1219    
1220      1. CellsBasis : CELLS_BASIS
1221    
1222            CellsBasis is a top level structure and common for all
1223            architectures.  it contains the definitions of basic datatypes
1224            and utility  functions over these types.
1225    
1226      2. functor Cells() : CELLS
1227    
1228            Cells generates an interface for CELLS that incorporates the
1229            specific resources on the target architecture, such as the
1230            presence of special register classes, their number and size,
1231            and various useful substructures.
1232    
1233      3. <ARCH>CELLS
1234    
1235            e.g. SparcCells: SPARCCELLS
1236    
1237            <ARCH>CELLS usually contains additional bindings for special
1238            registers  on the architecture, such as:
1239    
1240                    val r0 : cell           (* register zero *)
1241                    val y : cell            (* Y register *)
1242                    val psr : cell          (* processor status register *)
1243                    ...
1244    
1245            The structure returned by applying the Cells functor is opened
1246            in this interface.
1247    
1248    The main implication of all this is that the datatypes for cells is
1249    split between CellsBasis and CELLS -- a fairly simple change for user
1250    code.
1251    
1252    In the old scheme the CELLS interface had a definitional binding of
1253    the form:
1254    
1255            signature CELLS = sig
1256    
1257               structure CellsBasis = CellsBasis
1258    
1259               ...
1260    
1261            end
1262    
1263    With all the sharing constraints that goes on in MLRISC, this old
1264    design  quickly leads to errors such as:
1265    
1266            "structure definition spec inside of sharing ... "
1267    
1268    
1269    and appears to require an unacceptable amount of sharing and where
1270    constraint hackery.
1271    
1272    I think this error message (the interaction of definitional specs and
1273    sharing) requires more explanation on our web page.
1274    
1275    ----------------------------------------------------------------------
1276    Name: Matthias Blume
1277    Date: 2001/07/19 15:00:00 EDT
1278    Tag: blume-20010719-libreorg
1279    Description:
1280    
1281    This update puts together a fairly extensive but straightforward change
1282    to the way the libraries that implement the interactive system are
1283    organized:
1284    
1285       The biggest change is the elimination of structure Compiler.  As a
1286       replacement for this structure, there is now a CM library
1287       (known as $smlnj/compiler.cm or $smlnj/compiler/current.cm)
1288       that exports all the substructures of the original structure Compiler
1289       directly.  So instead of saying Compiler.Foo.bar one now simply
1290       says Foo.bar.  (The CM libraries actually export a collection of
1291       structures that is richer than the collection of substructures of
1292       structure Compiler.)
1293    
1294       To make the transition smooth, there is a separate library called
1295       $smlnj/compiler/compiler.cm which puts together and exports the
1296       original structure Compiler (or at least something very close to it).
1297    
1298       There are five members of the original structure Compiler
1299       that are not exported directly but which instead became members
1300       of a new structure Backend (described by signature BACKEND).  These are:
1301       structure Profile (: PROFILE), structure Compile (: COMPILE), structure
1302       Interact (: INTERACT), structure Machine (: MACHINE), and val
1303       architecture (: string).
1304    
1305       Structure Compiler.Version has become structure CompilerVersion.
1306    
1307       Cross-compilers for alpha32, hppa, ppc, sparc, and x86 are provided
1308       by $smlnj/compiler/<arch>.cm where <arch> is alpha32, hppa, ppc, sparc,
1309       or x86, respectively.
1310       Each of these exports the same frontend structures that
1311       $smlnj/compiler.cm exports.  But they do not have a structure Backend
1312       and instead export some structure <Arch>Backend where <Arch> is Alpha32,
1313       Hppa, PPC, Sparc, or X86, respectively.
1314    
1315       Library $smlnj/compiler/all.cm exports the union of the exports of
1316       $smlnj/compiler/<arch>.cm
1317    
1318       There are no structures <Arch>Compiler anymore, use
1319       $smlnj/compiler/<arch>.cm instead.
1320    
1321       Library host-compiler-0.cm is gone.  Instead, the internal library
1322       that instantiates CM is now called cm0.cm.  Selection of the host
1323       compiler (backend) is no longer done here but. (Responsibility for it
1324       now lies with $smlnj/compiler/current.cm.  This seems to be more
1325       logical.)
1326    
1327       Many individual files have been moved or renamed.  Some files have
1328       been split into multiple files, and some "dead" files have been deleted.
1329    
1330    Aside from these changes to library organization, there are also changes
1331    to the way the code itself is organized:
1332    
1333       Structure Binfile has been re-implemented in such a way that it no
1334       longer needs any knowledge of the compiler.  It exclusively deals
1335       with the details of binfile layout.  It no longer invokes the
1336       compiler (for the purpose of creating new prospective binfile
1337       content), and it no longer has any knowledge of how to interpret
1338       pickles.
1339    
1340       Structure Compile (: COMPILE) has been stripped down to the bare
1341       essentials of compilation.  It no longer deals with linking/execution.
1342       The interface has been cleaned up considerably.
1343    
1344       Utility routines for dealing with linking and execution have been
1345       moved into their own substructures.
1346    
1347       (The ultimate goal of these changes is to provide a light-weight
1348       binfile loader/linker (at least for, e.g., stable libraries) that
1349       does not require CM or the compiler to be present.)
1350    
1351    CM documentation has been updated to reflect the changes to library
1352    organization.
1353    
1354    ----------------------------------------------------------------------
1355    Name: Matthias Blume
1356    Date: 2001/07/10 17:30:00 EDT
1357    Tag: Release_110_34
1358    Description:
1359    
1360    Minor tweak to 110.34 (re-tagged):
1361    
1362      - README.html file added to CVS repository
1363      - runtime compiles properly under FreeBSD 3.X and 4.X
1364    
1365    ----------------------------------------------------------------------
1366    Name: Matthias Blume
1367    Date: 2001/07/10 17:30:00 EDT
1368    Tag: Release_110_34
1369    Description:
1370    
1371    New version number (110.34). New bootfiles.
1372    
1373    ----------------------------------------------------------------------
1374    Name: Matthias Blume
1375    Date: 2001/07/09 16:00:00 EDT
1376    Tag: blume-20010709-more-varargs
1377    Description:
1378    
1379    I changed the handling of varargs in ml-nlffigen again:
1380    The ellipsis ... will now simply be ignored (with an accompanying warning).
1381    
1382    The immediate effect is that you can actually call a varargs function
1383    from ML -- but you can't actually supply any arguments beyond the ones
1384    specified explicitly.  (For example, you can call printf with its format
1385    string, but you cannot pass additional arguments.)
1386    
1387    This behavior is only marginally more useful than the one before, but
1388    it has the advantage that a function or, more importantly, a function
1389    type never gets dropped on the floor, thus avoiding follow-up problems with
1390    other types that refer to the offending one.
1391    
1392    ----------------------------------------------------------------------
1393    Name: Matthias Blume
1394    Date: 2001/07/09 11:25:00 EDT
1395    Tag: blume-20010709-varargs
1396    Description:
1397    
1398    1. ckit-lib.cm now exports structure Error
1399    2. ml-nlffigen reports occurences of "..." (i.e., varargs function types)
1400       with a warning accompanied by a source location.  Moreover, it
1401       merely skips the offending function or type and proceeds with the
1402       rest of its work.u  As a result, one can safely feed C code containing
1403       "..." to ml-nlffigen.
1404    3. There are some internal improvements to CM, providing slightly
1405       more general string substitutions in the tools subsystem.
1406    
1407    ----------------------------------------------------------------------
1408    Name: Matthias Blume
1409    Date: 2001/06/27 15:10:00 EDT
1410    Tag: blume-20010627-concur
1411    Description:
1412    
1413    Fixed a small bug in CM's handling of parallel compilation.
1414    (You could observe the bug by Control-C-interrupting an ordinary
1415    CMB.make or CM.stabilize and then attaching some compile servers.
1416    The result was that all of a sudden the previously interrupted
1417    compilation would continue on its own.  This was because of
1418    an over-optimization: CM did not bother to clean out certain queues
1419    when no servers were attached "anyway", resulting in the contents
1420    of these queues to grab control when new servers did get attached.)
1421    
1422    There is also another minor update to the CM manual.
1423    
1424    ----------------------------------------------------------------------
1425    Name: Matthias Blume
1426    Date: 2001/06/26 16:15:00 EDT
1427    Tag: blume-20010626-cmdoc
1428    Description:
1429    
1430    Minor typo fixed in CM manual (syntax diagram for libraries).
1431    
1432    ----------------------------------------------------------------------
1433    Name: Matthias Blume
1434    Date: 2001/06/25 22:55:00 EDT
1435    Tag: blume-20010625-x86pc
1436    Description:
1437    
1438    Fixed a nasty bug in the X86 assembly code that caused signal
1439    handlers to fail (crash) randomly.
1440    
1441    ----------------------------------------------------------------------
1442    Name: Matthias Blume
1443    Date: 2001/06/25 12:05:00 EDT
1444    Tag: blume-20010625-nlffigen
1445    Description:
1446    
1447    This update fixes a number of minor bugs in ml-nlffigen as reported by
1448    Nick Carter <nbc@andrew.cmu.edu>.
1449    
1450      1. Silly but ok typedefs of the form "typedef void myvoid;" are now accepted.
1451      2. Default names for generated files are now derived from the name of
1452         the C file *without its directory*.  In particular, this causes generated
1453         files to be placed locally even if the C file is in some system directory.
1454      3. Default names for generated signatures and structures are also derived
1455         from the C file name without its directory.  This avoids silly things
1456         like "structure GL/GL".
1457         (Other silly names are still possible because ml-nlffigen does not do
1458          a thorough check of whether generated names are legal ML identifiers.
1459          When in doubt, use command line arguments to force particular names.)
1460    
1461    ----------------------------------------------------------------------
1462    Name: Matthias Blume
1463    Date: 2001/06/21 12:25:00 EDT
1464    Tag: blume-20010621-eXene
1465    Description:
1466    
1467    eXene now compiles and (sort of) works again.
1468    
1469    The library name (for version > 110.33) is $/eXene.cm.
1470    
1471    I also added an new example in src/eXene/examples/nbody.  See the
1472    README file there for details.
1473    
1474    ----------------------------------------------------------------------
1475    Name: Matthias Blume
1476    Date: 2001/06/20 16:40:00 EDT
1477    Tag: blume-20010620-cml
1478    Description:
1479    
1480    CML now compiles and works again.
1481    
1482    Libraries (for version > 110.33):
1483    
1484      $cml/cml.cm            Main CML library.
1485      $cml/basis.cm          CML's version of $/basis.cm.
1486      $cml/cml-internal.cm   Internal helper library.
1487      $cml/core-cml.cm       Internal helper library.
1488      $cml-lib/trace-cml.cm  Tracing facility.
1489      $cml-lib/smlnj-lib.cm  CML's version of $/smlnj-lib.cm
1490    
1491    The installer (config/install.sh) has been taught how to properly
1492    install this stuff.
1493    
1494    ----------------------------------------------------------------------
1495    Name: Matthias Blume
1496    Date: 2001/06/19 17:55:00 EDT
1497    Tag: blume-20010619-instantiate
1498    Description:
1499    
1500    This un-breaks the fix for bug 1432.
1501    (The bug was originally fixed in 110.9 but I broke it again some
1502    time after that.)
1503    
1504    ----------------------------------------------------------------------
1505    Name: Matthias Blume
1506    Date: 2001/06/19 17:25:00 EDT
1507    Tag: blume-20010619-signals
1508    Description:
1509    
1510    This should (hopefully) fix the long-standing signal handling bug.
1511    (The runtime system was constructing a continuation record with an
1512    incorrect descriptor which would cause the GC to drop data on the floor...)
1513    
1514    ----------------------------------------------------------------------
1515    Name: Matthias Blume
1516    Date: 2001/06/15 15:05:00 EDT
1517    Tag: blume-20010615-moresparc
1518    Description:
1519    
1520    Here is a short late-hour update related to Sparc c-calls:
1521    
1522     -- made handling of double-word arguments a bit smarter
1523    
1524     -- instruction selection phase tries to collapse certain clumsily
1525        constructed ML-Trees; typical example:
1526    
1527            ADD(ty,ADD(_,e,LI d1),LI d2)  ->  ADD(ty,e,LI(d1+d2))
1528    
1529        This currently has no further impact on SML/NJ since mlriscGen does
1530        not seem to generate such patterns in the first place, and c-calls
1531        (which did generate them in the beginning) has meanwhile been fixed
1532        so as to avoid them as well.
1533    
1534    ----------------------------------------------------------------------
1535    Name: Matthias Blume
1536    Date: 2001/06/15 15:05:00 EDT
1537    Tag: blume-20010615-sparc
1538    Description:
1539    
1540    The purpose of this update is to provide an implementation of NLFFI
1541    on Sparc machines.
1542    
1543    Here are the changes in detail:
1544    
1545       * src/MLRISC/sparc/c-calls/sparc-c-calls.sml is a new file containing
1546       the Sparc implementation of the c-calls API.
1547       * The Sparc backend of SML/NJ has been modified to uniformely use %fp
1548       for accessing the ML frame.  Thus, we have a real frame pointer and
1549       can freely modify %sp without need for an omit-frame-ptr phase.
1550       The vfp logic in src/compiler/CodeGen/* has been changed to accomodate
1551       this case.
1552       * ml-nlffigen has been taught to produce code for different architectures
1553       and calling conventions.
1554       * In a way similar to what was done in the x86 case, the Sparc
1555       backend uses its own specific extension to mltree.  (For example,
1556       it needs to be able to generate UNIMP instructions which are part
1557       of the calling convention.)
1558       * ml-nlffi-lib was reorganized to make it more modular (in particular,
1559       to make it easier to plug in new machine- and os-dependent parts).
1560    
1561    There are some other fairly unrelated bug fixes and cleanups as well:
1562    
1563       * I further hacked the .cm files for MLRISC tools (like MDLGen) so
1564       that they properly share their libraries with existing SML/NJ libraries.
1565       * I fixed a minor cosmetic bug in CM, supressing certain spurious
1566       follow-up error messages.
1567       * Updates to CM/CMB documentation.
1568    
1569    TODO items:
1570    
1571       * MLRISC should use a different register as its asmTemp on the Sparc.
1572         (The current %o2 is a really bad choice because it is part of the
1573         calling conventions, so things might interfere in unexpected ways.)
1574    
1575    ----------------------------------------------------------------------
1576    Name: Matthias Blume
1577    Date: 2001/06/07
1578    Tag: blume-20010607-calls
1579    Description:
1580    
1581    A number of internal changes related to C calls and calling conventions:
1582    
1583    1. ML-Tree CALL statements now carry a "pops" field.  It indicates the
1584       number of bytes popped implicitly (by the callee).  In most cases
1585       this field is 0 but on x86/win32 it is some non-zero value.  This
1586       is information provided for the benefit of the "omit-frameptr" pass.
1587    2. The CALL instruction on the x86 carries a similar "pops" field.
1588       The instruction selection phase copies its value from the ML-Tree
1589       CALL statement.
1590    3. On all other architectures, the instruction selection phase checks
1591       whether "pops=0" and complains if not.
1592    4. The c-calls implementation for x86 now accepts two calling conventions:
1593       "ccall" and "stdcall".  When "ccall" is selected, the caller cleans
1594       up after the call and pops is set to 0.  For "stdcall", the caller
1595       does nothing, leaving the cleanup to the callee; pops is set to
1596       the number of bytes that were pushed onto the stack.
1597    5. The cproto decoder (compiler/Semant/types/cproto.sml) now can
1598       distinguish between "ccall" and "stdcall".
1599    6. The UNIMP instruction has been added to the supported Sparc instruction
1600       set. (This is needed for implementing the official C calling convention
1601       on this architecture.)
1602    7. I fixed some of the .cm files under src/MLRISC/Tools to make them
1603       work with the latest CM.
1604    
1605    ----------------------------------------------------------------------
1606    Name: Matthias Blume
1607    Date: 2001/06/05 15:10:00 EDT
1608    Tag: blume-20010605-cm-index
1609    Description:
1610    
1611    0. The "lambdasplit" parameter for class "sml" in CM has been documented.
1612    
1613    1. CM can now generate "index files".  These are human-readable files
1614       that list on a per-.cm-file basis each toplevel symbol defined or
1615       imported.  The location of the index file for
1616       <p>/<d>.cm is <p>/CM/INDEX/<d>.cm.
1617       To enable index-file generation, set CM.Control.generate_index to true
1618       or export an environment-symbol: export CM_GENERATE_INDEX=true.
1619    
1620       The CM manual has been updated accordingly.
1621    
1622    2. I made some slight modifications to the c-calls API in MLRISC.
1623    
1624         a) There is now a callback to support saving/restoring of
1625            dedicated but caller-save registers around the actual call
1626            instruction.
1627         b) One can optionally specify a comment-annotation for the
1628            call instruction.
1629    
1630    3. SML/NJ (mlriscGen.sml) uses this new API for the rawccall primop.
1631       (For example, the comment annotation shows the C prototype of
1632        the function being called.)
1633    
1634    ----------------------------------------------------------------------
1635    Name: Matthias Blume
1636    Date: 2001/06/01 13:30:00 EDT
1637    Tag: blume-20010601-nlffi-cleanup
1638    Description:
1639    
1640    This is mostly a cleanup of MLFFI stuff:
1641    
1642       - some signature files have been put into a more exposed place
1643       - the ugly 'f type parameter is gone (simplifies types tremendously!)
1644       - ml-nlffigen changed accordingly
1645       - tutorial updated
1646    
1647    Other changes:
1648    
1649       - author's affiliation in CM manual(s) updated
1650       - some more recognized keywords added to Allen's sml.sty
1651    
1652    ----------------------------------------------------------------------
1653    Name: Matthias Blume
1654    Date: 2001/05/25 15:30:00 EDT
1655    Tag: blume-20010525-iptr
1656    Description:
1657    
1658      - put the official 110.33-README (as it appears on the ftp server) under
1659        CVS
1660      - fixed a small bug related to incomplete pointer types in
1661        ml-nlffigen
1662      - small cosmetic change to the ml-nlffi-lib's "arr" type constructor
1663        (it does not need the 'f type parameter)
1664    
1665    ----------------------------------------------------------------------
1666    Name: Matthias Blume
1667    Date: 2001/05/23 14:30:00 EDT
1668    Tag: Release_110_33
1669    Description:
1670    
1671    New version number (110.33).  New bootfiles.
1672    
1673    ----------------------------------------------------------------------
1674    Name: Matthias Blume
1675    Date: 2001/05/22 18:06:00 EDT
1676    Tag: blume-20010522-targets
1677    Description:
1678    
1679    Made install.sh use file config/targets.customized if it exists, falling
1680    back to config/targets if it doesn't.  This way one can have a customized
1681    version of the targets file without touching the "real thing", thus
1682    eliminating the constant fear of accidentally checking something bogus
1683    back into the CVS repository...  (File config/targets.customized must
1684    not be added to the repository!)
1685    
1686    ----------------------------------------------------------------------
1687    Name: Matthias Blume
1688    Date: 2001/05/22 16:30:00 EDT
1689    Tag: blume-20010522-minitut
1690    Description:
1691    
1692    1. Bug fix in ml-nlffigen; now (hopefully) correctly handling
1693       struct returns.
1694    2. Added src/ml-nlffi-lib/Doc/mini-tutorial.txt.  This is some very
1695       incomplete, preliminary documentation for NLFFI.
1696    
1697    ----------------------------------------------------------------------
1698    Name: Matthias Blume
1699    Date: 2001/05/14 11:30:00 EDT
1700    Tag: blume-20010514-script
1701    Description:
1702    
1703    Some bugs in install script fixed.
1704    
1705    In addition to that I also made a slight change to the NLFFI API:
1706    Functors generated by ml-nlffigen now take the dynamic library as a
1707    straight functor argument, not as a suspended one.  (The original
1708    functor code used to force the suspension right away anyway, so there
1709    was nothing gained by this complication of the interface.)
1710    
1711    ----------------------------------------------------------------------
1712    Name: Matthias Blume
1713    Date: 2001/05/11 14:35:00 EDT
1714    Tag: blume-20010511-ml-nlffi
1715    Description:
1716    
1717    I finally took the plunge and added my new FFI code to the main
1718    repository.  For x86-linux it is now ready for prime-time.
1719    
1720    There are two new subdirectories of "src":
1721    
1722      - ml-nlffi-lib:
1723           The utility library for programs using the FFI interface.
1724           Here is the implementation of $/c.cm and its associated low-level
1725           partners $/c-int.cm and $/memory.cm.
1726      - ml-nlffigen:
1727           A stand-alone program for generating ML glue code from C source
1728           code.
1729    
1730    Building ml-nlffigen requires $/ckit-lib.cm.
1731    
1732    The config/install.sh script has been updates to do the Right Thing
1733    (hopefully).
1734    
1735    Notice that the source tree for the C-Kit will not be put under "src"
1736    but directly under the installation root directory.  (This is the
1737    structure that currently exists on the CVS server when you check out
1738    module "sml".)  Fortunately, config/install.sh knows about this oddity.
1739    
1740    Bugs: No documentation yet.
1741    
1742    ----------------------------------------------------------------------
1743    Name: Matthias Blume
1744    Date: 2001/05/09 16:35:00 EDT
1745    Tag: blume-20010509-cpscontract
1746    Description:
1747    
1748    Fixed a bug in the accounting code in cpsopt/contract.sml.  (The
1749    wrapper/unwrapper elimination did not decrement usage counts and some
1750    dead variables got overlooked by the dead-up logic.)
1751    
1752    ----------------------------------------------------------------------
1753    Name: Lal George
1754    Date: 2001/05/08  17:26:09 EDT
1755    Tag: george-20010508-omit-frameptr
1756    Description:
1757    
1758    Changes to implement the omit-frame-pointer optimization to support
1759    raw C calls. For now, there is only support on the Intel x86, but
1760    other architectures will follow as more experience is gained with this.
1761    
1762    
1763    ----------------------------------------------------------------------
1764    Name: Matthias Blume
1765    Date: 2001/05/07 14:40:00 EDT
1766    Tag: blume-20010507-proxies
1767    Description:
1768    
1769    I made into "proxy libraries" all libraries that qualify for such a
1770    change.  (A qualifying library is a library that has another library or
1771    groups as its sole member and repeats that member's export list
1772    verbatim.  A proxy library avoids this repetition by omitting its export
1773    list, effectively inheriting the list that its (only) member exports.
1774    See the CM manual for more explanation.)
1775    The main effect is that explicit export lists for these libraries
1776    do not have to be kepts in sync, making maintenance a bit easier.
1777    
1778    I also added copyright notices to many .cm-files.
1779    
1780    Last but not least, I made a new set of bootfiles.
1781    
1782    ----------------------------------------------------------------------
1783    Name: Matthias Blume
1784    Date: 2001/05/04 17:00:00 EDT
1785    Tag: blume-20010504-cm-lsplit
1786    Description:
1787    
1788    0. John merged pending changes to $/smlnj-lib.cm
1789    
1790    1. Allen's previous change accidentally backed out of one of Lal's
1791       earlier changes.  I undid this mistake (re-introducing Lal's change).
1792    
1793    2. I used the new topOrder' function from graph-scc.sml (from $/smlnj-lib.cm)
1794       within the compiler where applicable.  There is some code simplification
1795       because of that.
1796    
1797    3. The "split" phase (in FLINT) is now part of the default list of phases.
1798       Compiler.Control.LambdaSplitting.* can be used to globally control the
1799       lambda-splitting (cross-module-inlining) engine.  In addition to that,
1800       it can now also be controlled on a per-source basis: CM has been taught
1801       a new tool parameter applicable to ML source files.
1802    
1803       - To turn lambda-splitting off completely:
1804            local open Compiler.Control.LambdaSplitting in
1805                val _ = set Off
1806            end
1807       - To make "no lambda-splitting" the global default (but allow per-source
1808         overriding); this is the initial setting:
1809            local open Compiler.Control.LambdaSplitting in
1810                val _ = set (Default NONE)
1811            end
1812       - To make "lambda-splitting with aggressiveness a" the global default
1813         (and allow per-source overriding):
1814            local open Compiler.Control.LambdaSplitting in
1815                val _ = set (Default (SOME a))
1816            end
1817    
1818       - To turn lambda-splitting off for a given ML souce file (say: a.sml)
1819         write (in the respective .cm-file):
1820            a.sml (lambdasplitting:off)
1821       - To turn lambda-splitting for a.sml on with minimal aggressiveness:
1822            a.sml (lambdasplitting:on)
1823       - To turn lambda-splitting for a.sml on with aggressiveness <a> (where
1824         <a> is a decimal non-negative integer):
1825            a.sml (lambdasplitting:<a>)
1826       - To turn lambda-splitting for a.sml on with maximal aggressiveness:
1827            a.sml (lambdasplitting:infinity)
1828       - To use the global default for a.sml:
1829            a.sml (lambdasplitting:default)
1830         or simply
1831            a.sml
1832    
1833    ----------------------------------------------------------------------
1834    Name: Allen Leung
1835    Date: 2001/05/04 01:57:00 EDT
1836    Tag: leunga-20010504-sync
1837    Description:
1838    
1839      MLRISC features.
1840    
1841      1. Fix to CMPXCHG instructions.
1842      2. Changed RA interface to allow annotations in callbacks.
1843      3. Added a new method to the stream interface to allow annotations updates.
1844    
1845    ----------------------------------------------------------------------
1846    Name: Matthias Blume
1847    Date: 2001/05/01 11:45:00 EDT
1848    Tag: blume-20010501-pcedittmp
1849    Description:
1850    
1851    Changed install.sh to use the current working directory instead of
1852    /usr/tmp for a temporary file (pcedittmp).  The previous choice
1853    of /usr/tmp caused trouble with MacOS X because of file premission
1854    problems.
1855    
1856    ----------------------------------------------------------------------
1857    Name: Matthias Blume
1858    Date: 2001/04/20 11:10:00 EDT
1859    Tag: blume-20010420-inMLflag
1860    Description:
1861    
1862     - added vp_limitPtrMask to vproc-state.h
1863       (for use by the raw-C-calls mechanism to implement proper interrupt
1864        handling)
1865     - made the ML compiler aware of various data-structure offsets so it
1866       can generate code for accessing the vp_inML flag and vp_limitPtrMask
1867     - tweaked mlriscGen.sml to have it emit interrupt-handling code for
1868       raw C-calls
1869    
1870    ----------------------------------------------------------------------
1871    Name: Lal George
1872    Date: 2001/04/20 09:15:28 EDT
1873    Tag: george-20010420-macosX
1874    Description:
1875    
1876     - Changes to port to Mac OS X; Darwin.
1877    
1878     - In the process I found that sqrt was broken on the PPC, because the
1879       fsqrt instruction is not implemented.
1880    
1881    ----------------------------------------------------------------------
1882    Name: Matthias Blume
1883    Date: 2001/04/18 12:45:00 EDT
1884    Tag: blume-20010418-ccalls
1885    Description:
1886    
1887     - fixed two off-by-4 errors in the x86-specific c-calls implementation
1888       (this bug prevented structure arguments containing pointers from being
1889        passed correctly)
1890     - changed the raw-C-call code in mlriscGen.sml in such a way that
1891       structure arguments are represented as a pointer to the beginning
1892       of the structure (instead of having a series of synthesized arguments,
1893       one for each structure member)
1894    
1895     - made makeml script's verbosity level configurable via environment
1896       variable (MAKEML_VERBOSITY)
1897    
1898     - eliminated placeholder implementations for f32l, w16s, i16s, and f32s
1899       in rawmem-x86.sml; we are now using the real thing
1900    
1901    ----------------------------------------------------------------------
1902    Name: Matthias Blume
1903    Date: 2001/03/22 16:25:00 EST
1904    Tag: blume-20010322-bootfiles
1905    Description:
1906    
1907    Created a new set of bootfiles (for your automatic installation convenience).
1908    
1909    ----------------------------------------------------------------------
1910    Name: Matthias Blume
1911    Date: 2001/03/22 15:10:00 EST
1912    Tag: blume-20010322-rawmem-parcm
1913    Description:
1914    
1915    1. All "raw memory access" primitives for the new FFI are implemented now
1916       (at least on the x86).
1917    2. Some further cleanup of CM's parallel make mechanism.
1918    
1919    ----------------------------------------------------------------------
1920    Name: Matthias Blume
1921    Date: 2001/03/19 17:53:00 EST
1922    Tag: blume-20010319-parallel
1923    Description:
1924    
1925    Parallel make (using compile servers) now works again.
1926    
1927    To this end, CM.stabilize and CMB.make have been modified to work in
1928    two passes when compile servers are attached:
1929       1. Compile everything, do not perform stabilization; this pass
1930          uses compile servers
1931       2. Stabilize everything; this pass does not use compile servers
1932    If there are no compile servers, the two passes are combined into one
1933    (as before).  Splitting the passes increases the inherent parallelism
1934    in the dependency graph because the entire graph including all
1935    libraries is available at the same time.  This, in turn, improves
1936    server utilization.  The downside is that the master process will
1937    have to do some extra work after compilation is done (because for
1938    technical reasons it must re-read all the binfiles during stabilization).
1939    
1940    ----------------------------------------------------------------------
1941    Name: Matthias Blume
1942    Date: 2001/03/16 12:22:00 EST
1943    Tag: blume-20010316-bootfiles
1944    Description:
1945    
1946    Created a new set of bootfiles (for your automatic installation convenience).
1947    
1948    ----------------------------------------------------------------------
1949    Name: Matthias Blume
1950    Date: 2001/03/16 11:00:00 EST
1951    Tag: blume-20010316-MLTREE-fixup
1952    Description:
1953    
1954    This is a minor fixup for an (untagged) earlier commit by Allen.
1955    (A file was missing).
1956    
1957    ----------------------------------------------------------------------
1958    Name: Allen Leung
1959    Date: Mon Mar  5 18:54:57 EST 2001
1960    Tag: leunga-20010305-cut-support
1961    
1962    1. New support for alternative control-flow in MLTREE.
1963       Currently we support
1964    
1965          FLOW_TO(CALL ...., [k1,...,kn])
1966    
1967       This is needed for 'cuts to' in C-- and try/handle-like constructs
1968       in Moby
1969    
1970       New assembler flag "asm-show-cutsto" to turn on control-flow debugging.
1971    
1972    2. Register Allocator
1973    
1974       Changes in interface [from Fermin, John]
1975    
1976    3. Alpha 8-bit SLL support [Fermin]
1977    
1978    4. All architectures
1979    
1980       A new module (ClusterExpandCopies) for expanding parallel copies.
1981    
1982    ----------------------------------------------------------------------
1983    Name: Allen Leung
1984    Date: 2001/02/27 23:07:00 EST
1985    Tag: leunga-20010227-minor-stuff
1986    
1987    1. Alpha bug fix for CMOVNE
1988    2. Handle mltree COND(..,FCMP ...,...)
1989    3. Bug fix in simplifier
1990    
1991    ----------------------------------------------------------------------
1992    Name: Matthias Blume
1993    Date: 2001/01/30 17:50:00 EST
1994    Tag: blume-20010130-sync
1995    Description:
1996    
1997    This is just a minor update to sync my devel branch with the main brach.
1998    The only visible change is the addition of some README files.
1999    
2000    ----------------------------------------------------------------------
2001    Name: Matthias Blume
2002    Date: 2001/01/12 23:30:00 JST
2003    Tag: blume-20010112-bootfiles
2004    Description:
2005    
2006    Made a new set of bootfiles that goes with the current state of the
2007    repository.
2008    
2009    ----------------------------------------------------------------------
2010    Name: Matthias Blume
2011    Date: 2001/01/12 21:20:00 JST
2012    Tag: blume-20010112-sync
2013    Description:
2014    
2015    I am just flushing out some minor changes that had accumulated in
2016    my private branch in order to sync with the main tree.  (This is
2017    mainly because I had CVS trouble when trying to merge _into_ my
2018    private branch.)
2019    
2020    Most people should be completely unaffected by this.
2021    
2022    ----------------------------------------------------------------------
2023    Name: Allen Leung
2024    Date: Thu Jan 11 21:03:00 EST 2001
2025    Tag: leunga-20010111-labexp=mltree
2026    Description:
2027    
2028    1.  Removed the type LabelExp and replace it by MLTree.
2029    2.  Rewritten mltree-simplify with the pattern matcher tool.
2030    3.  There were some bugs in alpha code generator which would break
2031        64-bit code generation.
2032    4.  Redo the tools to generate code with the
2033    5.  The CM files in MLRISC (and in src/system/smlnj/MLRISC)
2034        are now generated by perl scripts.
2035    
2036    ----------------------------------------------------------------------
2037    Name: Matthias Blume
2038    Date: 2001/01/10 21:55:00 JST
2039    Tag: blume-20010110-rcc
2040    Description:
2041    
2042    The RCC stuff now seems to work (but only on the x86).
2043    This required hacking of the c-calls interface (and -implementation) in
2044    MLRISC.
2045    
2046    Normal compiler users should be unaffected.
2047    
2048    ----------------------------------------------------------------------
2049    Name: Matthias Blume
2050    Date: 2001/01/09 01:20:00 JST
2051    Tag: blume-20010109-rcc
2052    Description:
2053    
2054    This is a fairly big patch, flushing out a large number of pending
2055    changes that I made to my development copy over the last couple of days.
2056    
2057    Of practical relevance at this moment is a workaround for a pickling
2058    bug that Allen ran into the other day.  The cause of the bug itself is
2059    still unknown and it might be hard to fix it properly, but the
2060    workaround has some merits of its own (namely somewhat reducing pickling
2061    overhead for certain libraries).  Therefore, I think this solution should
2062    be satisfactory at this time.
2063    
2064    The rest of the changes (i.e., the vast majority) has to do with my
2065    ongoing efforts of providing direct support for C function calls from
2066    ML.  At the moment there is a new primop "RAW_CCALL", typing magic
2067    in types/cproto.sml (invoked from FLINT/trans/translate.sml), a new
2068    case in the FLINT CPS datatype (RCC), changes to cps/convert.sml to
2069    translate uses of RAW_CCALL into RCC, and changes to mlriscGen.sml to
2070    handle RCC.
2071    
2072    The last part (the changes to mlriscGen.sml) are still known to be
2073    wrong on the x86 and not implemented on all other architectures.  But
2074    the infrastructure is in place. I had to change a few functor
2075    signatures in the backend to be able to route the CCalls interface
2076    from MLRISC there, and I had to specialize the mltree type (on the
2077    x86) to include the necessary extensions. (The extensions themselves
2078    were already there and redy to go in MLRISC/x86).
2079    
2080    Everything should be very happy as soon as someone helps me with
2081    mlriscGen.sml...
2082    
2083    In any case, nothing of this should matter to anyone as long as the
2084    new primop is not being used (which is going to be the case unless you
2085    find it where I hid it :). The rest of the compiler is completely
2086    unaffected.
2087    
2088    ----------------------------------------------------------------------
2089    Name: Matthias Blume
2090    Date: 2001/01/05 00:30:00 JST
2091    Tag: blume-20010105-primops
2092    Description:
2093    
2094    Added some experimental support for work that I am doing right now.
2095    These changes mostly concern added primops, but there is also a new
2096    experimental C library in the runtime system (but currently not enabled
2097    anywhere except on Linux/X86).
2098    
2099    In the course of adding primops (and playing with them), I discovered that
2100    Zhong's INL_PRIM hack (no type info for certain primops) was, in fact, badly
2101    broken.  (Zhong was very right he labeled this stuff as "major gross hack".)
2102    To recover, I made type information in INL_PRIM mandatory and changed
2103    prim.sml as well as built-in.sml accordingly.  The InLine structure now
2104    has complete, correct type information (i.e., no bottom types).
2105    
2106    Since all these changes mean that we need new binfiles, I also bumped the
2107    version number to 110.32.1.
2108    
2109    ----------------------------------------------------------------------
2110    Name: Matthias Blume
2111    Date: 2000/12/30 22:10:00 JST
2112    Tag: blume-20001230-various
2113    Description:
2114    
2115    Added proxy libraries for MLRISC and let MLRISC libraries refer
2116    to each other using path anchors.  (See CM manual for explanation.)
2117    
2118    Updated CM documentation.
2119    
2120    Fixed some bugs in CM.
2121    
2122    Implemented "proxy" libraries (= syntactic sugar for CM).
2123    
2124    Added "-quiet" option to makeml and changed runtime system accordingly.
2125    
2126    Added cleanup handler for exportML to reset timers and compiler stats.
2127    
2128    ----------------------------------------------------------------------
2129    Name: Lal George
2130    Date: 2000/12/22 22:22:58 EST 2000
2131    Tag: Release_110_32
2132    Description:
2133    
2134            Infinite precision used throughout MLRISC.
2135            see MLRISC/mltree/machine-int.sig
2136    
2137    ----------------------------------------------------------------------
2138    Name: Matthias Blume
2139    Date: 2000/12/22 23:16:00 JST
2140    Tag: blume-20001222-warn
2141    Description:
2142    
2143    Corrected wording and formatting of some CM warning message which I
2144    broke in my previous patch.
2145    
2146    ----------------------------------------------------------------------
2147    Name: Matthias Blume
2148    Date: 2000/12/22 21:20:00 JST
2149    Tag: blume-20001222-anchorenv
2150    Description:
2151    
2152    Fixed CM's handling of anchor environments in connection with CMB.make.
2153    
2154    ----------------------------------------------------------------------
2155    Name: Matthias Blume
2156    Date: 2000/12/22 13:15:00 JST
2157    Tag: blume-20001222-cleanup
2158    Description:
2159    
2160    Removed src/cm/ffi which does not (and did not) belong here.
2161    
2162    ----------------------------------------------------------------------
2163    Name: Matthias Blume
2164    Date: 2000/12/21 23:55:00 JST
2165    Tag: blume-20001221-exn
2166    Description:
2167    
2168    Probably most important: CM no longer silently swallows all exceptions
2169    in the compiler.
2170    Plus: some other minor CM changes.  For example, CM now reports some
2171    sizes for generated binfiles (code, data, envpickle, lambdapickle).
2172    
2173  ----------------------------------------------------------------------  ----------------------------------------------------------------------
2174  Name: Matthias Blume  Name: Matthias Blume
2175  Date: 2000/12/15 00:01:05 JST  Date: 2000/12/15 00:01:05 JST
# Line 1769  Line 3928 
3928       elaborator). There were a lot of changes during my "linkpath" trials       elaborator). There were a lot of changes during my "linkpath" trials
3929       that could have been reverted to their original state but weren't.       that could have been reverted to their original state but weren't.
3930       Please, don't be too harsh on me for messing with this code a bit more       Please, don't be too harsh on me for messing with this code a bit more
3931       than what was strictly necessary...  (I _did_ resist the tempation       than what was strictly necessary...  (I _did_ resist the temptation
3932       of doing any "global reformatting" to avoid an untimely death at       of doing any "global reformatting" to avoid an untimely death at
3933       Dave's hands. :)       Dave's hands. :)
3934    

Legend:
Removed from v.756  
changed lines
  Added in v.1085

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