Update wikipage Major changes between ISE Eiffel 15.12 and ISE Eiffel 16.05. (Signed-off-by:jocelyn).

git-svn-id: https://svn.eiffel.com/eiffel-org/trunk@1575 abb3cda0-5349-4a8f-a601-0c33ac3a8c38
This commit is contained in:
eiffel-org
2016-06-01 08:40:26 +00:00
parent 792e53e19f
commit 1b3c48d4fe

View File

@@ -17,35 +17,35 @@ This is achieved as follows:
The change allows dropping explicit detachable marks in local declarations and simplifying the code that uses Result, e.g.
<code>
foo: X
local
r: detachable X
do
r := something
if not attached r then
r := something_else_attached
end
Result := r
end
local
r: detachable X
do
r := something
if not attached r then
r := something_else_attached
end
Result := r
end
foo: X
do
if attached something as r then
Result := r
else
Result := something_else_attached
end
end
do
if attached something as r then
Result := r
else
Result := something_else_attached
end
end
</code>
into
<code>
foo: X
do
Result := something
if not attached Result then
Result := something_else_attached
end
end
do
Result := something
if not attached Result then
Result := something_else_attached
end
end
</code>
The change does not allow previously void-unsafe code to be treated as void-safe, but may affect errors reported by the compiler, in particular:
@@ -56,7 +56,7 @@ The change does not allow previously void-unsafe code to be treated as void-safe
==Improvements==
* Improve reporting for errors in regular expressions used in include and exclude file rules in ECF by adding position information and providing error description all the time.
* Improve performance of code using across iterator. Breaking change causes you to the need of add a redefinition of index_set to have code compatible with both 15.12 and 16.05. Optimized code generation for iteration instruction calls to `after' and `forth' by rechecking the code with the actual type of a cursor variable. Added `lower' and `upper' to {READABLE_INDEXABLE} to be used instead of `index_set' by iteration cursor. Marked `{READABLE_INDEXABLE}.index_set' as obsolete in favor of `lower' and `upper' to avoid object creation, especially when implementing external cursors for iterative forms of a loop. Provided implementation of `index_set' in {READABLE_INDEXABLE} so that it can be removed in descendants. Made `lower_defined' and `upper_defined' in {INTEGER_INTERVAL} always True because this was the case for all created objects and clients almost never checked if boundaries were defined. Provided specialized versions of iteration cursors for SPECIAL, ARRAY, ARRAYED_LIST, READABLE_STRING_8, READABLE_STRING_32 to improve performance of across loops for these containers.
* Improve performance of code using across iterator.<br/> Breaking change causes you to the need of add a redefinition of index_set to have code compatible with both 15.12 and 16.05. Optimized code generation for iteration instruction calls to <code>after</code> and <code>forth</code> by rechecking the code with the actual type of a cursor variable. Added <code>lower</code> and <code>upper</code> to {READABLE_INDEXABLE} to be used instead of <code>index_set</code> by iteration cursor. Marked <code>{READABLE_INDEXABLE}.index_set</code> as obsolete in favor of <code>lower</code> and <code>upper</code> to avoid object creation, especially when implementing external cursors for iterative forms of a loop. Provided implementation of <code>index_set</code> in {READABLE_INDEXABLE} so that it can be removed in descendants. Made <code>lower_defined</code> and <code>upper_defined</code> in {INTEGER_INTERVAL} always True because this was the case for all created objects and clients almost never checked if boundaries were defined. Provided specialized versions of iteration cursors for SPECIAL, ARRAY, ARRAYED_LIST, READABLE_STRING_8, READABLE_STRING_32 to improve performance of across loops for these containers.
==Changes==
@@ -77,16 +77,16 @@ The change does not allow previously void-unsafe code to be treated as void-safe
<code>
failure
local
i: INTEGER
do
bar (Void).make_from_array (Void) -- Comment out this line to fix the bug.
across
<<1, 2, 3>> as c_i
loop
i := c_i.item -- Error here.
end
end
local
i: INTEGER
do
bar (Void).make_from_array (Void) -- Comment out this line to fix the bug.
across
<<1, 2, 3>> as c_i
loop
i := c_i.item -- Error here.
end
end
</code>
* Fix .NET code generation to generate verifiable code when converting a manifest integer constant compatible with a NATURAL_64 (see eweasel test#dotnet118)
@@ -94,3 +94,4 @@ failure
* Fix invalid inlining of routine involving an object test local, an iteration cursor or a separate instruction local (see bug#18028, test#final114, test#final123, test#bench019).
* Fix test#scoop077 by applying SCOOP semantics rules and checking SCOOP validity rules for iteration cursors.
* Fix an issue when extracting a type ID from a string involving the separate keyword.