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

Legend:
Removed from v.841  
changed lines
  Added in v.1036

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