Major changes between ISE Eiffel 7.3 and ISE Eiffel 13.11

What's new

  • Supported parenthesis aliases that allow treating feature calls with arguments on entities that take no arguments to look like regular feature calls. This is mostly useful to make calls on agent objects, e.g. instead of (x) it may be possible to use my_agent (x). Unlike bracket alias, parenthesis alias can be used with both queries and commands, but as with bracket alias, the corresponding feature should have at least one argument.
  • Supported new rules to handle actual arguments in a feature call that wrap last arguments into a tuple when:
    • the number of actual arguments exceeds the number of formal arguments
    • the number of actual arguments is equal to the number of formal arguments, but the last actual argument is not type-compatible with the last formal argument unless wrapped in a tuple.
  • Supported conditional expressions that allow using different expressions to compute a value depending on some condition: if x < y and x < z then x elseif y < z then y else z end.
  • ECF redirection support to provide a way to create redirection from a .ECF to another.
  • Added VD89 warnings to highlight library dependency cycles.
This is mostly useful to make calls on agent objects avoiding explicit manifest tuple notation. For example, ([123, "abc", value]) can be written as (123, "abc", value), or, when combined with parenthesis alias, as my_agent (123, "abc", value).


  • Added support for Sun C compiler on Linux for RHEL, OL and Ubuntu 8.04. Other Linux distributions are not supported.
  • Speed up SCOOP by an average of 35% up to 500% on some benchmarks:
    • Added various optimizations to reduce massive latency over call logging and waiting due to overhead from operating system synchronization primitives and scoop call cleanup. Improved lock passing client supplier synchronization speed by a factor of 60 due to removing latency from condition variable use.


Bug fixes

Language issues

  • Fixed bug#18643 (test#attach107, test#attach102) - Fixed a bug that may lead to unreported VEVI errors for attributes not properly set by a creation procedure when compiled in complete void-safety mode (rev#92835).
  • Fixed bug#18266 (test#svalid031) - Fixed a bug that caused reporting a non-existent error for a renamed feature with a bracket alias.
  • Fixed bug#18282 (test#multicon062) - Fixed a bug that caused incorrect error report for features with a bracket alias specified in multiple formal generic constraints.

Compiler issues

  • Fixed a crash when converting old Ace files to new ECF format. (bug#18642 and bug#18628, rev#92820)
  • Fixed bug#15591 (test#attach106), bug#17302 (test#valid270) - Fixed an erroneous reporting of VUOT for object test locals when right-hand side of a binary expression using these locals has a validity error (rev#92769).
  • Fixed test#attach108 - Corrected computation of scopes of read-only variables used in implicative expressions with conjuctions.

SCOOP issues

  • Fixed a crash when a separate detachable argument is Void (test#scoop035).
  • Fixed lock passing creation of separate processor from non root processors.
  • Fixed uncontrolled detection to iterate parent request chains. Prior to this a new chain would be created even though the processor was controlled in a parent routine, leading to inevitable deadlock.

Runtime/code generation issues

Store/Retrieve issues

cached: 07/23/2024 10:24:54.000 PM