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/branches/primop-branch/READMES/110.40-README.html
ViewVC logotype

Annotation of /sml/branches/primop-branch/READMES/110.40-README.html

Parent Directory Parent Directory | Revision Log Revision Log


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

1 : blume 1215 <html>
2 :     <head>
3 :     <title>SML/NJ 110.40 NEWS</title>
4 :     </head>
5 :     <body>
6 :     <pre>
7 :     S M L / N J
8 :    
9 :     1 1 0 . 4 0 N E W S
10 :    
11 :     May 21, 2002
12 :    
13 :     WARNING
14 :    
15 :     This version is intended for compiler hackers. The
16 :     version ought to be stable, however we have not run
17 :     our full regression testing.
18 :    
19 :     http://cm.bell-labs.com/cm/cs/what/smlnj/index.html
20 :     </pre>
21 :    
22 :     <dl>
23 :     <dt>Summary:
24 :     <dd>Significant work in the MLRISC backend. Many improvements
25 :     and bugfixes in various parts of the implementation.</dd>
26 :     </dl>
27 :    
28 :     <hr>
29 :    
30 :     <h3>Details:</h3>
31 :    
32 :     <h4>Libraries:</h4>
33 :    
34 :     <ul>
35 :     <li>added $/controls-lib.cm, a library of configurable "controls"
36 :     <br>(In essence, controls are managed ref cells that can be
37 :     grouped in sets and put in "registries" to facilitate
38 :     configuration and customization via, e.g., environment variables
39 :     and command-line arguments.)
40 :     <br>$/controls-lib.cm is a distillation of what used to be a CM-only
41 :     mechanism. It is now used throughout the compiler.
42 :     <li>bug fixed in IntInf (parsing of hex literals)
43 :     <li> <t>==</t> and <t>!=</t> added to INT_INF interface (just
44 :     placeholders for now)
45 :     <li>added mergeWith function to ORD_MAP interface
46 :     <li>added an implementation of Danvy-style format combinators to $/smlnj-lib.cm
47 :     <li>priority queues added to Util library (using Okasaki's leftist-tree
48 :     implementation)
49 :     <li>updates to $/hash-cons-lib.cm (consR1 ... consR5 added)
50 :     <li>fixed bug in outputSubstr (in TextIO)
51 : blume 1216 <li>new scrollbar implementation (eXene) courtesy of Allen Stoughton
52 : blume 1215 </ul>
53 :    
54 :     <h4>Basis:</h4>
55 :    
56 :     <ul>
57 :     <li>implemented Knuth-Morris-Pratt string matching and used it
58 :     for String.isSubstring, Substring.isSubstring, and Substring.position.
59 :     <li>added {String,Substring}.{concatWith,isSuffix,isSubstring} and
60 :     Substring.full
61 :     </ul>
62 :    
63 :     <h4>MLRISC:</h4>
64 :    
65 :     <ul>
66 :     <li>jump chaining
67 :     <li>static block frequency calculation
68 :     <li>Ball-Larus branch prediction heuristics implemented
69 :     <li>graphical viewer for control flow graphs added
70 :     <li>treatment of pseudo-ops changed (get emitted first now)
71 :     <li>REMT removed from mltree; DIV and MOD now take a rounding
72 :     mode (DIV_TO_ZERO and DIV_TO_NEGINF)
73 :     <li>made generic implementations of DIV_TO_NEGINF more efficient
74 :     <li>CFG edge splitting added
75 :     <li>buggy parts of x86-fp recoded
76 :     <li>added instructions for 64-bit support on x86 (not enabled yet)
77 :     </ul>
78 :    
79 :     <h4>CM:</h4>
80 :    
81 :     <ul>
82 :     <li>a new PID generation scheme is in place; it guarantees freedom
83 :     from accidental clashes that could subvert the type system but
84 :     is "stable" enough to maintain cutoff recompilation properties
85 :     <li>documentation updates
86 :     <li>minor bug fixes
87 :     <li>lambda-split aggressiveness can now be specified on a per-file
88 :     basis in init.cmi as well
89 :     <li>CM is now aware of (_)overload, so it calculates dependecies for
90 :     it correctly
91 :     <li>support for non-0 entrypoint offsets added
92 :     <li>command-line argument handling for showing/setting controls added
93 :     <li>bug in command-line handling of noweb (in noweb tool) fixed
94 :     <li>improved handling of pathnames in make tool
95 :     </ul>
96 :    
97 :     <h4>Runtime:</h4>
98 :    
99 :     <ul>
100 :     <li>fix for bug 1131 (excessive heap usage)
101 :     <li>heap export now silent unless GC messages are on
102 :     <li>fixed assembly code so that X86.prim.asm now compiles without
103 :     warnings
104 :     <li>support for non-0 entrypoint offsets added
105 :     </ul>
106 :    
107 :     <h4>Compiler:</h4>
108 :    
109 :     <ul>
110 :     <li>cross-module inlining works much better now
111 :     <li>stopgap fix for problem with ppDec in the presence of multiple
112 :     declarations of the same type name within one compilation unit
113 :     <li>full support for div/mod/rem/quot added to x86 code generator
114 :     <li>primops added for divisions of all flavors; track those operations
115 :     to the backend instead of clumsily macro-expanding them out
116 :     at "translate" time
117 :     <li>INLMIN, INLMAX, INLABS parameterized by numkind; use this
118 :     to implement all flavors of min, max, and abs
119 :     (Real.abs still maps to a separate FP primop.)
120 :     <li>preliminary support for "raw record" allocation and reentrant
121 :     C function calls added
122 :     <li>conditional move added to cps (still buggy, therefore disabled)
123 :     <li> _overload now accepted as synonym for overload (when overloading
124 :     is enabled); this is for backward-compatibility
125 :     <li>support for non-0 entrypoint offsets added; this (or something
126 :     similar) is needed to be able to deal with block reordering
127 :     <li>new, better scaling CPS spill phase
128 :     <li>compiler "knows" its native C calling convention (no longer needs
129 :     to be told by ml-nlffigen); X86Backend now split into X86CCallBackend
130 :     and X86StdCallBackend
131 :     </ul>
132 :    
133 :     <h4>FFI:</h4>
134 :    
135 :     <ul>
136 :     <li>all C FFI libraries now anchored under $c
137 :     <li>tweaks to type encoding (use polymorphism to emulate subtyping)
138 :     <li>encoding of incomplete type is now equal to that of the
139 :     corresponding complete type; no more POINTER_TO_INCOMPLETE_TYPE
140 :     etc.
141 :     (This restores the full generality of the translation -- something
142 :     that was lost when we removed functors.)
143 :     <li>support for (optional) mapping enum types to datatypes added
144 :     <li>types in structures C and C_Debug are now equal
145 :     <li>added "witness value" mechanism to ml-nlffi-lib.cm to
146 :     implement efficient arbitrary-depth "casts" that strip away
147 :     or add "const" modifiers
148 :     <li>ML representation of "" changed so that conversion to C string
149 :     is very efficient
150 :     </ul>
151 :    
152 :     <h4>Installer/scripts:</h4>
153 :    
154 :     <ul>
155 :     <li>suggestions for more preloads added to config/preloads
156 :     <li>don't use ?_DEFAULT environment variables. (They no longer
157 :     exist since we switched to $/controls-lib.cm.)
158 :     <li>buggy transitive-closure algorithm fixed; it caused more things
159 :     than necessary to be compiled
160 :     </ul>
161 :    
162 :     <h4>Miscellanea:</h4>
163 :    
164 :     <ul>
165 :     <li>minor bug fixes and improvements to mlrisc tools
166 :     <li>mdl tool compiles again, but without anything that depends on
167 :     RTL specs (since this is currently broken)
168 :     <li>added #[...] expressions to mlrisc tools
169 :     </ul>
170 :    
171 :     </body>
172 :     </html>

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