Release notes for EiffelStudio 6.5

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 the 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 change logs.

Compiler

  • Click here for the compiler release notes.

AutoTest

  • Library: EQA_TES_SET.on_prepare is now called during default_create, making it simpler to write void-safe tests.
  • Library: Added the possibility to wrap the actual test routine call.
  • AutoTest traverses all writeable clusters in the project for possible test classes, making <tests>-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).
    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 shares 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

Graphical environment

  • To move a breakpoint, you can Ctrl+RightClick on the related breakpoint icon, and Ctrl+Drop on the wanted breakpoint location.
  • Better support for attributes pick and drop into the watch tool
  • The debugger will display as text/string all descendants of READABLE_STRING_8/32 (instead of just STRING_8/32). Including IMMUTABLE_STRING_...
  • You can toggle the status of a breakpoint easily using shortcuts:
    • F9: toggle between enabled/not-set.
    • Shift+F9: toggle between enabled/disabled.
    • Ctrl+F9: open the breakpoint dialog for editing.

Debugger engine

  • Fixed several issues related to object test locals (especially in the expression)
  • Fixed a major memory leak related to condition evaluation
  • Fixed evaluation of is_equal, equal, =, ~ in expression (watch tool).
  • It is now possible to unset an environment variable, or unset all variables, in the execution parameters dialog (see doc)
  • Improved support for expanded objects (especially SPECIAL of expanded)
  • Fixed memory leak related to condition breakpoints, and improved the condition breakpoints performance.

EiffelBuild

  • Click here for the EiffelBuild release notes.

Libraries

EiffelBase

  • In experimental mode, we have changed the signature of generating_type to return an instance of TYPE rather than an instance of STRING. Existing code should still compile out of the box since we have equipped TYPE with conversions and new features similar to those of STRING. 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 copy from HEAP_PRIORITY_QUEUE which would not do anything because it was simply copying itself, not the other queue.
  • Fixed a bug in remove from HEAP_PRIORITY_QUEUE which caused the internal structure to be referenced beyond its bounds.
  • Made clear_all in STRING_8, STRING_32 and HASH_TABLE obsolete. One has to use wipe_outinstead.
  • Strengthen precondition of resize in STRING_8/STRING_32 to forbid values that would shrink the string content. Use grow instead to preserve the former resize behavior.
  • Added the base extension library that offers some extra functionality to EiffelBase: SEARCH_TABLE which is a HASH_TABLE where keys and items are the same (basically becoming a set), and sorting facilities for INDEXABLE containers.
  • Added the "+" operator in READABLE_STRING_GENERAL.
  • Added ability to create a directory recursively.
  • Fixed bug#4118 where on .NET {EXECUTION_ENVIRONMENT}.put 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 {MEMORY}.memory_map which would cause a precondition violation in one of its call.
  • Fixed issue with {BINARY_SEARCH_TREE_SET}.remove which would not move the cursor and thus causing an infinite loop in subtract and intersect.
  • Fixed issue with {PART_SORTED_SET}.put and {PART_SORTED_SET}.extend 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 {BOUNDED_QUEUE}.linear_representation.

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

Click here to check out what was new in other versions

cached: 03/28/2024 12:20:50.000 PM