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 879, Thu Jul 19 18:59:38 2001 UTC revision 975, Wed Oct 31 20:22:44 2001 UTC
# Line 14  Line 14 
14    
15  ----------------------------------------------------------------------  ----------------------------------------------------------------------
16  Name: Matthias Blume  Name: Matthias Blume
17    Date: 2001/10/31 15:25:00 EST
18    Tag: blume-20011031-pgraph
19    Description:
20    
21    CKIT:
22    * Changed the "Function" constructor of type Ast.ctype to carry optional
23      argument identifiers.
24    * Changed the return type of TypeUtil.getFunction accordingly.
25    * Type equality ignores the argument names.
26    * TypeUtil.composite tries to preserve argument names but gives up quickly
27      if there is a mismatch.
28    
29    installation script:
30    * attempts to use "curl" if available (unless "wget" is available as well)
31    
32    CM:
33    * has an experimental implementation of "portable graphs" which I will
34      soon propose as an implementation-independent library format
35    * there are also new libraries $/pgraph.cm and $/pgraph-util.cm
36    
37    NLFFI-LIB:
38    * some cleanup (all cosmetic)
39    
40    NLFFIGEN:
41    * temporarily disabled the mechanism that suppresses ML output for
42      C definitions whose identifiers start with an underscore character
43    * generate val bindings for enum constants
44    * user can request that only one style (light or heavy) is being used;
45      default is to use both (command-line arguments: -heavy and -light)
46    * fixed bug in handling of function types involving incomplete pointers
47    * generate ML entry points that take record arguments (i.e., using
48      named arguments) for C functions that have a prototype with named
49      arguments
50      (see changes to CKIT)
51    
52    ----------------------------------------------------------------------
53    Name: Allen Leung
54    Date: 2001/10/27 20:34:00 EDT
55    Tag: leunga-20011027-x86-fast-fp-call
56    Description:
57    
58       Fixed the bug described in blume-20010920-slowfp.
59    
60       The fix involves
61          1. generating FCOPYs in FSTP in ia32-svid
62          2. marking a CALL with the appropriate annotation
63    
64    ----------------------------------------------------------------------
65    Name: Matthias Blume
66    Date: 2001/10/16 11:32:00 EDT
67    Tag: blume-20011016-netbsd
68    Description:
69    
70    Underscore patch from Chris Richards (fixing problem with compiling
71    runtime system under recent NetBSD).
72    
73    ----------------------------------------------------------------------
74    Name: Allen Leung
75    Date: 2001/10/12 17:18:32 EDT 2001
76    Tag: leung-20011012-x86-printflowgraph
77    Description:
78    
79    X86RA now uses a valid (instead of dummy) PrintFlowgraph module.
80    
81    ----------------------------------------------------------------------
82    Name: Lal George
83    Date: 2001/10/11 23:51:34 EDT
84    Tag: george-20011011-too-many-instrs
85    Description:
86    
87    The representation of a program point never expected to see more
88    than 65536 instructions in a basic block!
89    
90    ----------------------------------------------------------------------
91    Name: Lal George
92    Date: 2001/10/09 09:41:37 EDT
93    Tag: george-20011008-mlrisc-labels
94    Description:
95    
96    Changed the machine description files to support printing of
97    local and global labels in assembly code, based on host assembler
98    conventions.
99    
100    ----------------------------------------------------------------------
101    Name: Matthias Blume
102    Date: 2001/09/25 15:25:00 EDT
103    Tag: blume-20010925-exninfo
104    Description:
105    
106    I provided a non-hook implementation of exnName (at the toplevel) and
107    made the "dummy" implementation of exnMessage (at the toplevel) more
108    useful: if nothing gets "hooked in", then at least you are going to
109    see the exception name and a message indicating why you don't see more.
110    
111    [For the time being, programs that need exnMessage and want to use
112    ml-build should either use General.exnMessage (strongly recommended) or
113    refer to structure General at some other point so that CM sees a
114    static dependency.]
115    
116    [Similar remarks go for "print" and "use":  If you want to use their
117    functionality in stand-alone programs generated by ml-build, then use
118    TextIO.output and Backend.Interact.useFile (from $smlnj/compiler.cm).]
119    
120    ----------------------------------------------------------------------
121    Name: Matthias Blume
122    Date: 2001/09/20 17:28:00 EDT
123    Tag: blume-20010920-slowfp
124    Description:
125    
126    Allen says that x86-fast-fp is not safe yet, so I turned it off again...
127    
128    ----------------------------------------------------------------------
129    Name: Matthias Blume
130    Date: 2001/09/20 17:20:00 EDT
131    Tag: blume-20010920-canonicalpaths
132    Description:
133    
134    0. Updated the BOOT file (something that I forgot to do earlier).
135    
136    1. Small internal change to CM so that it avoids "/../" in filenames
137       as much as possible (but only where it is safe).
138    
139    2. Changed config/_run-sml (resulting in a changed bin/.run-sml) so
140       that arguments that contain delimiters are passed through correctly.
141       This change also means that all "special" arguments of the form
142       @SMLxxx... must come first.
143    
144    3. Changed install script to put relative anchor names for tool commands
145       into pathconfig.
146    
147    ----------------------------------------------------------------------
148    Name: Matthias Blume
149    >>>>>>> 1.169
150    Date: 2001/09/18 15:35:00 EDT
151    Tag: blume-20010918-readme11036
152    Description:
153    
154    Added README files.
155    
156    ----------------------------------------------------------------------
157    Name: Matthias Blume
158    Date: 2001/09/18 11:45:00 EDT
159    Tag: Release_110_36 (retag)
160    Description:
161    
162    Fixed mistake in config/preloads. Retagged as 110.36.
163    
164    ----------------------------------------------------------------------
165    Name: Matthias Blume
166    Date: 2001/09/18 09:40:00 EDT
167    Tag: Release_110_36_orig (tag changed)
168    Description:
169    
170    New version (110.36).  New bootfiles.
171    
172    ----------------------------------------------------------------------
173    Name: Matthias Blume
174    Date: 2001/09/14 16:15:00 EDT
175    Tag: blume-20010914-x86fastfp
176    Description:
177    
178    John committed some changes that Allen made, in particular a (hopefully)
179    correctly working version of the x86-fp module.
180    
181    I changed the default setting of the Control.MLRISC.getFlag "x86-fast-fp"
182    flag to "true".  Everything seems to compile to a fixpoint ok, and
183    "mandelbrot" speeds up by about 15%.
184    
185    ----------------------------------------------------------------------
186    Name: Matthias Blume
187    Date: 2001/09/13 11:20:00 EDT
188    Tag: blume-20010913-minimal
189    Description:
190    
191    1. Stefan Monnier's patch to fix a miscompilation problem that
192       was brought to light by John Reppy's work on Moby.
193    
194    2. Implemented a minimal "structure Compiler" that contains just
195       "version" and "architecture".  The minimal version will be
196       available when the full version is not.  This is for backward-
197       compatibility with code that wants to test Compiler.version.
198    
199    ----------------------------------------------------------------------
200    Name: Matthias Blume
201    Date: 2001/08/28 14:03:00 EDT
202    Tag: blume-20010828-ml-lex
203    Description:
204    
205    Fix for bug 1581, received from Neophytos Michael.
206    
207    ----------------------------------------------------------------------
208    Name: Matthias Blume
209    Date: 2001/08/27 11:20:00 EDT
210    Tag: blume-20010827-readme11035
211    Description:
212    
213    Fleshed out the README file for 110.35.
214    
215    ----------------------------------------------------------------------
216    Name: Matthias Blume
217    Date: 2001/08/24 17:10:00 EDT
218    Tag: Release_110_35
219    Description:
220    
221    New version number (110.35).  New bootfiles.
222    
223    ----------------------------------------------------------------------
224    Name: Lal George
225    Date: 2001/08/24 13:47:18 EDT 2001
226    Tag: george-20010824-MLRISC-graphs
227    Description:
228    
229     removed clusters from MLRISC completely and replaced with graphs.
230    
231    ----------------------------------------------------------------------
232    Name: Matthias Blume
233    Date: 2001/08/23 17:50:00 EDT
234    Tag: blume-20010823-toplevel
235    Description:
236    
237    - some reorganization of the code that implements various kinds of
238      environments in the compiler (static, dynamic, symbolic, combined)
239    - re-implemented the EnvRef module so that evalStream works properly
240      (if the stream contains references to "use", "CM.make", etc.)
241    - cleaned up evalloop.sml and interact.sml (but they need more cleaning)
242    
243    ----------------------------------------------------------------------
244    Name: Matthias Blume
245    Date: 2001/08/20 15:50 EDT
246    Tag: blume20010820-slipup
247    Description:
248    
249    I forgot to commit a few files.  Here they are...
250    
251    ----------------------------------------------------------------------
252    Name: Matthias Blume
253    Date: 2001/08/20 15:35:00 EDT
254    Tag: blume-20010820-debugprof
255    Description:
256    
257    !!!! NEW BOOTFILES !!!!
258    
259    This is another round of reorganizing the compiler sources.  This
260    time the main goal was to factor out all the "instrumentation"
261    passes (for profiling and backtracing) into their own library.
262    The difficulty was to do it in such a way that it does not depend
263    on elaborate.cm but only on elabdata.cm.
264    
265    Therefore there have been further changes to both elaborate.cm and
266    elabdata.cm -- more "generic" things have been moved from the former
267    to the latter.  As a result, I was forced to split the assignment
268    of numbers indicating "primtyc"s into two portions: SML-generic and
269    SML/NJ-specific.  Since it would have been awkward to maintain,
270    I bit the bullet and actually _changed_ the mapping between these
271    numbers and primtycs.  The bottom line of this is that you need
272    a new set of bin- and bootfiles.
273    
274    I have built new bootfiles for all architectures, so doing a fresh
275    checkout and config/install.sh should be all you need.
276    
277    The newly created library's name is
278    
279        $smlnj/viscomp/debugprof.cm
280    
281    and its sources live under
282    
283        src/compiler/DebugProf
284    
285    ----------------------------------------------------------------------
286    Name: Matthias Blume
287    Date: 2001/08/15 17:15:00 EDT
288    Tag: blume-20010815-compreorg
289    Description:
290    
291    This is a first cut at reorganizing the CM libraries that make up the
292    core of the compiler.  The idea is to separate out pieces that could
293    be used independently by tools, e.g., the parser, the typechecker, etc.
294    
295    The current status is a step in this direction, but it is not quite
296    satisfactory yet.  Expect more changes in the future.
297    
298    Here is the current (new) organization...
299    
300        What used to be $smlnj/viscomp/core.cm is now divided into
301        six CM libraries:
302    
303             $smlnj/viscomp/basics.cm
304                           /parser.cm
305                           /elabdata.cm
306                           /elaborate.cm
307                           /execute.cm
308                           /core.cm
309    
310        The CM files for these libraries live under src/system/smlnj/viscomp.
311        All these libraries are proxy libraries that contain precisely
312        one CM library component.  Here are the locations of the components
313        (all within the src/compiler tree):
314    
315             Basics/basics.cm
316             Parse/parser.cm
317             ElabData/elabdata.cm
318             Elaborator/elaborate.cm
319             Execution/execute.cm
320             core.cm
321    
322         [This organization is the same that has been used already
323         for a while for the architecture-specific parts of the visible
324         compiler and for the old version of core.cm.]
325    
326         As you will notice, many source files have been moved from their
327         respective original locations to a new home in one of the above
328         subtrees.
329    
330         The division of labor between the new libraries is the following:
331    
332             basics.cm:
333                - Simple, basic definitions that pertain to many (or all) of
334                  the other libraries.
335             parser.cm:
336                - The SML parser, producing output of type Ast.dec.
337                - The type family for Ast is also defined and exported here.
338             elabdata.cm:
339                - The datatypes that describe input and output of the elaborator.
340                  This includes types, absyn, and static environments.
341             elaborator.cm:
342                - The SML/NJ type checker and elaborator.
343                  This maps an Ast.dec (with a given static environment) to
344                  an Absyn.dec (with a new static environment).
345                - This libraries implements certain modules that used to be
346                  structures as functors (to remove dependencies on FLINT).
347             execute.cm:
348                - Everything having to do with executing binary code objects.
349                - Dynamic environments.
350             core.cm:
351                - SML/NJ-specific instantiations of the elaborator and MLRISC.
352                - Top-level modules.
353                - FLINT (this should eventually become its own library)
354    
355    Notes:
356    
357    I am not 100% happy with the way I separated the elaborator (and its
358    data structures) from FLINT.  Two instances of the same problem:
359    
360        1. Data structures contain certain fields that carry FLINT-specific
361           information.  I hacked around this using exn and the property list
362           module from smlnj-lib.  But the fact that there are middle-end
363           specific fields around at all is a bit annoying.
364    
365        2. The elaborator calculates certain FLINT-related information.  I tried
366           to make this as abstract as I could using functorization, but, again,
367           the fact that the elaborator has to perform calculations on behalf
368           of the middle-end at all is not nice.
369    
370        3. Having to used exn and property lists is unfortunate because it
371           weakens type checking.  The other alternative (parameterizing
372           nearly *everything*) is not appealing, though.
373    
374    I removed the "rebinding =" warning hack because due to the new organization
375    it was awkward to maintain it.  As a result, the compiler now issues some of
376    these warnings when compiling init.cmi during bootstrap compilation. On
377    the plus side, you also get a warning when you do, for example:
378       val op = = Int32.+
379    which was not the case up to now.
380    
381    I placed "assign" and "deref" into the _Core structure so that the
382    code that deals with the "lazy" keyword can find them there.  This
383    removes the need for having access to the primitive environment
384    during elaboration.
385    
386    ----------------------------------------------------------------------
387    Name: Matthias Blume
388    Date: 2001/08/13
389    Tag: blume-20010813-closures
390    Description:
391    
392    This fix was sent to us by Zhong Shao.  It is supposed to improve the
393    performance of certain loops by avoiding needless closure allocation.
394    
395    ----------------------------------------------------------------------
396    Name: Lal George
397    Date: 2001/07/31 10:03:23 EDT 2001
398    Tag: george-20010731-x86-fmalloc
399    Description: Fixed bug in x86 calls
400    
401        There was a bug where call instructions would mysteriously
402        vanish. The call instruction had to be one that returned
403        a floating point value.
404    
405    ----------------------------------------------------------------------
406    Name: Lal George
407    Date: 2001/07/19 16:36:29 EDT 2001
408    Tag: george-20010719-simple-cells
409    Description:
410    
411    I have dramatically simplified the interface for CELLS in MLRISC.
412    
413    In summary, the cells interface is broken up into three parts:
414    
415      1. CellsBasis : CELLS_BASIS
416    
417            CellsBasis is a top level structure and common for all
418            architectures.  it contains the definitions of basic datatypes
419            and utility  functions over these types.
420    
421      2. functor Cells() : CELLS
422    
423            Cells generates an interface for CELLS that incorporates the
424            specific resources on the target architecture, such as the
425            presence of special register classes, their number and size,
426            and various useful substructures.
427    
428      3. <ARCH>CELLS
429    
430            e.g. SparcCells: SPARCCELLS
431    
432            <ARCH>CELLS usually contains additional bindings for special
433            registers  on the architecture, such as:
434    
435                    val r0 : cell           (* register zero *)
436                    val y : cell            (* Y register *)
437                    val psr : cell          (* processor status register *)
438                    ...
439    
440            The structure returned by applying the Cells functor is opened
441            in this interface.
442    
443    The main implication of all this is that the datatypes for cells is
444    split between CellsBasis and CELLS -- a fairly simple change for user
445    code.
446    
447    In the old scheme the CELLS interface had a definitional binding of
448    the form:
449    
450            signature CELLS = sig
451    
452               structure CellsBasis = CellsBasis
453    
454               ...
455    
456            end
457    
458    With all the sharing constraints that goes on in MLRISC, this old
459    design  quickly leads to errors such as:
460    
461            "structure definition spec inside of sharing ... "
462    
463    
464    and appears to require an unacceptable amount of sharing and where
465    constraint hackery.
466    
467    I think this error message (the interaction of definitional specs and
468    sharing) requires more explanation on our web page.
469    
470    ----------------------------------------------------------------------
471    Name: Matthias Blume
472  Date: 2001/07/19 15:00:00 EDT  Date: 2001/07/19 15:00:00 EDT
473  Tag: blume-20010719-libreorg  Tag: blume-20010719-libreorg
474  Description:  Description:
# Line 2668  Line 3123 
3123       elaborator). There were a lot of changes during my "linkpath" trials       elaborator). There were a lot of changes during my "linkpath" trials
3124       that could have been reverted to their original state but weren't.       that could have been reverted to their original state but weren't.
3125       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
3126       than what was strictly necessary...  (I _did_ resist the tempation       than what was strictly necessary...  (I _did_ resist the temptation
3127       of doing any "global reformatting" to avoid an untimely death at       of doing any "global reformatting" to avoid an untimely death at
3128       Dave's hands. :)       Dave's hands. :)
3129    

Legend:
Removed from v.879  
changed lines
  Added in v.975

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