Difference between revisions of "EiffelStudio 6.0 Features"

 
(45 intermediate revisions by 7 users not shown)
Line 1: Line 1:
 
[[Category:Releases]]
 
[[Category:Releases]]
  
This page highlights some of the major feature changes between version 5.7 and the forthcoming 6.0 release of EiffelStudio.  
+
This page highlights some of the major feature changes between version 5.7 and the forthcoming 6.0 release of EiffelStudio.
  
For the 6.0 change log see [[EiffelStudio Releases]].
+
It is not a detailed log of changes and additions, but only lists the key new mechanisms directly improving the quality of the user experience. For the 6.0 change log see [[EiffelStudio Releases]].
  
 
== EiffelStudio (General) ==
 
== EiffelStudio (General) ==
  
* New docking manager graphical interface
+
*'''Docking manager''': major new mechanism for the GUI, providing a flexible and user-customizable GUI.
* Tabbed editing of multiple classes within the same window
+
::This mechanism is not specific to EiffelStudio but is based on the new ''Docking Library''; this means you can add docking to your own applications too.
* Internationalization (English, French, Chinese, German and Russian)
+
*'''Contextual menu''': major interface improvement:
* Contextual menu
+
::This offers EiffelStudio users the industry-standard effect of "right-click", while retaining the unique power of Eiffel's Pick and Drop. Parameterizable by users (i.e. EiffelStudio experts may prefer a different configuration from that appropriate for novices).
* All keyboard shortcuts are configurable
+
* '''Tabbed editing'''
 
+
::Makes it possible to keep multiple class editing sessions open within the same window.
== New Tools ==
+
* '''Internationalization'''
 +
::The EiffelStudio GUI is now available in various languages besides English.
 +
:::- Currently supported: English, French, Chinese, German and Russian interfaces.
 +
:::- Volunteers for checking and completing the translations are welcome.
 +
:::- Volunteers for other languages also are welcome.
 +
::This mechanism is not specific to EiffelStudio but is based on the new ''Internationalization Library''; this means you can internationalize your own applications too.
 +
* '''User-configurable shortcuts''': now applicable to all keyboard shortcuts.
  
 +
== New tools ==
 
* Dependency tool
 
* Dependency tool
 +
::An simple way to investigate into dependencies of a target/group/folder/class. Dependencies are shown in different levels to facilitate the tracking from the group level to feature call level.
 
* Customized tools/formatters
 
* Customized tools/formatters
 +
::The ability to add customized formatters in to existing/new tools such as a query/command formatter in Class tool which shows queries/commands of a class. A customized formatter is defined by a metric, so it's a quicker way to use metrics. And with customized tools, you can have several several caller formatters at the same time (Make sure preference "Link Tools" is set to False).
 
* Object viewer
 
* Object viewer
 +
::The ability to view an object in different way (browser, dumped, textual representation, XML) according to its nature.
  
 
== Debugger ==
 
== Debugger ==
General:
+
===General===
    - Improve performance and robustness of debugger.
+
*Along with the debugger integrated in the EiffelStudio GUI, you can now use a '''console-based debugger'''. Start it from the command line through ''-debug'' or via ''-loop''.
    - Added a console based debugger (in command line using: -debug or via -loop)
+
*Enhancements to the breakpoint mechanism: print messages, hit count for conditions, new "''Is True''" and "''Has Changed''" conditions.
    - Enhanced breakpoint mechanism by adding print message, hit count (condition),  
+
*Numerous improvements to the performance and robustness of the debugger.
      and provide "Is True" and "Has Changed" condition.
+
  
Expression evaluation (watch tool, condition ...):
+
===Expression evaluation (watch tool, condition ...)===
    - Added support of instruction evaluation (i.e: procedure call).
+
*It is now possible, during a debugging session, to execute an instruction, for example to call a procedure.
    - Expression are evaluated with all assertions turned off by default
