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

Legend:
Removed from v.842  
changed lines
  Added in v.1028

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