mirror of
https://github.com/EiffelSoftware/eiffel-org.git
synced 2025-12-07 15:22:31 +01:00
Update wikipage Major changes between ISE Eiffel 15.12 and ISE Eiffel 16.05. (Signed-off-by:alexk).
git-svn-id: https://svn.eiffel.com/eiffel-org/trunk@1579 abb3cda0-5349-4a8f-a601-0c33ac3a8c38
This commit is contained in:
@@ -56,22 +56,32 @@ 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.<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 <code>READABLE_INDEXABLE</code> 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 <code>READABLE_INDEXABLE</code> so that it can be removed in descendants.
|
||||
* Made <code>lower_defined</code> and <code>upper_defined</code> in <code>INTEGER_INTERVAL</code> always <code>True</code> 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 <code>SPECIAL</code>, <code>ARRAY</code>, <code>ARRAYED_LIST</code>, <code>READABLE_STRING_8</code>, <code>READABLE_STRING_32</code> to improve performance of across loops for these containers.
|
||||
* Improve performance of code using across iterator. Breaking change: custom descendants of <code>READABLE_INDEXABLE</code> may need to be updated in one of the following ways:
|
||||
*# By removing <code>index_set</code>, if no backward compatibility with earlier versions of EiffelStudio is required
|
||||
*# By adding an explicit redeclaration clause for <code>index_set</code>, if backward compatibility with [[Release notes for EiffelStudio 15.12|EiffelStudio 15.12]] is required:
|
||||
<code>
|
||||
inherit
|
||||
READABLE_INDEXABLE
|
||||
redefine
|
||||
index_set
|
||||
end
|
||||
</code>
|
||||
The specific changes in the compiler and cursor classes include:
|
||||
** 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 <code>READABLE_INDEXABLE</code> 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 <code>READABLE_INDEXABLE</code> so that it can be removed in descendants.
|
||||
** Made <code>lower_defined</code> and <code>upper_defined</code> in <code>INTEGER_INTERVAL</code> always <code>True</code> 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 <code>SPECIAL</code>, <code>ARRAY</code>, <code>ARRAYED_LIST</code>, <code>READABLE_STRING_8</code>, <code>READABLE_STRING_32</code> to improve performance of across loops for these containers.
|
||||
|
||||
|
||||
==Changes==
|
||||
* Change code analysis command-line arguments to report errors immediately instead of trying to run code analysis and improve error reporting by providing more details (such as option name, rule name, kind of syntax error).
|
||||
* Add support of position-independent code analysis options (still retaining old code analysis options) that act like regular EiffelStudio command-line options:
|
||||
** -ca_default
|
||||
** -ca_setting preference_file_name
|
||||
** -ca_class (-all|class_name)
|
||||
** -ca_rule rule_name_with_optional_setting
|
||||
** <span style="font-family: monospace;">-ca_default</span>
|
||||
** <span style="font-family: monospace;">-ca_setting ''preference_file_name''</span>
|
||||
** <span style="font-family: monospace;">-ca_class <nowiki>(</nowiki> -all <nowiki>|</nowiki> ''class_name'' <nowiki>)</nowiki></span>
|
||||
** <span style="font-family: monospace;">-ca_rule ''rule_name_with_optional_setting''</span>
|
||||
|
||||
* Add a more efficient way to perform access on void target in non-void-safe mode by making the check only once for side-effect free entities.
|
||||
* Avoid checks for voidness for object test locals because they are always attached.
|
||||
@@ -84,22 +94,22 @@ The change does not allow previously void-unsafe code to be treated as void-safe
|
||||
* Fix invalid type checking error when using a manifest array in an across loop when some special crafted code appears before (see eweasel test#valid288) as in:
|
||||
|
||||
<code>
|
||||
failure
|
||||
local
|
||||
i: INTEGER
|
||||
do
|
||||
-- Comment out next line to fix the bug.
|
||||
bar (Void).make_from_array (Void)
|
||||
across
|
||||
<<1, 2, 3>> as c_i
|
||||
loop
|
||||
i := c_i.item -- Error here.
|
||||
end
|
||||
end
|
||||
failure
|
||||
local
|
||||
i: INTEGER
|
||||
do
|
||||
-- Comment out next line to fix the bug.
|
||||
bar (Void).make_from_array (Void)
|
||||
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 <code>NATURAL_64</code> (see eweasel test#dotnet118)
|
||||
* Fix invalid .NET code generation when you inherit from a .NET class where one of the following routines is frozen: <code>Equals</code>, <code>Finalize</code>, <code>ToString</code> and/or <code>GetHashCode</code> (see eweasel test#dotnet119)
|
||||
* Fix invalid .NET code generation when you inherit from a .NET class where one of the following routines is frozen: <code lang="cs">Equals</code>, <code lang="cs">Finalize</code>, <code lang="cs">ToString</code> and/or <code lang="cs">GetHashCode</code> (see eweasel test#dotnet119)
|
||||
* 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.
|
||||
|
||||
Reference in New Issue
Block a user