Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Annotation of /sml/trunk/READMES/110.37-README
ViewVC logotype

Annotation of /sml/trunk/READMES/110.37-README

Parent Directory Parent Directory | Revision Log Revision Log


Revision 989 - (view) (download)

1 : blume 989 S M L / N J
2 :    
3 :     1 1 0 . 3 7 N E W S
4 :    
5 :     November 21, 2001
6 :    
7 :     WARNING
8 :    
9 :     This version is intended for compiler hackers. The
10 :     version ought to be stable, however we have not run
11 :     our full regression testing.
12 :    
13 :     http://cm.bell-labs.com/cm/cs/what/smlnj/index.html
14 :    
15 :    
16 :     Summary:
17 :    
18 :     --------------------------------------------------------------------------
19 :    
20 :     Details:
21 :    
22 :     MLRISC:
23 :    
24 :     * Implemented a complete redesign of MLRISC pseudo-ops. Now there
25 :     ought to never be any question of incompatabilities with
26 :     pseudo-op syntax expected by host assemblers.
27 :    
28 :     For now, only modules supporting GAS syntax are implemented
29 :     but more should follow, such as MASM, and vendor assembler
30 :     syntax, e.g. IBM as, Sun as, etc.
31 :    
32 :     * Fix for a backpatching bug reported by Allen.
33 :    
34 :     Because the boundary between short and long span-dependent
35 :     instructions is +/- 128, there are an astounding number of
36 :     span-dependent instructions whose size is over estimated.
37 :    
38 :     Allen came up with the idea of letting the size of span
39 :     dependent instructions be non-monotonic, for a maxIter
40 :     number of times, after which the size must be monotonically
41 :     increasing.
42 :    
43 :     This table shows the number of span-dependent instructions
44 :     whose size was over-estimated as a function of maxIter, for the
45 :     file Parse/parse/ml.grm.sml:
46 :    
47 :     maxIter # of instructions:
48 :     10 687
49 :     20 438
50 :     30 198
51 :     40 0
52 :    
53 :     In compiling the compiler, there is no significant difference in
54 :     compilation speed between maxIter=10 and maxIter=40. Actually,
55 :     my measurements showed that maxIter=40 was a tad faster than
56 :     maxIter=10! Also 96% of the files in the compiler reach a fix
57 :     point within 13 iterations, so fixing maxIter at 40, while high,
58 :     is okay.
59 :    
60 :     * Fixed the bug described in blume-20010920-slowfp.
61 :    
62 :     The fix involves
63 :     1. generating FCOPYs in FSTP in ia32-svid
64 :     2. marking a CALL with the appropriate annotation
65 :    
66 :     (x86-fast-fp is still off by default.)
67 :    
68 :     * X86RA now uses a valid (instead of dummy) PrintFlowgraph module.
69 :    
70 :     * The representation of a program point never expected to see more
71 :     than 65536 instructions in a basic block! Fixed.
72 :    
73 :     * Changed the machine description files to support printing of
74 :     local and global labels in assembly code, based on host assembler
75 :     conventions.
76 :     (*** subsumed by other pseudo-op changes?)
77 :    
78 :     CM:
79 :    
80 :     * avoid "/../" in filenames as much as possible (but only where it is safe)
81 :    
82 :     * experimental implementation of "portable graphs"
83 :     (See the proposal in
84 :     http://cm.bell-labs.com/cm/cs/who/blume/pgraph/proposal.pdf
85 :     for details on portable library graphs.)
86 :    
87 :     * there are also new libraries $/pgraph.cm and $/pgraph-util.cm
88 :    
89 :     * CM now implements a simple "set calculus" for specifying export lists.
90 :     In particular, it is now possible to refer to the export lists of
91 :     other libraries/groups/sources and form unions as well as differences.
92 :     See the latest CM manual for details.
93 :    
94 :     * A separate notion of "proxy" libraries has been eliminated from
95 :     CM's model. (Proxy libraries are now simply a special case of using
96 :     the export list calculus.)
97 :    
98 :     compiler:
99 :    
100 :     * routed the name of the current source file to mlriscgen where it
101 :     gets directly emitted into the code object
102 :     (This uses the new pseudo-op infrastructure of MLRISC.)
103 :    
104 :     runtime:
105 :    
106 :     * Underscore patch from Chris Richards (fixing problem with compiling
107 :     runtime system under recent NetBSD).
108 :    
109 :     * Removed handling of code object name strings from runtime code.
110 :     (The only remaining code-name-string-related code in the runtime
111 :     is for extracting/reading of same.)
112 :    
113 :     CKIT:
114 :    
115 :     * Changed the "Function" constructor of type Ast.ctype to carry optional
116 :     argument identifiers.
117 :     * Changed the return type of TypeUtil.getFunction accordingly.
118 :     * Type equality ignores the argument names.
119 :     * TypeUtil.composite tries to preserve argument names but gives up quickly
120 :     if there is a mismatch.
121 :    
122 :     installation script:
123 :    
124 :     * attempts to use "curl" if available (unless "wget" is available as well)
125 :    
126 :     * put relative anchor names for tool commands into pathconfig
127 :    
128 :     run script:
129 :    
130 :     * Changed config/_run-sml (resulting in a changed bin/.run-sml) so
131 :     that arguments that contain delimiters are passed through correctly.
132 :     This change also means that all "special" arguments of the form
133 :     @SMLxxx... must come first.
134 :    
135 :     NLFFI-LIB:
136 :     * some cleanup (all cosmetic)
137 :    
138 :     NLFFIGEN:
139 :     * temporarily disabled the mechanism that suppresses ML output for
140 :     C definitions whose identifiers start with an underscore character
141 :     * generate val bindings for enum constants
142 :     * user can request that only one style (light or heavy) is being used;
143 :     default is to use both (command-line arguments: -heavy and -light)
144 :     * fixed bug in handling of function types involving incomplete pointers
145 :     * generate ML entry points that take record arguments (i.e., using
146 :     named arguments) for C functions that have a prototype with named
147 :     arguments (see changes to CKIT)
148 :    
149 :     Basis implementation:
150 :    
151 :     * provided a non-hook implementation of exnName (at the toplevel) and
152 :     made the "dummy" implementation of exnMessage (at the toplevel) more
153 :     useful: if nothing gets "hooked in", then at least you are going to
154 :     see the exception name and a message indicating why you don't see more.
155 :    
156 :     [For the time being, programs that need exnMessage and want to use
157 :     ml-build should either use General.exnMessage (strongly recommended) or
158 :     refer to structure General at some other point so that CM sees a
159 :     static dependency.]
160 :    
161 :     [Similar remarks go for "print" and "use": If you want to use their
162 :     functionality in stand-alone programs generated by ml-build, then use
163 :     TextIO.output and Backend.Interact.useFile (from $smlnj/compiler.cm).]
164 :    
165 :     ml-yacc/ml-lex/ml-burg:
166 :    
167 :     * Don't use "exnMessage" -- use "General.exnMessage"!
168 :     (see "Basis implementation")

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