[[Property:title|Release notes for EiffelStudio 5.5]]
[[Property:link_title|5.5]]
[[Property:weight|-13]]
[[Property:uuid|0d5bdd1d-e35b-a37e-009f-f19fae0771db]]
==Graphical environment==
===Improvements===
* Added full configuration of colors used in editor
* Added docking facilities for various tools. It permits the re-ordering of tools within the interface, including making them "float" externally [[Docking|(See EiffelBuild documentation on docking mechanism for more details)]] .
* Ability to see when a class is deferred in the context tool formatters. It is shown by adding the `*' character at the end of the class name.
===Changes===
* One cannot add a .NET assembly from the GAC anymore, instead you have to specify the path to the assembly in the assembly references list.
===Bug fixes===
* Fixed a crash when performing feature completion on classes with errors.
* On Windows, prevented the EiffelStudio window to go to the back of all windows when you click Ok on the dialog box which appears when a syntax error occurs while compiling a project.
==Debugger==
* Enabled conditional breakpoint and expression evaluation for .NET
* Improved expression evaluation abilities (full range of Eiffel expressions are now supported).
* Improved object viewer window (word wrapping for large text, ability to see the whole content in one click without having to enter the lower and upper index of a range).
==EiffelBuild==
* Click [[EiffelBuild Version History|here]] for the EiffelBuild release notes.
==Compiler==
* Click [[Major changes between ISE Eiffel 5.4 and ISE Eiffel 5.5|here]] for the compiler release notes.
==Libraries==
===CECIL===
* Added ability to query type of a generic class where an actual generic parameter is expanded although its base class is not. It suffices to prefix the class name with "expanded ". Reciprocally, you can use the reference version of an expanded class by prefixing with "reference ".
===EiffelBase===
* Removed consistent and setup from ANY
* Removed Void from ANY as Void
is now a keyword.
* Added for_all, do_all, do_if and there_exists to ARRAY. As a consequence descendants of ARRAY which also inherit from LINEAR have to select the proper version of those routines as they also appear in LINEAR.
* Fixed dynamic_type_from_string from INTERNAL under .NET which was not working if you were using the .NET naming convention or if you specified a namespace.
* Added generic_count, generic_count_with_type in INTERNAL to find out how many generic parameter a type has.
* Added generic_dynamic_type_with_type in INTERNAL to find out the type of the i-th generic parameter of a given type.
* Added memory_map and memory_count_map to give you a precise accounting of all living objects in the running system. It will help you find out any potential memory leak because objects are still referenced where they should not.
* Improved performance of FILE objects creation by not allocating the last_string internal buffer until it is needed.
* On Windows, removed side effects of put from EXECUTION_ENVIRONMENT. Before it was setting also some registry keys, now it only set the environment variable for the running process and its children when launched.
* Allowed zero sized MANAGED_POINTER. Allowed MANAGED_POINTER to share a pointer rather than doing a full memory copy at creation time.
* Fixed issue with agents where GC did not collect passed arguments to call or item from ROUTINE/FUNCTION. Thus arguments stayed alive until the next call to call or item.
===EiffelNet===
* Added close_socket in SOCKETwhich only close the socket for the current process. It will not close it for all processes which are using this socket (e.g. obtained after a fork on Unix platform).
===EiffelTime===
* Fixed incorrect display of the short year format when using the following code:
l_date: DATE_TIME
...
create l_date.make_now
print (l_date.formatted_out ("[0]mm/[0]dd/yy"))
===EiffelThread===
* Added a new C routine eif_thread_fork for Unix based system for users who would like to use a forking mechanism in a multithreaded system, as the default version of fork will most likely causes some deadlock.
===EiffelVision2===
* [[Revisions and Bug Fixes|Click here for EiffelVision2 release notes.]]
===WEL===
* Added various missing constants in WEL_*_CONSTANTS classes.
* Added creation procedure make_permanent in WEL_DLL so that the loaded DLL is loaded until the very end of program's execution. Now WEL_RICH_EDIT_DLL and WEL_COMMON_CONTROLS_DLL are using this new creation procedure. It fixes the issue where a program using WEL_RICH_EDIT would crash when exiting.
* Fixed a possible C compilation error when using WEL_RICH_EDIT due to a bug in the Microsoft Platform SDK header file for RichEdit.
* Fixed WEL_SCROLL_BAR to return a valid position when position is more than 65535.
* Added string_size_extended in WEL_FONT to better know where to draw a string using a specified font on screen,
* Added height_in_points, height_in_pixels, height_in_twips, and log_font in WEL_CHARACTER_FORMAT. Made height and set_height obsolete.
* Changed implementation of WEL_REGISTRY_KEY_VALUE in order to fix set_dword_valuewhich was writing incorrect data to the registry keys. Enhanced the typing of values, thus making the non-typed routines obsolete.
* Made default_key_value obsolete in WEL_REGISTRY.
* Properly defined is_equal and copy in WEL_STRUCTURE, possibly causing some compilation errors while analyzing the inheritance structure of your classes.
* Changed signature of non exported routine cwin_destroy_window from WEL_WINDOW to now return a value.
* Fixed issues when using WEL in a multithreaded application. It would crash if a non WEL thread was trying to destroy a WEL window.
[[EiffelStudio release notes|Click here to check out what was new in other versions]]