EiffelStudio 21.11 Releases

Revision as of 08:16, 26 November 2021 by Alexander Kogtenkov (Talk | contribs) (Improvements: Added a note about detecting TODO and FIXME.)

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

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

21.11.xx.yyyy (November Day 2021)

New features

  • compiler: Supported a unified syntax to access loop cursor features inside an iteration form of a loop for both keyword-based and Unicode-based loop variants. The current item is accessed by the cursor name. The cursor feature is accessed by preceding the cursor name with the symbol @. For example:
 x: array ¦ (@ x.target_index \\ 2 = 0 ⇒ x > 0) -- All elements at even positions are positive.
        -- Print all elements of a table prefixed with their keys.
    across table as y loop
        print (@ y.key)
        print (": ")
        print (y)
The existing code can be updated with syntax_updater invoked with option -i.
  • EiffelStudio: Added a source control management tool, supporting basic usage of Subversion and Git commands.


  • EiffelStudio: Supported completion for Unicode operators defined in standard classes.
  • EiffelStudio: Added scripts (for Unixes) to open an external editor, to open a URL, and to open a terminal.
  • EiffelStudio: Migrated to GTK3 on non-Windows platforms (Linux, macOS, etc.).
  • EiffelStudio: Used user-controlled editor font in several tools.
  • compiler (code analyzer): Disabled detection of the phrase "to do" unless it is written in capitals and without spaces, and enabled detection of "FIXME" in the comments.
  • compiler (pretty-printer): Harmonized indentation for identifier lists, tagged note entries, export clauses, feature signatures, multi-line lists in parentheses, mandatory check instructions, agents, delayed operands, components of a loop expression, manifest arrays, actual arguments, nested feature calls.
  • compiler: Used the same indentation for assertion subclauses with and without tags in flat forms and pretty-printer output.
  • library (base): Added features set, clear, set_all and optimized features item and put in PACKED_BOOLEANS.
  • library (base): Marked make_from_iterable as a conversion procedure from ARRAY for some container classes to enable initialization of the corresponding entities from manifest arrays of elements by reattachment. This enables writing
x := <<1, 1, 2, 3, 5, 8>> -- Create a list with elements 1, 1, 2, 3, 5, 8.
  • library (base): Added {HASH_TABLE}.make_from_iterable_tuples as a creation and conversion procedure from ARRAY to enable initialization from manifest arrays of tuples, for example:
y := <<[23, "Peter"], [19, "Mary"], [36, "Tom"], [32, "Alice"]>> -- Index by person name.

Bug fixes

  • compiler: Fixed a bug that in rare cases could lead to a crash or incorrect binaries when generating code for .NET.
  • compiler: Fixed a bug that caused incorrect .NET code generation for a non-object call on an expanded base class.
  • compiler: bug#15451 (test#attach055) — Fixed a bug that caused the compiler to report a non-existent VEVI error for the feature default when a reference class inherits from an expanded one.
  • compiler (pretty-printer): Corrected output for once manifest strings.
  • compiler: test#attach131 — Fixed a bug in evaluation of the attachment status of an argument of a separate instruction.
  • compiler: Prevented using inline local variables (iteration cursors, locals of separate instructions, object test locals) in old expressions.
  • compiler: test#syntax076 — Removed a restriction on using forward and back-slashes for user-defined operators (the following restrictions still apply: \\, /, // can only be used as binary operators).

Feature removed

User changes

  • compiler: test#attach130 — Added a validity check that the type of an inspect expression is attached when compiled in void-safe mode.
  • compiler: Changed the defaults for the iteration loop syntax in newly created projects to access the current item by the cursor name.
  • compiler: Changed to report an iteration form of a loop with keyword is as obsolete. The contemporary syntax is to use the loop with keyword as and symbol @ to access cursor features.
  • compiler: Changed to report a user-defined operator @ as obsolete (in many cases, the bracket operator replaces it).

Developer changes

  • library (json): Added a date time serializer.
  • library (json): Added the possibility to use the reflector serializer with JSON_BASIC_SERIALIZATION.
  • library (vision2): Updated the checkbox drawing, and added a new is_indeterminate state.
  • library (EiffelWeb): Fixed WSF_REQUEST when searching for a table item with the name such as tb[k1][k2].
  • library (cms): Improved the administration part, and followed recommendation for email sending.
  • library (vision2): Switched to GTK3 on non-Windows platforms (to use GTK2, set the project variable vision_implementation to gtk2).