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.40-README.html
ViewVC logotype

Annotation of /sml/trunk/READMES/110.40-README.html

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1215 - (view) (download) (as text)

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 :     </ul>
52 :    
53 :     <h4>Basis:</h4>
54 :    
55 :     <ul>
56 :     <li>implemented Knuth-Morris-Pratt string matching and used it
57 :     for String.isSubstring, Substring.isSubstring, and Substring.position.
58 :     <li>added {String,Substring}.{concatWith,isSuffix,isSubstring} and
59 :     Substring.full
60 :     </ul>
61 :    
62 :     <h4>MLRISC:</h4>
63 :    
64 :     <ul>
65 :     <li>jump chaining
66 :     <li>static block frequency calculation
67 :     <li>Ball-Larus branch prediction heuristics implemented
68 :     <li>graphical viewer for control flow graphs added
69 :     <li>treatment of pseudo-ops changed (get emitted first now)
70 :     <li>REMT removed from mltree; DIV and MOD now take a rounding
71 :     mode (DIV_TO_ZERO and DIV_TO_NEGINF)
72 :     <li>made generic implementations of DIV_TO_NEGINF more efficient
73 :     <li>CFG edge splitting added
74 :     <li>buggy parts of x86-fp recoded
75 :     <li>added instructions for 64-bit support on x86 (not enabled yet)
76 :     </ul>
77 :    
78 :     <h4>CM:</h4>
79 :    
80 :     <ul>
81 :     <li>a new PID generation scheme is in place; it guarantees freedom
82 :     from accidental clashes that could subvert the type system but
83 :     is "stable" enough to maintain cutoff recompilation properties
84 :     <li>documentation updates
85 :     <li>minor bug fixes
86 :     <li>lambda-split aggressiveness can now be specified on a per-file
87 :     basis in init.cmi as well
88 :     <li>CM is now aware of (_)overload, so it calculates dependecies for
89 :     it correctly
90 :     <li>support for non-0 entrypoint offsets added
91 :     <li>command-line argument handling for showing/setting controls added
92 :     <li>bug in command-line handling of noweb (in noweb tool) fixed
93 :     <li>improved handling of pathnames in make tool
94 :     </ul>
95 :    
96 :     <h4>Runtime:</h4>
97 :    
98 :     <ul>
99 :     <li>fix for bug 1131 (excessive heap usage)
100 :     <li>heap export now silent unless GC messages are on
101 :     <li>fixed assembly code so that X86.prim.asm now compiles without
102 :     warnings
103 :     <li>support for non-0 entrypoint offsets added
104 :     </ul>
105 :    
106 :     <h4>Compiler:</h4>
107 :    
108 :     <ul>
109 :     <li>cross-module inlining works much better now
110 :     <li>stopgap fix for problem with ppDec in the presence of multiple
111 :     declarations of the same type name within one compilation unit
112 :     <li>full support for div/mod/rem/quot added to x86 code generator
113 :     <li>primops added for divisions of all flavors; track those operations
114 :     to the backend instead of clumsily macro-expanding them out
115 :     at "translate" time
116 :     <li>INLMIN, INLMAX, INLABS parameterized by numkind; use this
117 :     to implement all flavors of min, max, and abs
118 :     (Real.abs still maps to a separate FP primop.)
119 :     <li>preliminary support for "raw record" allocation and reentrant
120 :     C function calls added
121 :     <li>conditional move added to cps (still buggy, therefore disabled)
122 :     <li> _overload now accepted as synonym for overload (when overloading
123 :     is enabled); this is for backward-compatibility
124 :     <li>support for non-0 entrypoint offsets added; this (or something
125 :     similar) is needed to be able to deal with block reordering
126 :     <li>new, better scaling CPS spill phase
127 :     <li>compiler "knows" its native C calling convention (no longer needs
128 :     to be told by ml-nlffigen); X86Backend now split into X86CCallBackend
129 :     and X86StdCallBackend
130 :     </ul>
131 :    
132 :     <h4>FFI:</h4>
133 :    
134 :     <ul>
135 :     <li>all C FFI libraries now anchored under $c
136 :     <li>tweaks to type encoding (use polymorphism to emulate subtyping)
137 :     <li>encoding of incomplete type is now equal to that of the
138 :     corresponding complete type; no more POINTER_TO_INCOMPLETE_TYPE
139 :     etc.
140 :     (This restores the full generality of the translation -- something
141 :     that was lost when we removed functors.)
142 :     <li>support for (optional) mapping enum types to datatypes added
143 :     <li>types in structures C and C_Debug are now equal
144 :     <li>added "witness value" mechanism to ml-nlffi-lib.cm to
145 :     implement efficient arbitrary-depth "casts" that strip away
146 :     or add "const" modifiers
147 :     <li>ML representation of "" changed so that conversion to C string
148 :     is very efficient
149 :     </ul>
150 :    
151 :     <h4>Installer/scripts:</h4>
152 :    
153 :     <ul>
154 :     <li>suggestions for more preloads added to config/preloads
155 :     <li>don't use ?_DEFAULT environment variables. (They no longer
156 :     exist since we switched to $/controls-lib.cm.)
157 :     <li>buggy transitive-closure algorithm fixed; it caused more things
158 :     than necessary to be compiled
159 :     </ul>
160 :    
161 :     <h4>Miscellanea:</h4>
162 :    
163 :     <ul>
164 :     <li>minor bug fixes and improvements to mlrisc tools
165 :     <li>mdl tool compiles again, but without anything that depends on
166 :     RTL specs (since this is currently broken)
167 :     <li>added #[...] expressions to mlrisc tools
168 :     </ul>
169 :    
170 :     </body>
171 :     </html>

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