Release notes for EiffelStudio 5.6

Graphical environment


  • New implementation of the diagram tool with enhanced performance and functionalities
    • Support for UML view.
    • Physics: auto-arrangement of classes using force directed graph.
    • Multiple selection of classes.
    • Improved speed/behavior of drawing/scrolling operations especially on large diagram.
  • Added ability to find features performing an assignment to an attribute, or creating an attribute, as well as features using a procedure as creation procedure.
  • Feature tree is now showing a different icon for frozen and obsolete features.
  • Improved look and feel of applications using the EiffelVision library under Windows XP theme engine.
  • Improved keyboard navigation in EiffelStudio windows/dialogs.
  • Full support for 64 bits operating systems such as Windows, Linux, Solaris, Irix, OpenVMS,...
  • Features tree is also available for classes which are part of the universe, but not yet compiled.
  • New EiffelCOM wizard. Click here for more details.
  • Improved speed of class completion for large system.
  • Added new toggles for alias names and assigner commands to feature tree.


  • Changed the default C compilation flags on Windows when using Visual Studio as a back-end C compiler. It will now compile C code using the -MT option. It may cause some linking problems if you are using C libraries compiled against the static C library. To solve those issues recompile your C code using the -MT option.
  • Provided keyword highlighting in editor and different views for new keyword assign.

Bug fixes

  • Fixed infinite loop in finish_freezing which could use all the available memory.
  • Fixed some issues with formatting of agent using expressions as target, and display of character and string constants in context tool.
  • Fixed issue where tools that have been externally docked were not properly restored when reopening EiffelStudio.
  • Fixed issue where one could not remove entries added to the list of external commands.
  • Supported keyword highlighting for the keywords infix and prefix in editor and different views.


  • Click here for the compiler release notes.


Graphical environment

  • The stack, objects and evaluator tools now use a grid display instead of simply a tree view
  • A mixed multicolumn list and tree view display which display item only when shown, this make debugger much faster to display values
  • The evaluator tool renamed as "watch tool" has more features than previously, such as browsing the objects value directly in the tool, moving up and down the expression, dopped objects as them self, ....
  • The new watch tool can be used instead of the objects view to display current, and dropped objects (and of course expressions).
  • You can close and create new watch tools
  • Each tool has its hexdecimal/decimal format switch command.
  • Most of the debugging tools are now inside a notebook, and are dockable outside this notebook
  • Various minor bug fixes and improvements regarding the interface

Debugger engine

  • Fixed a memory leak with the estudio process when conditional breakpoints are enabled.
  • Improved speed of execution when conditional breakpoints are enabled (about 20 times faster).
  • Fixed a bug where after killing a debugged process, the debugger could not be launched anymore.
  • Improved speed regarding STRING and SPECIAL manipulation in the debugger
  • Dotnet: fixed memory/handle leak when debugging dotnet system
  • Dotnet: fixed memory corruption while debugging dotnet system
  • Dotnet: EiffelStudio do not hang (100% CPU) anymore during dotnet debugging.
  • Dotnet: make EiffelStudio much more stable while debugging dotnet system.
  • Dotnet: fixed various issues which occurred on killing debugged application
  • Dotnet: improved support for dotnet v2.0.x debugging
  • Dotnet: fixed expression evaluation on pure dotnet object
  • Evaluation: fixed remaining error status on expression (sometimes when an expression has an error, changing the expression to a valid expression was not reseting the error status)
  • Evaluation: improved error message reporting for expression evaluation
  • Evaluation: improved the stability and the result validity of expression
  • Breakpoint: fixed some issues related to setting, removing breakpoints, and remaining hidden breakpoints
  • Breakpoint: now the debugger stops on a condition breakpoint when the condition's result is True, but also if the expression is not supported, or if it raises an exception


  • Click here for the EiffelBuild release notes.



  • Due to renaming of EIF_REAL and EIF_DOUBLE into EIF_REAL_32 and EIF_REAL_64, we have also changed the names of some CECIL facilities. Although old names are still valid we may remove their definition in future releases of the compiler. Below is the list of old names and their corresponding new names:

Old name New name
eif_real_function eif_real_32_function
eif_double_function eif_real_64_function


  • Added new storable facility entierly written in Eiffel which enables you to exchange data between classic and .NET. Former version built-in in the Eiffel run-time did not apply for .NET. The classes are located in the new serialization cluster of EiffelBase.
  • ARRAY:
    • Changed signature of subarray to match ELKS specification. It now returns an ARRAY [G] instead of like Current.
    • Fixed has to return True when searching for Void when comparing objects in an array containing a Void element.
    • Fixed issue on .NET with clone/copy which were not really duplicating the internal of the array, and therefore enabling aliasing of its content by more than one array.
    • Fixed a bug in feature occurences that returned 0 when called with void argument and object_comparision is true.
    • Fixed a bug in feature is_equal that caused stack overflow when some array item is the array itself and object_comparision is true.
    • Removed array_valid_index from ARRAYED_LIST. Descendants of ARRAYED_LIST may need to update their inheritance clause. This fixes ability to use put_i_th with indexes that may violate the invariant of ARRAYED_LIST, for example the code below should trigger a precondition and not violate the invariant of ARRAYED_LIST:

