Menu

EiffelStudio 6.6 released

We are pleased to announce the release of EiffelStudio 6.6. You will find below a summary of what 6.6 brings.

Happy Eiffeling,
The EiffelStudio Team

== What's new ==
* EiffelStudio: Added the parent clauses of a class in the "Features tool" making it easier to navigate/edit parent classes.
* Compiler: Added support for new once syntax and once per object.
* Compiler: Added support for RAT/QAT, with the following limitations:
- Qualified anchored types that involve formal generics with multiple constraints are not supported.
- Creation and object tests with the type depending on qualified anchored types that involve deferred intermediate types are not supported on .NET.
* Compiler: Added a new option Total Order on REALs which let you have NaN equal to NaN and NaN being the smallest number of all. This option is disabled by default as it could break existing code. The rationale for this option is to have contracts work properly when manipulating the NaN value and not getting spurious contract violation.
* Compiler: Added the ability to version a class for storable. It is done via the note clause of a class, i.e. note storable_version: tag. When the storing and retrieving system have a different version a mismatch is triggered even if they look to have the same content.
* Compiler: Supported new variant of a check instruction that is not subject for assertion monitoring settings (in other words the check cannot be turned off) and can be used to introduce a new void safe scope of a read-only or object test local:
check Assertion then
Compound
end
* AutoTest: Added tool for displaying the result details of a single test execution.
* AutoTest: Added tool for comparing the current testing results to a previously exported set of results, highlighting tests for which the latest execution revealed a different result.
* AutoTest: Changed AutoTest Tool to store testing results permanently, and added the ability to export results to a text file.
* Libraries: Added ability to traverse most containers in EiffelBase using the new iteration (across) form of the loop construct.
* Libraries: Added a new feature trim to the RESIZABLE class and its decendants to allow for minimizing the allocated storage.
* Libraries: Added support for correct mismatch in the SED serialization cluster.

== Improvements ==
* EiffelStudio: Double clicking in the editor tab ribbon will create a new tab of the editor.
* EiffelStudio: Pressing "Ctrl+Enter" while typing a class name in the address bar will open the class or feature in a new tab of the editor.
* EiffelStudio: Pressing the middle mouse button on a tab will now close that tab.
* EiffelStudio: Added shortcuts for "Run workbench system" and "Run finalized system"
* AutoTest: Improved wizard/preferences dialog for creating and executing tests, also allowing the user to skip the wizard and create new tests from default settings.
* Compiler: Added support of transient attributes for .NET. Added queries in INTERNAL to find out the transient attributes. Extended the Eiffel serialization SED to support them.
* Compiler: Redone some of the multithreading internals of the Eiffel runtime to make it easier to add platforms and to ensure the same behavior on various platforms, namely that mutex should be recursive.
* Compiler: On Windows, the MUTEX class is now internally using a CRITICAL_SECTION object which is much more efficient especially on multiprocessors.
* Debugger: Now, only one breakpoint dialog is opened on the same breakpoint (avoid conflict).
* Debugger: Moving a breakpoint within the same routine is now done using Drag & Dropping the breakable slot icon (red bullet).
* Debugger: Object Viewer selector no longer auto-selects XML Viewer when the string looks like XML content.
* Debugger: Added a context menu entry to "unset" an environment variable in the "Execution parameters" tool.
* Debugger: Added an option in the "Edit Expression" dialog to show the "full error message" (i.e: include the exception trace) when an exception occurs during expression evaluation. By default, now only the short description is shown (to improve performance), but the full error message is available upon request.
* Debugger: Added the capability of copying to the clipboard the text representation of selected call stack elements (from the call stack tool) using Ctrl+C or Ctrl+Ins (this also includes representations of local+arguments)
Debugger engine