+
*By default, expressions are now evaluated, during debugging, with all assertions turned off; you can restore assertion checking for any particular expression.
      (the user can restore assertion checking on each expression)
+
*Full support for disable/restore assertion checking during debugging in classic AND dotnet system.
    - Completed support for disable/restore assertion checking during debugging in classic AND dotnet system.
+
*Added support for instantiation of class (including manifest TUPLE and manifest ARRAY) on debugger expression evaluation .
  
Graphic debugger:
+
===Graphic debugger===
    - Redesign Debugging options dialog:
+
*New object viewer tool to browse an object, dump its structured or textual representation, or see XML in a tree.
        Better dialog to set the arguments, working directory.
+
*Watch tools: now includes auto expressions.
        The user can now add or modify the environment variables used by the debuggee.
+
*Greatly improved Debugging Options dialog:
        Added start (outside the IDE) workbench and finalized system on Debugging option dialogs
+
**Easier, more intuitive ways to set and retain arguments and working directory.
    - User can restart the debugging session without unraising and raising again the debugger's interface
+
**You can now add or modify the environment variables used by the debugger.
    - User can force the environment to stay in debugger mode.
+
**New possibilities in Debugging Options dialog: start debugger outside the IDE, finalized system
    - New object viewer tool to browse an object, dump its structured or textual representation, or see XML in a tree.
+
*You can now:
    - Call stack tool now indicates when a feature has a "rescue" clause.
+
*Force the environment to stay in debugger mode.
    - Cleaned objects grid by removing useless "Attributes" title row.
+
**Restart a debugging session without unraising the debugger's interface and raising it again.
    - The debugger shows state of "Once functions" and now also state of "Once procedures".
+
*Call stack tool now indicates when a feature has a "rescue" clause.
    - Added auto expressions on watch tools
+
*Cleaner object grid (no more "Attributes" title row, not needed)
 +
*It is now possible to change the order of 'Current, arguments, locals, ...' in the objects tool's grid.
 +
 
 +
== Class tool ==
 +
* Added class location information in ancestor, descendant, client and supplier formatters.
 +
* Added syntactical client/supplier options in client and supplier formatters.
 +
 
 +
== Feature Relation tool ==
 +
* Added reference locations in caller, callee, assigner, assignee, creator, creation formatters.
 +
 
 +
== Metric Tool ==
 +
* Added new criterion "value_of_metric_is". For more information, see metric tool documentation.
 +
* Added new metrics: Commands, Queries, Unused features.
 +
* Enabled metrics import, which allow metrics defined in other Eiffel systems to be imported into current system.
 +
* Added metric history support, which is a way to remember recently calculated metrics, recalculate them and check their value changes.
 +
* More accurate expression for basic metrics, modifiers of a criterion are shown.
 +
* All kinds of unit items (such as argument, local, line) are pickable.
 +
* Order of units displayed in metric selection area can be changed.
 +
 
 +
== External Output tool ==
 +
Added locale support. Different locales can be assigned to certain process to be launched. Specified locale applies to both the input and output of the process.
 +
 
 +
== C Output tool ==
 +
* Added locale to support display C compiler output.
 +
* Added the ability to show related workbench or finalized C code of a class or feature by dropping that class or feature to W_code or F_code button.
  
 
== Eiffel Language/Compiler ==
 
== Eiffel Language/Compiler ==
  
 
* [[Compilation Without Configuration]]
 
* [[Compilation Without Configuration]]
* Multi constraint formal generic type parameters
+
* [[Language_road_map|ISO/ECMA Eiffel]]: '''Multiple-constraint formal generic type parameters'''.
* Full Class Checking
+
::This is an often requested mechanism: the ability to specify that a formal generic parameter of a class represents a type that conforms to '''two or more''' listed types. For example, declaring
 +
::':''class''' ''SORTABLE_VECTOR'' [''G'' -> ''NUMERIC'', ''COMPARABLE''] ...
 +
