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 847, Mon Jun 25 16:11:22 2001 UTC revision 1032, Tue Jan 22 16:59:16 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: Matthias Blume  Name: Matthias Blume
17    Date: 2002/01/22
18    Tag: blume-20020122-x86-ccalls
19    Description:
20    
21    Bug fix for c-calls on x86 (having to do with how char- and
22    short-arguments are being handled).
23    
24    ----------------------------------------------------------------------
25    Name: Matthias Blume
26    Date: 2002/01/21
27    Tag: blume-20020121-ff
28    Description:
29    
30    Another day of fiddling with the FFI...
31    
32    1. Bug fix/workaround:  CKIT does not complain about negative array
33       dimensions, so ml-nlffigen has to guard itself against this possibility.
34       (Otherwise a negative dimension would send it into an infinite loop.)
35    
36    2. Some of the abstract types (light objects, light pointers, most "base"
37       types) in structure C are now eqtypes.
38    
39    3. Added constructors and test functions for NULL function pointers.
40    
41    ----------------------------------------------------------------------
42    Name: Matthias Blume
43    Date: 2002/01/18
44    Tag: blume-20020118-ready-for-new-release
45    Description:
46    
47    Made config/srcarchiveurl point to a new place.  (Will provide boot
48    files shortly.)
49    
50    Maybe we christen this to be 110.38?
51    
52    ----------------------------------------------------------------------
53    Name: Matthias Blume
54    Date: 2002/01/18
55    Tag: blume-20020118-more-ffifiddle
56    Description:
57    
58    Today's FFI fiddling:
59    
60      - Provided a structure CGetSet with "convenient" versions of C.Get.* and
61        C.Set.* that use concrete (MLRep.*) arguments and results instead
62        of abstract ones.
63    
64      - Provided word-style bit operations etc. for "int" representation
65        types in MLRep.S<Foo>Bitops where <Foo> ranges over Char, Int, Short,
66        and Long.
67    
68    ----------------------------------------------------------------------
69    Name: Matthias Blume
70    Date: 2002/01/18
71    Tag: blume-20020118-use-x86-fp
72    Description:
73    
74    Now that x86-fast-fp seems to be working, I turned it back on again
75    by default.  (Seems to work fine now, even with the FFI.)
76    
77    Other than that, I added some documentation about the FFI to
78    src/ml-nlffigen/README and updated the FFI test examples in
79    src/ml-nlffi-lib/Tests/*.
80    
81    ----------------------------------------------------------------------
82    Name: Allen Leung
83    Date: 2002/01/17
84    Tag: leunga-20020117-x86-fast-fp-call
85    Description:
86    
87       1. Fixed a problem with handling return fp values when x86's fast fp
88          mode is turned on.
89    
90       2. Minor pretty printing fix for cellset.  Print %st(0) as %st(0) instead
91          of %f32.
92    
93       3. Added a constructor INT32lit to the ast of MLRISC tools.
94    
95    ----------------------------------------------------------------------
96    Name: Matthias Blume
97    Date: 2002/01/16
98    Tag: blume-20020116-ffifiddle
99    Description:
100    
101    More fiddling with the FFI interface:
102    
103     - Make constness 'c instead of rw wherever possible.  This eliminates
104       the need for certain explicit coercions.  (However, due to ML's
105       value polymorphism, there will still be many cases where explicit
106       coercions are necessary.  Phantom types are not the whole answer
107       to modeling a subtyping relationship in ML.)
108    
109     - ro/rw coersions for pointers added.  (Avoids the detour through */&.)
110    
111     - "printf" test example added to src/ml-nlffi-lib/Tests.  (Demonstrates
112       clumsy workaround for varargs problem.)
113    
114    ----------------------------------------------------------------------
115    Name: Lal George
116    Date: 2002/01/15
117    Tag: <none>
118    Description:
119    
120    1. Since COPY instructions are no longer native to the architecture,
121       a generic functor can be used to implement the expandCopies function.
122    
123    2. Allowed EXPORT and IMPORT pseudo-op declarations to appear inside a
124       TEXT segment.
125    
126    ----------------------------------------------------------------------
127    Name: Matthias Blume
128    Date: 2002/01/15
129    Tag: blume-20020115-ffiupdates
130    Description:
131    
132    1. Fix for bug resulting in single-precision float values being returned
133       incorrectly from FFI calls.
134    
135    2. Small modifications to C FFI API:
136    
137        - memory-allocation routines return straight objects (no options)
138          and raise an exception in out-of-memory situations
139        - unsafe extensions to cast between function pointers and pointers
140          from/to ints
141        - added structure C_Debug as an alternative to structure C where
142          pointer-dereferencing (|*| and |*!) always check for null-pointers
143        - added open_lib' to DynLinkage;  open_lib' works like open_lib
144          but also takes a (possibly empty) list of existing library handles
145          that the current library depends on
146    
147    ----------------------------------------------------------------------
148    Name: Matthias Blume
149    Date: 2002/01/10
150    Tag: blume-20020110-newffigen
151    Description:
152    
153    1. Updates to portable graph code.
154    
155    2. Major update to ml-nlffigen and ml-nlffi-lib.  Things are much
156       more scalable now so that even huge interfaces such as the one
157       for GTK compile in finite time and space. :-)
158       See src/ml-nlffigen/README for details on what's new.
159    
160    ----------------------------------------------------------------------
161    Name: Lal George
162    Date: 2001/01/09 14:31:35 EST 2002
163    Tag: george-20011206-rm-native-copy
164    Description:
165    
166            Removed the native COPY and FCOPY instructions
167            from all the architectures and replaced it with the
168            explicit COPY instruction from the previous commit.
169    
170            It is now possible to simplify many of the optimizations
171            modules that manipulate copies. This has not been
172            done in this change.
173    
174    ----------------------------------------------------------------------
175    Name: Lal George
176    Date: 2001/12/06 16:50:13 EST 2001
177    Tag: george-20011206-mlrisc-instruction
178    Description:
179    
180    Changed the representation of instructions from being fully abstract
181    to being partially concrete. That is to say:
182    
183      from
184            type instruction
185    
186      to
187            type instr                              (* machine instruction *)
188    
189            datatype instruction =
190                LIVE of {regs: C.cellset, spilled: C.cellset}
191              | KILL of {regs: C.cellset, spilled: C.cellset}
192              | COPYXXX of {k: CB.cellkind, dst: CB.cell list, src: CB.cell list}
193              | ANNOTATION of {i: instruction, a: Annotations.annotation}
194              | INSTR of instr
195    
196    This makes the handling of certain special instructions that appear on
197    all architectures easier and uniform.
198    
199    LIVE and KILL say that a list of registers are live or killed at the
200    program point where they appear. No spill code is generated when an
201    element of the 'regs' field is spilled, but the register is moved to
202    the 'spilled' (which is present, more for debugging than anything else).
203    
204    LIVE replaces the (now deprecated) DEFFREG instruction on the alpha.
205    We used to generate:
206    
207            DEFFREG f1
208            f1 := f2 + f3
209            trapb
210    
211    but now generate:
212    
213            f1 := f2 + f3
214            trapb
215            LIVE {regs=[f1,f2,f3], spilled=[]}
216    
217    Furthermore, the DEFFREG (hack) required that all floating point instruction
218    use all registers mentioned in the instruction. Therefore f1 := f2 + f3,
219    defines f1 and uses [f1,f2,f3]! This hack is no longer required resulting
220    in a cleaner alpha implementation. (Hopefully, intel will not get rid of
221    this architecture).
222    
223    COPYXXX is intended to replace the parallel COPY and FCOPY  available on
224    all the architectures. This will result in further simplification of the
225    register allocator that must be aware of them for coalescing purposes, and
226    will also simplify certain aspects of the machine description that provides
227    callbacks related to parallel copies.
228    
229    ANNOTATION should be obvious, and now INSTR represents the honest to God
230    machine instruction set!
231    
232    The <arch>/instructions/<arch>Instr.sml files define certain utility
233    functions for making porting easier -- essentially converting upper case
234    to lower case. All machine instructions (of type instr) are in upper case,
235    and the lower case form generates an MLRISC instruction. For example on
236    the alpha we have:
237    
238      datatype instr =
239         LDA of {r:cell, b:cell, d:operand}
240       | ...
241    
242      val lda : {r:cell, b:cell, d:operand} -> instruction
243        ...
244    
245    where lda is just (INSTR o LDA), etc.
246    
247    ----------------------------------------------------------------------
248    Name: Matthias Blume
249    Date: 2001/11/22 21:40:00 EST
250    Tag: Release_110_37
251    Description:
252    
253    Release 110.37.  This time for real.
254    
255    ----------------------------------------------------------------------
256    Name: Matthias Blume
257    Date: 2001/11/21 16:35:00 EST
258    Tag: blume-20011121-foot-in-mouth
259    Description:
260    
261    Removed the "Release_110_37" tag because of a serious bug.
262    This will be re-tagged once the bug is fixed.
263    
264    ----------------------------------------------------------------------
265    Name: Matthias Blume
266    Date: 2001/11/21 16:14:00 EST
267    Tag: blume-20011121-forgottenfile
268    Description:
269    
270    Forgot to add a file.  (Just a .tex-file -- part of
271    the CM manual source.)
272    
273    ----------------------------------------------------------------------
274    Name: Matthias Blume
275    Date: 2001/11/21 16:10:00 EST
276    Tag: blume-20011121-invalid_110_37
277    Description:
278    
279    Note: I removed the original tag "Release_110_37" from this commit
280          because we found a serious bug in all non-x86 backends.
281          - Matthias
282    
283    1. Modifications to the SML/NJ code generator and to the runtime system
284       so that code object name strings are directly inserted into code
285       objects at code generation time.  The only business the runtime system
286       has with this is now to read the name strings on occasions.
287       (The encoding of the name string has also changed somewhat.)
288    
289    2. CM now implements a simple "set calculus" for specifying export lists.
290       In particular, it is now possible to refer to the export lists of
291       other libraries/groups/sources and form unions as well as differences.
292       See the latest CM manual for details.
293    
294    3. An separate notion of "proxy" libraries has again be eliminated from
295       CM's model.  (Proxy libraries are now simply a special case of using
296       the export list calculus.)
297    
298    4. Some of the existing libraries now take advantage of the new set
299       calculus.
300       (Notice that not all libraries have been converted because some
301       of the existing .cm-files are supposed to be backward compatible
302       with 110.0.x.)
303    
304    5. Some cleanup in stand-alone programs.  (Don't use "exnMessage" -- use
305       "General.exnMessage"!  The former relies on a certain hook to be
306       initialized, and that often does not happen in the stand-alone case.)
307    
308    ----------------------------------------------------------------------
309    Name: Lal George
310    Date: 2001/11/21  13:56:18 EST
311    Tag: george-2001121-pseudo-ops
312    Description:
313    
314      Implemented a complete redesign of MLRISC pseudo-ops. Now there
315      ought to never be any question of incompatabilities with
316      pseudo-op syntax expected by host assemblers.
317    
318      For now, only modules supporting GAS syntax are implemented
319      but more should follow, such as MASM, and vendor assembler
320      syntax, e.g. IBM as, Sun as, etc.
321    
322    ----------------------------------------------------------------------
323    Name: Matthias Blume
324    Date: 2001/11/14 11:52:00 EST
325    Tag: blume-20011114-srcname
326    Description:
327    
328    1. Routed the name of the current source file to mlriscgen where it
329       should be directly emitted into the code object.  (This last part
330       is yet to be done.)
331    
332    2. Some cleanup of the pgraph code to make it match the proposal that
333       I put out the other day.  (The proposal notwithstanding, things are
334       still in flux here.)
335    
336    ----------------------------------------------------------------------
337    Name: Lal George
338    Date: 2001/11/14 09:44:04 EST
339    Tag:
340    Description:
341    
342      Fix for a backpatching bug reported by Allen.
343    
344      Because the boundary between short and long span-dependent
345      instructions is +/- 128, there are an astounding number of
346      span-dependent instructions whose size is over estimated.
347    
348      Allen came up with the idea of letting the size of span
349      dependent instructions be non-monotonic, for a maxIter
350      number of times, after which the size must be monotonically
351      increasing.
352    
353      This table shows the number of span-dependent instructions
354      whose size was over-estimated as a function of maxIter, for the
355      file Parse/parse/ml.grm.sml:
356    
357         maxIter            # of instructions:
358            10                      687
359            20                      438
360            30                      198
361            40                        0
362    
363      In compiling the compiler, there is no significant difference in
364      compilation speed between maxIter=10 and maxIter=40. Actually,
365      my measurements showed that maxIter=40 was a tad faster than
366      maxIter=10! Also 96% of the  files in the compiler reach a fix
367      point within 13 iterations, so fixing maxIter at 40, while high,
368      is okay.
369    
370    ----------------------------------------------------------------------
371    Name: Matthias Blume
372    Date: 2001/10/31 15:25:00 EST
373    Tag: blume-20011031-pgraph
374    Description:
375    
376    CKIT:
377    * Changed the "Function" constructor of type Ast.ctype to carry optional
378      argument identifiers.
379    * Changed the return type of TypeUtil.getFunction accordingly.
380    * Type equality ignores the argument names.
381    * TypeUtil.composite tries to preserve argument names but gives up quickly
382      if there is a mismatch.
383    
384    installation script:
385    * attempts to use "curl" if available (unless "wget" is available as well)
386    
387    CM:
388    * has an experimental implementation of "portable graphs" which I will
389      soon propose as an implementation-independent library format
390    * there are also new libraries $/pgraph.cm and $/pgraph-util.cm
391    
392    NLFFI-LIB:
393    * some cleanup (all cosmetic)
394    
395    NLFFIGEN:
396    * temporarily disabled the mechanism that suppresses ML output for
397      C definitions whose identifiers start with an underscore character
398    * generate val bindings for enum constants
399    * user can request that only one style (light or heavy) is being used;
400      default is to use both (command-line arguments: -heavy and -light)
401    * fixed bug in handling of function types involving incomplete pointers
402    * generate ML entry points that take record arguments (i.e., using
403      named arguments) for C functions that have a prototype with named
404      arguments
405      (see changes to CKIT)
406    
407    ----------------------------------------------------------------------
408    Name: Allen Leung
409    Date: 2001/10/27 20:34:00 EDT
410    Tag: leunga-20011027-x86-fast-fp-call
411    Description:
412    
413       Fixed the bug described in blume-20010920-slowfp.
414    
415       The fix involves
416          1. generating FCOPYs in FSTP in ia32-svid
417          2. marking a CALL with the appropriate annotation
418    
419    ----------------------------------------------------------------------
420    Name: Matthias Blume
421    Date: 2001/10/16 11:32:00 EDT
422    Tag: blume-20011016-netbsd
423    Description:
424    
425    Underscore patch from Chris Richards (fixing problem with compiling
426    runtime system under recent NetBSD).
427    
428    ----------------------------------------------------------------------
429    Name: Allen Leung
430    Date: 2001/10/12 17:18:32 EDT 2001
431    Tag: leung-20011012-x86-printflowgraph
432    Description:
433    
434    X86RA now uses a valid (instead of dummy) PrintFlowgraph module.
435    
436    ----------------------------------------------------------------------
437    Name: Lal George
438    Date: 2001/10/11 23:51:34 EDT
439    Tag: george-20011011-too-many-instrs
440    Description:
441    
442    The representation of a program point never expected to see more
443    than 65536 instructions in a basic block!
444    
445    ----------------------------------------------------------------------
446    Name: Lal George
447    Date: 2001/10/09 09:41:37 EDT
448    Tag: george-20011008-mlrisc-labels
449    Description:
450    
451    Changed the machine description files to support printing of
452    local and global labels in assembly code, based on host assembler
453    conventions.
454    
455    ----------------------------------------------------------------------
456    Name: Matthias Blume
457    Date: 2001/09/25 15:25:00 EDT
458    Tag: blume-20010925-exninfo
459    Description:
460    
461    I provided a non-hook implementation of exnName (at the toplevel) and
462    made the "dummy" implementation of exnMessage (at the toplevel) more
463    useful: if nothing gets "hooked in", then at least you are going to
464    see the exception name and a message indicating why you don't see more.
465    
466    [For the time being, programs that need exnMessage and want to use
467    ml-build should either use General.exnMessage (strongly recommended) or
468    refer to structure General at some other point so that CM sees a
469    static dependency.]
470    
471    [Similar remarks go for "print" and "use":  If you want to use their
472    functionality in stand-alone programs generated by ml-build, then use
473    TextIO.output and Backend.Interact.useFile (from $smlnj/compiler.cm).]
474    
475    ----------------------------------------------------------------------
476    Name: Matthias Blume
477    Date: 2001/09/20 17:28:00 EDT
478    Tag: blume-20010920-slowfp
479    Description:
480    
481    Allen says that x86-fast-fp is not safe yet, so I turned it off again...
482    
483    ----------------------------------------------------------------------
484    Name: Matthias Blume
485    Date: 2001/09/20 17:20:00 EDT
486    Tag: blume-20010920-canonicalpaths
487    Description:
488    
489    0. Updated the BOOT file (something that I forgot to do earlier).
490    
491    1. Small internal change to CM so that it avoids "/../" in filenames
492       as much as possible (but only where it is safe).
493    
494    2. Changed config/_run-sml (resulting in a changed bin/.run-sml) so
495       that arguments that contain delimiters are passed through correctly.
496       This change also means that all "special" arguments of the form
497       @SMLxxx... must come first.
498    
499    3. Changed install script to put relative anchor names for tool commands
500       into pathconfig.
501    
502    ----------------------------------------------------------------------
503    Name: Matthias Blume
504    >>>>>>> 1.169
505    Date: 2001/09/18 15:35:00 EDT
506    Tag: blume-20010918-readme11036
507    Description:
508    
509    Added README files.
510    
511    ----------------------------------------------------------------------
512    Name: Matthias Blume
513    Date: 2001/09/18 11:45:00 EDT
514    Tag: Release_110_36 (retag)
515    Description:
516    
517    Fixed mistake in config/preloads. Retagged as 110.36.
518    
519    ----------------------------------------------------------------------
520    Name: Matthias Blume
521    Date: 2001/09/18 09:40:00 EDT
522    Tag: Release_110_36_orig (tag changed)
523    Description:
524    
525    New version (110.36).  New bootfiles.
526    
527    ----------------------------------------------------------------------
528    Name: Matthias Blume
529    Date: 2001/09/14 16:15:00 EDT
530    Tag: blume-20010914-x86fastfp
531    Description:
532    
533    John committed some changes that Allen made, in particular a (hopefully)
534    correctly working version of the x86-fp module.
535    
536    I changed the default setting of the Control.MLRISC.getFlag "x86-fast-fp"
537    flag to "true".  Everything seems to compile to a fixpoint ok, and
538    "mandelbrot" speeds up by about 15%.
539    
540    ----------------------------------------------------------------------
541    Name: Matthias Blume
542    Date: 2001/09/13 11:20:00 EDT
543    Tag: blume-20010913-minimal
544    Description:
545    
546    1. Stefan Monnier's patch to fix a miscompilation problem that
547       was brought to light by John Reppy's work on Moby.
548    
549    2. Implemented a minimal "structure Compiler" that contains just
550       "version" and "architecture".  The minimal version will be
551       available when the full version is not.  This is for backward-
552       compatibility with code that wants to test Compiler.version.
553    
554    ----------------------------------------------------------------------
555    Name: Matthias Blume
556    Date: 2001/08/28 14:03:00 EDT
557    Tag: blume-20010828-ml-lex
558    Description:
559    
560    Fix for bug 1581, received from Neophytos Michael.
561    
562    ----------------------------------------------------------------------
563    Name: Matthias Blume
564    Date: 2001/08/27 11:20:00 EDT
565    Tag: blume-20010827-readme11035
566    Description:
567    
568    Fleshed out the README file for 110.35.
569    
570    ----------------------------------------------------------------------
571    Name: Matthias Blume
572    Date: 2001/08/24 17:10:00 EDT
573    Tag: Release_110_35
574    Description:
575    
576    New version number (110.35).  New bootfiles.
577    
578    ----------------------------------------------------------------------
579    Name: Lal George
580    Date: 2001/08/24 13:47:18 EDT 2001
581    Tag: george-20010824-MLRISC-graphs
582    Description:
583    
584     removed clusters from MLRISC completely and replaced with graphs.
585    
586    ----------------------------------------------------------------------
587    Name: Matthias Blume
588    Date: 2001/08/23 17:50:00 EDT
589    Tag: blume-20010823-toplevel
590    Description:
591    
592    - some reorganization of the code that implements various kinds of
593      environments in the compiler (static, dynamic, symbolic, combined)
594    - re-implemented the EnvRef module so that evalStream works properly
595      (if the stream contains references to "use", "CM.make", etc.)
596    - cleaned up evalloop.sml and interact.sml (but they need more cleaning)
597    
598    ----------------------------------------------------------------------
599    Name: Matthias Blume
600    Date: 2001/08/20 15:50 EDT
601    Tag: blume20010820-slipup
602    Description:
603    
604    I forgot to commit a few files.  Here they are...
605    
606    ----------------------------------------------------------------------
607    Name: Matthias Blume
608    Date: 2001/08/20 15:35:00 EDT
609    Tag: blume-20010820-debugprof
610    Description:
611    
612    !!!! NEW BOOTFILES !!!!
613    
614    This is another round of reorganizing the compiler sources.  This
615    time the main goal was to factor out all the "instrumentation"
616    passes (for profiling and backtracing) into their own library.
617    The difficulty was to do it in such a way that it does not depend
618    on elaborate.cm but only on elabdata.cm.
619    
620    Therefore there have been further changes to both elaborate.cm and
621    elabdata.cm -- more "generic" things have been moved from the former
622    to the latter.  As a result, I was forced to split the assignment
623    of numbers indicating "primtyc"s into two portions: SML-generic and
624    SML/NJ-specific.  Since it would have been awkward to maintain,
625    I bit the bullet and actually _changed_ the mapping between these
626    numbers and primtycs.  The bottom line of this is that you need
627    a new set of bin- and bootfiles.
628    
629    I have built new bootfiles for all architectures, so doing a fresh
630    checkout and config/install.sh should be all you need.
631    
632    The newly created library's name is
633    
634        $smlnj/viscomp/debugprof.cm
635    
636    and its sources live under
637    
638        src/compiler/DebugProf
639    
640    ----------------------------------------------------------------------
641    Name: Matthias Blume
642    Date: 2001/08/15 17:15:00 EDT
643    Tag: blume-20010815-compreorg
644    Description:
645    
646    This is a first cut at reorganizing the CM libraries that make up the
647    core of the compiler.  The idea is to separate out pieces that could
648    be used independently by tools, e.g., the parser, the typechecker, etc.
649    
650    The current status is a step in this direction, but it is not quite
651    satisfactory yet.  Expect more changes in the future.
652    
653    Here is the current (new) organization...
654    
655        What used to be $smlnj/viscomp/core.cm is now divided into
656        six CM libraries:
657    
658             $smlnj/viscomp/basics.cm
659                           /parser.cm
660                           /elabdata.cm
661                           /elaborate.cm
662                           /execute.cm
663                           /core.cm
664    
665        The CM files for these libraries live under src/system/smlnj/viscomp.
666        All these libraries are proxy libraries that contain precisely
667        one CM library component.  Here are the locations of the components
668        (all within the src/compiler tree):
669    
670             Basics/basics.cm
671             Parse/parser.cm
672             ElabData/elabdata.cm
673             Elaborator/elaborate.cm
674             Execution/execute.cm
675             core.cm
676    
677         [This organization is the same that has been used already
678         for a while for the architecture-specific parts of the visible
679         compiler and for the old version of core.cm.]
680    
681         As you will notice, many source files have been moved from their
682         respective original locations to a new home in one of the above
683         subtrees.
684    
685         The division of labor between the new libraries is the following:
686    
687             basics.cm:
688                - Simple, basic definitions that pertain to many (or all) of
689                  the other libraries.
690             parser.cm:
691                - The SML parser, producing output of type Ast.dec.
692                - The type family for Ast is also defined and exported here.
693             elabdata.cm:
694                - The datatypes that describe input and output of the elaborator.
695                  This includes types, absyn, and static environments.
696             elaborator.cm:
697                - The SML/NJ type checker and elaborator.
698                  This maps an Ast.dec (with a given static environment) to
699                  an Absyn.dec (with a new static environment).
700                - This libraries implements certain modules that used to be
701                  structures as functors (to remove dependencies on FLINT).
702             execute.cm:
703                - Everything having to do with executing binary code objects.
704                - Dynamic environments.
705             core.cm:
706                - SML/NJ-specific instantiations of the elaborator and MLRISC.
707                - Top-level modules.
708                - FLINT (this should eventually become its own library)
709    
710    Notes:
711    
712    I am not 100% happy with the way I separated the elaborator (and its
713    data structures) from FLINT.  Two instances of the same problem:
714    
715        1. Data structures contain certain fields that carry FLINT-specific
716           information.  I hacked around this using exn and the property list
717           module from smlnj-lib.  But the fact that there are middle-end
718           specific fields around at all is a bit annoying.
719    
720        2. The elaborator calculates certain FLINT-related information.  I tried
721           to make this as abstract as I could using functorization, but, again,
722           the fact that the elaborator has to perform calculations on behalf
723           of the middle-end at all is not nice.
724    
725        3. Having to used exn and property lists is unfortunate because it
726           weakens type checking.  The other alternative (parameterizing
727           nearly *everything*) is not appealing, though.
728    
729    I removed the "rebinding =" warning hack because due to the new organization
730    it was awkward to maintain it.  As a result, the compiler now issues some of
731    these warnings when compiling init.cmi during bootstrap compilation. On
732    the plus side, you also get a warning when you do, for example:
733       val op = = Int32.+
734    which was not the case up to now.
735    
736    I placed "assign" and "deref" into the _Core structure so that the
737    code that deals with the "lazy" keyword can find them there.  This
738    removes the need for having access to the primitive environment
739    during elaboration.
740    
741    ----------------------------------------------------------------------
742    Name: Matthias Blume
743    Date: 2001/08/13
744    Tag: blume-20010813-closures
745    Description:
746    
747    This fix was sent to us by Zhong Shao.  It is supposed to improve the
748    performance of certain loops by avoiding needless closure allocation.
749    
750    ----------------------------------------------------------------------
751    Name: Lal George
752    Date: 2001/07/31 10:03:23 EDT 2001
753    Tag: george-20010731-x86-fmalloc
754    Description: Fixed bug in x86 calls
755    
756        There was a bug where call instructions would mysteriously
757        vanish. The call instruction had to be one that returned
758        a floating point value.
759    
760    ----------------------------------------------------------------------
761    Name: Lal George
762    Date: 2001/07/19 16:36:29 EDT 2001
763    Tag: george-20010719-simple-cells
764    Description:
765    
766    I have dramatically simplified the interface for CELLS in MLRISC.
767    
768    In summary, the cells interface is broken up into three parts:
769    
770      1. CellsBasis : CELLS_BASIS
771    
772            CellsBasis is a top level structure and common for all
773            architectures.  it contains the definitions of basic datatypes
774            and utility  functions over these types.
775    
776      2. functor Cells() : CELLS
777    
778            Cells generates an interface for CELLS that incorporates the
779            specific resources on the target architecture, such as the
780            presence of special register classes, their number and size,
781            and various useful substructures.
782    
783      3. <ARCH>CELLS
784    
785            e.g. SparcCells: SPARCCELLS
786    
787            <ARCH>CELLS usually contains additional bindings for special
788            registers  on the architecture, such as:
789    
790                    val r0 : cell           (* register zero *)
791                    val y : cell            (* Y register *)
792                    val psr : cell          (* processor status register *)
793                    ...
794    
795            The structure returned by applying the Cells functor is opened
796            in this interface.
797    
798    The main implication of all this is that the datatypes for cells is
799    split between CellsBasis and CELLS -- a fairly simple change for user
800    code.
801    
802    In the old scheme the CELLS interface had a definitional binding of
803    the form:
804    
805            signature CELLS = sig
806    
807               structure CellsBasis = CellsBasis
808    
809               ...
810    
811            end
812    
813    With all the sharing constraints that goes on in MLRISC, this old
814    design  quickly leads to errors such as:
815    
816            "structure definition spec inside of sharing ... "
817    
818    
819    and appears to require an unacceptable amount of sharing and where
820    constraint hackery.
821    
822    I think this error message (the interaction of definitional specs and
823    sharing) requires more explanation on our web page.
824    
825    ----------------------------------------------------------------------
826    Name: Matthias Blume
827    Date: 2001/07/19 15:00:00 EDT
828    Tag: blume-20010719-libreorg
829    Description:
830    
831    This update puts together a fairly extensive but straightforward change
832    to the way the libraries that implement the interactive system are
833    organized:
834    
835       The biggest change is the elimination of structure Compiler.  As a
836       replacement for this structure, there is now a CM library
837       (known as $smlnj/compiler.cm or $smlnj/compiler/current.cm)
838       that exports all the substructures of the original structure Compiler
839       directly.  So instead of saying Compiler.Foo.bar one now simply
840       says Foo.bar.  (The CM libraries actually export a collection of
841       structures that is richer than the collection of substructures of
842       structure Compiler.)
843    
844       To make the transition smooth, there is a separate library called
845       $smlnj/compiler/compiler.cm which puts together and exports the
846       original structure Compiler (or at least something very close to it).
847    
848       There are five members of the original structure Compiler
849       that are not exported directly but which instead became members
850       of a new structure Backend (described by signature BACKEND).  These are:
851       structure Profile (: PROFILE), structure Compile (: COMPILE), structure
852       Interact (: INTERACT), structure Machine (: MACHINE), and val
853       architecture (: string).
854    
855       Structure Compiler.Version has become structure CompilerVersion.
856    
857       Cross-compilers for alpha32, hppa, ppc, sparc, and x86 are provided
858       by $smlnj/compiler/<arch>.cm where <arch> is alpha32, hppa, ppc, sparc,
859       or x86, respectively.
860       Each of these exports the same frontend structures that
861       $smlnj/compiler.cm exports.  But they do not have a structure Backend
862       and instead export some structure <Arch>Backend where <Arch> is Alpha32,
863       Hppa, PPC, Sparc, or X86, respectively.
864    
865       Library $smlnj/compiler/all.cm exports the union of the exports of
866       $smlnj/compiler/<arch>.cm
867    
868       There are no structures <Arch>Compiler anymore, use
869       $smlnj/compiler/<arch>.cm instead.
870    
871       Library host-compiler-0.cm is gone.  Instead, the internal library
872       that instantiates CM is now called cm0.cm.  Selection of the host
873       compiler (backend) is no longer done here but. (Responsibility for it
874       now lies with $smlnj/compiler/current.cm.  This seems to be more
875       logical.)
876    
877       Many individual files have been moved or renamed.  Some files have
878       been split into multiple files, and some "dead" files have been deleted.
879    
880    Aside from these changes to library organization, there are also changes
881    to the way the code itself is organized:
882    
883       Structure Binfile has been re-implemented in such a way that it no
884       longer needs any knowledge of the compiler.  It exclusively deals
885       with the details of binfile layout.  It no longer invokes the
886       compiler (for the purpose of creating new prospective binfile
887       content), and it no longer has any knowledge of how to interpret
888       pickles.
889    
890       Structure Compile (: COMPILE) has been stripped down to the bare
891       essentials of compilation.  It no longer deals with linking/execution.
892       The interface has been cleaned up considerably.
893    
894       Utility routines for dealing with linking and execution have been
895       moved into their own substructures.
896    
897       (The ultimate goal of these changes is to provide a light-weight
898       binfile loader/linker (at least for, e.g., stable libraries) that
899       does not require CM or the compiler to be present.)
900    
901    CM documentation has been updated to reflect the changes to library
902    organization.
903    
904    ----------------------------------------------------------------------
905    Name: Matthias Blume
906    Date: 2001/07/10 17:30:00 EDT
907    Tag: Release_110_34
908    Description:
909    
910    Minor tweak to 110.34 (re-tagged):
911    
912      - README.html file added to CVS repository
913      - runtime compiles properly under FreeBSD 3.X and 4.X
914    
915    ----------------------------------------------------------------------
916    Name: Matthias Blume
917    Date: 2001/07/10 17:30:00 EDT
918    Tag: Release_110_34
919    Description:
920    
921    New version number (110.34). New bootfiles.
922    
923    ----------------------------------------------------------------------
924    Name: Matthias Blume
925    Date: 2001/07/09 16:00:00 EDT
926    Tag: blume-20010709-more-varargs
927    Description:
928    
929    I changed the handling of varargs in ml-nlffigen again:
930    The ellipsis ... will now simply be ignored (with an accompanying warning).
931    
932    The immediate effect is that you can actually call a varargs function
933    from ML -- but you can't actually supply any arguments beyond the ones
934    specified explicitly.  (For example, you can call printf with its format
935    string, but you cannot pass additional arguments.)
936    
937    This behavior is only marginally more useful than the one before, but
938    it has the advantage that a function or, more importantly, a function
939    type never gets dropped on the floor, thus avoiding follow-up problems with
940    other types that refer to the offending one.
941    
942    ----------------------------------------------------------------------
943    Name: Matthias Blume
944    Date: 2001/07/09 11:25:00 EDT
945    Tag: blume-20010709-varargs
946    Description:
947    
948    1. ckit-lib.cm now exports structure Error
949    2. ml-nlffigen reports occurences of "..." (i.e., varargs function types)
950       with a warning accompanied by a source location.  Moreover, it
951       merely skips the offending function or type and proceeds with the
952       rest of its work.u  As a result, one can safely feed C code containing
953       "..." to ml-nlffigen.
954    3. There are some internal improvements to CM, providing slightly
955       more general string substitutions in the tools subsystem.
956    
957    ----------------------------------------------------------------------
958    Name: Matthias Blume
959    Date: 2001/06/27 15:10:00 EDT
960    Tag: blume-20010627-concur
961    Description:
962    
963    Fixed a small bug in CM's handling of parallel compilation.
964    (You could observe the bug by Control-C-interrupting an ordinary
965    CMB.make or CM.stabilize and then attaching some compile servers.
966    The result was that all of a sudden the previously interrupted
967    compilation would continue on its own.  This was because of
968    an over-optimization: CM did not bother to clean out certain queues
969    when no servers were attached "anyway", resulting in the contents
970    of these queues to grab control when new servers did get attached.)
971    
972    There is also another minor update to the CM manual.
973    
974    ----------------------------------------------------------------------
975    Name: Matthias Blume
976    Date: 2001/06/26 16:15:00 EDT
977    Tag: blume-20010626-cmdoc
978    Description:
979    
980    Minor typo fixed in CM manual (syntax diagram for libraries).
981    
982    ----------------------------------------------------------------------
983    Name: Matthias Blume
984    Date: 2001/06/25 22:55:00 EDT
985    Tag: blume-20010625-x86pc
986    Description:
987    
988    Fixed a nasty bug in the X86 assembly code that caused signal
989    handlers to fail (crash) randomly.
990    
991    ----------------------------------------------------------------------
992    Name: Matthias Blume
993  Date: 2001/06/25 12:05:00 EDT  Date: 2001/06/25 12:05:00 EDT
994  Tag: blume-20010625-nlffigen  Tag: blume-20010625-nlffigen
995  Description:  Description:
# Line 2502  Line 3478 
3478       elaborator). There were a lot of changes during my "linkpath" trials       elaborator). There were a lot of changes during my "linkpath" trials
3479       that could have been reverted to their original state but weren't.       that could have been reverted to their original state but weren't.
3480       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
3481       than what was strictly necessary...  (I _did_ resist the tempation       than what was strictly necessary...  (I _did_ resist the temptation
3482       of doing any "global reformatting" to avoid an untimely death at       of doing any "global reformatting" to avoid an untimely death at
3483       Dave's hands. :)       Dave's hands. :)
3484    

Legend:
Removed from v.847  
changed lines
  Added in v.1032

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