/[eiffelstudio]/trunk/Delivery/newdocs/tools/eiffelstudio/reference/30_compiler/60_version_history/03_53_release/00_52_to_53_changes.html
ViewVC logotype

Contents of /trunk/Delivery/newdocs/tools/eiffelstudio/reference/30_compiler/60_version_history/03_53_release/00_52_to_53_changes.html

Parent Directory Parent Directory | Revision Log Revision Log


Revision 36041 - (show annotations)
Tue Feb 18 01:45:16 2003 UTC (17 years ago) by manus
File MIME type: text/html
File size: 12312 byte(s)
Added more new stuff for 5.3

1 <!DOCTYPE HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">
2
3 <HTML>
4 <HEAD>
5 <TITLE>Major changes between ISE Eiffel 5.2 and ISE Eiffel 5.3:</TITLE>
6 <LINK REL=StyleSheet HREF="../../../../../../default.css">
7 </HEAD>
8
9
10
11 <BODY>
12
13
14
15 <H1>Changes between ISE Eiffel 5.2 and ISE Eiffel 5.3:</H1>
16
17
18
19 <p>&nbsp;</p>
20
21
22
23 <H2>What's new</H2>
24
25 <ul>
26 <li>Finalized executable with option `exception trace' enabled will
27 now display the instruction number (usually equivalent to the line
28 number in the routine) being executed when a failure occurred. It was
29 already displaying this information in workbench/melted mode, we have
30 just extended this feature to finalize mode.</li>
31 <li>Incremental compilation is now available for .NET code generation.
32 Meaning that if you modify one class, only this class is being
33 recompiled. It dramatically improves development time when targeting
34 .NET.</li>
35 <li>In .NET code generation, assertions can be turned on or off on a
36 class per class basis without having to recompile those classes.</li>
37 <li>Implemented recoverable storable to enable the retrieval of
38 slightly different version of an object. It only applies for classic
39 Eiffel.</li>
40 </ul>
41
42 <H2>Improvements</H2>
43
44
45 <ul>
46 <li>Enabled support for Borland C compiler in .NET.</li>
47 <li>Removed too many warnings during C compilation on Tru64.</li>
48 <li>Improved formatting of exception traces so that class names,
49 feature names, exception tags are not truncated. Display limit has
50 been pushed at about 256 characters.</li>
51 </ul>
52
53
54 <h2>Changes</h2>
55
56
57 <ul>
58 <li>Made `\\' follow the balancing rules for various integer types.</li>
59 <li>Precompiled libraries now precompiles all classes reachable from
60 clusters defined in project settings only if root class is ANY,
61 otherwise it will only precompile classes reachable from the root
62 class. In 5.1 and prior version it was precompiling all classes
63 reachable from clusters.</li>
64 </ul>
65
66
67 <h2>Bug fixes</h2>
68
69
70 <h3>Language issues</h3>
71
72
73 <ul>
74 <li>Fixed semantic of object creations to strictly follow definition
75 given in &quot;Eiffel: The Language&quot;. Namely, if you have x of
76 type <span class="eclass">X</span>:<br>
77 <pre><span class="ekeyword">create</span> x.<span class="efeature">make</span> is equivalent to x := <span class="ekeyword">create</span> {<span class="eclass">X</span>}.<span class="efeature">make</span></pre> It implies
78 some bug fixes which might break existing code. For example:<pre>x: <span class="eclass">X</span> <span class="ekeyword">is</span>
79 <span class="ekeyword">once</span>
80 <span class="ecomment">-- If </span><span class="efeature">make</span><span class="ecomment"> calls back to x then it used to return</span>
81 <span class="ecomment">-- a non-Void value for x, where it should have been Void.</span>
82 <span class="ekeyword">create</span> Result.<span class="efeature">make</span>
83 <span class="ekeyword">end</span>
84
85 x: <span class="eclass">X</span>
86 <span class="ecomment">-- If </span><span class="efeature">make </span><span class="ecomment">accesses back the x attribute then it used to return</span>
87 <span class="ecomment">-- new value of x rather than the old value.</span>
88 <span class="ekeyword">create</span> x.<span class="efeature">make</span></pre>
89 Or in melted code only the following code now works
90 properly, i.e. <span class="efeature">make</span> gets the old value of x, not the new one<br>
91 <pre><span class="ekeyword">create</span> x.<span class="efeature">make</span> (x)</pre>
92 </li>
93 <li>Fixed undetected <span class="eerror">VDRD(3)</span> errors: compiler was not strict enough and accepted
94 <span class="ekeyword">ensure</span> where only
95 <span class="ekeyword">ensure then</span> was valid.</li>
96 </ul>
97
98
99 <h3>Store/Retrieve issues</h3>
100
101
102 <ul>
103 <li>Fixed issue in storable mechanism when retrieving expanded
104 objects.</li>
105 <li>Fixed issue with independent_store where storing arrays of objects
106 whose count was greater than 65536 will cause a memory corruption.</li>
107 <li>Added <span class="efeature">correct_mismatch</span> on <span class="eclass">HASH_TABLE</span> to enable retrieval of the
108 5.1 and older version of <span class="eclass">HASH_TABLE</span>.</li>
109 </ul>
110
111
112 <h3>Runtime/code generation issues</h3>
113
114
115 <ul>
116 <li>Fixed incorrect C code generation in final mode when creating an
117 <span class="eclass">ARRAY</span> of expanded type.</li>
118 <li>Fixed incorrect C code generation in final mode when creating a
119 complex object which contains expanded objects that have expanded
120 objects.</li>
121 <li>Fixed random crash issue in finalized applications due to incorrect memory management when
122 you have code similar to:</li>
123 <pre> <span class="efeature">f</span> (g: <span class="eclass">STRING</span>): <span class="eclass">ANY</span> <span class="ekeyword">is</span>
124 <span class="ekeyword">do</span>
125 Result := <span class="ekeyword">create</span> {<span class="eclass">STRING</span>}.<span class="efeature">make_from_string</span> (g)
126 <span class="ekeyword">end</span></pre>
127 <li>Fixed issue with <span class="efeature">deep_equal</span> on <span class="eclass">ARRAY</span> of expanded types which was
128 returning <span class="ekeyword">False</span> where it should have returned <span class="ekeyword">True</span>.</li>
129 <li>Fixed issue in melted code where computation such as <span class="eclass">INTEGER_X</span> //
130 <span class="eclass">INTEGER_Y</span> will either crash or give an incorrect computation where X
131 and Y represents integers that are either 8, 16, 32 or 64 bits long and X &lt; Y.</li>
132 <li>Fixed incorrect C code generation of finalized code when your
133 project configuration includes a precompiled library and that you
134 cancel finalization process at degree -2, and then restart a
135 finalization.</li>
136 <li>Fixed issue with incorrect C code generation of inspect
137 instruction based on character values above 128.</li>
138 <li>Fixed compilation crash at degree 3 with following code:
139 <pre> <span class="ekeyword">local</span>
140 i: <span class="eclass">INTEGER</span>
141 <span class="ekeyword">do</span>
142 i := &lt;&lt; 1 &gt;&gt; <span class="efeature">@</span> 2
143 <span class="ekeyword">end</span></pre></li>
144 <li>Fixed a crash in finalized mode with invariant checking enabled
145 with following code and when checking the invariant triggers a garbage
146 collection cycle:<br>
147 <pre> <span class="efeature">value</span>: <span class="eclass">INTEGER</span>
148 <span class="efeature">is_value_required</span>: <span class="eclass">BOOLEAN</span> <span class="ekeyword">is</span>
149 <span class="ekeyword">do</span>
150 Result := <span class="efeature">value</span> = 1
151 <span class="ekeyword">end</span>
152 </pre></li>
153 <li>Fixed crash of compiler at degree 4 while trying to compile this incorrect
154 class:<br>
155 <pre><span class="ekeyword">class</span> <span class="eclass">CRASH</span>
156
157 <span class="ekeyword">inherit</span>
158 <span class="eclass">CHAIN</span> <span class="ecomment">-- Missing generic parameter</span>
159
160 <span class="ekeyword">create</span>
161 <span class="efeature">make</span>
162
163 <span class="ekeyword">feature</span> -- Initialization
164
165 <span class="efeature">make</span> <span class="ekeyword">is</span>
166 <span class="ekeyword">do</span>
167 <span class="ekeyword">end</span>
168
169 <span class="efeature">index</span>: <span class="eclass">INTEGER</span> <span class="ekeyword">is</span>
170 <span class="ekeyword">do</span>
171 <span class="ekeyword">end</span>
172
173 <span class="efeature">duplicate</span> (n: <span class="eclass">INTEGER</span>): <span class="ekeyword">like Current is</span>
174 <span class="ekeyword">do</span>
175 <span class="ekeyword">end</span>
176
177 <span class="ekeyword">end</span></pre>
178 </li>
179 <li>Fixed issue with pathological memory allocation scheme that could
180 trigger an `out of memory' exception where enough memory is still
181 available.</li>
182 <li>Fixed incorrect allocation of expanded arrays where creation
183 routine of expanded class was not called on all items of the newly
184 created array.</li>
185 <li>Fixed incorrect creation type of attribute where attribute's type
186 has some generic parameter. In some cases, instead of creating an
187 <span class="eclass">ARRAY [B2 [C]]</span> it would create an <span class="eclass">ARRAY [B2 [STRING]]</span>.</li>
188 </ul>
189
190
191 <h3>.NET issues</h3>
192
193
194 <ul>
195 <li>Fixed issue in IL code generation where having a class that
196 inherits from a non-Eiffel .NET class. And the class has the following
197 features:<br>
198 <pre> <span class="efeature">a</span>: <span class="eclass">ARRAY</span> [<span class="ekeyword">like</span> <span class="efeature">f</span>]
199 <span class="efeature">f</span>: <span class="eclass">STRING</span> <span class="ekeyword">is</span>
200 <span class="ekeyword">do</span>
201 <span class="ekeyword">end</span></pre>
202 Then you could neither load nor execute the generated code.</li>
203 <li>Fixed incorrect C file naming when generating a .NET system that
204 uses a C++ external (it should be .cpp, not just .c).</li>
205 <li>Fixed incorrect .NET code generation with following assignment
206 attempts whose source is expanded:
207 <pre> <span class="ekeyword">local</span>
208 a: <span class="eclass">ANY</span>
209 o: <span class="eclass">SYSTEM_OBJECT</span>
210 <span class="ekeyword">do</span>
211 a ?= 12
212 o ?= 12
213 <span class="ekeyword">end</span> </pre></li>
214 <li>Fixed incorrect code generation in .NET for assertions checking with following code where
215 precondition of <span class="efeature">test</span> will not be checked although it should:<br>
216 <pre> <span class="efeature">make</span> <span class="ekeyword">is</span>
217 <span class="ekeyword">do</span>
218 <span class="efeature">test_which_fail_and_rescued</span>
219 <span class="efeature">test</span>
220 <span class="ekeyword">end</span>
221
222 <span class="efeature">test</span> <span class="ekeyword">is</span>
223 <span class="ekeyword">require</span>
224 should_be_checked: False
225 <span class="ekeyword">do</span>
226 <span class="ekeyword">end</span>
227
228 <span class="efeature">test_which_fail_and_rescued</span> <span class="ekeyword">is</span>
229 <span class="ekeyword">local</span>
230 retried: <span class="eclass">BOOLEAN</span>
231 <span class="ekeyword">do</span>
232 <span class="ekeyword">if not</span> retried <span class="ekeyword">then</span>
233 <span class="efeature">failure</span>
234 <span class="ekeyword">end</span>
235 <span class="ekeyword">rescue</span>
236 retried := true;
237 retry
238 <span class="ekeyword">end</span>
239
240 <span class="efeature">failure</span> <span class="ekeyword">is</span>
241 <span class="ekeyword">require</span>
242 should_be_checked: False
243 <span class="ekeyword">do</span>
244 <span class="ekeyword">end</span></pre></li>
245 <li>Fixed .NET verification issue where sometimes you could get the
246 following message when checking an Eiffel assembly against peverify:
247 [IL]: Error: Unverifiable PE Header/native stub.</li>
248 <li>Fixed incorrect code generation when creating and accessing a
249 <span class="eclass">NATIVE_ARRAY</span> of expanded type.</li>
250 <li>Fixed incorrect metadata heap generation to use standard CLI
251 tables.</li>
252 </ul>
253
254
255 </BODY>
256
257
258
259 </HTML>

Properties

Name Value
svn:eol-style native
svn:keywords Author Date Id Revision

  ViewVC Help
Powered by ViewVC 1.1.23