Difference between revisions of "EiffelStudio 6.0 Features"

(Eiffel Language/Compiler)
(Eiffel Language/Compiler)
Line 51: Line 51:
 
::implies that ''SORTABLE_VECTOR'' [''T''] is only valid if ''T'' is a descendant of both ''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
 
* [[Language_road_map|ISO/ECMA Eiffel]]: Flat class checking
::A construct specimen that is valid in a class is not necessarily valid in a descendant.
+
::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.
 
::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.
 
::The type policy of ISO/ECMA Eiffel explicitly specifies that every feature must be valid in every class that has it.

Revision as of 23:11, 26 April 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)

  • Major new mechanism for the GUI: docking manager. This is based on a new "docking library", so you can also add docking to your own applications.
  • 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).
  • Tabbed editing of multiple classes within the same window.
  • Internationalization: English, French, Chinese, German and Russian interfaces. Volunteers for other languages welcome!
  • All keyboard shortcuts are now user-configurable.

New Tools

      • (Can someone please provide some explanations for each?)***
  • Dependency tool
  • Customized tools/formatters
  • Object viewer

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.

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)

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: you can expect that some code that previously compiled will now violate validity rules. This is justified: the code actually potential type errors. For this reason, 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 enabling it only on option.

Libraries

  • Encoding library