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 844, Wed Jun 20 20:39:15 2001 UTC revision 929, Tue Sep 18 15:48:42 2001 UTC
# Line 14  Line 14 
14    
15  ----------------------------------------------------------------------  ----------------------------------------------------------------------
16  Name: Matthias Blume  Name: Matthias Blume
17    Date: 2001/09/18 11:45:00 EDT
18    Tag: Release_110_36 (retag)
19    Description:
20    
21    Fixed mistake in config/preloads. Retagged as 110.36.
22    
23    ----------------------------------------------------------------------
24    Name: Matthias Blume
25    Date: 2001/09/18 09:40:00 EDT
26    Tag: Release_110_36_orig (tag changed)
27    Description:
28    
29    New version (110.36).  New bootfiles.
30    
31    ----------------------------------------------------------------------
32    Name: Matthias Blume
33    Date: 2001/09/14 16:15:00 EDT
34    Tag: blume-20010914-x86fastfp
35    Description:
36    
37    John committed some changes that Allen made, in particular a (hopefully)
38    correctly working version of the x86-fp module.
39    
40    I changed the default setting of the Control.MLRISC.getFlag "x86-fast-fp"
41    flag to "true".  Everything seems to compile to a fixpoint ok, and
42    "mandelbrot" speeds up by about 15%.
43    
44    ----------------------------------------------------------------------
45    Name: Matthias Blume
46    Date: 2001/09/13 11:20:00 EDT
47    Tag: blume-20010913-minimal
48    Description:
49    
50    1. Stefan Monnier's patch to fix a miscompilation problem that
51       was brought to light by John Reppy's work on Moby.
52    
53    2. Implemented a minimal "structure Compiler" that contains just
54       "version" and "architecture".  The minimal version will be
55       available when the full version is not.  This is for backward-
56       compatibility with code that wants to test Compiler.version.
57    
58    ----------------------------------------------------------------------
59    Name: Matthias Blume
60    Date: 2001/08/28 14:03:00 EDT
61    Tag: blume-20010828-ml-lex
62    Description:
63    
64    Fix for bug 1581, received from Neophytos Michael.
65    
66    ----------------------------------------------------------------------
67    Name: Matthias Blume
68    Date: 2001/08/27 11:20:00 EDT
69    Tag: blume-20010827-readme11035
70    Description:
71    
72    Fleshed out the README file for 110.35.
73    
74    ----------------------------------------------------------------------
75    Name: Matthias Blume
76    Date: 2001/08/24 17:10:00 EDT
77    Tag: Release_110_35
78    Description:
79    
80    New version number (110.35).  New bootfiles.
81    
82    ----------------------------------------------------------------------
83    Name: Lal George
84    Date: 2001/08/24 13:47:18 EDT 2001
85    Tag: george-20010824-MLRISC-graphs
86    Description:
87    
88     removed clusters from MLRISC completely and replaced with graphs.
89    
90    ----------------------------------------------------------------------
91    Name: Matthias Blume
92    Date: 2001/08/23 17:50:00 EDT
93    Tag: blume-20010823-toplevel
94    Description:
95    
96    - some reorganization of the code that implements various kinds of
97      environments in the compiler (static, dynamic, symbolic, combined)
98    - re-implemented the EnvRef module so that evalStream works properly
99      (if the stream contains references to "use", "CM.make", etc.)
100    - cleaned up evalloop.sml and interact.sml (but they need more cleaning)
101    
102    ----------------------------------------------------------------------
103    Name: Matthias Blume
104    Date: 2001/08/20 15:50 EDT
105    Tag: blume20010820-slipup
106    Description:
107    
108    I forgot to commit a few files.  Here they are...
109    
110    ----------------------------------------------------------------------
111    Name: Matthias Blume
112    Date: 2001/08/20 15:35:00 EDT
113    Tag: blume-20010820-debugprof
114    Description:
115    
116    !!!! NEW BOOTFILES !!!!
117    
118    This is another round of reorganizing the compiler sources.  This
119    time the main goal was to factor out all the "instrumentation"
120    passes (for profiling and backtracing) into their own library.
121    The difficulty was to do it in such a way that it does not depend
122    on elaborate.cm but only on elabdata.cm.
123    
124    Therefore there have been further changes to both elaborate.cm and
125    elabdata.cm -- more "generic" things have been moved from the former
126    to the latter.  As a result, I was forced to split the assignment
127    of numbers indicating "primtyc"s into two portions: SML-generic and
128    SML/NJ-specific.  Since it would have been awkward to maintain,
129    I bit the bullet and actually _changed_ the mapping between these
130    numbers and primtycs.  The bottom line of this is that you need
131    a new set of bin- and bootfiles.
132    
133    I have built new bootfiles for all architectures, so doing a fresh
134    checkout and config/install.sh should be all you need.
135    
136    The newly created library's name is
137    
138        $smlnj/viscomp/debugprof.cm
139    
140    and its sources live under
141    
142        src/compiler/DebugProf
143    
144    ----------------------------------------------------------------------
145    Name: Matthias Blume
146    Date: 2001/08/15 17:15:00 EDT
147    Tag: blume-20010815-compreorg
148    Description:
149    
150    This is a first cut at reorganizing the CM libraries that make up the
151    core of the compiler.  The idea is to separate out pieces that could
152    be used independently by tools, e.g., the parser, the typechecker, etc.
153    
154    The current status is a step in this direction, but it is not quite
155    satisfactory yet.  Expect more changes in the future.
156    
157    Here is the current (new) organization...
158    
159        What used to be $smlnj/viscomp/core.cm is now divided into
160        six CM libraries:
161    
162             $smlnj/viscomp/basics.cm
163                           /parser.cm
164                           /elabdata.cm
165                           /elaborate.cm
166                           /execute.cm
167                           /core.cm
168    
169        The CM files for these libraries live under src/system/smlnj/viscomp.
170        All these libraries are proxy libraries that contain precisely
171        one CM library component.  Here are the locations of the components
172        (all within the src/compiler tree):
173    
174             Basics/basics.cm
175             Parse/parser.cm
176             ElabData/elabdata.cm
177             Elaborator/elaborate.cm
178             Execution/execute.cm
179             core.cm
180    
181         [This organization is the same that has been used already
182         for a while for the architecture-specific parts of the visible
183         compiler and for the old version of core.cm.]
184    
185         As you will notice, many source files have been moved from their
186         respective original locations to a new home in one of the above
187         subtrees.
188    
189         The division of labor between the new libraries is the following:
190    
191             basics.cm:
192                - Simple, basic definitions that pertain to many (or all) of
193                  the other libraries.
194             parser.cm:
195                - The SML parser, producing output of type Ast.dec.
196                - The type family for Ast is also defined and exported here.
197             elabdata.cm:
198                - The datatypes that describe input and output of the elaborator.
199                  This includes types, absyn, and static environments.
200             elaborator.cm:
201                - The SML/NJ type checker and elaborator.
202                  This maps an Ast.dec (with a given static environment) to
203                  an Absyn.dec (with a new static environment).
204                - This libraries implements certain modules that used to be
205                  structures as functors (to remove dependencies on FLINT).
206             execute.cm:
207                - Everything having to do with executing binary code objects.
208                - Dynamic environments.
209             core.cm:
210                - SML/NJ-specific instantiations of the elaborator and MLRISC.
211                - Top-level modules.
212                - FLINT (this should eventually become its own library)
213    
214    Notes:
215    
216    I am not 100% happy with the way I separated the elaborator (and its
217    data structures) from FLINT.  Two instances of the same problem:
218    
219        1. Data structures contain certain fields that carry FLINT-specific
220           information.  I hacked around this using exn and the property list
221           module from smlnj-lib.  But the fact that there are middle-end
222           specific fields around at all is a bit annoying.
223    
224        2. The elaborator calculates certain FLINT-related information.  I tried
225           to make this as abstract as I could using functorization, but, again,
226           the fact that the elaborator has to perform calculations on behalf
227           of the middle-end at all is not nice.
228    
229        3. Having to used exn and property lists is unfortunate because it
230           weakens type checking.  The other alternative (parameterizing
231           nearly *everything*) is not appealing, though.
232    
233    I removed the "rebinding =" warning hack because due to the new organization
234    it was awkward to maintain it.  As a result, the compiler now issues some of
235    these warnings when compiling init.cmi during bootstrap compilation. On
236    the plus side, you also get a warning when you do, for example:
237       val op = = Int32.+
238    which was not the case up to now.
239    
240    I placed "assign" and "deref" into the _Core structure so that the
241    code that deals with the "lazy" keyword can find them there.  This
242    removes the need for having access to the primitive environment
243    during elaboration.
244    
245    ----------------------------------------------------------------------
246    Name: Matthias Blume
247    Date: 2001/08/13
248    Tag: blume-20010813-closures
249    Description:
250    
251    This fix was sent to us by Zhong Shao.  It is supposed to improve the
252    performance of certain loops by avoiding needless closure allocation.
253    
254    ----------------------------------------------------------------------
255    Name: Lal George
256    Date: 2001/07/31 10:03:23 EDT 2001
257    Tag: george-20010731-x86-fmalloc
258    Description: Fixed bug in x86 calls
259    
260        There was a bug where call instructions would mysteriously
261        vanish. The call instruction had to be one that returned
262        a floating point value.
263    
264    ----------------------------------------------------------------------
265    Name: Lal George
266    Date: 2001/07/19 16:36:29 EDT 2001
267    Tag: george-20010719-simple-cells
268    Description:
269    
270    I have dramatically simplified the interface for CELLS in MLRISC.
271    
272    In summary, the cells interface is broken up into three parts:
273    
274      1. CellsBasis : CELLS_BASIS
275    
276            CellsBasis is a top level structure and common for all
277            architectures.  it contains the definitions of basic datatypes
278            and utility  functions over these types.
279    
280      2. functor Cells() : CELLS
281    
282            Cells generates an interface for CELLS that incorporates the
283            specific resources on the target architecture, such as the
284            presence of special register classes, their number and size,
285            and various useful substructures.
286    
287      3. <ARCH>CELLS
288    
289            e.g. SparcCells: SPARCCELLS
290    
291            <ARCH>CELLS usually contains additional bindings for special
292            registers  on the architecture, such as:
293    
294                    val r0 : cell           (* register zero *)
295                    val y : cell            (* Y register *)
296                    val psr : cell          (* processor status register *)
297                    ...
298    
299            The structure returned by applying the Cells functor is opened
300            in this interface.
301    
302    The main implication of all this is that the datatypes for cells is
303    split between CellsBasis and CELLS -- a fairly simple change for user
304    code.
305    
306    In the old scheme the CELLS interface had a definitional binding of
307    the form:
308    
309            signature CELLS = sig
310    
311               structure CellsBasis = CellsBasis
312    
313               ...
314    
315            end
316    
317    With all the sharing constraints that goes on in MLRISC, this old
318    design  quickly leads to errors such as:
319    
320            "structure definition spec inside of sharing ... "
321    
322    
323    and appears to require an unacceptable amount of sharing and where
324    constraint hackery.
325    
326    I think this error message (the interaction of definitional specs and
327    sharing) requires more explanation on our web page.
328    
329    ----------------------------------------------------------------------
330    Name: Matthias Blume
331    Date: 2001/07/19 15:00:00 EDT
332    Tag: blume-20010719-libreorg
333    Description:
334    
335    This update puts together a fairly extensive but straightforward change
336    to the way the libraries that implement the interactive system are
337    organized:
338    
339       The biggest change is the elimination of structure Compiler.  As a
340       replacement for this structure, there is now a CM library
341       (known as $smlnj/compiler.cm or $smlnj/compiler/current.cm)
342       that exports all the substructures of the original structure Compiler
343       directly.  So instead of saying Compiler.Foo.bar one now simply
344       says Foo.bar.  (The CM libraries actually export a collection of
345       structures that is richer than the collection of substructures of
346       structure Compiler.)
347    
348       To make the transition smooth, there is a separate library called
349       $smlnj/compiler/compiler.cm which puts together and exports the
350       original structure Compiler (or at least something very close to it).
351    
352       There are five members of the original structure Compiler
353       that are not exported directly but which instead became members
354       of a new structure Backend (described by signature BACKEND).  These are:
355       structure Profile (: PROFILE), structure Compile (: COMPILE), structure
356       Interact (: INTERACT), structure Machine (: MACHINE), and val
357       architecture (: string).
358    
359       Structure Compiler.Version has become structure CompilerVersion.
360    
361       Cross-compilers for alpha32, hppa, ppc, sparc, and x86 are provided
362       by $smlnj/compiler/<arch>.cm where <arch> is alpha32, hppa, ppc, sparc,
363       or x86, respectively.
364       Each of these exports the same frontend structures that
365       $smlnj/compiler.cm exports.  But they do not have a structure Backend
366       and instead export some structure <Arch>Backend where <Arch> is Alpha32,
367       Hppa, PPC, Sparc, or X86, respectively.
368    
369       Library $smlnj/compiler/all.cm exports the union of the exports of
370       $smlnj/compiler/<arch>.cm
371    
372       There are no structures <Arch>Compiler anymore, use
373       $smlnj/compiler/<arch>.cm instead.
374    
375       Library host-compiler-0.cm is gone.  Instead, the internal library
376       that instantiates CM is now called cm0.cm.  Selection of the host
377       compiler (backend) is no longer done here but. (Responsibility for it
378       now lies with $smlnj/compiler/current.cm.  This seems to be more
379       logical.)
380    
381       Many individual files have been moved or renamed.  Some files have
382       been split into multiple files, and some "dead" files have been deleted.
383    
384    Aside from these changes to library organization, there are also changes
385    to the way the code itself is organized:
386    
387       Structure Binfile has been re-implemented in such a way that it no
388       longer needs any knowledge of the compiler.  It exclusively deals
389       with the details of binfile layout.  It no longer invokes the
390       compiler (for the purpose of creating new prospective binfile
391       content), and it no longer has any knowledge of how to interpret
392       pickles.
393    
394       Structure Compile (: COMPILE) has been stripped down to the bare
395       essentials of compilation.  It no longer deals with linking/execution.
396       The interface has been cleaned up considerably.
397    
398       Utility routines for dealing with linking and execution have been
399       moved into their own substructures.
400    
401       (The ultimate goal of these changes is to provide a light-weight
402       binfile loader/linker (at least for, e.g., stable libraries) that
403       does not require CM or the compiler to be present.)
404    
405    CM documentation has been updated to reflect the changes to library
406    organization.
407    
408    ----------------------------------------------------------------------
409    Name: Matthias Blume
410    Date: 2001/07/10 17:30:00 EDT
411    Tag: Release_110_34
412    Description:
413    
414    Minor tweak to 110.34 (re-tagged):
415    
416      - README.html file added to CVS repository
417      - runtime compiles properly under FreeBSD 3.X and 4.X
418    
419    ----------------------------------------------------------------------
420    Name: Matthias Blume
421    Date: 2001/07/10 17:30:00 EDT
422    Tag: Release_110_34
423    Description:
424    
425    New version number (110.34). New bootfiles.
426    
427    ----------------------------------------------------------------------
428    Name: Matthias Blume
429    Date: 2001/07/09 16:00:00 EDT
430    Tag: blume-20010709-more-varargs
431    Description:
432    
433    I changed the handling of varargs in ml-nlffigen again:
434    The ellipsis ... will now simply be ignored (with an accompanying warning).
435    
436    The immediate effect is that you can actually call a varargs function
437    from ML -- but you can't actually supply any arguments beyond the ones
438    specified explicitly.  (For example, you can call printf with its format
439    string, but you cannot pass additional arguments.)
440    
441    This behavior is only marginally more useful than the one before, but
442    it has the advantage that a function or, more importantly, a function
443    type never gets dropped on the floor, thus avoiding follow-up problems with
444    other types that refer to the offending one.
445    
446    ----------------------------------------------------------------------
447    Name: Matthias Blume
448    Date: 2001/07/09 11:25:00 EDT
449    Tag: blume-20010709-varargs
450    Description:
451    
452    1. ckit-lib.cm now exports structure Error
453    2. ml-nlffigen reports occurences of "..." (i.e., varargs function types)
454       with a warning accompanied by a source location.  Moreover, it
455       merely skips the offending function or type and proceeds with the
456       rest of its work.u  As a result, one can safely feed C code containing
457       "..." to ml-nlffigen.
458    3. There are some internal improvements to CM, providing slightly
459       more general string substitutions in the tools subsystem.
460    
461    ----------------------------------------------------------------------
462    Name: Matthias Blume
463    Date: 2001/06/27 15:10:00 EDT
464    Tag: blume-20010627-concur
465    Description:
466    
467    Fixed a small bug in CM's handling of parallel compilation.
468    (You could observe the bug by Control-C-interrupting an ordinary
469    CMB.make or CM.stabilize and then attaching some compile servers.
470    The result was that all of a sudden the previously interrupted
471    compilation would continue on its own.  This was because of
472    an over-optimization: CM did not bother to clean out certain queues
473    when no servers were attached "anyway", resulting in the contents
474    of these queues to grab control when new servers did get attached.)
475    
476    There is also another minor update to the CM manual.
477    
478    ----------------------------------------------------------------------
479    Name: Matthias Blume
480    Date: 2001/06/26 16:15:00 EDT
481    Tag: blume-20010626-cmdoc
482    Description:
483    
484    Minor typo fixed in CM manual (syntax diagram for libraries).
485    
486    ----------------------------------------------------------------------
487    Name: Matthias Blume
488    Date: 2001/06/25 22:55:00 EDT
489    Tag: blume-20010625-x86pc
490    Description:
491    
492    Fixed a nasty bug in the X86 assembly code that caused signal
493    handlers to fail (crash) randomly.
494    
495    ----------------------------------------------------------------------
496    Name: Matthias Blume
497    Date: 2001/06/25 12:05:00 EDT
498    Tag: blume-20010625-nlffigen
499    Description:
500    
501    This update fixes a number of minor bugs in ml-nlffigen as reported by
502    Nick Carter <nbc@andrew.cmu.edu>.
503    
504      1. Silly but ok typedefs of the form "typedef void myvoid;" are now accepted.
505      2. Default names for generated files are now derived from the name of
506         the C file *without its directory*.  In particular, this causes generated
507         files to be placed locally even if the C file is in some system directory.
508      3. Default names for generated signatures and structures are also derived
509         from the C file name without its directory.  This avoids silly things
510         like "structure GL/GL".
511         (Other silly names are still possible because ml-nlffigen does not do
512          a thorough check of whether generated names are legal ML identifiers.
513          When in doubt, use command line arguments to force particular names.)
514    
515    ----------------------------------------------------------------------
516    Name: Matthias Blume
517    Date: 2001/06/21 12:25:00 EDT
518    Tag: blume-20010621-eXene
519    Description:
520    
521    eXene now compiles and (sort of) works again.
522    
523    The library name (for version > 110.33) is $/eXene.cm.
524    
525    I also added an new example in src/eXene/examples/nbody.  See the
526    README file there for details.
527    
528    ----------------------------------------------------------------------
529    Name: Matthias Blume
530  Date: 2001/06/20 16:40:00 EDT  Date: 2001/06/20 16:40:00 EDT
531  Tag: blume-20010620-cml  Tag: blume-20010620-cml
532  Description:  Description:
# Line 2469  Line 2982 
2982       elaborator). There were a lot of changes during my "linkpath" trials       elaborator). There were a lot of changes during my "linkpath" trials
2983       that could have been reverted to their original state but weren't.       that could have been reverted to their original state but weren't.
2984       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
2985       than what was strictly necessary...  (I _did_ resist the tempation       than what was strictly necessary...  (I _did_ resist the temptation
2986       of doing any "global reformatting" to avoid an untimely death at       of doing any "global reformatting" to avoid an untimely death at
2987       Dave's hands. :)       Dave's hands. :)
2988    

Legend:
Removed from v.844  
changed lines
  Added in v.929

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