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. The change allows dropping explicit detachable marks in local declarations and simplifying the code that uses Result, e.g.
<code> <code>
foo: X foo: X
local local
r: detachable X r: detachable X
do do
r := something r := something
if not attached r then if not attached r then
r := something_else_attached r := something_else_attached
end end
Result := r Result := r
end end
foo: X foo: X
do do
if attached something as r then if attached something as r then
Result := r Result := r
else else
Result := something_else_attached Result := something_else_attached
end end
end end
</code> </code>
into into
<code> <code>
foo: X foo: X
do do
Result := something Result := something
if not attached Result then if not attached Result then
Result := something_else_attached Result := something_else_attached
end end
end end
</code> </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: 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== ==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 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== ==Changes==
@@ -77,16 +77,16 @@ The change does not allow previously void-unsafe code to be treated as void-safe
<code> <code>
failure failure
local local
i: INTEGER i: INTEGER
do do
bar (Void).make_from_array (Void) -- Comment out this line to fix the bug. bar (Void).make_from_array (Void) -- Comment out this line to fix the bug.
across across
<<1, 2, 3>> as c_i <<1, 2, 3>> as c_i
loop loop
i := c_i.item -- Error here. i := c_i.item -- Error here.
end end
end end
</code> </code>
* Fix .NET code generation to generate verifiable code when converting a manifest integer constant compatible with a NATURAL_64 (see eweasel test#dotnet118) * 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 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 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. * Fix an issue when extracting a type ID from a string involving the separate keyword.