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 826, Wed May 9 20:32:17 2001 UTC revision 896, Tue Jul 31 14:09:49 2001 UTC
# Line 13  Line 13 
13  Description:  Description:
14    
15  ----------------------------------------------------------------------  ----------------------------------------------------------------------
16    Name: Lal George
17    Date: 2001/07/31 10:03:23 EDT 2001
18    Tag: george-20010731-x86-fmalloc
19    Description: Fixed bug in x86 calls
20    
21        There was a bug where call instructions would mysteriously
22        vanish. The call instruction had to be one that returned
23        a floating point value.
24    
25    ----------------------------------------------------------------------
26    Name: Lal George
27    Date: 2001/07/19 16:36:29 EDT 2001
28    Tag: george-20010719-simple-cells
29    Description:
30    
31    I have dramatically simplified the interface for CELLS in MLRISC.
32    
33    In summary, the cells interface is broken up into three parts:
34    
35      1. CellsBasis : CELLS_BASIS
36    
37            CellsBasis is a top level structure and common for all
38            architectures.  it contains the definitions of basic datatypes
39            and utility  functions over these types.
40    
41      2. functor Cells() : CELLS
42    
43            Cells generates an interface for CELLS that incorporates the
44            specific resources on the target architecture, such as the
45            presence of special register classes, their number and size,
46            and various useful substructures.
47    
48      3. <ARCH>CELLS
49    
50            e.g. SparcCells: SPARCCELLS
51    
52            <ARCH>CELLS usually contains additional bindings for special
53            registers  on the architecture, such as:
54    
55                    val r0 : cell           (* register zero *)
56                    val y : cell            (* Y register *)
57                    val psr : cell          (* processor status register *)
58                    ...
59    
60            The structure returned by applying the Cells functor is opened
61            in this interface.
62    
63    The main implication of all this is that the datatypes for cells is
64    split between CellsBasis and CELLS -- a fairly simple change for user
65    code.
66    
67    In the old scheme the CELLS interface had a definitional binding of
68    the form:
69    
70            signature CELLS = sig
71    
72               structure CellsBasis = CellsBasis
73    
74               ...
75    
76            end
77    
78    With all the sharing constraints that goes on in MLRISC, this old
79    design  quickly leads to errors such as:
80    
81            "structure definition spec inside of sharing ... "
82    
83    
84    and appears to require an unacceptable amount of sharing and where
85    constraint hackery.
86    
87    I think this error message (the interaction of definitional specs and
88    sharing) requires more explanation on our web page.
89    
90    ----------------------------------------------------------------------
91    Name: Matthias Blume
92    Date: 2001/07/19 15:00:00 EDT
93    Tag: blume-20010719-libreorg
94    Description:
95    
96    This update puts together a fairly extensive but straightforward change
97    to the way the libraries that implement the interactive system are
98    organized:
99    
100       The biggest change is the elimination of structure Compiler.  As a
101       replacement for this structure, there is now a CM library
102       (known as $smlnj/compiler.cm or $smlnj/compiler/current.cm)
103       that exports all the substructures of the original structure Compiler
104       directly.  So instead of saying Compiler.Foo.bar one now simply
105       says Foo.bar.  (The CM libraries actually export a collection of
106       structures that is richer than the collection of substructures of
107       structure Compiler.)
108    
109       To make the transition smooth, there is a separate library called
110       $smlnj/compiler/compiler.cm which puts together and exports the
111       original structure Compiler (or at least something very close to it).
112    
113       There are five members of the original structure Compiler
114       that are not exported directly but which instead became members
115       of a new structure Backend (described by signature BACKEND).  These are:
116       structure Profile (: PROFILE), structure Compile (: COMPILE), structure
117       Interact (: INTERACT), structure Machine (: MACHINE), and val
118       architecture (: string).
119    
120       Structure Compiler.Version has become structure CompilerVersion.
121    
122       Cross-compilers for alpha32, hppa, ppc, sparc, and x86 are provided
123       by $smlnj/compiler/<arch>.cm where <arch> is alpha32, hppa, ppc, sparc,
124       or x86, respectively.
125       Each of these exports the same frontend structures that
126       $smlnj/compiler.cm exports.  But they do not have a structure Backend
127       and instead export some structure <Arch>Backend where <Arch> is Alpha32,
128       Hppa, PPC, Sparc, or X86, respectively.
129    
130       Library $smlnj/compiler/all.cm exports the union of the exports of
131       $smlnj/compiler/<arch>.cm
132    
133       There are no structures <Arch>Compiler anymore, use
134       $smlnj/compiler/<arch>.cm instead.
135    
136       Library host-compiler-0.cm is gone.  Instead, the internal library
137       that instantiates CM is now called cm0.cm.  Selection of the host
138       compiler (backend) is no longer done here but. (Responsibility for it
139       now lies with $smlnj/compiler/current.cm.  This seems to be more
140       logical.)
141    
142       Many individual files have been moved or renamed.  Some files have
143       been split into multiple files, and some "dead" files have been deleted.
144    
145    Aside from these changes to library organization, there are also changes
146    to the way the code itself is organized:
147    
148       Structure Binfile has been re-implemented in such a way that it no
149       longer needs any knowledge of the compiler.  It exclusively deals
150       with the details of binfile layout.  It no longer invokes the
151       compiler (for the purpose of creating new prospective binfile
152       content), and it no longer has any knowledge of how to interpret
153       pickles.
154    
155       Structure Compile (: COMPILE) has been stripped down to the bare
156       essentials of compilation.  It no longer deals with linking/execution.
157       The interface has been cleaned up considerably.
158    
159       Utility routines for dealing with linking and execution have been
160       moved into their own substructures.
161    
162       (The ultimate goal of these changes is to provide a light-weight
163       binfile loader/linker (at least for, e.g., stable libraries) that
164       does not require CM or the compiler to be present.)
165    
166    CM documentation has been updated to reflect the changes to library
167    organization.
168    
169    ----------------------------------------------------------------------
170    Name: Matthias Blume
171    Date: 2001/07/10 17:30:00 EDT
172    Tag: Release_110_34
173    Description:
174    
175    Minor tweak to 110.34 (re-tagged):
176    
177      - README.html file added to CVS repository
178      - runtime compiles properly under FreeBSD 3.X and 4.X
179    
180    ----------------------------------------------------------------------
181    Name: Matthias Blume
182    Date: 2001/07/10 17:30:00 EDT
183    Tag: Release_110_34
184    Description:
185    
186    New version number (110.34). New bootfiles.
187    
188    ----------------------------------------------------------------------
189    Name: Matthias Blume
190    Date: 2001/07/09 16:00:00 EDT
191    Tag: blume-20010709-more-varargs
192    Description:
193    
194    I changed the handling of varargs in ml-nlffigen again:
195    The ellipsis ... will now simply be ignored (with an accompanying warning).
196    
197    The immediate effect is that you can actually call a varargs function
198    from ML -- but you can't actually supply any arguments beyond the ones
199    specified explicitly.  (For example, you can call printf with its format
200    string, but you cannot pass additional arguments.)
201    
202    This behavior is only marginally more useful than the one before, but
203    it has the advantage that a function or, more importantly, a function
204    type never gets dropped on the floor, thus avoiding follow-up problems with
205    other types that refer to the offending one.
206    
207    ----------------------------------------------------------------------
208    Name: Matthias Blume
209    Date: 2001/07/09 11:25:00 EDT
210    Tag: blume-20010709-varargs
211    Description:
212    
213    1. ckit-lib.cm now exports structure Error
214    2. ml-nlffigen reports occurences of "..." (i.e., varargs function types)
215       with a warning accompanied by a source location.  Moreover, it
216       merely skips the offending function or type and proceeds with the
217       rest of its work.u  As a result, one can safely feed C code containing
218       "..." to ml-nlffigen.
219    3. There are some internal improvements to CM, providing slightly
220       more general string substitutions in the tools subsystem.
221    
222    ----------------------------------------------------------------------
223    Name: Matthias Blume
224    Date: 2001/06/27 15:10:00 EDT
225    Tag: blume-20010627-concur
226    Description:
227    
228    Fixed a small bug in CM's handling of parallel compilation.
229    (You could observe the bug by Control-C-interrupting an ordinary
230    CMB.make or CM.stabilize and then attaching some compile servers.
231    The result was that all of a sudden the previously interrupted
232    compilation would continue on its own.  This was because of
233    an over-optimization: CM did not bother to clean out certain queues
234    when no servers were attached "anyway", resulting in the contents
235    of these queues to grab control when new servers did get attached.)
236    
237    There is also another minor update to the CM manual.
238    
239    ----------------------------------------------------------------------
240    Name: Matthias Blume
241    Date: 2001/06/26 16:15:00 EDT
242    Tag: blume-20010626-cmdoc
243    Description:
244    
245    Minor typo fixed in CM manual (syntax diagram for libraries).
246    
247    ----------------------------------------------------------------------
248    Name: Matthias Blume
249    Date: 2001/06/25 22:55:00 EDT
250    Tag: blume-20010625-x86pc
251    Description:
252    
253    Fixed a nasty bug in the X86 assembly code that caused signal
254    handlers to fail (crash) randomly.
255    
256    ----------------------------------------------------------------------
257    Name: Matthias Blume
258    Date: 2001/06/25 12:05:00 EDT
259    Tag: blume-20010625-nlffigen
260    Description:
261    
262    This update fixes a number of minor bugs in ml-nlffigen as reported by
263    Nick Carter <nbc@andrew.cmu.edu>.
264    
265      1. Silly but ok typedefs of the form "typedef void myvoid;" are now accepted.
266      2. Default names for generated files are now derived from the name of
267         the C file *without its directory*.  In particular, this causes generated
268         files to be placed locally even if the C file is in some system directory.
269      3. Default names for generated signatures and structures are also derived
270         from the C file name without its directory.  This avoids silly things
271         like "structure GL/GL".
272         (Other silly names are still possible because ml-nlffigen does not do
273          a thorough check of whether generated names are legal ML identifiers.
274          When in doubt, use command line arguments to force particular names.)
275    
276    ----------------------------------------------------------------------
277    Name: Matthias Blume
278    Date: 2001/06/21 12:25:00 EDT
279    Tag: blume-20010621-eXene
280    Description:
281    
282    eXene now compiles and (sort of) works again.
283    
284    The library name (for version > 110.33) is $/eXene.cm.
285    
286    I also added an new example in src/eXene/examples/nbody.  See the
287    README file there for details.
288    
289    ----------------------------------------------------------------------
290    Name: Matthias Blume
291    Date: 2001/06/20 16:40:00 EDT
292    Tag: blume-20010620-cml
293    Description:
294    
295    CML now compiles and works again.
296    
297    Libraries (for version > 110.33):
298    
299      $cml/cml.cm            Main CML library.
300      $cml/basis.cm          CML's version of $/basis.cm.
301      $cml/cml-internal.cm   Internal helper library.
302      $cml/core-cml.cm       Internal helper library.
303      $cml-lib/trace-cml.cm  Tracing facility.
304      $cml-lib/smlnj-lib.cm  CML's version of $/smlnj-lib.cm
305    
306    The installer (config/install.sh) has been taught how to properly
307    install this stuff.
308    
309    ----------------------------------------------------------------------
310    Name: Matthias Blume
311    Date: 2001/06/19 17:55:00 EDT
312    Tag: blume-20010619-instantiate
313    Description:
314    
315    This un-breaks the fix for bug 1432.
316    (The bug was originally fixed in 110.9 but I broke it again some
317    time after that.)
318    
319    ----------------------------------------------------------------------
320    Name: Matthias Blume
321    Date: 2001/06/19 17:25:00 EDT
322    Tag: blume-20010619-signals
323    Description:
324    
325    This should (hopefully) fix the long-standing signal handling bug.
326    (The runtime system was constructing a continuation record with an
327    incorrect descriptor which would cause the GC to drop data on the floor...)
328    
329    ----------------------------------------------------------------------
330    Name: Matthias Blume
331    Date: 2001/06/15 15:05:00 EDT
332    Tag: blume-20010615-moresparc
333    Description:
334    
335    Here is a short late-hour update related to Sparc c-calls:
336    
337     -- made handling of double-word arguments a bit smarter
338    
339     -- instruction selection phase tries to collapse certain clumsily
340        constructed ML-Trees; typical example:
341    
342            ADD(ty,ADD(_,e,LI d1),LI d2)  ->  ADD(ty,e,LI(d1+d2))
343    
344        This currently has no further impact on SML/NJ since mlriscGen does
345        not seem to generate such patterns in the first place, and c-calls
346        (which did generate them in the beginning) has meanwhile been fixed
347        so as to avoid them as well.
348    
349    ----------------------------------------------------------------------
350    Name: Matthias Blume
351    Date: 2001/06/15 15:05:00 EDT
352    Tag: blume-20010615-sparc
353    Description:
354    
355    The purpose of this update is to provide an implementation of NLFFI
356    on Sparc machines.
357    
358    Here are the changes in detail:
359    
360       * src/MLRISC/sparc/c-calls/sparc-c-calls.sml is a new file containing
361       the Sparc implementation of the c-calls API.
362       * The Sparc backend of SML/NJ has been modified to uniformely use %fp
363       for accessing the ML frame.  Thus, we have a real frame pointer and
364       can freely modify %sp without need for an omit-frame-ptr phase.
365       The vfp logic in src/compiler/CodeGen/* has been changed to accomodate
366       this case.
367       * ml-nlffigen has been taught to produce code for different architectures
368       and calling conventions.
369       * In a way similar to what was done in the x86 case, the Sparc
370       backend uses its own specific extension to mltree.  (For example,
371       it needs to be able to generate UNIMP instructions which are part
372       of the calling convention.)
373       * ml-nlffi-lib was reorganized to make it more modular (in particular,
374       to make it easier to plug in new machine- and os-dependent parts).
375    
376    There are some other fairly unrelated bug fixes and cleanups as well:
377    
378       * I further hacked the .cm files for MLRISC tools (like MDLGen) so
379       that they properly share their libraries with existing SML/NJ libraries.
380       * I fixed a minor cosmetic bug in CM, supressing certain spurious
381       follow-up error messages.
382       * Updates to CM/CMB documentation.
383    
384    TODO items:
385    
386       * MLRISC should use a different register as its asmTemp on the Sparc.
387         (The current %o2 is a really bad choice because it is part of the
388         calling conventions, so things might interfere in unexpected ways.)
389    
390    ----------------------------------------------------------------------
391    Name: Matthias Blume
392    Date: 2001/06/07
393    Tag: blume-20010607-calls
394    Description:
395    
396    A number of internal changes related to C calls and calling conventions:
397    
398    1. ML-Tree CALL statements now carry a "pops" field.  It indicates the
399       number of bytes popped implicitly (by the callee).  In most cases
400       this field is 0 but on x86/win32 it is some non-zero value.  This
401       is information provided for the benefit of the "omit-frameptr" pass.
402    2. The CALL instruction on the x86 carries a similar "pops" field.
403       The instruction selection phase copies its value from the ML-Tree
404       CALL statement.
405    3. On all other architectures, the instruction selection phase checks
406       whether "pops=0" and complains if not.
407    4. The c-calls implementation for x86 now accepts two calling conventions:
408       "ccall" and "stdcall".  When "ccall" is selected, the caller cleans
409       up after the call and pops is set to 0.  For "stdcall", the caller
410       does nothing, leaving the cleanup to the callee; pops is set to
411       the number of bytes that were pushed onto the stack.
412    5. The cproto decoder (compiler/Semant/types/cproto.sml) now can
413       distinguish between "ccall" and "stdcall".
414    6. The UNIMP instruction has been added to the supported Sparc instruction
415       set. (This is needed for implementing the official C calling convention
416       on this architecture.)
417    7. I fixed some of the .cm files under src/MLRISC/Tools to make them
418       work with the latest CM.
419    
420    ----------------------------------------------------------------------
421    Name: Matthias Blume
422    Date: 2001/06/05 15:10:00 EDT
423    Tag: blume-20010605-cm-index
424    Description:
425    
426    0. The "lambdasplit" parameter for class "sml" in CM has been documented.
427    
428    1. CM can now generate "index files".  These are human-readable files
429       that list on a per-.cm-file basis each toplevel symbol defined or
430       imported.  The location of the index file for
431       <p>/<d>.cm is <p>/CM/INDEX/<d>.cm.
432       To enable index-file generation, set CM.Control.generate_index to true
433       or export an environment-symbol: export CM_GENERATE_INDEX=true.
434    
435       The CM manual has been updated accordingly.
436    
437    2. I made some slight modifications to the c-calls API in MLRISC.
438    
439         a) There is now a callback to support saving/restoring of
440            dedicated but caller-save registers around the actual call
441            instruction.
442         b) One can optionally specify a comment-annotation for the
443            call instruction.
444    
445    3. SML/NJ (mlriscGen.sml) uses this new API for the rawccall primop.
446       (For example, the comment annotation shows the C prototype of
447        the function being called.)
448    
449    ----------------------------------------------------------------------
450    Name: Matthias Blume
451    Date: 2001/06/01 13:30:00 EDT
452    Tag: blume-20010601-nlffi-cleanup
453    Description:
454    
455    This is mostly a cleanup of MLFFI stuff:
456    
457       - some signature files have been put into a more exposed place
458       - the ugly 'f type parameter is gone (simplifies types tremendously!)
459       - ml-nlffigen changed accordingly
460       - tutorial updated
461    
462    Other changes:
463    
464       - author's affiliation in CM manual(s) updated
465       - some more recognized keywords added to Allen's sml.sty
466    
467    ----------------------------------------------------------------------
468    Name: Matthias Blume
469    Date: 2001/05/25 15:30:00 EDT
470    Tag: blume-20010525-iptr
471    Description:
472    
473      - put the official 110.33-README (as it appears on the ftp server) under
474        CVS
475      - fixed a small bug related to incomplete pointer types in
476        ml-nlffigen
477      - small cosmetic change to the ml-nlffi-lib's "arr" type constructor
478        (it does not need the 'f type parameter)
479    
480    ----------------------------------------------------------------------
481    Name: Matthias Blume
482    Date: 2001/05/23 14:30:00 EDT
483    Tag: Release_110_33
484    Description:
485    
486    New version number (110.33).  New bootfiles.
487    
488    ----------------------------------------------------------------------
489    Name: Matthias Blume
490    Date: 2001/05/22 18:06:00 EDT
491    Tag: blume-20010522-targets
492    Description:
493    
494    Made install.sh use file config/targets.customized if it exists, falling
495    back to config/targets if it doesn't.  This way one can have a customized
496    version of the targets file without touching the "real thing", thus
497    eliminating the constant fear of accidentally checking something bogus
498    back into the CVS repository...  (File config/targets.customized must
499    not be added to the repository!)
500    
501    ----------------------------------------------------------------------
502    Name: Matthias Blume
503    Date: 2001/05/22 16:30:00 EDT
504    Tag: blume-20010522-minitut
505    Description:
506    
507    1. Bug fix in ml-nlffigen; now (hopefully) correctly handling
508       struct returns.
509    2. Added src/ml-nlffi-lib/Doc/mini-tutorial.txt.  This is some very
510       incomplete, preliminary documentation for NLFFI.
511    
512    ----------------------------------------------------------------------
513    Name: Matthias Blume
514    Date: 2001/05/14 11:30:00 EDT
515    Tag: blume-20010514-script
516    Description:
517    
518    Some bugs in install script fixed.
519    
520    In addition to that I also made a slight change to the NLFFI API:
521    Functors generated by ml-nlffigen now take the dynamic library as a
522    straight functor argument, not as a suspended one.  (The original
523    functor code used to force the suspension right away anyway, so there
524    was nothing gained by this complication of the interface.)
525    
526    ----------------------------------------------------------------------
527    Name: Matthias Blume
528    Date: 2001/05/11 14:35:00 EDT
529    Tag: blume-20010511-ml-nlffi
530    Description:
531    
532    I finally took the plunge and added my new FFI code to the main
533    repository.  For x86-linux it is now ready for prime-time.
534    
535    There are two new subdirectories of "src":
536    
537      - ml-nlffi-lib:
538           The utility library for programs using the FFI interface.
539           Here is the implementation of $/c.cm and its associated low-level
540           partners $/c-int.cm and $/memory.cm.
541      - ml-nlffigen:
542           A stand-alone program for generating ML glue code from C source
543           code.
544    
545    Building ml-nlffigen requires $/ckit-lib.cm.
546    
547    The config/install.sh script has been updates to do the Right Thing
548    (hopefully).
549    
550    Notice that the source tree for the C-Kit will not be put under "src"
551    but directly under the installation root directory.  (This is the
552    structure that currently exists on the CVS server when you check out
553    module "sml".)  Fortunately, config/install.sh knows about this oddity.
554    
555    Bugs: No documentation yet.
556    
557    ----------------------------------------------------------------------
558  Name: Matthias Blume  Name: Matthias Blume
559  Date: 2001/05/09 16:35:00 EDT  Date: 2001/05/09 16:35:00 EDT
560  Tag: blume-20010509-cpscontract  Tag: blume-20010509-cpscontract

Legend:
Removed from v.826  
changed lines
  Added in v.896

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