Difference between revisions of "EiffelStudio 18.07 Releases"

m (Improvements: Added a note about using a default console code page on Windows.)
m (Improvements: Added a bug number for the change in ARRAY.subarray.)
 
(20 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 
[[Category:Releases]]__NOTOC__{{ReleaseHistoryHeader}}
 
[[Category:Releases]]__NOTOC__{{ReleaseHistoryHeader}}
  
= EiffelStudio 18.05.x Releases=
+
= EiffelStudio 18.07.x Releases=
  
Beta download: https://ftp.eiffel.com/pub/beta/18.05/
+
Beta download: https://ftp.eiffel.com/pub/beta/18.07/
  
==18.05.x.y==
+
==18.07.10.1981 (July 24th 2018)==
  
 
===New features===
 
===New features===
*compiler: Supported extension of project targets from a different project (ECF).
+
*compiler: Supported extension of project targets from a different project (ECF: Eiffel configuration file). Before this change, only targets defined within the same project could be extended. Now targets from other projects could be extended as well to improve reusability. The ECF schema has been updated by adding a new attribute for the other project location: <code lang="xml"><target name="foo" extends="bar" extends_location="another.ecf">...</target></code>.
*EiffelStudio: Added auto-import (and auto-export) for the execution parameters using the file <code lang="text">$target_name.$system_name.dbg.profiles.xml</code> located in same folder as the .ecf file.
+
*debugger: Added auto-import (and auto-export) for the execution parameters using the file <code lang="text">$target_name.$system_name.dbg.profiles.xml</code> located in the same folder as the project file (ECF).
*compiler: Allowed target to extend a target from another .ecf <code lang="xml"><target name="foo" extends="bar" extends_location="another.ecf"> ... </code>.
+
*compiler: Supported project settings conditions with custom value comparisons using 4 matching algorithms: a case-sensitive equality, a case-insensitive equality, a regular expression, a wildcard pattern.
*compiler: Added support to ecf condition with custom value comparisons based on case-sensitive, case-insensitive, regular expression and wildcard.
+
 
*debugger: Included information about current caret position in the string display debugger viewer.
 
*debugger: Included information about current caret position in the string display debugger viewer.
 
*debugger: Added a JSON debugger viewer (similar to the XML viewer).
 
*debugger: Added a JSON debugger viewer (similar to the XML viewer).
*EiffelStudio: Supported <code>ArrowUp</code> and <code>ArrowDown</code> in the address bar (class and feature field in the tool bar) to see next or previous suggestions, and <code>Ctrl+Space</code> to open the completion dialog.
+
*IDE: Supported <code>Up</code> and <code>Down</code> key presses in the address bar (class and feature field in the tool bar) to see next or previous suggestions, and <code>Ctrl+Space</code> to open the completion dialog.
 
*library: Added a feature <e>{ARRAY}.force_and_fill</e> that works like <e>{ARRAY}.force</e>, but fills previously unoccupied positions with the specified value rather than with a default one.
 
*library: Added a feature <e>{ARRAY}.force_and_fill</e> that works like <e>{ARRAY}.force</e>, but fills previously unoccupied positions with the specified value rather than with a default one.
 +
*code analyzer: Added a rule ''CA093'' to detect reattachments of a manifest array to a target with a different array type.
  
 
===Improvements===
 
===Improvements===
Line 22: Line 22:
 
*code analyzer: test#codeanalysis027 — Supported object (tilde) equality when checking for ''CA071'' (comparison to itself).
 
*code analyzer: test#codeanalysis027 — Supported object (tilde) equality when checking for ''CA071'' (comparison to itself).
 
*code analyzer: test#codeanalysis028 — Supported conditional expressions when checking for ''CA046'' (inequality used in if-then-else-end) in addition to conditional instructions.
 
*code analyzer: test#codeanalysis028 — Supported conditional expressions when checking for ''CA046'' (inequality used in if-then-else-end) in addition to conditional instructions.
*EiffelStudio: Supported localized output from precompilation process (in case EiffelStudio is started in the environment with a non-English locale).
+
*IDE: Supported localized output from precompilation process (in case EiffelStudio is started in the environment with a non-English locale).
 
*compiler: Reported source code context for class-level errors when this information is available.
 
*compiler: Reported source code context for class-level errors when this information is available.
 
*compiler: Taken a condition into account when processing a precompile to allow for using different precompiles with different settings and for making such uses optional.
 
*compiler: Taken a condition into account when processing a precompile to allow for using different precompiles with different settings and for making such uses optional.
 +
*compiler: Changed grammar to support bracket expressions as bracket targets. Supported <e>foo [x][y][z]</e> as a synonym for <e>((foo [x]) [y]) [z]</e>.
 
*code analyzer: test#codeanalysis029 — Extended the rule ''CA017'' (an empty conditional) to check for an empty compound after <e>elseif</e> or <e>else</e> parts.
 
*code analyzer: test#codeanalysis029 — Extended the rule ''CA017'' (an empty conditional) to check for an empty compound after <e>elseif</e> or <e>else</e> parts.
 
*{{Green|compiler: test#free015, test#free016, test#free017, test#free018, test#free019, test#free020, test#free021, test#free022, test#free023, test#free024 — Relaxed rules for class features. Redeclaration into or joining with a class feature is valid as soon as combined assertions satisfy the class feature conditions. A non-static external and constant feature automatically gets a class postcondition if its contracts do not involve constructs that can access Current object (<e>Current</e>, an unqualified call, an inline or unqualified agent, <e>Precursor</e>, an address expression with <e>Current</e> or an unqualified feature).}}
 
*{{Green|compiler: test#free015, test#free016, test#free017, test#free018, test#free019, test#free020, test#free021, test#free022, test#free023, test#free024 — Relaxed rules for class features. Redeclaration into or joining with a class feature is valid as soon as combined assertions satisfy the class feature conditions. A non-static external and constant feature automatically gets a class postcondition if its contracts do not involve constructs that can access Current object (<e>Current</e>, an unqualified call, an inline or unqualified agent, <e>Precursor</e>, an address expression with <e>Current</e> or an unqualified feature).}}
*EiffelStudio: Indicated whether a feature is a class one with special icons in various tools.
+
*IDE: Indicated whether a feature is a class one with special icons in various tools.
*library (base): Marked many features of Base library as class ones to make them usable for non-object calls.
+
*library (base): Marked many features of the library ''"base"'' as class ones to make them usable for non-object calls.
*EiffelStudio: Improved auto completion for "|." and ".." cases.
+
*IDE: Improved auto completion for "|." and ".." cases.
 
*library: Added <e>EXECUTION_ENVIRONMENT.available_cpu_count</e>.
 
*library: Added <e>EXECUTION_ENVIRONMENT.available_cpu_count</e>.
 
*library (process): Marked features of <e>BASE_PROCESS_FACTORY</e>, <e>PROCESS_FACTORY</e>, and <e>PROCESS_INFO</e> as class ones to make them usable for non-object calls.
 
*library (process): Marked features of <e>BASE_PROCESS_FACTORY</e>, <e>PROCESS_FACTORY</e>, and <e>PROCESS_INFO</e> as class ones to make them usable for non-object calls.
*library (base): Relaxed a precondition of <e>{ARRAY}.subarray</e> to allow for calling it on empty arrays.
+
*library (base): bug#15079 - Relaxed a precondition of <e>{ARRAY}.subarray</e> to allow for calling it on empty arrays.
 
*library (encoding): Used a default console code page on Windows if the current one cannot be retrieved that may happen for GUI applications.
 
*library (encoding): Used a default console code page on Windows if the current one cannot be retrieved that may happen for GUI applications.
 +
*library (web): Allowed for using a web socket without any persistent connection.
 +
*library (web): Supported redefinition of the default HTTP response when an exception occurs.
 +
*library (web): Added an example ''"docker"'' to demonstrate the use of apache2+libfcgi inside a docker container.
  
 
===Feature removed===
 
===Feature removed===
*compiler: Removed an unused setting <code lang="text">msil_assembly_compatibility</code> from ECF (Eiffel configuration file).
+
*compiler: Removed an unused setting <code lang="text">msil_assembly_compatibility</code> from the ECF (Eiffel configuration file) schema.
  
 
===Bug fixes===
 
===Bug fixes===
Line 42: Line 46:
 
*code analyzer: test#codeanalysis027 — Avoided reporting expressions involving computation (e.g. function calls) by ''CA071'' (comparison to itself).
 
*code analyzer: test#codeanalysis027 — Avoided reporting expressions involving computation (e.g. function calls) by ''CA071'' (comparison to itself).
 
*code analyzer: test#codeanalysis028 — Avoided false positives for ''CA046'' (inequality used in if-then-else-end) when <e>elseif</e> parts are present.
 
*code analyzer: test#codeanalysis028 — Avoided false positives for ''CA046'' (inequality used in if-then-else-end) when <e>elseif</e> parts are present.
*EiffelStudio: Disabled editing read-only library settings.
+
*IDE: Disabled editing read-only library settings.
 
*{{Red|compiler: bug#17297, test#valid255 — Supported detection of ''VHPR(5)'' violations for arbitrary ancestors, not just for immediate parents. '''Breaking change''' for classes that inherit different generic derivations of the same class.}}
 
*{{Red|compiler: bug#17297, test#valid255 — Supported detection of ''VHPR(5)'' violations for arbitrary ancestors, not just for immediate parents. '''Breaking change''' for classes that inherit different generic derivations of the same class.}}
*compiler: test#valid255 — Fixed a recompilation issue when first compilation fails and parents of the classes are changed.
+
*compiler: test#valid255 — Fixed a recompilation issue when the first compilation fails and parents of classes are changed before the next compilation.
 
*code analyzer: test#codeanalysis029 — Avoided false positives for ''CA017'' (an empty conditional) when there are non-empty <e>elseif</e> or <e>else</e> parts.
 
*code analyzer: test#codeanalysis029 — Avoided false positives for ''CA017'' (an empty conditional) when there are non-empty <e>elseif</e> or <e>else</e> parts.
 
*compiler: Specified source code class when reporting <code>VUCR</code> to show source code correctly.
 
*compiler: Specified source code class when reporting <code>VUCR</code> to show source code correctly.
*library: bug#19436 (test#utf003) — Fixed several issues in the implementation of <e>UTF_CONVERTER.is_valid_utf_16</e> (premature end of validation, infinite looping on certain inputs, access on index outside valid bounds).
+
*library (base): bug#19436 (test#utf003) — Fixed several issues in the implementation of <e>UTF_CONVERTER.is_valid_utf_16</e> (premature end of validation, infinite looping on certain inputs, access on index outside valid bounds).
*library: Fixed a bug in the implementation of <e>{WEL_API}.cwin_read_file</e> and <e>{WEL_API}.cwin_write_file</e> that may cause GC in multi-threaded environment to hang on Windows because <code>ReadFile</code> and <code>WriteFile</code> were not marked as blocking.
+
*library (wel): Fixed a bug in the implementation of <e>{WEL_API}.cwin_read_file</e> and <e>{WEL_API}.cwin_write_file</e> that may cause GC in multi-threaded environment to hang on Windows because <code>ReadFile</code> and <code>WriteFile</code> were not marked as blocking.
*EiffelStudio: Made sure message counters in the error panel are updated when messages are removed by a user.
+
*IDE: Made sure message counters in the error panel are updated when messages are removed by a user.
*library: test#thread024 - Fixed a bug in the implementation of <e>PROCEDURE</e> and <e>FUNCTION</e> classes that might cause memory corruption, access on void target or access on an invalid address when using agents in a system with any concurrency option turned on.
+
*library (base): test#thread024 - Fixed a bug in the implementation of <e>PROCEDURE</e> and <e>FUNCTION</e> classes that might cause memory corruption, access on void target or access on an invalid address when using agents in a system with any concurrency option turned on.
*EiffelStudio: Fixed Pick and Drop from `Precursor` tokens.
+
*IDE: Fixed pick&drop for <e>Precursor</e>.
 
+
*IDE: Fixed a bug in EIS (Eiffel information system) that with failed to position PDF documents to specified named destinations.
 +
*library (web): Fixed a bug in the implementation of <e>{HTTP_HEADER}.put_raw_header</e> by ignoring an empty line of the argument value.
  
 
===User changes===
 
===User changes===
*EiffelStudio: in the completion window, complete code with a single click action, and show tooltip when mouse is over the entry.
+
*auto-completion: Changed behavior to the completion window to complete with a single click (rather than with a double click).
*EiffelStudio: show auto completion window, even if there is a unique entry.
+
*auto-completion: Enabled a tool-tip in the completion window when the mouse pointer is over the entry.
 +
*auto-completion: Changed auto-completion by showing the completion window all the time (even if there is just a single entry).
 +
*compiler: Added detection of a type mismatch between a manifest array and a target of the reattachment where the manifest array is used. By default the detection is disabled for projects created by EiffelStudio 18.01 or later. For projects and libraries created by an earlier version, a warning ''VWMA(1)'' is reported. The behavior is controlled by an option that tells whether the mismatch should be detected, and, if yes, whether it should be reported as a warning or as an error. The option servers as a temporary measure to make sure old code is updated if needed to rely on types of manifest arrays computed solely from the expressions used in the manifest arrays.
  
 
===Developer changes===
 
===Developer changes===
 
*eweasel: Ignored end-of-line differences when comparing output files.
 
*eweasel: Ignored end-of-line differences when comparing output files.
 
*compiler: Updated configuration file (ECF) schema version.
 
*compiler: Updated configuration file (ECF) schema version.

Latest revision as of 22:06, 3 September 2018

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 18.07.x Releases

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

18.07.10.1981 (July 24th 2018)

New features

  • compiler: Supported extension of project targets from a different project (ECF: Eiffel configuration file). Before this change, only targets defined within the same project could be extended. Now targets from other projects could be extended as well to improve reusability. The ECF schema has been updated by adding a new attribute for the other project location: <target name="foo" extends="bar" extends_location="another.ecf">...</target>.
  • debugger: Added auto-import (and auto-export) for the execution parameters using the file $target_name.$system_name.dbg.profiles.xml located in the same folder as the project file (ECF).
  • compiler: Supported project settings conditions with custom value comparisons using 4 matching algorithms: a case-sensitive equality, a case-insensitive equality, a regular expression, a wildcard pattern.
  • debugger: Included information about current caret position in the string display debugger viewer.
  • debugger: Added a JSON debugger viewer (similar to the XML viewer).
  • IDE: Supported Up and Down key presses in the address bar (class and feature field in the tool bar) to see next or previous suggestions, and Ctrl+Space to open the completion dialog.
  • library: Added a feature {ARRAY}.force_and_fill that works like {ARRAY}.force, but fills previously unoccupied positions with the specified value rather than with a default one.
  • code analyzer: Added a rule CA093 to detect reattachments of a manifest array to a target with a different array type.

Improvements

  • eweasel: Supported Unicode in paths, arguments and environment.
  • code analyzer: test#codeanalysis027 — Supported more expressions when checking for CA071 (comparison to itself): Result, Current, Precursor, non-object call.
  • code analyzer: test#codeanalysis027 — Supported object (tilde) equality when checking for CA071 (comparison to itself).
  • code analyzer: test#codeanalysis028 — Supported conditional expressions when checking for CA046 (inequality used in if-then-else-end) in addition to conditional instructions.
  • IDE: Supported localized output from precompilation process (in case EiffelStudio is started in the environment with a non-English locale).
  • compiler: Reported source code context for class-level errors when this information is available.
  • compiler: Taken a condition into account when processing a precompile to allow for using different precompiles with different settings and for making such uses optional.
  • compiler: Changed grammar to support bracket expressions as bracket targets. Supported foo [x][y][z] as a synonym for ((foo [x]) [y]) [z].
  • code analyzer: test#codeanalysis029 — Extended the rule CA017 (an empty conditional) to check for an empty compound after elseif or else parts.
  • compiler: test#free015, test#free016, test#free017, test#free018, test#free019, test#free020, test#free021, test#free022, test#free023, test#free024 — Relaxed rules for class features. Redeclaration into or joining with a class feature is valid as soon as combined assertions satisfy the class feature conditions. A non-static external and constant feature automatically gets a class postcondition if its contracts do not involve constructs that can access Current object (Current, an unqualified call, an inline or unqualified agent, Precursor, an address expression with Current or an unqualified feature).
  • IDE: Indicated whether a feature is a class one with special icons in various tools.
  • library (base): Marked many features of the library "base" as class ones to make them usable for non-object calls.
  • IDE: Improved auto completion for "|." and ".." cases.
  • library: Added EXECUTION_ENVIRONMENT.available_cpu_count.
  • library (process): Marked features of BASE_PROCESS_FACTORY, PROCESS_FACTORY, and PROCESS_INFO as class ones to make them usable for non-object calls.
  • library (base): bug#15079 - Relaxed a precondition of {ARRAY}.subarray to allow for calling it on empty arrays.
  • library (encoding): Used a default console code page on Windows if the current one cannot be retrieved that may happen for GUI applications.
  • library (web): Allowed for using a web socket without any persistent connection.
  • library (web): Supported redefinition of the default HTTP response when an exception occurs.
  • library (web): Added an example "docker" to demonstrate the use of apache2+libfcgi inside a docker container.

Feature removed

  • compiler: Removed an unused setting msil_assembly_compatibility from the ECF (Eiffel configuration file) schema.

Bug fixes

  • compiler: Fixed issues that caused link errors when using run-time in DLL (rather than statically linked).
  • code analyzer: test#codeanalysis027 — Avoided reporting expressions involving computation (e.g. function calls) by CA071 (comparison to itself).
  • code analyzer: test#codeanalysis028 — Avoided false positives for CA046 (inequality used in if-then-else-end) when elseif parts are present.
  • IDE: Disabled editing read-only library settings.
  • compiler: bug#17297, test#valid255 — Supported detection of VHPR(5) violations for arbitrary ancestors, not just for immediate parents. Breaking change for classes that inherit different generic derivations of the same class.
  • compiler: test#valid255 — Fixed a recompilation issue when the first compilation fails and parents of classes are changed before the next compilation.
  • code analyzer: test#codeanalysis029 — Avoided false positives for CA017 (an empty conditional) when there are non-empty elseif or else parts.
  • compiler: Specified source code class when reporting VUCR to show source code correctly.
  • library (base): bug#19436 (test#utf003) — Fixed several issues in the implementation of UTF_CONVERTER.is_valid_utf_16 (premature end of validation, infinite looping on certain inputs, access on index outside valid bounds).
  • library (wel): Fixed a bug in the implementation of {WEL_API}.cwin_read_file and {WEL_API}.cwin_write_file that may cause GC in multi-threaded environment to hang on Windows because ReadFile and WriteFile were not marked as blocking.
  • IDE: Made sure message counters in the error panel are updated when messages are removed by a user.
  • library (base): test#thread024 - Fixed a bug in the implementation of PROCEDURE and FUNCTION classes that might cause memory corruption, access on void target or access on an invalid address when using agents in a system with any concurrency option turned on.
  • IDE: Fixed pick&drop for Precursor.
  • IDE: Fixed a bug in EIS (Eiffel information system) that with failed to position PDF documents to specified named destinations.
  • library (web): Fixed a bug in the implementation of {HTTP_HEADER}.put_raw_header by ignoring an empty line of the argument value.

User changes

  • auto-completion: Changed behavior to the completion window to complete with a single click (rather than with a double click).
  • auto-completion: Enabled a tool-tip in the completion window when the mouse pointer is over the entry.
  • auto-completion: Changed auto-completion by showing the completion window all the time (even if there is just a single entry).
  • compiler: Added detection of a type mismatch between a manifest array and a target of the reattachment where the manifest array is used. By default the detection is disabled for projects created by EiffelStudio 18.01 or later. For projects and libraries created by an earlier version, a warning VWMA(1) is reported. The behavior is controlled by an option that tells whether the mismatch should be detected, and, if yes, whether it should be reported as a warning or as an error. The option servers as a temporary measure to make sure old code is updated if needed to rely on types of manifest arrays computed solely from the expressions used in the manifest arrays.

Developer changes

  • eweasel: Ignored end-of-line differences when comparing output files.
  • compiler: Updated configuration file (ECF) schema version.