ViewVC logotype

Contents of /trunk/Delivery/xmldoc/tools/eiffelstudio/reference/30_compiler/60_version_history/06_56_release/index.xml

Parent Directory Parent Directory | Revision Log Revision Log

Revision 48860 - (show annotations)
Wed Mar 2 22:06:17 2005 UTC (14 years, 11 months ago) by manus
File MIME type: text/xml
File size: 10453 byte(s)
New more stuff and bug fixes in the compiler.

1 <?xml version="1.0" encoding="us-ascii"?>
2 <document output="studio" title="Major changes between ISE Eiffel 5.5 and ISE Eiffel 5.6">
3 <meta_data></meta_data>
4 <paragraph>
5 <heading>
6 <size>2</size>What's new
7 </heading>
8 <list ordered="false">
9 <item>Implemented once manifest strings. They can be used at the same places where normal manifest strings can be used, e.g.:
10 <code_block><local_variable>s</local_variable> <symbol>:=</symbol> <keyword>once</keyword> <string>"abc"</string>
11 <feature_name>io</feature_name>.<feature_name>put_string</feature_name> (<keyword>once</keyword> <string>"Hello World!"</string>)</code_block>
12 Once manifest strings are not created every time they are accessed. Instead one instance is created at the first access and then it is reused for subsequent accesses. In multithreaded application one instance is created for one thread.</item>
13 <item>Supported aligned and non-aligned verbatim strings. Aligned verbatim strings use characters <code><character>[</character></code> and <code><character>]</character></code> in opening and closing sequence respectively, non-aligned verbatim strings use <code><character>{</character></code> and <code><character>}</character></code>.</item>
14 <item>Added support for manifest type expression "{<class_name>MY_TYPE</class_name>}" which gives an instance of <feature_name>TYPE</feature_name> [<feature_name>MY_TYPE</feature_name>].</item>
15 <item>New syntax for manifest constants, now they can be preceeded by a manifest type expression. For example <number>1</number> is of type <class_name>INTEGER</class_name>, whereas {<class_name>INTEGER_8</class_name>} 1 is of type <class_name>INTEGER_8</class_name>.</item>
16 <item>Added type adaptation expression "{<class_name>MY_TYPE</class_name>} <feature_name>expr</feature_name>" which is of type <class_name>MY_TYPE</class_name>. This new type of expression is valid if and only if <feature_name>expr</feature_name> is compatible with <class_name>MY_TYPE</class_name> (i.e. conforms or converts to <class_name>MY_TYPE</class_name>.</item>
17 <item>Support for <class_name>NATURAL_XX</class_name> types which are unsigned integers.</item>
18 </list>
19 <heading><size>2</size>Improvements</heading>
20 <list ordered="false">
21 <item>Optimized .NET code generated for <keyword>inspect</keyword> instruction.</item>
22 </list>
23 <heading>
24 <size>2</size>Changes
25 </heading>
26 <list ordered="false">
27 <item>Void does not conform to expanded types. As a consequence, assignments of Void to expanded entities will be rejected rather than throwing an exception at run-time. And comparison of expanded entities to Void will cause a <compiler_error>VWEQ</compiler_error> validity error.</item>
28 <item>Changed default behavior of once routines in .NET mode from once-per-process to once-per-thread to match behavior in classic mode.</item>
29 <item>Provided project options (<code>old_verbatim_strings</code> and <code>old_verbatim_strings_warning</code>) to support semantics of verbatim strings as in previous versions when they were not left-aligned.</item>
30 <item>Changed processing of hexadecimal integer literals to be consistent for different integer types. For example, <number>0xFF</number> gives <number>255</number> when assigned to a variable of type <class_name>INTEGER</class_name> rather than <number>-1</number> as before.</item>
31 <item>Due to the new {} syntax, a few older syntax constructs have been removed:
32 <list ordered="false">
33 <item>"{<class_name>X</class_name>} <keyword>Precursor</keyword> (..)" is rejected and should be replaced by "<keyword>Precursor</keyword> {<class_name>X</class_name>} (...)".</item>
34 <item>"<keyword>agent</keyword> <feature_name>f</feature_name> (?, {<class_name>A</class_name>})" is now rejected, as it would conflict with a manifest type expression, instead you should write "<keyword>agent</keyword> <feature_name>f </feature_name>(?, {<class_name>A</class_name>} ?)".</item>
35 </list>
36 </item>
37 <item>In .NET, all usage of <class_name>INTEGER_8</class_name> from .NET libraries have been changed to <class_name>NATURAL_8</class_name>.</item>
38 </list>
39 <heading>
40 <size>2</size>Bug fixes
41 </heading>
42 <heading>
43 <size>3</size>Language issues
44 </heading>
45 <list ordered="false">
46 <item>Used <character>'%N'</character> as an end of line in verbatim strings regardless of the end of line sequence in source code.</item>
47 <item>Fixed incorrect handling of negative hexadecimal integer literals when sign before the literal was not taken into account. For example, <number>-0x1</number> could be interpreted as <number>1</number>.</item>
48 <item>Implemented checks for input ranges of integer constants and fixed issue with inability to assign minimum integer values to variables of the corresponding integer types.
49 <table>
50 <legend>Allowed integer values</legend>
51 <row>
52 <cell>Type</cell>
53 <cell>Integer interval</cell>
54 <cell>Unsigned hexadecimal representation</cell>
55 </row>
56 <row>
57 <cell><class_name>INTEGER_8</class_name></cell>
58 <cell><code><number>-128</number> <symbol>..</symbol> <number>127</number></code></cell>
59 <cell><code><number>0x0</number> <symbol>..</symbol> <number>0xFF</number></code></cell>
60 </row>
61 <row>
62 <cell><class_name>INTEGER_16</class_name></cell>
63 <cell><code><number>-32768</number> <symbol>..</symbol> <number>32767</number></code></cell>
64 <cell><code><number>0x0</number> <symbol>..</symbol> <number>0xFFFF</number></code></cell>
65 </row>
66 <row>
67 <cell><class_name>INTEGER_32</class_name></cell>
68 <cell><code><number>-2147483648</number> <symbol>..</symbol> <number>2147483647</number></code></cell>
69 <cell><code><number>0x0</number> <symbol>..</symbol> <number>0xFFFFFFFF</number></code></cell>
70 </row>
71 <row>
72 <cell><class_name>INTEGER_64</class_name></cell>
73 <cell><code><number>-9223372036854775808</number> <symbol>..</symbol> <number>9223372036854775807</number></code></cell>
74 <cell><code><number>0x0</number> <symbol>..</symbol> <number>0xFFFFFFFFFFFFFFFF</number></code></cell>
75 </row>
76 </table>
77 </item>
78 <item>Excluded nonsignificant leading zeroes from determination of allowed integer constant type, so that <code><number>00000000000000123</number></code> is now a valid <class_name>INTEGER_8</class_name> value.</item>
79 </list>
80 <heading>
81 <size>3</size>Compiler issues
82 </heading>
83 <list ordered="false">
84 <item>Fixed crash of the compiler at the very end of a finalization of a system which has an assignment of a manifest type into a variable of type <class_name>ARRAY</class_name> [<keyword>like</keyword> <feature_name>anchor</feature_name>] where<feature_name>anchor</feature_name> is a feature being redefined with a different type in a descendant class.</item>
85 <item>Fixed an issue where compiler would report more than once the same error in an incremental recompilation.</item>
86 <item>Fixed issue where changing a normal routine to an external and having a compile error, and then reverting back to a normal routine while fixing the error would cause the compiler to crash.</item>
87 <item>Fixed some cases where project could be corrupted after a recompilation.</item>
88 <item>Now compiler reports VTCT errors at the end of degree 5, rather than during degree 5, so that you can collect all the VTCT errors at once.</item>
89 <item>Thanks to the improvement in VTCT errors reporting, now compiler will not generate an incorrect VTCT errors during an incremental recompilation for a class which has actually been removed from the system.</item>
90 </list>
91 <heading>
92 <size>3</size>Runtime/code generation issues
93 </heading>
94 <list ordered="false">
95 <item>Fixed bug in <feature_name>deep_twin</feature_name> from <class_name>ANY</class_name> in .NET which would cause a call on Void target when applied on object of type <class_name>STRING</class_name> and possibly other types.</item>
96 <item>Corrected C code on Windows for constants of type <class_name>INTEGER_64</class_name>. Before constants of this type between <number>-2147483648</number> and <number>-1</number> could be processed as positive 64-bit values.</item>
97 <item>Fixed incorrect C and IL code generation for <class_name>INTEGER_8</class_name> and <class_name>INTEGER_16</class_name> arithmetic and shift operations that might produce incorrect result when combined in two or more operations in a row. For example,
98 <code_block><local_variable>i</local_variable> <symbol>:=</symbol> <symbol>(</symbol><local_variable>i</local_variable> <symbol>+</symbol> <local_variable>i</local_variable><symbol>)</symbol> <symbol>|&gt;&gt;</symbol> <number>1</number></code_block>
99 assigned <number>-128</number> to <local_variable>i</local_variable> of type <class_name>INTEGER_8</class_name> if the initial value of <local_variable>i</local_variable> was <number>-128</number>. Now this instruction assigns <number>0</number>.</item>
100 </list>
101 <heading>
102 <size>3</size>.NET issues
103 </heading>
104 <list ordered="false">
105 <item>Corrected processing of literal floating point fields from external assemblies (such as <cluster_name>System</cluster_name><code><symbol>.</symbol></code><class_name>Math</class_name><code><symbol>.</symbol></code><feature_name>PI</feature_name>) to obtain proper values.</item>
106 <item>Fixed a bug where the value -1 was actuall 255 on .NET.</item>
107 <item>Fixed issue where declaring a <class_name>NATIVE_ARRAY</class_name> of a .NET expanded type would be rejected by the compiler.</item>
108 <item>Fixed issue where assigning a .NET expanded type to an entity of type <class_name>ANY</class_name> would be rejected by the compiler.</item>
109 <item>Fixed a crash in the compiler when generating the code for a class which inherits from a .NET class and from an Eiffel class which has some anchored types.</item>
110 <item>Fixed a bug where calls to <feature_name>standard_is_equal</feature_name> from <class_name>ANY</class_name> on objects whose type is generic would yield <keyword>False</keyword> where it should have been <keyword>True</keyword> in classic Eiffel.</item>
111 </list>
112 <heading>
113 <size>3</size>Store/Retrieve issues
114 </heading>
115 <list ordered="false">
116 <item>Fixed an issue where the GC would be disabled after a failure in a retrieval operation.</item>
117 </list>
118 </paragraph>
119 </document>


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

  ViewVC Help
Powered by ViewVC 1.1.23