Major changes between ISE Eiffel 15.08 and ISE Eiffel 15.12

What's new

  • Agents have a new type declaration. Instead of PROCEDURE [X, TUPLE [Y]], one can now write PROCEDURE [Y] where the first generic actual parameter is not considered anymore and the TUPLE declaration omitted. The compiler accepts both syntaxes but only one at a time based on the project's ECF (in other words, you cannot mix both syntaxes within the same project). Meaning that an Eiffel project can use libraries with mismatched syntaxes. The choice of the accepted syntax is based on the version associated to the project's ECF. The new version generated by EiffelStudio will use the new syntax, while existing ECFs will use the old syntax. To upgrade your projects to use the new syntax, use the syntax_updater tool and using the -a argument.


  • Introduced options to select the number of types being generated in each C directory via the general.cfg located in $ISE_EIFFEL/studio/eifinit. The first option is workbench_c_basket_limit for workbench code (defaulting at 33) and the other is finalized_c_basket_limit (defaulting at 50).
  • Fixed incrementality performance issues on large system. Instead of taking a few minutes at the end of degree 3 before jumping to degree 2, it will now take about 10 to 15 seconds.


Bug fixes

Compiler issues

  • Fixed bug#19120 (test#tuple019) by reporting the tuple field name that violated VUAR(2) for the corresponding assigner command.
  • Fixed test#attach049 by checking target type of boolean operators when computing scopes of variables.
  • Fixed test#attach114 by checking that parenthesis may be used as parenthesis alias calls.
  • Fixed test#anchor012.
  • Fixed bug#17907 (test#incr417), bug#17913 (test#incr418), (in assertion-enabled mode) bug#17942 (test#incr419), test#incr432 by making sure any changes after an error fix are taken into account.
  • Fixed test#attach115 by recording a qualified call as soon as there is an iteration form of a loop.
  • Fixed improper type of like argument in generics (test#exec364).

SCOOP issues

  • Fixed test#scoop074 by propagating the controlled status of an object test expression to an object test local to avoid unnecessary wrapping for this local.
  • Fixed test#scoop075 by allocating a separate call data structure register before message processing and by freeing it at the end of a call so that the register does not get incorrectly reused.