Difference between revisions of "EiffelStudio 16.05 Releases"

m (Improvements: Added a note on nested inlining of some features from SPECIAL.)
m (Improvements: Removed a note on inlining of object tests that is currently disabled for performance reasons.)
Line 58: Line 58:
 
*compiler: Improved code generation for iterative form of loops in finalized mode by taking into account cursor types provided by iterable classes.
 
*compiler: Improved code generation for iterative form of loops in finalized mode by taking into account cursor types provided by iterable classes.
 
*compiler: Avoided object creation when accessing an attribute (usually <e>item</e>) on an expression of a basic type.
 
*compiler: Avoided object creation when accessing an attribute (usually <e>item</e>) on an expression of a basic type.
*compiler: Supported inlining of code that has object test locals (in previous versions such code could not be inlined).
 
 
*compiler: Slightly improved performance of feature call on void target checks in finalized mode.
 
*compiler: Slightly improved performance of feature call on void target checks in finalized mode.
 
*compiler: Supported nested inlining of a selected set of features from <e>SPECIAL</e> in finalized mode.
 
*compiler: Supported nested inlining of a selected set of features from <e>SPECIAL</e> in finalized mode.

Revision as of 00:00, 24 March 2016

Below are not the release notes of EiffelStudio. It is the change log of EiffelStudio intermediate releases and the most important changes are highlighted in green or in red (for breaking changes). The release notes of EiffelStudio can be found at the following URL. You can also download the latest revision here. Information about other version can be found under Category:Releases.

EiffelStudio 16.05.x Releases

Beta download: https://ftp.eiffel.com/pub/beta/16.05/

16.05.x.x

New features

Improvements

  • compiler: Provided more details (such as option name, rule name, kind of syntax error) for errors in code analysis command-line options.
  • compiler: Supported position-independent code analysis options (temporary retaining old code analysis options) that act like regular EiffelStudio command-line options:
-ca_class (-all | <class_name>)
-ca_default
-ca_rule <rule_name_with_optional_setting>
-ca_setting <preference_file_name>
  • compiler: Relaxed void safety rules for local variables and Result by allowing assigning of detachable values to them even when their type is attached. The change allows dropping explicit detachable marks in local declarations and simplifying code that uses Result, e.g.,
foo: X
                 local
                         r: detachable X
                 do
                         r := something
                         if not attached r then
                                 r := something_else_attached
                         end
                         Result := r
                 end

or

foo: X
                 do
                         if attached something as r then
                                 Result := r
                         else
                                 Result := something_else_attached
                         end
                 end

can now be rewritten as

foo: X
                 do
                         Result := something
                         if not attached Result then
                                 Result := something_else_attached
                         end
                 end

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:

  1. VEVI errors may be now reported as VUTA(2) when a local of an attached type is used as a target of call before it is attached.
  2. VEVI errors may be now reported as VJAR or VUAR when a local of an attached type is used as a source expression before it is attached.
  3. VJAR errors may now be reported as VUTA(2) when a local of an attached type is assigned a detachable value and is later used as a target of a call.
  4. VJAR errors may now be reported as VEVI when Result of an attached type is assigned a detachable value.
  • compiler: Improved code generation for iterative form of loops in finalized mode by taking into account cursor types provided by iterable classes.
  • compiler: Avoided object creation when accessing an attribute (usually item) on an expression of a basic type.
  • compiler: Slightly improved performance of feature call on void target checks in finalized mode.
  • compiler: Supported nested inlining of a selected set of features from SPECIAL in finalized mode.

Feature removed

Bug fixes

  • EiffelStudio: bug#19173 - Fixed a bug that caused an exception when requesting to generate documentation or XMI for a target with a library disabled by a condition.
  • compiler: test#codeanalysis019 - Fixed a bug that caused duplicate reports for CA020 rule (unused assigned variable) inside one class or spurious reports for this rule on several classes.
  • compiler: bug#18028 (test#final114), test#final123 - Fixed a bug that caused incorrect code generation when inlining across loops or separate instructions.

User changes

  • EiffelStudio: Changed order of processing of arguments taken from the command line and from the environment variable ISE_EC_FLAGS. Now arguments are first read from the environment variable and then from the command line.
  • compiler: Marked old code analysis command-line options as obsolete.

Developer changes