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/releases/release-110.37/READMES/110.28-README.html
ViewVC logotype

Annotation of /sml/releases/release-110.37/READMES/110.28-README.html

Parent Directory Parent Directory | Revision Log Revision Log


Revision 637 - (view) (download) (as text)
Original Path: sml/trunk/READMES/110.28-README.html

1 : dbm 637 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
2 :     <html>
3 :     <head>
4 :     <title>SML/NJ Version 110.28 NEWS</title>
5 :     </head>
6 :    
7 :     <body bgcolor="white">
8 :     <center><h1>Standard ML of New Jersey<BR>
9 :     Version 110.28, May 1, 2000</h1>
10 :     </center>
11 :    
12 :     <center>
13 :     <tt> http://cm.bell-labs.com/cm/cs/what/smlnj/index.html </tt>
14 :     </center>
15 :    
16 :     <blockquote>
17 :     <center>
18 :     <h2> Warning </h2>
19 :     </center>
20 :     <blockquote>
21 :     <blockquote>
22 :     <em>
23 :     This version is intended for compiler hackers.
24 :     We are in the midst of substantial structural changes,
25 :     and this is a snapshot.
26 :     </em>
27 :     </blockquote>
28 :     </blockquote>
29 :    
30 :     <hr>
31 :    
32 :     <center><h2>Summary:</h2></center>
33 :     <UL>
34 :     <LI> This version has some tuning of phase ordering for FLINT, which
35 :     mostly solves the excessive space problem during compilation. With
36 :     this tuning, 110.28 is slightly better than 110.25 in performance,
37 :     but not quite as good as 110.25+latest MLRISC. See the benchmarks
38 :     below. Futher work on the register allocator in MLRISC should
39 :     improve space performance further.
40 :     <p>
41 :     <LI>CM:
42 :     Installation scripts have been tweaked. A new noweb tool has been
43 :     added. ".fun" suffix has been added to those that imply sml compilation.
44 :     New version numbering scheme added. Alternative syntax for anchored
45 :     paths added. Parallel make made smarter. Support for "unsharing".
46 :     Simple "makedepend" functionality added. Further details below.
47 :     <p>
48 :     See src/system/README and the latest version of the CM manual at
49 :     <blockquote>
50 :     &lt;//http://www.kurims.kyoto-u.ac.jp/~blume/SMLNJ-DEV/manual/index.html&gt;
51 :     &lt;//http://www.kurims.kyoto-u.ac.jp/~blume/SMLNJ-DEV/manual.ps&gt;
52 :     </blockquote>
53 :     for further information about visible changes.
54 :     <p>
55 :     <li> A few MLRISC changes, most not SML/NJ related.
56 :     <p>
57 :     <li> ML-Yacc: updated manual and examples to be SML '97, SML/NJ 110+ compliant.
58 :     Examples now compiled with CM.
59 :     <li> Reported bug fixes:
60 :     <pre>
61 :     1498. Specialized real arrays not pretty-printed correctly
62 :     1510. Signature matching bug makes "casts" possible
63 :     1562. CM complains about unrecognized file extension ".fun"
64 :     1563. redundant pathconfig contents with multiple builds
65 :     </pre>
66 :     <p>
67 :     <hr>
68 :     <h2> Change Details </h2>
69 :     <center><h3> FLINT </h3></center>
70 :     Tuned ordering of phases to improve time/space performance. See
71 :     src/compiler/FLINT/opt/flintopt.txt for description of some of the
72 :     issues.
73 :     <p>
74 :     <hr>
75 :     <center><h3> MLRISC </h3></center>
76 :     This update synchronizes my repository with Yale's. Most of these
77 :     changes, however, do not affect SML/NJ at all (the RA is an exception).
78 :     <p>
79 :     <ol>
80 :     <li>Register Allocator
81 :     <ol type="a">
82 :     <li> An improvement in the interference graph construction:
83 :     Given a copy
84 :     <pre>
85 :     s <- t
86 :     </pre>
87 :     no interference edge between s and t is added for this definition of s.
88 :     <p>
89 :     <li> I've added two new spill heuristic modules that Fermin and I developed
90 :     (in the new library RA.cm). These are unused in SML/NJ but maybe
91 :     useful for others (Moby?)
92 :     <p>
93 :     <li> Added a flag "ra-dump-size" to print out the size of the flowgraph
94 :     and the interference graph.
95 :     </ol>
96 :     <li> X86
97 :     <ol type="a">
98 :     <li> Various fixes in the backend provided by Fermin [C--] and Lal.
99 :     </ol>
100 :     <p>
101 :     <li> Alpha
102 :     <ol type="a">
103 :     <li> Added the BSR instruction and code generation that goes with it [C--]
104 :     <p>
105 :     <li> Other fixes too numerous to recount provided by Fermin [C--]
106 :     <p>
107 :     <li>PSEUDOARITH was missing in AlphaRewrite. This causes an endless
108 :     loop in C--.
109 :     </ol>
110 :     <p>
111 :     <li> Regmaps
112 :     <ol type="a">
113 :     <li> The regmaps are not initialized with the identity physical bindings
114 :     at creation time. This is unneeded.
115 :     </ol>
116 :     <p>
117 :     <li> MLRISC Optimizations
118 :     <ol type="a">
119 :     <li> The DJ-Graph module can now compute the iterated dominance frontiers
120 :     intersects with liveness incrementally in linear time! Woohoo!
121 :     This is now used in my new SSA construction algorithm.
122 :     <p>
123 :     <li> THe branch reorganization module is now smarter about linear chains of
124 :     basic blocks.
125 :     </ol>
126 :     </ol>
127 :     <p>
128 :     <center><h3> CM </h3></center>
129 :     <ul>
130 :     <li>Several manual updates
131 :     <blockquote>
132 :     I always try to keep the manual in sync with CM's latest features.
133 :     </blockquote>
134 :     <p>
135 :     <li>New noweb tool
136 :     <blockquote>
137 :     The existing system is entirely unaffected by this, but some CM users
138 :     have asked for renewed noweb support. Everything is documented in the
139 :     CM manual.
140 :     <p>
141 :     New (plugin) libraries:
142 :     <pre>
143 :     noweb-tool.cm
144 :     nw-ext.cm
145 :     </pre>
146 :     </blockquote>
147 :     <p>
148 :     <li>CM version numbering added
149 :     <blockquote>
150 :     This is an implementation of Lal's proposal for adding version
151 :     numbers and version checking to .cm files. Lal said that his
152 :     proposal was just that -- a proposal. For the time being I went
153 :     ahead and implemented it so that people can comment on it.
154 :     Everything is completely backward-compatible (except for the stable
155 :     library format, i.e., new bootfiles!).
156 :     <p>
157 :     As usual, see the CM manual for details.
158 :     </blockquote>
159 :     <p>
160 :     <li> Alternative syntax for anchored paths
161 :     <blockquote>
162 :     Dave has recently voiced the same concerns that I had when I did
163 :     this, so there should be some support. My take is that eventually
164 :     I will let support for the current syntax (where anchors are
165 :     "implicit") fade out in favor of the new, explicit syntax.
166 :     In order to be backward-compatible, both old and new syntax are
167 :     currently supported.
168 :     <p>
169 :     Again, see the CM manual for details.
170 :     </blockquote>
171 :     <p>
172 :     <li> Parallel make is trying to be slightly smarter
173 :     <blockquote>
174 :     When the master process finds a "bottleneck", i.e., when there is
175 :     only one compilation unit that can be compiled and everybody else
176 :     is waiting on it, then it will simply compile it directly instead
177 :     of clumsily telling one of the slaves to do it.
178 :     </blockquote>
179 :     <p>
180 :     <li> Support for "unsharing" added
181 :     <blockquote>
182 :     This is necessary in order to be able to have two different
183 :     versions of the same library running at the same time (e.g., for
184 :     trying out a new MLRISC while still having the old MLRISC linked
185 :     into the current compiler, etc.) See the CM manual.
186 :     </blockquote>
187 :     <p>
188 :     <li> makedepend
189 :     <blockquote>
190 :     Simple "makedepend" functionality added for generating Makefile
191 :     dependency information. (This is rather crude at the moment.
192 :     Expect some changes here in the future.)
193 :     </blockquote>
194 :     <p>
195 :     <li> New sml class prefix
196 :     <blockquote>
197 :     ".fun" added as a recognized suffix for ML files. Also documented
198 :     explicitly in the manual that the fallback behavior (unknown suffix
199 :     -&gt; ML file) is not an official feature!
200 :     </blockquote>
201 :     <p>
202 :     <li>Pickler
203 :     <blockquote>
204 :     Small changes to the pickler for stable libraries.
205 :     <blockquote>
206 :     <p>
207 :     <li>Internal cleanup
208 :     <blockquote>
209 :     Several internal changes to CM (for cleanup/improvement).
210 :     </blockquote>
211 :     <p>
212 :     <li>install.sh changes
213 :     <blockquote>
214 :     I changed config/install.sh to remove duplicate entries from the
215 :     lib/pathconfig file at the end. Moreover, the final version of
216 :     lib/pathconfig is sorted alphabetically. The same (sorting) is done
217 :     in src/system/installml.
218 :     <p>
219 :     The config/install.sh script now consistently uses relative
220 :     pathnames in lib/pathconfig whenever the anchor is in the lib
221 :     directory. (So far this was true for the libraries that come
222 :     pre-compiled and bundled as part of the bootfiles but not for
223 :     libraries that are compiled by the script itself.)
224 :     <p>
225 :     Changed install.sh script to handle archive files without version number
226 :     and to use "boot.<arch>-<os>" instead of "sml.boot.<arch>-<os>" for the
227 :     name of the boot file archive.
228 :     </blockquote>
229 :     </ul>
230 :     <p>
231 :     <hr>
232 :     <center><h3> BENCHMARKS </h3></center>
233 :     Allen Leung, 28 April 2000:
234 :     <p>
235 :     I've rerun the benchmarks to see if anything has slowed down in
236 :     MLRISC recently, but found nothing. I compared 110.25, 110.25+latest
237 :     MLRISC, and 110.27+ (which also has the latest MLRISC). 110.25 uses
238 :     cpsopt, and 110.27+ uses flintopt. [110.27+ is repository state
239 :     at the end of April, which is essentially 110.28 - dbm].
240 :     <p>
241 :     The results are:
242 :     <pre>
243 :     110.25 versus 110.25+latest MLRISC
244 :     ----------------------------------
245 :     Name Compilation Runtime Speedup
246 :     barnesHut 5.560 5.368 3.57% 3.690 3.302 11.76%
247 :     boyer 8.678 7.672 13.12% 0.313 0.312 0.53%
248 :     count-graphs 2.048 1.915 6.96% 28.577 27.128 5.34%
249 :     fft 1.325 1.233 7.43% 1.060 0.982 7.98%
250 :     knuthBendix 5.337 4.680 14.03% 0.962 0.918 4.72%
251 :     lexgen 10.310 9.950 3.62% 0.917 0.902 1.66%
252 :     life 1.230 1.127 9.17% 0.128 0.100 28.33%
253 :     logic 3.533 3.258 8.44% 5.750 5.413 6.22%
254 :     mandelbrot 0.145 0.148 -2.25% 0.700 0.685 2.19%
255 :     mlyacc 34.557 33.342 3.64% 0.553 0.533 3.75%
256 :     nucleic 6.675 6.507 2.59% 0.173 0.167 4.00%
257 :     ratio-regions 6.358 6.218 2.25% 119.753 120.772 -0.84%
258 :     ray 2.280 2.247 1.48% 3.563 3.517 1.33%
259 :     simple 9.798 9.650 1.54% 2.987 3.083 -3.14%
260 :     tsp 1.763 1.528 15.38% 8.657 7.718 12.16%
261 :     vliw 33.938 32.570 4.20% 1.982 2.000 -0.92%
262 :     Average speedup: 5.32%
263 :     Average compile time speedup: 5.95%
264 :     </pre>
265 :     As you can see, MLRISC on x86 has improved slightly since the
266 :     110.25. Now comparing 110.25 with 110.27+:
267 :     <pre>
268 :     110.25 versus 110.27+
269 :     ---------------------
270 :     Name Compilation Runtime Speedup
271 :     barnesHut 5.560 5.568 -0.15% 3.690 3.347 10.26%
272 :     boyer 8.678 10.058 -13.72% 0.313 0.322 -2.59%
273 :     count-graphs 2.048 2.125 -3.61% 28.577 31.533 -9.38%
274 :     fft 1.325 1.297 2.19% 1.060 1.052 0.79%
275 :     knuthBendix 5.337 3.737 42.82% 0.962 1.175 -18.16%
276 :     lexgen 10.310 9.985 3.25% 0.917 0.992 -7.56%
277 :     life 1.230 1.105 11.31% 0.128 0.125 2.67%
278 :     logic 3.533 3.302 7.02% 5.750 5.357 7.34%
279 :     mandelbrot 0.145 0.162 -10.31% 0.700 0.753 -7.08%
280 :     mlyacc 34.557 37.292 -7.33% 0.553 0.493 12.16%
281 :     nucleic 6.675 7.717 -13.50% 0.173 0.165 5.05%
282 :     ratio-regions 6.358 3.915 62.41% 119.753 126.153 -5.07%
283 :     ray 2.280 2.142 6.46% 3.563 2.827 26.06%
284 :     simple 9.798 10.067 -2.67% 2.987 2.812 6.22%
285 :     tsp 1.763 1.605 9.87% 8.657 8.870 -2.41%
286 :     vliw 33.938 46.907 -27.65% 1.982 1.802 9.99%
287 :     Average speedup: 1.77%
288 :     Average compile time speedup: 4.15%
289 :    
290 :     110.25+latest MLRISC versus 110.27+
291 :     -----------------------------------
292 :     Name Compilation Runtime Speedup
293 :     barnesHut 5.368 5.568 -3.59% 3.302 3.347 -1.34%
294 :     boyer 7.672 10.058 -23.73% 0.312 0.322 -3.11%
295 :     count-graphs 1.915 2.125 -9.88% 27.128 31.533 -13.97%
296 :     fft 1.233 1.297 -4.88% 0.982 1.052 -6.66%
297 :     knuthBendix 4.680 3.737 25.25% 0.918 1.175 -21.84%
298 :     lexgen 9.950 9.985 -0.35% 0.902 0.992 -9.08%
299 :     life 1.127 1.105 1.96% 0.100 0.125 -20.00%
300 :     logic 3.258 3.302 -1.31% 5.413 5.357 1.06%
301 :     mandelbrot 0.148 0.162 -8.25% 0.685 0.753 -9.07%
302 :     mlyacc 33.342 37.292 -10.59% 0.533 0.493 8.11%
303 :     nucleic 6.507 7.717 -15.68% 0.167 0.165 1.01%
304 :     ratio-regions 6.218 3.915 58.83% 120.772 126.153 -4.27%
305 :     ray 2.247 2.142 4.90% 3.517 2.827 24.41%
306 :     simple 9.650 10.067 -4.14% 3.083 2.812 9.66%
307 :     tsp 1.528 1.605 -4.78% 7.718 8.870 -12.98%
308 :     vliw 32.570 46.907 -30.56% 2.000 1.802 11.01%
309 :     Average speedup: -2.94%
310 :     Average compile time speedup: -1.68%
311 :     <pre>
312 :     Overall, I'd say 110.27+ is pretty competitive with 110.25. There are
313 :     some big improvements (ray, vliw, mlyacc) which can only be attributed to FLINT
314 :     changes. But something has slowed down (tsp, knuth-bendix, life, mandelbrot,
315 :     count-graphs). [We know the reasons with knuth-bendix.]
316 :     Also, compilation time in 110.27+ is generally slower (which is offset
317 :     by huge improvements in knuth-bendix and ratio-regions).
318 :     <p>
319 :     <hr>
320 :    
321 :     <font size=-2>
322 :     <address><a href="mailto:george@research.bell-labs.com">
323 :     Lal George</a></address>
324 :     <!-- Created: Thu Aug 6 00:13:09 EDT 1998 -->
325 :     <!-- hhmts start -->
326 :     Last modified: Tue May 2 12:23:30 EDT 2000
327 :     <!-- hhmts end -->
328 :     </font>
329 :     </blockquote>
330 :     </body>
331 :     </html>

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