Release notes for EiffelStudio 5.3

  1. Graphical environment
    1. Changes
    2. Bug fixes
  2. Compiler
  3. Libraries
    1. CECIL
    2. EiffelBase
    3. Eiffel2Java
    4. EiffelCOM
    5. EiffelNet
    6. EiffelStore
    7. EiffelVision2
    8. WEL

Graphical environment


  • In project settings, we now accept a root class without creation procedure.
  • In .NET code generation, we do not force the C compilation at each compilation. It is only done when necessary (for example when a C external has been added).
  • Incremental .NET code generation (See compiler release notes for more info).
  • Recoverable storable (See compiler release notes for more info).

Bug fixes

  • Fixed issue with setting of arguments. After restarting EiffelStudio the command line argument contains an extra ] character.
  • Fixed issue with working directories where only the first one ever set was used even if new ones have been set afterwards.
  • Fixed issue where generating documentation for all/library cluster would stop during generation without completing.
  • Fixed crash in diagram tool when moving label on client/supplier link between two classes.
  • Fixed resource leak on Windows 98 and Windows Me.
  • Fixed issue in projects where clusters are specified with relative path would not compile after adding a local assembly.
  • Fixed problem with cluster tool management where moving classes around or looking up a class will generate an error box instead of performing the requested operation.
  • Fixed incorrect configuration file specification for EiffelVision2 examples and wizards on Unix platforms where application could be linked dynamically with libpng but should not.
  • Fixed disappearance of EiffelStudio when debugging a routine infix or prefix in which an exception was raised. This issue was only occurring with melted code (usually noticeable when using a precompiled library).
  • Changing the project specific command line arguments will not touch the project settings configuration file (ace file).


  • Click here for the compiler release notes.



  • Enforced definition of EIF_OBJECT so that it is different from EIF_REFERENCE to better catch errors when passing a protected reference to a feature accepting an unprotected reference and vice versa. Because of this change some C code might not compile anymore which is good as it points out that code was doing something wrong that could corrupt the Eiffel memory.


  • Added in INTERNAL the following new features: field_static_type_of_type , class_name_of_type , type_name and type_name_of_type .
  • Added truncated_to_integer_64 in REAL and DOUBLE .
  • Added to_integer_64 in STRING .
  • Added new classes MEMORY_STRUCTURE , MANAGED_POINTER and C_STRING to better manage access to C and C++ memory structure.
  • Fixed incorrect implementation of area and substring for STRING in dotnet mode.
  • Fixed bug in copy from STRING where following code was violating valid_count invariant from STRING :

local s, t: STRING do create s.make (9) create t.make (10) t.append ("1234567890") s.copy (t) end

  • Added support for storable in .NET. However .NET and classic implementation are completely different and independent_store will not be able to retrieve a storable file if not made using the same code generation.
  • Fixed a bug in is_equal from LIST where comparing two lists of different counts could break the comparison:

make is local a, b: LIST [INTEGER] do create {ARRAYED_LIST [INTEGER]} a.make (2) a.extend (10) create {ARRAYED_LIST [INTEGER]} b.make (2) b.extend (10) b.extend (11) print (equal (b, a)) end

  • Fixed .NET implementation of open_write and create_read_write in FILE . They were not resetting the file size to zero if file already existed.
  • Added correct_mismatch on ANY used for recoverable storable.
  • Added correct_mismatch on HASH_TABLE to enable retrieval of the 5.1 and older version of HASH_TABLE.
  • Fixed bug in implementation of copy and is_equal for TREE and descendant classes. Now descendants of TREE that would like to compare additional attributes of their class needs to redefine node_is_equal whose default implementation will always result in a true value.
  • Changed default semantic of make and put_child from FIXED_TREE, to preserve existing semantic, you should use make_filled and replace_child instead.


  • Updated library so that it works both in classic and dotnet mode.


  • Fixed crash in ccom_set_name from FONT_IMPL_PROXY.


  • Fixed assertion violation of call to to_integer in feature get_content_length from HTTP_PROTOCOL if assertions are enabled on EiffelBase.


  • Updated library so that it works both in classic and dotnet mode.
  • Fixed issue with oracle handle which did not work with the included Borland C compiler.
  • Removed nb_classes from EXT_INTERNAL .
  • Removed need for additional object file (support.lib' on Windows and libsupport.a` on Unix platforms), so make sure to remove it from your project configurations.



  • Removed inheritance to WEL_STRUCTURE in WEL_STRING, it now inherits from new C_STRING class. In the process removed the following features which were inherited from WEL_STRUCTURE and did not make sense to WEL_STRING memory_copy, structure_size, dispose, set_item, set_shared, set_unshared, shared, to_integer. No replacements have been provided for those features. Made initialize and initialize_with_character obsolete, instead we now provide two features inherited from C_STRING fill_blank and fill_value.

Click here to check out what was new in other versions

cached: 02/28/2020 1:06:37.000 AM