[[Property:title|Release notes for EiffelStudio 6.5]]
[[Property:link_title|6.5]]
[[Property:weight|-12]]
[[Property:uuid|3cf9bff5-1a0d-fa6b-9577-bc44319ac609]]
==Graphical environment==

===What's new===
* A new output tool that combines the Eiffel compilation output, the C compilation output, the testing output as well as the system information.
* When there is a C compilation error, the errors are now reported in the error list. Currently we only support error reported by either the GNU C compiler or the Microsoft C compiler. The error is also linked to the source Eiffel feature when the information is available.

===Improvements===
* In the recent projects submenu, one can select the most recently compiled target.
* The automatic class licenser can now use the license.lic files next to an ECF instead of naming the license after the ECF. It makes it easier for projects that have multiple ECF.
* Double clicking on an ECF file will select the previously compiled target by default. 
* Added tooltip to the precompilation wizard list to show item's ECF file path.

===Changes===
No changes in this release.

===Bug fixes===
* Addressed issue where the first change made to the diagram tool could not be undone.
* Fixed issue with ES crashing when trying to merge a license, when class contains an empty note clause. 
* Fixed issue where project settings would let you add twice the same include file rule.
* Fixed an issue where clicking in the project settings entry to display a dialog and then clicking cancel would show the dialog a second time. 
* Fixed bug preventing the new features dialog from being displayed when using newer syntax. 
* Fixed issue where one could not change an integer based preference entry in EiffelStudio. 
* Many more issues have been fixed. For a more complete list, see the [http://dev.eiffel.com/EiffelStudio_6.5_Releases change logs].

==Compiler==
* Click [[Major changes between ISE Eiffel 6.4 and ISE Eiffel 6.5|here]]  for the compiler release notes.

== AutoTest==
* <strong>Library: <eiffel>EQA_TES_SET.on_prepare</eiffel> is now called during <eiffel>default_create</eiffel>, making it simpler to write void-safe tests.</strong>
* Library: Added the possibility to wrap the actual test routine call.
* AutoTest traverses all writeable clusters in the project for possible test classes, making &lt;tests&gt;-clusters obsolete. The traversal happens in the background allowing the user to continue to work on the project.
* Tags can be used to control the test execution flow. Tagging a test with "execution/isolated" makes the test execute in a separate evaluator process, meaning the evaluator is restarted before and after executing the corresponding test (useful for tests relying on the initial access to a once routine or tests which possibly leave the memory corrupted).<br />Also any tag of the form "execution/serial[/*]" groups the tests to ensure that they are not executed in parallel (useful when a group of tests share a resource which has to be accessed sequentially).
* Any results are stored between EiffelStudio sessions.
* Improved the management of existing tests by merging the "View" and "Filter" box into one input field.
* Improved bottom part of AutoTest tool by only having two tabs displaying test execution and test creation results.

==Debugger==
* Click [[Release notes for EiffelStudio 6.5 related to the debugger|here]]  for the EiffelStudio debugger release notes.

==EiffelBuild==
* Click [[EiffelBuild Version History|here]]  for the EiffelBuild release notes.

==Libraries==

===EiffelBase===
* In experimental mode, we have changed the signature of <eiffel>generating_type</eiffel> to return an instance of <eiffel>TYPE</eiffel> rather than an instance of <eiffel>STRING</eiffel>. Existing code should still compile out of the box since we have equipped <eiffel>TYPE</eiffel> with conversions and new features similar to those of <eiffel>STRING</eiffel>. In the few cases where it would still not compile, use `generating_type.out' to ensure that the code will compile fine regardless of the compiler mode chosen (i.e. experimental or non-experimental).
* Fixed an issue in <eiffel>copy</eiffel> from <eiffel>HEAP_PRIORITY_QUEUE</eiffel> which would not do anything because it was simply copying itself, not the other queue.
* Fixed a bug in <eiffel>remove</eiffel> from <eiffel>HEAP_PRIORITY_QUEUE</eiffel> which caused the internal structure to be referenced beyond its bounds. 
* Made <eiffel>clear_all</eiffel> in <eiffel>STRING_8</eiffel>, <eiffel>STRING_32</eiffel> and <eiffel>HASH_TABLE</eiffel> obsolete. One has to use <eiffel>wipe_out</eiffel>instead.
* Strengthen precondition of <eiffel>resize</eiffel> in <eiffel>STRING_8</eiffel>/<eiffel>STRING_32</eiffel> to forbid values that would shrink the string content. Use <eiffel>grow</eiffel> instead to preserve the former <eiffel>resize</eiffel> behavior. 
* Added the base extension library that offers some extra functionality to EiffelBase: <eiffel>SEARCH_TABLE</eiffel> which is a HASH_TABLE where keys and items are the same (basically becoming a set), and sorting facilities for <eiffel>INDEXABLE</eiffel> containers.
* Added the "+" operator in <eiffel>READABLE_STRING_GENERAL</eiffel>. 
* Added ability to create a directory recursively. 
* Fixed bug#4118 where on .NET <eiffel>{EXECUTION_ENVIRONMENT}.put</eiffel> had no effect on the actual process environment variables because the API was only available in .NET 2.0 which is what we now support at the minimum. 
* Fixed a bug in <eiffel>{MEMORY}.memory_map</eiffel> which would cause a precondition violation in one of its call. 
* Fixed issue with <eiffel>{BINARY_SEARCH_TREE_SET}.remove</eiffel> which would not move the cursor and thus causing an infinite loop in <eiffel>subtract</eiffel> and <eiffel>intersect</eiffel>.
* Fixed issue with <eiffel>{PART_SORTED_SET}.put</eiffel> and <eiffel>{PART_SORTED_SET}.extend</eiffel> which had no effect and thus causing a postcondition violation.
* Fixed invalid retrieval of SPECIAL objects using the Eiffel SED serializer in experimental mode. 
* Fixed a missing element in <eiffel>{BOUNDED_QUEUE}.linear_representation</eiffel>.

===EiffelNet===
* Fixed an issue with {NETWORK_STREAM_SOCKET}.make_server_by_port (0) which would not automatically get a port assigned.
* Fixed obsolete warnings in the library.
* Prevented a socket to change its blocking mode when connecting with a timeout (it would end up always being blocking even if requested otherwise before the call to `connect'.
* Ensured that a socket is indeed connected when successfully connecting to it while the socket is in non-blocking mode.

===EiffelVision2===
* [[Revisions and Bug Fixes|Click here for EiffelVision2 release notes.]] 

[[EiffelStudio release notes|Click here to check out what was new in other versions]]  