list: ARRAYED_LIST [INTEGER] create list.make (5) list.put_i_th (3, 3)

    • Added implementation query new_filled_list in ARRAYED_LIST. Descendants of ARRAYED_LIST may need to update their inheritance clause.
    • Added merge to HASH_TABLE.
    • Now remove will reset found_item when an element is removed.
    • Implemented all the routines in the .NET version.
    • Added support for creating TUPLE types in dynamic_type_from_string.
    • Added precondition to set_reference_field to ensure validity of reattachement to attributes.
    • Changed signature of infix "+" to match ELKS specification. It now returns like Current instead of STRING.
    • Added implementation query new_string. Descendants of STRING may need to update their inheritance clause.
    • Fixed a bug in .NET implementation of feature replace_substring that might produce incorrect result when argument and target of the call is the same object.
    • Merged .NET and classic implementation of STRING so that all features of STRING are now properly implemented for both platforms.
    • Fixed center_justify that would corrupt memory on classic.
    • Changed character_justify, left_justify, right_justify and center_justify so that justification is now done on count instead of capacity. You might expect different results after upgrading, thus check all callers of those routines.
    • Added is_case_insenstive_equal to compare two strings regardless of their case.
    • Rewrote routines is_integer, is_real, is_double, to_integer, to_real and to_double so that they do not rely on C externals. This could breeak some existing code relying on specific locale to read floating numbers.
  • Changed behavior of item and eval in FUNCTION. They will not set last_result with their result. If you want to use last_result you should use call instead.
  • Added new set of classes NATURAL_8, NATURAL_16, NATURAL_32 and NATURAL_64 to perform unsigned integer operations.
  • Made implementations of cursor in descendants of CURSOR_STRUCTURE return a precise CURSOR type.
  • Reduced feature exportation of routines also used as creation procedures of CURSOR descendants to NONE
  • Removed make_sublist from TWO_WAY_LIST public creation procedures.
  • Made file_prunable from FILE obsolete. Use prunable instead.
  • Implemented features collect and full_collect of class MEMORY for .NET.
  • Changed type of feature sign in classes INTEGER_8 and INTEGER_16 to INTEGER_8 and INTEGER_16 respectively.
  • Added a subcluster refactoring with classes that can be helpful for performing code refactoring.
  • Augmented many features that are used to access items by their index (such as ARRAY.item and TABLE.item) with a bracket alias and an assigner command.


  • Enable to open an URL on a virtual host.
  • Enable to open an URL with login and password (for instance http://login:password@host/path/).
  • Fixed wrong URL analysis.


  • Added feature sleep to class THREAD_CONTROL.
  • Provided inheritance link between classes THREAD and THREAD_CONTROL on all platforms.


  • Breaking changes:
    • In time format, the use of hh12 alone without specifying AM or PM will default to AM.
    • Changed implementation of DATE_SET to use ordered_compact_date as storage.
  • Added support for [0]hh12 hour format.
  • Added support for specifying hh12 as a standalone format string.
  • Fixed a bug where calling TIME.make_by_fine_seconds would set fractional_second to zero rather than to the expected value.
  • In TIME, comparison of fractional_second is done using a precision of 1.0e-10.
  • Fixed is_positive in DATE_TIME_DURATION so that it is true when either the date or time is zero but the other is positive.
  • Fixed incorrect postcondition of set_origine_date_time in DATE_TIME_DURATION which would fail when argument was Void.
  • Fixed is_correct_date in DATE_VALIDITY_CHECKER to check that year is less than 65535.
  • Fixed DATE_TIME_PARSER when handling time in 12h format, but internally we would convert it into 24h format thus making is_time and is_date_time return False where True was expected.



  • Made WEL 64 bits compliant. This required a breaking change in signatures. Some routines were actually using an INTEGER to represent a POINTER. On 64 bits platform this is not working as INTEGER is 32 bits and POINTER is 64 bits. As a consequence if you are using low level facilities of WEL your code might not compile anymore. Simply replace INTEGER by POINTER to make it compile.

Click here to check out what was new in other versions

cached: 07/24/2024 9:34:32.000 PM