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 806, Thu Mar 22 21:22:21 2001 UTC revision 876, Wed Jul 11 15:42:20 2001 UTC
# Line 14  Line 14 
14    
15  ----------------------------------------------------------------------  ----------------------------------------------------------------------
16  Name: Matthias Blume  Name: Matthias Blume
17    Date: 2001/07/10 17:30:00 EDT
18    Tag: Release_110_34
19    Description:
20    
21    Minor tweak to 110.34 (re-tagged):
22    
23      - README.html file added to CVS repository
24      - runtime compiles properly under FreeBSD 3.X and 4.X
25    
26    ----------------------------------------------------------------------
27    Name: Matthias Blume
28    Date: 2001/07/10 17:30:00 EDT
29    Tag: Release_110_34
30    Description:
31    
32    New version number (110.34). New bootfiles.
33    
34    ----------------------------------------------------------------------
35    Name: Matthias Blume
36    Date: 2001/07/09 16:00:00 EDT
37    Tag: blume-20010709-more-varargs
38    Description:
39    
40    I changed the handling of varargs in ml-nlffigen again:
41    The ellipsis ... will now simply be ignored (with an accompanying warning).
42    
43    The immediate effect is that you can actually call a varargs function
44    from ML -- but you can't actually supply any arguments beyond the ones
45    specified explicitly.  (For example, you can call printf with its format
46    string, but you cannot pass additional arguments.)
47    
48    This behavior is only marginally more useful than the one before, but
49    it has the advantage that a function or, more importantly, a function
50    type never gets dropped on the floor, thus avoiding follow-up problems with
51    other types that refer to the offending one.
52    
53    ----------------------------------------------------------------------
54    Name: Matthias Blume
55    Date: 2001/07/09 11:25:00 EDT
56    Tag: blume-20010709-varargs
57    Description:
58    
59    1. ckit-lib.cm now exports structure Error
60    2. ml-nlffigen reports occurences of "..." (i.e., varargs function types)
61       with a warning accompanied by a source location.  Moreover, it
62       merely skips the offending function or type and proceeds with the
63       rest of its work.u  As a result, one can safely feed C code containing
64       "..." to ml-nlffigen.
65    3. There are some internal improvements to CM, providing slightly
66       more general string substitutions in the tools subsystem.
67    
68    ----------------------------------------------------------------------
69    Name: Matthias Blume
70    Date: 2001/06/27 15:10:00 EDT
71    Tag: blume-20010627-concur
72    Description:
73    
74    Fixed a small bug in CM's handling of parallel compilation.
75    (You could observe the bug by Control-C-interrupting an ordinary
76    CMB.make or CM.stabilize and then attaching some compile servers.
77    The result was that all of a sudden the previously interrupted
78    compilation would continue on its own.  This was because of
79    an over-optimization: CM did not bother to clean out certain queues
80    when no servers were attached "anyway", resulting in the contents
81    of these queues to grab control when new servers did get attached.)
82    
83    There is also another minor update to the CM manual.
84    
85    ----------------------------------------------------------------------
86    Name: Matthias Blume
87    Date: 2001/06/26 16:15:00 EDT
88    Tag: blume-20010626-cmdoc
89    Description:
90    
91    Minor typo fixed in CM manual (syntax diagram for libraries).
92    
93    ----------------------------------------------------------------------
94    Name: Matthias Blume
95    Date: 2001/06/25 22:55:00 EDT
96    Tag: blume-20010625-x86pc
97    Description:
98    
99    Fixed a nasty bug in the X86 assembly code that caused signal
100    handlers to fail (crash) randomly.
101    
102    ----------------------------------------------------------------------
103    Name: Matthias Blume
104    Date: 2001/06/25 12:05:00 EDT
105    Tag: blume-20010625-nlffigen
106    Description:
107    
108    This update fixes a number of minor bugs in ml-nlffigen as reported by
109    Nick Carter <nbc@andrew.cmu.edu>.
110    
111      1. Silly but ok typedefs of the form "typedef void myvoid;" are now accepted.
112      2. Default names for generated files are now derived from the name of
113         the C file *without its directory*.  In particular, this causes generated
114         files to be placed locally even if the C file is in some system directory.
115      3. Default names for generated signatures and structures are also derived
116         from the C file name without its directory.  This avoids silly things
117         like "structure GL/GL".
118         (Other silly names are still possible because ml-nlffigen does not do
119          a thorough check of whether generated names are legal ML identifiers.
120          When in doubt, use command line arguments to force particular names.)
121    
122    ----------------------------------------------------------------------
123    Name: Matthias Blume
124    Date: 2001/06/21 12:25:00 EDT
125    Tag: blume-20010621-eXene
126    Description:
127    
128    eXene now compiles and (sort of) works again.
129    
130    The library name (for version > 110.33) is $/eXene.cm.
131    
132    I also added an new example in src/eXene/examples/nbody.  See the
133    README file there for details.
134    
135    ----------------------------------------------------------------------
136    Name: Matthias Blume
137    Date: 2001/06/20 16:40:00 EDT
138    Tag: blume-20010620-cml
139    Description:
140    
141    CML now compiles and works again.
142    
143    Libraries (for version > 110.33):
144    
145      $cml/cml.cm            Main CML library.
146      $cml/basis.cm          CML's version of $/basis.cm.
147      $cml/cml-internal.cm   Internal helper library.
148      $cml/core-cml.cm       Internal helper library.
149      $cml-lib/trace-cml.cm  Tracing facility.
150      $cml-lib/smlnj-lib.cm  CML's version of $/smlnj-lib.cm
151    
152    The installer (config/install.sh) has been taught how to properly
153    install this stuff.
154    
155    ----------------------------------------------------------------------
156    Name: Matthias Blume
157    Date: 2001/06/19 17:55:00 EDT
158    Tag: blume-20010619-instantiate
159    Description:
160    
161    This un-breaks the fix for bug 1432.
162    (The bug was originally fixed in 110.9 but I broke it again some
163    time after that.)
164    
165    ----------------------------------------------------------------------
166    Name: Matthias Blume
167    Date: 2001/06/19 17:25:00 EDT
168    Tag: blume-20010619-signals
169    Description:
170    
171    This should (hopefully) fix the long-standing signal handling bug.
172    (The runtime system was constructing a continuation record with an
173    incorrect descriptor which would cause the GC to drop data on the floor...)
174    
175    ----------------------------------------------------------------------
176    Name: Matthias Blume
177    Date: 2001/06/15 15:05:00 EDT
178    Tag: blume-20010615-moresparc
179    Description:
180    
181    Here is a short late-hour update related to Sparc c-calls:
182    
183     -- made handling of double-word arguments a bit smarter
184    
185     -- instruction selection phase tries to collapse certain clumsily
186        constructed ML-Trees; typical example:
187    
188            ADD(ty,ADD(_,e,LI d1),LI d2)  ->  ADD(ty,e,LI(d1+d2))
189    
190        This currently has no further impact on SML/NJ since mlriscGen does
191        not seem to generate such patterns in the first place, and c-calls
192        (which did generate them in the beginning) has meanwhile been fixed
193        so as to avoid them as well.
194    
195    ----------------------------------------------------------------------
196    Name: Matthias Blume
197    Date: 2001/06/15 15:05:00 EDT
198    Tag: blume-20010615-sparc
199    Description:
200    
201    The purpose of this update is to provide an implementation of NLFFI
202    on Sparc machines.
203    
204    Here are the changes in detail:
205    
206       * src/MLRISC/sparc/c-calls/sparc-c-calls.sml is a new file containing
207       the Sparc implementation of the c-calls API.
208       * The Sparc backend of SML/NJ has been modified to uniformely use %fp
209       for accessing the ML frame.  Thus, we have a real frame pointer and
210       can freely modify %sp without need for an omit-frame-ptr phase.
211       The vfp logic in src/compiler/CodeGen/* has been changed to accomodate
212       this case.
213       * ml-nlffigen has been taught to produce code for different architectures
214       and calling conventions.
215       * In a way similar to what was done in the x86 case, the Sparc
216       backend uses its own specific extension to mltree.  (For example,
217       it needs to be able to generate UNIMP instructions which are part
218       of the calling convention.)
219       * ml-nlffi-lib was reorganized to make it more modular (in particular,
220       to make it easier to plug in new machine- and os-dependent parts).
221    
222    There are some other fairly unrelated bug fixes and cleanups as well:
223    
224       * I further hacked the .cm files for MLRISC tools (like MDLGen) so
225       that they properly share their libraries with existing SML/NJ libraries.
226       * I fixed a minor cosmetic bug in CM, supressing certain spurious
227       follow-up error messages.
228       * Updates to CM/CMB documentation.
229    
230    TODO items:
231    
232       * MLRISC should use a different register as its asmTemp on the Sparc.
233         (The current %o2 is a really bad choice because it is part of the
234         calling conventions, so things might interfere in unexpected ways.)
235    
236    ----------------------------------------------------------------------
237    Name: Matthias Blume
238    Date: 2001/06/07
239    Tag: blume-20010607-calls
240    Description:
241    
242    A number of internal changes related to C calls and calling conventions:
243    
244    1. ML-Tree CALL statements now carry a "pops" field.  It indicates the
245       number of bytes popped implicitly (by the callee).  In most cases
246       this field is 0 but on x86/win32 it is some non-zero value.  This
247       is information provided for the benefit of the "omit-frameptr" pass.
248    2. The CALL instruction on the x86 carries a similar "pops" field.
249       The instruction selection phase copies its value from the ML-Tree
250       CALL statement.
251    3. On all other architectures, the instruction selection phase checks
252       whether "pops=0" and complains if not.
253    4. The c-calls implementation for x86 now accepts two calling conventions:
254       "ccall" and "stdcall".  When "ccall" is selected, the caller cleans
255       up after the call and pops is set to 0.  For "stdcall", the caller
256       does nothing, leaving the cleanup to the callee; pops is set to
257       the number of bytes that were pushed onto the stack.
258    5. The cproto decoder (compiler/Semant/types/cproto.sml) now can
259       distinguish between "ccall" and "stdcall".
260    6. The UNIMP instruction has been added to the supported Sparc instruction
261       set. (This is needed for implementing the official C calling convention
262       on this architecture.)
263    7. I fixed some of the .cm files under src/MLRISC/Tools to make them
264       work with the latest CM.
265    
266    ----------------------------------------------------------------------
267    Name: Matthias Blume
268    Date: 2001/06/05 15:10:00 EDT
269    Tag: blume-20010605-cm-index
270    Description:
271    
272    0. The "lambdasplit" parameter for class "sml" in CM has been documented.
273    
274    1. CM can now generate "index files".  These are human-readable files
275       that list on a per-.cm-file basis each toplevel symbol defined or
276       imported.  The location of the index file for
277       <p>/<d>.cm is <p>/CM/INDEX/<d>.cm.
278       To enable index-file generation, set CM.Control.generate_index to true
279       or export an environment-symbol: export CM_GENERATE_INDEX=true.
280    
281       The CM manual has been updated accordingly.
282    
283    2. I made some slight modifications to the c-calls API in MLRISC.
284    
285         a) There is now a callback to support saving/restoring of
286            dedicated but caller-save registers around the actual call
287            instruction.
288         b) One can optionally specify a comment-annotation for the
289            call instruction.
290    
291    3. SML/NJ (mlriscGen.sml) uses this new API for the rawccall primop.
292       (For example, the comment annotation shows the C prototype of
293        the function being called.)
294    
295    ----------------------------------------------------------------------
296    Name: Matthias Blume
297    Date: 2001/06/01 13:30:00 EDT
298    Tag: blume-20010601-nlffi-cleanup
299    Description:
300    
301    This is mostly a cleanup of MLFFI stuff:
302    
303       - some signature files have been put into a more exposed place
304       - the ugly 'f type parameter is gone (simplifies types tremendously!)
305       - ml-nlffigen changed accordingly
306       - tutorial updated
307    
308    Other changes:
309    
310       - author's affiliation in CM manual(s) updated
311       - some more recognized keywords added to Allen's sml.sty
312    
313    ----------------------------------------------------------------------
314    Name: Matthias Blume
315    Date: 2001/05/25 15:30:00 EDT
316    Tag: blume-20010525-iptr
317    Description:
318    
319      - put the official 110.33-README (as it appears on the ftp server) under
320        CVS
321      - fixed a small bug related to incomplete pointer types in
322        ml-nlffigen
323      - small cosmetic change to the ml-nlffi-lib's "arr" type constructor
324        (it does not need the 'f type parameter)
325    
326    ----------------------------------------------------------------------
327    Name: Matthias Blume
328    Date: 2001/05/23 14:30:00 EDT
329    Tag: Release_110_33
330    Description:
331    
332    New version number (110.33).  New bootfiles.
333    
334    ----------------------------------------------------------------------
335    Name: Matthias Blume
336    Date: 2001/05/22 18:06:00 EDT
337    Tag: blume-20010522-targets
338    Description:
339    
340    Made install.sh use file config/targets.customized if it exists, falling
341    back to config/targets if it doesn't.  This way one can have a customized
342    version of the targets file without touching the "real thing", thus
343    eliminating the constant fear of accidentally checking something bogus
344    back into the CVS repository...  (File config/targets.customized must
345    not be added to the repository!)
346    
347    ----------------------------------------------------------------------
348    Name: Matthias Blume
349    Date: 2001/05/22 16:30:00 EDT
350    Tag: blume-20010522-minitut
351    Description:
352    
353    1. Bug fix in ml-nlffigen; now (hopefully) correctly handling
354       struct returns.
355    2. Added src/ml-nlffi-lib/Doc/mini-tutorial.txt.  This is some very
356       incomplete, preliminary documentation for NLFFI.
357    
358    ----------------------------------------------------------------------
359    Name: Matthias Blume
360    Date: 2001/05/14 11:30:00 EDT
361    Tag: blume-20010514-script
362    Description:
363    
364    Some bugs in install script fixed.
365    
366    In addition to that I also made a slight change to the NLFFI API:
367    Functors generated by ml-nlffigen now take the dynamic library as a
368    straight functor argument, not as a suspended one.  (The original
369    functor code used to force the suspension right away anyway, so there
370    was nothing gained by this complication of the interface.)
371    
372    ----------------------------------------------------------------------
373    Name: Matthias Blume
374    Date: 2001/05/11 14:35:00 EDT
375    Tag: blume-20010511-ml-nlffi
376    Description:
377    
378    I finally took the plunge and added my new FFI code to the main
379    repository.  For x86-linux it is now ready for prime-time.
380    
381    There are two new subdirectories of "src":
382    
383      - ml-nlffi-lib:
384           The utility library for programs using the FFI interface.
385           Here is the implementation of $/c.cm and its associated low-level
386           partners $/c-int.cm and $/memory.cm.
387      - ml-nlffigen:
388           A stand-alone program for generating ML glue code from C source
389           code.
390    
391    Building ml-nlffigen requires $/ckit-lib.cm.
392    
393    The config/install.sh script has been updates to do the Right Thing
394    (hopefully).
395    
396    Notice that the source tree for the C-Kit will not be put under "src"
397    but directly under the installation root directory.  (This is the
398    structure that currently exists on the CVS server when you check out
399    module "sml".)  Fortunately, config/install.sh knows about this oddity.
400    
401    Bugs: No documentation yet.
402    
403    ----------------------------------------------------------------------
404    Name: Matthias Blume
405    Date: 2001/05/09 16:35:00 EDT
406    Tag: blume-20010509-cpscontract
407    Description:
408    
409    Fixed a bug in the accounting code in cpsopt/contract.sml.  (The
410    wrapper/unwrapper elimination did not decrement usage counts and some
411    dead variables got overlooked by the dead-up logic.)
412    
413    ----------------------------------------------------------------------
414    Name: Lal George
415    Date: 2001/05/08  17:26:09 EDT
416    Tag: george-20010508-omit-frameptr
417    Description:
418    
419    Changes to implement the omit-frame-pointer optimization to support
420    raw C calls. For now, there is only support on the Intel x86, but
421    other architectures will follow as more experience is gained with this.
422    
423    
424    ----------------------------------------------------------------------
425    Name: Matthias Blume
426    Date: 2001/05/07 14:40:00 EDT
427    Tag: blume-20010507-proxies
428    Description:
429    
430    I made into "proxy libraries" all libraries that qualify for such a
431    change.  (A qualifying library is a library that has another library or
432    groups as its sole member and repeats that member's export list
433    verbatim.  A proxy library avoids this repetition by omitting its export
434    list, effectively inheriting the list that its (only) member exports.
435    See the CM manual for more explanation.)
436    The main effect is that explicit export lists for these libraries
437    do not have to be kepts in sync, making maintenance a bit easier.
438    
439    I also added copyright notices to many .cm-files.
440    
441    Last but not least, I made a new set of bootfiles.
442    
443    ----------------------------------------------------------------------
444    Name: Matthias Blume
445    Date: 2001/05/04 17:00:00 EDT
446    Tag: blume-20010504-cm-lsplit
447    Description:
448    
449    0. John merged pending changes to $/smlnj-lib.cm
450    
451    1. Allen's previous change accidentally backed out of one of Lal's
452       earlier changes.  I undid this mistake (re-introducing Lal's change).
453    
454    2. I used the new topOrder' function from graph-scc.sml (from $/smlnj-lib.cm)
455       within the compiler where applicable.  There is some code simplification
456       because of that.
457    
458    3. The "split" phase (in FLINT) is now part of the default list of phases.
459       Compiler.Control.LambdaSplitting.* can be used to globally control the
460       lambda-splitting (cross-module-inlining) engine.  In addition to that,
461       it can now also be controlled on a per-source basis: CM has been taught
462       a new tool parameter applicable to ML source files.
463    
464       - To turn lambda-splitting off completely:
465            local open Compiler.Control.LambdaSplitting in
466                val _ = set Off
467            end
468       - To make "no lambda-splitting" the global default (but allow per-source
469         overriding); this is the initial setting:
470            local open Compiler.Control.LambdaSplitting in
471                val _ = set (Default NONE)
472            end
473       - To make "lambda-splitting with aggressiveness a" the global default
474         (and allow per-source overriding):
475            local open Compiler.Control.LambdaSplitting in
476                val _ = set (Default (SOME a))
477            end
478    
479       - To turn lambda-splitting off for a given ML souce file (say: a.sml)
480         write (in the respective .cm-file):
481            a.sml (lambdasplitting:off)
482       - To turn lambda-splitting for a.sml on with minimal aggressiveness:
483            a.sml (lambdasplitting:on)
484       - To turn lambda-splitting for a.sml on with aggressiveness <a> (where
485         <a> is a decimal non-negative integer):
486            a.sml (lambdasplitting:<a>)
487       - To turn lambda-splitting for a.sml on with maximal aggressiveness:
488            a.sml (lambdasplitting:infinity)
489       - To use the global default for a.sml:
490            a.sml (lambdasplitting:default)
491         or simply
492            a.sml
493    
494    ----------------------------------------------------------------------
495    Name: Allen Leung
496    Date: 2001/05/04 01:57:00 EDT
497    Tag: leunga-20010504-sync
498    Description:
499    
500      MLRISC features.
501    
502      1. Fix to CMPXCHG instructions.
503      2. Changed RA interface to allow annotations in callbacks.
504      3. Added a new method to the stream interface to allow annotations updates.
505    
506    ----------------------------------------------------------------------
507    Name: Matthias Blume
508    Date: 2001/05/01 11:45:00 EDT
509    Tag: blume-20010501-pcedittmp
510    Description:
511    
512    Changed install.sh to use the current working directory instead of
513    /usr/tmp for a temporary file (pcedittmp).  The previous choice
514    of /usr/tmp caused trouble with MacOS X because of file premission
515    problems.
516    
517    ----------------------------------------------------------------------
518    Name: Matthias Blume
519    Date: 2001/04/20 11:10:00 EDT
520    Tag: blume-20010420-inMLflag
521    Description:
522    
523     - added vp_limitPtrMask to vproc-state.h
524       (for use by the raw-C-calls mechanism to implement proper interrupt
525        handling)
526     - made the ML compiler aware of various data-structure offsets so it
527       can generate code for accessing the vp_inML flag and vp_limitPtrMask
528     - tweaked mlriscGen.sml to have it emit interrupt-handling code for
529       raw C-calls
530    
531    ----------------------------------------------------------------------
532    Name: Lal George
533    Date: 2001/04/20 09:15:28 EDT
534    Tag: george-20010420-macosX
535    Description:
536    
537     - Changes to port to Mac OS X; Darwin.
538    
539     - In the process I found that sqrt was broken on the PPC, because the
540       fsqrt instruction is not implemented.
541    
542    ----------------------------------------------------------------------
543    Name: Matthias Blume
544    Date: 2001/04/18 12:45:00 EDT
545    Tag: blume-20010418-ccalls
546    Description:
547    
548     - fixed two off-by-4 errors in the x86-specific c-calls implementation
549       (this bug prevented structure arguments containing pointers from being
550        passed correctly)
551     - changed the raw-C-call code in mlriscGen.sml in such a way that
552       structure arguments are represented as a pointer to the beginning
553       of the structure (instead of having a series of synthesized arguments,
554       one for each structure member)
555    
556     - made makeml script's verbosity level configurable via environment
557       variable (MAKEML_VERBOSITY)
558    
559     - eliminated placeholder implementations for f32l, w16s, i16s, and f32s
560       in rawmem-x86.sml; we are now using the real thing
561    
562    ----------------------------------------------------------------------
563    Name: Matthias Blume
564  Date: 2001/03/22 16:25:00 EST  Date: 2001/03/22 16:25:00 EST
565  Tag: blume-20010322-bootfiles  Tag: blume-20010322-bootfiles
566  Description:  Description:

Legend:
Removed from v.806  
changed lines
  Added in v.876

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