Release notes for EiffelStudio 18.07

Graphical environment

Improvements

  • Extended sets of constructs checked by some default rules of the code analyzer and made sure the checks do not trigger false positives.
  • The execution parameters can be automatically loaded from the default file saved from a previous execution session (this way, an Eiffel project can have default execution parameters).
  • The debugger string viewer now displays information about the current cursor (character, position, ...). In addition, a new "JSON" string debugger viewer is available.

User changes

  • Made completion more consistent: the selection list is shown even when there is just one item.
  • Used single-click for completion dialog. And show tool-tip when the pointer is over the entry.
  • New icons for class features (implying minor changes on existing features icons).
  • The auto-completion is not triggered anymore for |. or .. cases.

Compiler

  • It is now possible to extend a project target from a different project (ECF).
  • The rules for class features were relaxed. Re-declaration 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 post-condition if its contracts do not involve constructs that can access Current object .
  • Updated the Eiffel grammar to support bracket expressions as bracket targets (such as table[x][y][z])
  • Supported detection of VHPR(5) violations for arbitrary ancestors, not just for immediate parents. This may be a breaking change for classes that inherit different generic derivations of the same class.
  • Added detection of a type mismatch between a manifest array and a target of the reattachment where the manifest array is used for projects created before 18.01 release to facilitate migration to the new typing rules for manifest arrays. A per-library option and a project-wide setting are available to control the checks.

Libraries

  • EiffelBase:
    • Added {EXECUTION_ENVIRONMENT}.available_cpu_count.
    • Relaxed a precondition of {ARRAY}.subarray to allow for calling it on empty arrays.
    • Marked many features of Base library as class ones to make them usable for non-object calls.
    • 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.
  • EiffelProcess: Marked features of BASE_PROCESS_FACTORY, PROCESS_FACTORY, and PROCESS_INFO as class ones to make them usable for non-object calls.
  • EiffelWeb: it is now possible to redefine the default http response when an exception occurs.

See change log for more details.