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

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