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 993, Fri Nov 23 02:37:10 2001 UTC revision 1058, Fri Feb 8 20:02:56 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/02/08 15:00:00 EST
18    Tag: blume-20020208-uniquepid
19    Description:
20    
21    0. Version number has been bumped to 110.38.1.  NEW BOOTFILES!!!
22    
23    1. The installer (config/install.sh) has gotten smarter:
24    
25         - Configuration options are a bit easier to specify now
26           (in config/targets).
27         - Bug in recognizing .tar.bz2 files fixed.
28         - Installer automatically resolves dependencies between
29           configuration options (e.g., if you ask for eXene, you will
30           also get cml -- regardless whether you asked for it or not).
31         - Installer can run in "quieter mode" by setting the environment
32           variable INSTALL_QUIETLY to "true".  "Quieter" does not mean
33           "completely silent", though.
34         - Build HashCons library as part of smlnj-lib.
35    
36    2. A new scheme for assigning persistent identifiers to compilation
37       units (and, by extension, to types etc.) has been put into place.
38       This fixes a long-standing bug where types and even dynamic values
39       can get internally confused, thereby compromising type safety
40       (abstraction) and dynamic correctness.  See
41    
42         http://cm.bell-labs.com/cm/cs/who/blume/pid-confusion.tgz
43    
44       for an example of how things could go wrong until now.
45    
46       The downside of the new scheme is that pids are not quite as
47       persistent as they used to be: CM will generate a fresh pid
48       for every compilation unit that it thinks it sees for the first
49       time.  That means that if you compile starting from a clean, fresh
50       source tree at two different times, you end up with different
51       binaries.
52    
53       Cutoff recompilation, however, has not been compromised because
54       CM keeps pid information in special caches between runs.
55    
56    ----------------------------------------------------------------------
57    Name: Lal George
58    Date: 2002/02/07 15:34:13 EST 2002
59    Tag: <none>
60    Description:
61    
62    Compilers that generate assembly code may produce  global labels
63    whose value is resolved at link time. The various peephole optimization
64    modules did not take this in account.
65    
66    TODO. The Labels.addrOf function should really return an option
67    type so that clients are forced to deal with this issue, rather
68    than an exception being raised.
69    
70    ----------------------------------------------------------------------
71    Name: Lal George
72    Date: 2002/02/06 13:55:02 EST
73    Tag: george-20020206-ra-breakup
74    Description:
75    
76    1. A bug fix from Allen.
77    
78        A typo causes extra fstp %st(0)'s to be generated at compensation
79        edges, which might cause stack underflow traps at runtime.  This
80        occurs in fft where there are extraneous fstps right before the 'into'
81        trap instruction (in this case they are harmless since none of the
82        integers overflow.)
83    
84    2. Pulled out various utility modules that were embedded in the modules
85       of the register allocator. I need these modules for other purposes, but
86       they are not complete enough to put into a library (just yet).
87    ----------------------------------------------------------------------
88    Name: Matthias Blume
89    Date: 2002/01/31 16:05:00 EST
90    Tag: blume-20020131-sparc-ccalls
91    Description:
92    
93    1. C-calls on Sparc needlessly allocated a huge chunk (96 bytes)
94       of extra stack space by mistake.  Fixed.
95    
96    2. Bug in logic of handling of command-line options in ml-nlffigen fixed.
97    
98    ----------------------------------------------------------------------
99    Name: Allen Leung
100    Date: 2002/01/30
101    Tag: leunga-20020130-nowhere-bug-fix
102    Description:
103    
104       MLRISC bug fixes:
105       1. Fixed a bindings computation bug in the 'nowhere' program generator tool.
106       2. MachineInt.fromString was negating its value.
107    
108    ----------------------------------------------------------------------
109    Name: Matthias Blume
110    Date: 2002/01/29
111    Tag: blume-20020129-INSTALL
112    Description:
113    
114    - Added somewhat detailed installation instructions (file INSTALL).
115    - Fixed curl-detection bug in config/install.sh.
116    - It is now possible to select the URL getter using the URLGETTER
117      environment variable:
118    
119          not set / "unknown"      --> automatic detection (script tries wget,
120                                       curl, and lynx)
121          "wget" / "curl" / "lynx" --> use the specified program (script "knows"
122                                       how to properly invoke them)
123          other                    --> use $URLGETTER directly, it must take
124                                       precisely two command-line arguments
125                                       (source URL and destination file name)
126    
127    ----------------------------------------------------------------------
128    Name: Matthias Blume
129    Date: 2002/01/28
130    Tag: blume-20020128-sparc-ccalls
131    Description:
132    
133    - Fixed problem with calculation of "used" registers in sparc-c-calls.
134    - Make use of the allocParam argument in sparc-c-calls.
135    
136    ----------------------------------------------------------------------
137    Name: Matthias Blume
138    Date: 2002/01/28
139    Tag: blume-20020128-allocParam
140    Description:
141    
142    John Reppy:  Changes c-calls API to accept client-callback for
143    allocating extra stack space.
144    me: Corresponding changes to mlriscGen (using a dummy argument that
145        does not change the current behavior).
146    
147    ----------------------------------------------------------------------
148    Name: Matthias Blume
149    Date: 2002/01/28 12:00:00
150    Tag: Release_110_38
151    Description:
152    
153    This time for real!!!
154    
155    ----------------------------------------------------------------------
156    Name: Matthias Blume
157    Date: 2002/01/28 10:56:00 EST
158    Tag: blume-20020128-retraction
159    Description:
160    
161    0. Retracted earlier 110.38.  (The Release_110_38 tag has been replaced
162       with blume-Release_110_38-retracted.)
163    
164    1. Fixed a problem with incorrect rounding modes in real64.sml.
165       (Thanks to Andrew Mccreight <andrew.mccreight@yale.edu>.)
166    
167    2. A bug in ml-nlffigen related to the handling of unnamed structs, unions,
168       and enums fixed.  The naming of corresponding ML identifiers should
169       now be consistent again.
170    
171    ----------------------------------------------------------------------
172    Name: Allen Leung
173    Date: 2002/01/27
174    Tag: leunga-20020127-nowhere
175    Description:
176    
177       Added a target called nowhere in the configuration scripts.
178       Enabling this will build the MLRISC 'nowhere' tool (for translating
179       programs with where-clauses into legal SML code) during installation.
180    
181    ----------------------------------------------------------------------
182    Name: Matthias Blume
183    Date: 2002/01/25 21:27:00 EST
184    Tag: blume-Release_110_38-retracted
185    Description:
186    
187    Call it a (working) release!  Version is 110.38. Bootfiles are ready.
188    
189    README will be added later.
190    
191    !!! NOTE:  Re-tagged as blume-Release_110_38-retracted. Original tag
192    (Release_110_38) removed.  Reason: Last-minute bug fixes.
193    
194    ----------------------------------------------------------------------
195    Name: Matthias Blume
196    Date: 2002/01/25
197    Tag: blume-20020125-ffi
198    Description:
199    
200    A large number of tweaks and improvements to ml-nlffi-lib and
201    ml-nlffigen:
202    
203       - ML represenation types have been streamlined
204       - getter and setter functions work with concrete values, not abstract
205         ones where possible
206       - ml-nlffigen command line more flexible (see README file there)
207       - some bugs have been fixed (hopefully)
208    
209    ----------------------------------------------------------------------
210    Name: Lal George
211    Date: 2002/01/24
212    Tag: george-20020124-risc-ra-interface
213    Description:
214    
215       There is a dramatic simplification in the interface to the
216       register allocator for RISC architectures as a result of making
217       parallel copy instructions explicit.
218    
219    ----------------------------------------------------------------------
220    Name: Matthias Blume
221    Date: 2002/01/22
222    Tag: blume-20020122-x86-ccalls
223    Description:
224    
225    Bug fix for c-calls on x86 (having to do with how char- and
226    short-arguments are being handled).
227    
228    ----------------------------------------------------------------------
229    Name: Matthias Blume
230    Date: 2002/01/21
231    Tag: blume-20020121-ff
232    Description:
233    
234    Another day of fiddling with the FFI...
235    
236    1. Bug fix/workaround:  CKIT does not complain about negative array
237       dimensions, so ml-nlffigen has to guard itself against this possibility.
238       (Otherwise a negative dimension would send it into an infinite loop.)
239    
240    2. Some of the abstract types (light objects, light pointers, most "base"
241       types) in structure C are now eqtypes.
242    
243    3. Added constructors and test functions for NULL function pointers.
244    
245    ----------------------------------------------------------------------
246    Name: Matthias Blume
247    Date: 2002/01/18
248    Tag: blume-20020118-ready-for-new-release
249    Description:
250    
251    Made config/srcarchiveurl point to a new place.  (Will provide boot
252    files shortly.)
253    
254    Maybe we christen this to be 110.38?
255    
256    ----------------------------------------------------------------------
257    Name: Matthias Blume
258    Date: 2002/01/18
259    Tag: blume-20020118-more-ffifiddle
260    Description:
261    
262    Today's FFI fiddling:
263    
264      - Provided a structure CGetSet with "convenient" versions of C.Get.* and
265        C.Set.* that use concrete (MLRep.*) arguments and results instead
266        of abstract ones.
267    
268      - Provided word-style bit operations etc. for "int" representation
269        types in MLRep.S<Foo>Bitops where <Foo> ranges over Char, Int, Short,
270        and Long.
271    
272    ----------------------------------------------------------------------
273    Name: Matthias Blume
274    Date: 2002/01/18
275    Tag: blume-20020118-use-x86-fp
276    Description:
277    
278    Now that x86-fast-fp seems to be working, I turned it back on again
279    by default.  (Seems to work fine now, even with the FFI.)
280    
281    Other than that, I added some documentation about the FFI to
282    src/ml-nlffigen/README and updated the FFI test examples in
283    src/ml-nlffi-lib/Tests/*.
284    
285    ----------------------------------------------------------------------
286    Name: Allen Leung
287    Date: 2002/01/17
288    Tag: leunga-20020117-x86-fast-fp-call
289    Description:
290    
291       1. Fixed a problem with handling return fp values when x86's fast fp
292          mode is turned on.
293    
294       2. Minor pretty printing fix for cellset.  Print %st(0) as %st(0) instead
295          of %f32.
296    
297       3. Added a constructor INT32lit to the ast of MLRISC tools.
298    
299    ----------------------------------------------------------------------
300    Name: Matthias Blume
301    Date: 2002/01/16
302    Tag: blume-20020116-ffifiddle
303    Description:
304    
305    More fiddling with the FFI interface:
306    
307     - Make constness 'c instead of rw wherever possible.  This eliminates
308       the need for certain explicit coercions.  (However, due to ML's
309       value polymorphism, there will still be many cases where explicit
310       coercions are necessary.  Phantom types are not the whole answer
311       to modeling a subtyping relationship in ML.)
312    
313     - ro/rw coersions for pointers added.  (Avoids the detour through */&.)
314    
315     - "printf" test example added to src/ml-nlffi-lib/Tests.  (Demonstrates
316       clumsy workaround for varargs problem.)
317    
318    ----------------------------------------------------------------------
319    Name: Lal George
320    Date: 2002/01/15
321    Tag: <none>
322    Description:
323    
324    1. Since COPY instructions are no longer native to the architecture,
325       a generic functor can be used to implement the expandCopies function.
326    
327    2. Allowed EXPORT and IMPORT pseudo-op declarations to appear inside a
328       TEXT segment.
329    
330    ----------------------------------------------------------------------
331    Name: Matthias Blume
332    Date: 2002/01/15
333    Tag: blume-20020115-ffiupdates
334    Description:
335    
336    1. Fix for bug resulting in single-precision float values being returned
337       incorrectly from FFI calls.
338    
339    2. Small modifications to C FFI API:
340    
341        - memory-allocation routines return straight objects (no options)
342          and raise an exception in out-of-memory situations
343        - unsafe extensions to cast between function pointers and pointers
344          from/to ints
345        - added structure C_Debug as an alternative to structure C where
346          pointer-dereferencing (|*| and |*!) always check for null-pointers
347        - added open_lib' to DynLinkage;  open_lib' works like open_lib
348          but also takes a (possibly empty) list of existing library handles
349          that the current library depends on
350    
351    ----------------------------------------------------------------------
352    Name: Matthias Blume
353    Date: 2002/01/10
354    Tag: blume-20020110-newffigen
355    Description:
356    
357    1. Updates to portable graph code.
358    
359    2. Major update to ml-nlffigen and ml-nlffi-lib.  Things are much
360       more scalable now so that even huge interfaces such as the one
361       for GTK compile in finite time and space. :-)
362       See src/ml-nlffigen/README for details on what's new.
363    
364    ----------------------------------------------------------------------
365    Name: Lal George
366    Date: 2001/01/09 14:31:35 EST 2002
367    Tag: george-20011206-rm-native-copy
368    Description:
369    
370            Removed the native COPY and FCOPY instructions
371            from all the architectures and replaced it with the
372            explicit COPY instruction from the previous commit.
373    
374            It is now possible to simplify many of the optimizations
375            modules that manipulate copies. This has not been
376            done in this change.
377    
378    ----------------------------------------------------------------------
379    Name: Lal George
380    Date: 2001/12/06 16:50:13 EST 2001
381    Tag: george-20011206-mlrisc-instruction
382    Description:
383    
384    Changed the representation of instructions from being fully abstract
385    to being partially concrete. That is to say:
386    
387      from
388            type instruction
389    
390      to
391            type instr                              (* machine instruction *)
392    
393            datatype instruction =
394                LIVE of {regs: C.cellset, spilled: C.cellset}
395              | KILL of {regs: C.cellset, spilled: C.cellset}
396              | COPYXXX of {k: CB.cellkind, dst: CB.cell list, src: CB.cell list}
397              | ANNOTATION of {i: instruction, a: Annotations.annotation}
398              | INSTR of instr
399    
400    This makes the handling of certain special instructions that appear on
401    all architectures easier and uniform.
402    
403    LIVE and KILL say that a list of registers are live or killed at the
404    program point where they appear. No spill code is generated when an
405    element of the 'regs' field is spilled, but the register is moved to
406    the 'spilled' (which is present, more for debugging than anything else).
407    
408    LIVE replaces the (now deprecated) DEFFREG instruction on the alpha.
409    We used to generate:
410    
411            DEFFREG f1
412            f1 := f2 + f3
413            trapb
414    
415    but now generate:
416    
417            f1 := f2 + f3
418            trapb
419            LIVE {regs=[f1,f2,f3], spilled=[]}
420    
421    Furthermore, the DEFFREG (hack) required that all floating point instruction
422    use all registers mentioned in the instruction. Therefore f1 := f2 + f3,
423    defines f1 and uses [f1,f2,f3]! This hack is no longer required resulting
424    in a cleaner alpha implementation. (Hopefully, intel will not get rid of
425    this architecture).
426    
427    COPYXXX is intended to replace the parallel COPY and FCOPY  available on
428    all the architectures. This will result in further simplification of the
429    register allocator that must be aware of them for coalescing purposes, and
430    will also simplify certain aspects of the machine description that provides
431    callbacks related to parallel copies.
432    
433    ANNOTATION should be obvious, and now INSTR represents the honest to God
434    machine instruction set!
435    
436    The <arch>/instructions/<arch>Instr.sml files define certain utility
437    functions for making porting easier -- essentially converting upper case
438    to lower case. All machine instructions (of type instr) are in upper case,
439    and the lower case form generates an MLRISC instruction. For example on
440    the alpha we have:
441    
442      datatype instr =
443         LDA of {r:cell, b:cell, d:operand}
444       | ...
445    
446      val lda : {r:cell, b:cell, d:operand} -> instruction
447        ...
448    
449    where lda is just (INSTR o LDA), etc.
450    
451    ----------------------------------------------------------------------
452    Name: Matthias Blume
453  Date: 2001/11/22 21:40:00 EST  Date: 2001/11/22 21:40:00 EST
454  Tag: Release_110_37  Tag: Release_110_37
455  Description:  Description:
# Line 269  Line 705 
705    
706  ----------------------------------------------------------------------  ----------------------------------------------------------------------
707  Name: Matthias Blume  Name: Matthias Blume
 >>>>>>> 1.169  
708  Date: 2001/09/18 15:35:00 EDT  Date: 2001/09/18 15:35:00 EDT
709  Tag: blume-20010918-readme11036  Tag: blume-20010918-readme11036
710  Description:  Description:

Legend:
Removed from v.993  
changed lines
  Added in v.1058

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