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

Legend:
Removed from v.873  
changed lines
  Added in v.1058

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