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 923, Thu Sep 13 15:19:18 2001 UTC revision 1040, Mon Jan 28 16:55:24 2002 UTC
# Line 8  Line 8 
8  The form of an entry should be:  The form of an entry should be:
9    
10  Name:  Name:
11  Date:  Date: yyyy/mm/dd
12  Tag: <post-commit CVS tag>  Tag: <post-commit CVS tag>
13  Description:  Description:
14    
15  ----------------------------------------------------------------------  ----------------------------------------------------------------------
16  Name: Matthias Blume  Name: Matthias Blume
17    Date: 2002/01/28 12:00:00
18    Tag: Release_110_38
19    Description:
20    
21    This time for real!!!
22    
23    ----------------------------------------------------------------------
24    Name: Matthias Blume
25    Date: 2002/01/28 10:56:00 EST
26    Tag: blume-20020128-retraction
27    Description:
28    
29    0. Retracted earlier 110.38.  (The Release_110_38 tag has been replaced
30       with blume-Release_110_38-retracted.)
31    
32    1. Fixed a problem with incorrect rounding modes in real64.sml.
33       (Thanks to Andrew Mccreight <andrew.mccreight@yale.edu>.)
34    
35    2. A bug in ml-nlffigen related to the handling of unnamed structs, unions,
36       and enums fixed.  The naming of corresponding ML identifiers should
37       now be consistent again.
38    
39    ----------------------------------------------------------------------
40    Name: Allen Leung
41    Date: 2002/01/27
42    Tag: leunga-20020127-nowhere
43    Description:
44    
45       Added a target called nowhere in the configuration scripts.
46       Enabling this will build the MLRISC 'nowhere' tool (for translating
47       programs with where-clauses into legal SML code) during installation.
48    
49    ----------------------------------------------------------------------
50    Name: Matthias Blume
51    Date: 2002/01/25 21:27:00 EST
52    Tag: blume-Release_110_38-retracted
53    Description:
54    
55    Call it a (working) release!  Version is 110.38. Bootfiles are ready.
56    
57    README will be added later.
58    
59    !!! NOTE:  Re-tagged as blume-Release_110_38-retracted. Original tag
60    (Release_110_38) removed.  Reason: Last-minute bug fixes.
61    
62    ----------------------------------------------------------------------
63    Name: Matthias Blume
64    Date: 2002/01/25
65    Tag: blume-20020125-ffi
66    Description:
67    
68    A large number of tweaks and improvements to ml-nlffi-lib and
69    ml-nlffigen:
70    
71       - ML represenation types have been streamlined
72       - getter and setter functions work with concrete values, not abstract
73         ones where possible
74       - ml-nlffigen command line more flexible (see README file there)
75       - some bugs have been fixed (hopefully)
76    
77    ----------------------------------------------------------------------
78    Name: Lal George
79    Date: 2002/01/24
80    Tag: george-20020124-risc-ra-interface
81    Description:
82    
83       There is a dramatic simplification in the interface to the
84       register allocator for RISC architectures as a result of making
85       parallel copy instructions explicit.
86    
87    ----------------------------------------------------------------------
88    Name: Matthias Blume
89    Date: 2002/01/22
90    Tag: blume-20020122-x86-ccalls
91    Description:
92    
93    Bug fix for c-calls on x86 (having to do with how char- and
94    short-arguments are being handled).
95    
96    ----------------------------------------------------------------------
97    Name: Matthias Blume
98    Date: 2002/01/21
99    Tag: blume-20020121-ff
100    Description:
101    
102    Another day of fiddling with the FFI...
103    
104    1. Bug fix/workaround:  CKIT does not complain about negative array
105       dimensions, so ml-nlffigen has to guard itself against this possibility.
106       (Otherwise a negative dimension would send it into an infinite loop.)
107    
108    2. Some of the abstract types (light objects, light pointers, most "base"
109       types) in structure C are now eqtypes.
110    
111    3. Added constructors and test functions for NULL function pointers.
112    
113    ----------------------------------------------------------------------
114    Name: Matthias Blume
115    Date: 2002/01/18
116    Tag: blume-20020118-ready-for-new-release
117    Description:
118    
119    Made config/srcarchiveurl point to a new place.  (Will provide boot
120    files shortly.)
121    
122    Maybe we christen this to be 110.38?
123    
124    ----------------------------------------------------------------------
125    Name: Matthias Blume
126    Date: 2002/01/18
127    Tag: blume-20020118-more-ffifiddle
128    Description:
129    
130    Today's FFI fiddling:
131    
132      - Provided a structure CGetSet with "convenient" versions of C.Get.* and
133        C.Set.* that use concrete (MLRep.*) arguments and results instead
134        of abstract ones.
135    
136      - Provided word-style bit operations etc. for "int" representation
137        types in MLRep.S<Foo>Bitops where <Foo> ranges over Char, Int, Short,
138        and Long.
139    
140    ----------------------------------------------------------------------
141    Name: Matthias Blume
142    Date: 2002/01/18
143    Tag: blume-20020118-use-x86-fp
144    Description:
145    
146    Now that x86-fast-fp seems to be working, I turned it back on again
147    by default.  (Seems to work fine now, even with the FFI.)
148    
149    Other than that, I added some documentation about the FFI to
150    src/ml-nlffigen/README and updated the FFI test examples in
151    src/ml-nlffi-lib/Tests/*.
152    
153    ----------------------------------------------------------------------
154    Name: Allen Leung
155    Date: 2002/01/17
156    Tag: leunga-20020117-x86-fast-fp-call
157    Description:
158    
159       1. Fixed a problem with handling return fp values when x86's fast fp
160          mode is turned on.
161    
162       2. Minor pretty printing fix for cellset.  Print %st(0) as %st(0) instead
163          of %f32.
164    
165       3. Added a constructor INT32lit to the ast of MLRISC tools.
166    
167    ----------------------------------------------------------------------
168    Name: Matthias Blume
169    Date: 2002/01/16
170    Tag: blume-20020116-ffifiddle
171    Description:
172    
173    More fiddling with the FFI interface:
174    
175     - Make constness 'c instead of rw wherever possible.  This eliminates
176       the need for certain explicit coercions.  (However, due to ML's
177       value polymorphism, there will still be many cases where explicit
178       coercions are necessary.  Phantom types are not the whole answer
179       to modeling a subtyping relationship in ML.)
180    
181     - ro/rw coersions for pointers added.  (Avoids the detour through */&.)
182    
183     - "printf" test example added to src/ml-nlffi-lib/Tests.  (Demonstrates
184       clumsy workaround for varargs problem.)
185    
186    ----------------------------------------------------------------------
187    Name: Lal George
188    Date: 2002/01/15
189    Tag: <none>
190    Description:
191    
192    1. Since COPY instructions are no longer native to the architecture,
193       a generic functor can be used to implement the expandCopies function.
194    
195    2. Allowed EXPORT and IMPORT pseudo-op declarations to appear inside a
196       TEXT segment.
197    
198    ----------------------------------------------------------------------
199    Name: Matthias Blume
200    Date: 2002/01/15
201    Tag: blume-20020115-ffiupdates
202    Description:
203    
204    1. Fix for bug resulting in single-precision float values being returned
205       incorrectly from FFI calls.
206    
207    2. Small modifications to C FFI API:
208    
209        - memory-allocation routines return straight objects (no options)
210          and raise an exception in out-of-memory situations
211        - unsafe extensions to cast between function pointers and pointers
212          from/to ints
213        - added structure C_Debug as an alternative to structure C where
214          pointer-dereferencing (|*| and |*!) always check for null-pointers
215        - added open_lib' to DynLinkage;  open_lib' works like open_lib
216          but also takes a (possibly empty) list of existing library handles
217          that the current library depends on
218    
219    ----------------------------------------------------------------------
220    Name: Matthias Blume
221    Date: 2002/01/10
222    Tag: blume-20020110-newffigen
223    Description:
224    
225    1. Updates to portable graph code.
226    
227    2. Major update to ml-nlffigen and ml-nlffi-lib.  Things are much
228       more scalable now so that even huge interfaces such as the one
229       for GTK compile in finite time and space. :-)
230       See src/ml-nlffigen/README for details on what's new.
231    
232    ----------------------------------------------------------------------
233    Name: Lal George
234    Date: 2001/01/09 14:31:35 EST 2002
235    Tag: george-20011206-rm-native-copy
236    Description:
237    
238            Removed the native COPY and FCOPY instructions
239            from all the architectures and replaced it with the
240            explicit COPY instruction from the previous commit.
241    
242            It is now possible to simplify many of the optimizations
243            modules that manipulate copies. This has not been
244            done in this change.
245    
246    ----------------------------------------------------------------------
247    Name: Lal George
248    Date: 2001/12/06 16:50:13 EST 2001
249    Tag: george-20011206-mlrisc-instruction
250    Description:
251    
252    Changed the representation of instructions from being fully abstract
253    to being partially concrete. That is to say:
254    
255      from
256            type instruction
257    
258      to
259            type instr                              (* machine instruction *)
260    
261            datatype instruction =
262                LIVE of {regs: C.cellset, spilled: C.cellset}
263              | KILL of {regs: C.cellset, spilled: C.cellset}
264              | COPYXXX of {k: CB.cellkind, dst: CB.cell list, src: CB.cell list}
265              | ANNOTATION of {i: instruction, a: Annotations.annotation}
266              | INSTR of instr
267    
268    This makes the handling of certain special instructions that appear on
269    all architectures easier and uniform.
270    
271    LIVE and KILL say that a list of registers are live or killed at the
272    program point where they appear. No spill code is generated when an
273    element of the 'regs' field is spilled, but the register is moved to
274    the 'spilled' (which is present, more for debugging than anything else).
275    
276    LIVE replaces the (now deprecated) DEFFREG instruction on the alpha.
277    We used to generate:
278    
279            DEFFREG f1
280            f1 := f2 + f3
281            trapb
282    
283    but now generate:
284    
285            f1 := f2 + f3
286            trapb
287            LIVE {regs=[f1,f2,f3], spilled=[]}
288    
289    Furthermore, the DEFFREG (hack) required that all floating point instruction
290    use all registers mentioned in the instruction. Therefore f1 := f2 + f3,
291    defines f1 and uses [f1,f2,f3]! This hack is no longer required resulting
292    in a cleaner alpha implementation. (Hopefully, intel will not get rid of
293    this architecture).
294    
295    COPYXXX is intended to replace the parallel COPY and FCOPY  available on
296    all the architectures. This will result in further simplification of the
297    register allocator that must be aware of them for coalescing purposes, and
298    will also simplify certain aspects of the machine description that provides
299    callbacks related to parallel copies.
300    
301    ANNOTATION should be obvious, and now INSTR represents the honest to God
302    machine instruction set!
303    
304    The <arch>/instructions/<arch>Instr.sml files define certain utility
305    functions for making porting easier -- essentially converting upper case
306    to lower case. All machine instructions (of type instr) are in upper case,
307    and the lower case form generates an MLRISC instruction. For example on
308    the alpha we have:
309    
310      datatype instr =
311         LDA of {r:cell, b:cell, d:operand}
312       | ...
313    
314      val lda : {r:cell, b:cell, d:operand} -> instruction
315        ...
316    
317    where lda is just (INSTR o LDA), etc.
318    
319    ----------------------------------------------------------------------
320    Name: Matthias Blume
321    Date: 2001/11/22 21:40:00 EST
322    Tag: Release_110_37
323    Description:
324    
325    Release 110.37.  This time for real.
326    
327    ----------------------------------------------------------------------
328    Name: Matthias Blume
329    Date: 2001/11/21 16:35:00 EST
330    Tag: blume-20011121-foot-in-mouth
331    Description:
332    
333    Removed the "Release_110_37" tag because of a serious bug.
334    This will be re-tagged once the bug is fixed.
335    
336    ----------------------------------------------------------------------
337    Name: Matthias Blume
338    Date: 2001/11/21 16:14:00 EST
339    Tag: blume-20011121-forgottenfile
340    Description:
341    
342    Forgot to add a file.  (Just a .tex-file -- part of
343    the CM manual source.)
344    
345    ----------------------------------------------------------------------
346    Name: Matthias Blume
347    Date: 2001/11/21 16:10:00 EST
348    Tag: blume-20011121-invalid_110_37
349    Description:
350    
351    Note: I removed the original tag "Release_110_37" from this commit
352          because we found a serious bug in all non-x86 backends.
353          - Matthias
354    
355    1. Modifications to the SML/NJ code generator and to the runtime system
356       so that code object name strings are directly inserted into code
357       objects at code generation time.  The only business the runtime system
358       has with this is now to read the name strings on occasions.
359       (The encoding of the name string has also changed somewhat.)
360    
361    2. CM now implements a simple "set calculus" for specifying export lists.
362       In particular, it is now possible to refer to the export lists of
363       other libraries/groups/sources and form unions as well as differences.
364       See the latest CM manual for details.
365    
366    3. An separate notion of "proxy" libraries has again be eliminated from
367       CM's model.  (Proxy libraries are now simply a special case of using
368       the export list calculus.)
369    
370    4. Some of the existing libraries now take advantage of the new set
371       calculus.
372       (Notice that not all libraries have been converted because some
373       of the existing .cm-files are supposed to be backward compatible
374       with 110.0.x.)
375    
376    5. Some cleanup in stand-alone programs.  (Don't use "exnMessage" -- use
377       "General.exnMessage"!  The former relies on a certain hook to be
378       initialized, and that often does not happen in the stand-alone case.)
379    
380    ----------------------------------------------------------------------
381    Name: Lal George
382    Date: 2001/11/21  13:56:18 EST
383    Tag: george-2001121-pseudo-ops
384    Description:
385    
386      Implemented a complete redesign of MLRISC pseudo-ops. Now there
387      ought to never be any question of incompatabilities with
388      pseudo-op syntax expected by host assemblers.
389    
390      For now, only modules supporting GAS syntax are implemented
391      but more should follow, such as MASM, and vendor assembler
392      syntax, e.g. IBM as, Sun as, etc.
393    
394    ----------------------------------------------------------------------
395    Name: Matthias Blume
396    Date: 2001/11/14 11:52:00 EST
397    Tag: blume-20011114-srcname
398    Description:
399    
400    1. Routed the name of the current source file to mlriscgen where it
401       should be directly emitted into the code object.  (This last part
402       is yet to be done.)
403    
404    2. Some cleanup of the pgraph code to make it match the proposal that
405       I put out the other day.  (The proposal notwithstanding, things are
406       still in flux here.)
407    
408    ----------------------------------------------------------------------
409    Name: Lal George
410    Date: 2001/11/14 09:44:04 EST
411    Tag:
412    Description:
413    
414      Fix for a backpatching bug reported by Allen.
415    
416      Because the boundary between short and long span-dependent
417      instructions is +/- 128, there are an astounding number of
418      span-dependent instructions whose size is over estimated.
419    
420      Allen came up with the idea of letting the size of span
421      dependent instructions be non-monotonic, for a maxIter
422      number of times, after which the size must be monotonically
423      increasing.
424    
425      This table shows the number of span-dependent instructions
426      whose size was over-estimated as a function of maxIter, for the
427      file Parse/parse/ml.grm.sml:
428    
429         maxIter            # of instructions:
430            10                      687
431            20                      438
432            30                      198
433            40                        0
434    
435      In compiling the compiler, there is no significant difference in
436      compilation speed between maxIter=10 and maxIter=40. Actually,
437      my measurements showed that maxIter=40 was a tad faster than
438      maxIter=10! Also 96% of the  files in the compiler reach a fix
439      point within 13 iterations, so fixing maxIter at 40, while high,
440      is okay.
441    
442    ----------------------------------------------------------------------
443    Name: Matthias Blume
444    Date: 2001/10/31 15:25:00 EST
445    Tag: blume-20011031-pgraph
446    Description:
447    
448    CKIT:
449    * Changed the "Function" constructor of type Ast.ctype to carry optional
450      argument identifiers.
451    * Changed the return type of TypeUtil.getFunction accordingly.
452    * Type equality ignores the argument names.
453    * TypeUtil.composite tries to preserve argument names but gives up quickly
454      if there is a mismatch.
455    
456    installation script:
457    * attempts to use "curl" if available (unless "wget" is available as well)
458    
459    CM:
460    * has an experimental implementation of "portable graphs" which I will
461      soon propose as an implementation-independent library format
462    * there are also new libraries $/pgraph.cm and $/pgraph-util.cm
463    
464    NLFFI-LIB:
465    * some cleanup (all cosmetic)
466    
467    NLFFIGEN:
468    * temporarily disabled the mechanism that suppresses ML output for
469      C definitions whose identifiers start with an underscore character
470    * generate val bindings for enum constants
471    * user can request that only one style (light or heavy) is being used;
472      default is to use both (command-line arguments: -heavy and -light)
473    * fixed bug in handling of function types involving incomplete pointers
474    * generate ML entry points that take record arguments (i.e., using
475      named arguments) for C functions that have a prototype with named
476      arguments
477      (see changes to CKIT)
478    
479    ----------------------------------------------------------------------
480    Name: Allen Leung
481    Date: 2001/10/27 20:34:00 EDT
482    Tag: leunga-20011027-x86-fast-fp-call
483    Description:
484    
485       Fixed the bug described in blume-20010920-slowfp.
486    
487       The fix involves
488          1. generating FCOPYs in FSTP in ia32-svid
489          2. marking a CALL with the appropriate annotation
490    
491    ----------------------------------------------------------------------
492    Name: Matthias Blume
493    Date: 2001/10/16 11:32:00 EDT
494    Tag: blume-20011016-netbsd
495    Description:
496    
497    Underscore patch from Chris Richards (fixing problem with compiling
498    runtime system under recent NetBSD).
499    
500    ----------------------------------------------------------------------
501    Name: Allen Leung
502    Date: 2001/10/12 17:18:32 EDT 2001
503    Tag: leung-20011012-x86-printflowgraph
504    Description:
505    
506    X86RA now uses a valid (instead of dummy) PrintFlowgraph module.
507    
508    ----------------------------------------------------------------------
509    Name: Lal George
510    Date: 2001/10/11 23:51:34 EDT
511    Tag: george-20011011-too-many-instrs
512    Description:
513    
514    The representation of a program point never expected to see more
515    than 65536 instructions in a basic block!
516    
517    ----------------------------------------------------------------------
518    Name: Lal George
519    Date: 2001/10/09 09:41:37 EDT
520    Tag: george-20011008-mlrisc-labels
521    Description:
522    
523    Changed the machine description files to support printing of
524    local and global labels in assembly code, based on host assembler
525    conventions.
526    
527    ----------------------------------------------------------------------
528    Name: Matthias Blume
529    Date: 2001/09/25 15:25:00 EDT
530    Tag: blume-20010925-exninfo
531    Description:
532    
533    I provided a non-hook implementation of exnName (at the toplevel) and
534    made the "dummy" implementation of exnMessage (at the toplevel) more
535    useful: if nothing gets "hooked in", then at least you are going to
536    see the exception name and a message indicating why you don't see more.
537    
538    [For the time being, programs that need exnMessage and want to use
539    ml-build should either use General.exnMessage (strongly recommended) or
540    refer to structure General at some other point so that CM sees a
541    static dependency.]
542    
543    [Similar remarks go for "print" and "use":  If you want to use their
544    functionality in stand-alone programs generated by ml-build, then use
545    TextIO.output and Backend.Interact.useFile (from $smlnj/compiler.cm).]
546    
547    ----------------------------------------------------------------------
548    Name: Matthias Blume
549    Date: 2001/09/20 17:28:00 EDT
550    Tag: blume-20010920-slowfp
551    Description:
552    
553    Allen says that x86-fast-fp is not safe yet, so I turned it off again...
554    
555    ----------------------------------------------------------------------
556    Name: Matthias Blume
557    Date: 2001/09/20 17:20:00 EDT
558    Tag: blume-20010920-canonicalpaths
559    Description:
560    
561    0. Updated the BOOT file (something that I forgot to do earlier).
562    
563    1. Small internal change to CM so that it avoids "/../" in filenames
564       as much as possible (but only where it is safe).
565    
566    2. Changed config/_run-sml (resulting in a changed bin/.run-sml) so
567       that arguments that contain delimiters are passed through correctly.
568       This change also means that all "special" arguments of the form
569       @SMLxxx... must come first.
570    
571    3. Changed install script to put relative anchor names for tool commands
572       into pathconfig.
573    
574    ----------------------------------------------------------------------
575    Name: Matthias Blume
576    >>>>>>> 1.169
577    Date: 2001/09/18 15:35:00 EDT
578    Tag: blume-20010918-readme11036
579    Description:
580    
581    Added README files.
582    
583    ----------------------------------------------------------------------
584    Name: Matthias Blume
585    Date: 2001/09/18 11:45:00 EDT
586    Tag: Release_110_36 (retag)
587    Description:
588    
589    Fixed mistake in config/preloads. Retagged as 110.36.
590    
591    ----------------------------------------------------------------------
592    Name: Matthias Blume
593    Date: 2001/09/18 09:40:00 EDT
594    Tag: Release_110_36_orig (tag changed)
595    Description:
596    
597    New version (110.36).  New bootfiles.
598    
599    ----------------------------------------------------------------------
600    Name: Matthias Blume
601    Date: 2001/09/14 16:15:00 EDT
602    Tag: blume-20010914-x86fastfp
603    Description:
604    
605    John committed some changes that Allen made, in particular a (hopefully)
606    correctly working version of the x86-fp module.
607    
608    I changed the default setting of the Control.MLRISC.getFlag "x86-fast-fp"
609    flag to "true".  Everything seems to compile to a fixpoint ok, and
610    "mandelbrot" speeds up by about 15%.
611    
612    ----------------------------------------------------------------------
613    Name: Matthias Blume
614  Date: 2001/09/13 11:20:00 EDT  Date: 2001/09/13 11:20:00 EDT
615  Tag: blume-20010913-minimal  Tag: blume-20010913-minimal
616  Description:  Description:

Legend:
Removed from v.923  
changed lines
  Added in v.1040

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