::implies that ''SORTABLE_VECTOR'' [''T''] is only valid if ''T'' is a descendant of both ''NUMERIC'', ''COMPARABLE''.}}
 +
* [[Language_road_map|ISO/ECMA Eiffel]]: '''Flat class checking'''
 +
::This is another result of ISO/ECMA standardization, resulting from the observation that a construct specimen that is valid in a class is not necessarily valid in a descendant.
 +
::For example ''x'' := ''y'' in a routine ''r'' could be valid in a class ''C'', but in a descendant of ''C'' that redefines the type of ''x'' or ''y'' it might become invalid.
 +
::The type policy of ISO/ECMA Eiffel explicitly specifies that every feature must be valid in every class that has it.
 +
::''Warning 1'': code that previously compiled may now violate validity rules. This is justified: the code contains potential type errors. Since 6.0 avoids breaking existing code, flat class checking is enabled only on option.
 +
::''Warning 2'': flat class checking slows down compilation (as it needs to recheck inherited routines). This is another reason for not turning it on by default.
 +
* '''Reattachment of generic derivations with expanded parameters to entities with reference parameters'''.
 +
::Eiffel conformance rules allow to attach objects of an expanded type to entities of a reference type as well as to attach objects of a generic type to entities of an appropriate (possibly generic) type. But for a long time it was impossible, for example, to attach ''LIST'' [''BOOLEAN''] to an entity of type ''LIST'' [''ANY'']. This release removes this limitation thus making the type system even more uniform.
  
 
== Libraries ==
 
== Libraries ==
* Encoding library
+
 
 +
=== EiffelVision 2 ===
 +
 
 +
* Library is now thread-aware, meaning that non-GUI threads can interact with the main GUI thread in a thread-safe manner.
 +
 
 +
=== Encoding library ===

Latest revision as of 11:38, 20 May 2007


This page highlights some of the major feature changes between version 5.7 and the forthcoming 6.0 release of EiffelStudio.

It is not a detailed log of changes and additions, but only lists the key new mechanisms directly improving the quality of the user experience. For the 6.0 change log see EiffelStudio Releases.

EiffelStudio (General)

  • Docking manager: major new mechanism for the GUI, providing a flexible and user-customizable GUI.
This mechanism is not specific to EiffelStudio but is based on the new Docking Library; this means you can add docking to your own applications too.
  • Contextual menu: major interface improvement:
This offers EiffelStudio users the industry-standard effect of "right-click", while retaining the unique power of Eiffel's Pick and Drop. Parameterizable by users (i.e. EiffelStudio experts may prefer a different configuration from that appropriate for novices).
  • Tabbed editing
Makes it possible to keep multiple class editing sessions open within the same window.
  • Internationalization
The EiffelStudio GUI is now available in various languages besides English.
- Currently supported: English, French, Chinese, German and Russian interfaces.
- Volunteers for checking and completing the translations are welcome.
- Volunteers for other languages also are welcome.
This mechanism is not specific to EiffelStudio but is based on the new Internationalization Library; this means you can internationalize your own applications too.
  • User-configurable shortcuts: now applicable to all keyboard shortcuts.

New tools

  • Dependency tool
An simple way to investigate into dependencies of a target/group/folder/class. Dependencies are shown in different levels to facilitate the tracking from the group level to feature call level.
  • Customized tools/formatters
The ability to add customized formatters in to existing/new tools such as a query/command formatter in Class tool which shows queries/commands of a class. A customized formatter is defined by a metric, so it's a quicker way to use metrics. And with customized tools, you can have several several caller formatters at the same time (Make sure preference "Link Tools" is set to False).
  • Object viewer
The ability to view an object in different way (browser, dumped, textual representation, XML) according to its nature.

Debugger

General

  • Along with the debugger integrated in the EiffelStudio GUI, you can now use a console-based debugger. Start it from the command line through -debug or via -loop.
  • Enhancements to the breakpoint mechanism: print messages, hit count for conditions, new "Is True" and "Has Changed" conditions.
  • Numerous improvements to the performance and robustness of the debugger.

