Version
Release notes for EiffelStudio 5.0
Graphical environment
- New Look and feel.
- New way of starting EiffelStudio and simplified the process of compiling an existing project.
- New editor with:
- smart syntax highlighting
- feature completion (by pressing Ctrl+Space after an identifier).
- syntax completion of major control statement (if, from, is,...)and of symbols such as
{
,[
,(
,"
,... - smart auto indenting
- block indent and exdent.
- infinite level of Undo/Redo
- When edition of a class text which has been successfully compiled, the class will be fully
pick-and-droppable
. - Faster rendering for Clickable, Flat, Contract (previously known as Short) and Flat Contract views.
- System tool has been replaced by a
project settings
window. The underlying mechanism of the configuration file is kept, but all changes are done through a nice GUI making it simpler for beginners to create their first configuration file. - Toolbars are now customizable
- EiffelCase has been merged within EiffelStudio to provide a true reverse engineering using the BON notation.
Compiler
The compiler has been improved in many ways and some functionality have been added. Check it out .
Debugger
- New debugger functionalities:
- one can step-in, step-out, step-by-step when they want to.
- one can put a breakpoint on the fly (Windows Only)
- one can see all local variables and arguments.
- one can set breakpoints in all kind of assertion clauses except in invariants.
- Debugging is faster.
Documentation
- New documentation generation (limited now to HTML) which is completely clickable as if within EiffelStudio. It also includes an EiffelCase-like documentation generation.
- Generation of XMI which can be used in tools such as Rational Rose.
Libraries
EiffelBase:
- No more
GENERAL
class as proposed by the NICE committee. It has been replaced by ANY which does not inherit any more fromPLATFORM
. - Adaptation of the
ARRAY
class to the ELKS 2000 standard. - This implies a change in our
CONTAINER
class where we renamedempty
intois_empty
and madeempty
obsolete. If you were inheriting fromCONTAINER
and redefiningempty
, make sure to update your code so that you redefineis_empty
instead. That way your polymorphic calls will still work as expected without having to change all call toempty
into calls tois_empty
. - New implementation of
is_equal
onLIST
which will now check that two lists are identical if their items are identical. - New implementation of
copy
onLIST
. - New implementation of an iterative
is_equal
onTREE
which will now check that two trees are identical if their items are identical. - New implementation of an iterative
copy
onTREE
, which recursively copies the tree. - New
ROUTINE
classes which perform better type checking on argument passing. - Introduction of binary operations on
INTEGER
types:infix "&"
,infix "|"
,bit_xor
,bit_not
,bit_shift
,infix "|>>"
,infix "|<<"
andbit_text
. - Removed
infix "^"
fromNUMERIC
. It does not break any inheritance, but break clients that were using this operator on an entity declared of type NUMERIC. This is due to the different return type of this operator depending the NUMERIC type you are handling. - Changed the signature of
pruned
inBINARY_SEARCH_TREE
to take an extra argument. This was necessary to fix a problem that caused theparent
attributes to become inconsistent under certain conditions when callingpruned
. - Re-implemented the features
disjoint
andsymdif
ofSUBSET
. These features caused problems under certain conditions and were also quite inefficient. The new implementation of these features uses the strategy pattern to choose among different versions of these calculations depending on the properties of the elements contained in the set. - All features on
SUBSET
that take another subset as an argument(e.g.intersect
) now accept any other subset type as an argument, independent of its underlying implementation, and not only subsets of typelike Current
. - Many smaller bug fixes for bugs that were reported by our customers or that have been discovered during our development andtesting.
WEL:
Modified classes relative to the use of registry keys to be written only using Eiffel and externals to Win32 API (no more C intermediates). In the process close_key
and delete_key
are now commands and not queries. To find out if it their call was successful, you can query last_call_successful
.
Back to 5.x