== Changes ==
* The experimental mode available in 6.5 and earlier version has become the default mode. To have access to the default mode of 6.5, one has to use the compatible version. It can be accessed on Windows via the Start menu shortcut or by using "-compat" on the command line.
* Compiler: Now the compiler will report usage of is keyword as obsolete in transitional mode and will reject it in standard mode.
* Compiler: Allowed manifest real constants to be assigned to REAL_32 entities without having the need to type the constant, that is to say `r_32 := 4.5' will now be accepted whereas before one had to do `r_32 := {REAL_32} 4.5'. This is to simplify migration from code that compiled fine under 6.5 and would not under 6.6 due to the removal of the conversion routine from REAL_64 to REAL_32.
* Compiler: When twinning a SPECIAL instance where capacity is much higher than its count the new copy will have its capacity set to count.
* Compiler: The storable format has changed to support versioning. This new format is only available in the default mode. When using the compatible mode it will store using the old format and no version information will be stored.
* Compiler: Changed the display of REAL/DOUBLE fields to show REAL_32 or REAL_64.
* Compiler: Changed the display of NaN/-Infinity/Infinity for real numbers so that it is the same on all our supported platforms.
* Libraries: Changed internal of MEDIUM_POLLER to use HASH_TABLE, as a consequence the queries read_command_list, write_command_list and exception_command_list are now obsolete and should not be used.

== Bug fixes ==
* Fixed an issue in which the error tooltip would keep flashing when the cursor is outside the EiffelStudio environment.
* Fixed an issue while searching text in the implementers or descendants view it would not scroll to the found text.
* Fixed an issue with the Error List pane in which the Error List would come up blank on error if it had been auto-hidden when EiffelStudio started.
* Fixed ARRAY2 so that it can be used in void-safe mode too. Improved ARRAY2 resizing efficiency.
* Made the THREAD class thread-safe which prevents using the same object to launch a new thread. Now there is a precondition is_launchable and a status report is_last_launch_successful to help in determining whether a thread was actually launched.
* Fixed precondition violation in {ARRAY}.force when compiling EiffelNet in void-safe mode.
* Fixed in void-safe mode conformance of detachable COMPARABLE to attached ANY. Fixes updated eweasel test#conform001.
* Fixed test#incr168 when recompilation did not regenerate the code in some complex cases when features are modified deep in inheritance tree. It also fixes eweasel test#exec283 and addresses a consistency issue with the order of merging inherited assertion clause that would not trigger the same output if recompiled from scratch after some incrementality changes (see eweasel test#incr124).
* Fixed bug#16545 when compiler did not detect that a new file does not contain an expected class after referencing it in a system (see test#incr340).
* Fixed several recompilation bugs (bug#16546, bug#16547, bug#16553) for cases when a feature with assertions is removed from a parent class while a child class remains unchanged (see test#incr341, test#incr342, test#incr343).
* Fixed recompilation bugs (bug#14525, bug#16052) that caused compiler crash or incorrect error message when checking inherited code of a client that refers to a feature that is (re)moved (see test#incr293, test#incr338).
* Fixed bug#16593 where finalizing twice in the same sessions with many changes in the system could cause the compiler to crash during degree -3.
* Fixed test#runtime016 due to an improper optimization of the call {SPECIAL}.copy_data when inlining is enabled. It could cause a memory corruption.
* Fixed bug#16626 bug that occurred when melted code called frozen code that called a melted agent triggering exception (see test#incr348).
* Fixed eweasel test#agent001 and test#agent013 by preventing wrong optimization when call to `{ROUTINE}.call' or `{FUNCTION}.item' are subject to dynamic binding.
* Fixed eweasel test#exec323 where comparison using <= or >= in melted mode which involved NaN was not yielding the same result as in workbench mode.
* Fixed eweasel test#store029 where retrieving a storable made by 6.3 or older could fail with a mismatch error when there is actually no mismatch.
* Fixed issue with remaining popup window for grid's cell.
* Fixed regression "Keep Assertions Checking" settings for expression evaluation.
* Fixed an issue in which EiffelStudio could hang when inspecting threads other than the current stopped one on platforms where thread identifiers are larger than 32-bit (e.g. Linux).
* Fixed issue related to setting conditional breakpoint resulting in unconditional breakpoint.
* Fixed issue in which execution is stopped in melted invariant.

Posted by Emmanuel Stapf 2010-05-26

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.