Expression evaluation (watch tool, condition ...)

  • It is now possible, during a debugging session, to execute an instruction, for example to call a procedure.
  • By default, expressions are now evaluated, during debugging, with all assertions turned off; you can restore assertion checking for any particular expression.
  • Full support for disable/restore assertion checking during debugging in classic AND dotnet system.
  • Added support for instantiation of class (including manifest TUPLE and manifest ARRAY) on debugger expression evaluation .

Graphic debugger

  • New object viewer tool to browse an object, dump its structured or textual representation, or see XML in a tree.
  • Watch tools: now includes auto expressions.
  • Greatly improved Debugging Options dialog:
    • Easier, more intuitive ways to set and retain arguments and working directory.
    • You can now add or modify the environment variables used by the debugger.
    • New possibilities in Debugging Options dialog: start debugger outside the IDE, finalized system
  • You can now:
  • Force the environment to stay in debugger mode.
    • Restart a debugging session without unraising the debugger's interface and raising it again.
  • Call stack tool now indicates when a feature has a "rescue" clause.
  • Cleaner object grid (no more "Attributes" title row, not needed)
  • It is now possible to change the order of 'Current, arguments, locals, ...' in the objects tool's grid.

Class tool

  • Added class location information in ancestor, descendant, client and supplier formatters.
  • Added syntactical client/supplier options in client and supplier formatters.

Feature Relation tool

  • Added reference locations in caller, callee, assigner, assignee, creator, creation formatters.

Metric Tool

  • Added new criterion "value_of_metric_is". For more information, see metric tool documentation.
  • Added new metrics: Commands, Queries, Unused features.
  • Enabled metrics import, which allow metrics defined in other Eiffel systems to be imported into current system.
  • Added metric history support, which is a way to remember recently calculated metrics, recalculate them and check their value changes.
  • More accurate expression for basic metrics, modifiers of a criterion are shown.
  • All kinds of unit items (such as argument, local, line) are pickable.
  • Order of units displayed in metric selection area can be changed.

External Output tool

Added locale support. Different locales can be assigned to certain process to be launched. Specified locale applies to both the input and output of the process.

C Output tool

  • Added locale to support display C compiler output.
  • Added the ability to show related workbench or finalized C code of a class or feature by dropping that class or feature to W_code or F_code button.

Eiffel Language/Compiler

This is an often requested mechanism: the ability to specify that a formal generic parameter of a class represents a type that conforms to two or more listed types. For example, declaring
':class' SORTABLE_VECTOR [G -> NUMERIC, COMPARABLE] ...
implies that SORTABLE_VECTOR [T] is only valid if T is a descendant of both NUMERIC, COMPARABLE.}}
This is another result of ISO/ECMA standardization, resulting from the observation that a construct specimen that is valid in a class is not necessarily valid in a descendant.
For example x := y in a routine r could be valid in a class C, but in a descendant of C that redefines the type of x or y it might become invalid.
The type policy of ISO/ECMA Eiffel explicitly specifies that every feature must be valid in every class that has it.
Warning 1: code that previously compiled may now violate validity rules. This is justified: the code contains potential type errors. Since 6.0 avoids breaking existing code, flat class checking is enabled only on option.
Warning 2: flat class checking slows down compilation (as it needs to recheck inherited routines). This is another reason for not turning it on by default.
  • Reattachment of generic derivations with expanded parameters to entities with reference parameters.
Eiffel conformance rules allow to attach objects of an expanded type to entities of a reference type as well as to attach objects of a generic type to entities of an appropriate (possibly generic) type. But for a long time it was impossible, for example, to attach LIST [BOOLEAN] to an entity of type LIST [ANY]. This release removes this limitation thus making the type system even more uniform.

Libraries

EiffelVision 2

  • Library is now thread-aware, meaning that non-GUI threads can interact with the main GUI thread in a thread-safe manner.

Encoding library