What was new in 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 autoindenting
- block indent and exdent.
- infinite level of Undo/Redo
- When edition a class text which has been successfully compiled, the class
will be fully `pick-and-dropable'.
- 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 Ace file is kept, but all changes are
done through a nice GUI making it simpler for beginners to create their first Ace 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 comittee. It has been replaced by ANY which does not inherit
any more from PLATFORM.
- Adaptation of the ARRAY class to the ELKS 2000 standard.
- This implies a change in our CONTAINER class where we renamed `empty' into
`is_empty' and made `empty' obsolete. If you were inheriting from CONTAINER
and redefining `empty', make sure to update your code so that you redefine
`is_empty' instead. That way your polymorphic calls will still work as expected without having to change all call to `empty' into calls to
`is_empty'.
- New implementation of `is_equal' on LIST which will now check that two
lists are identical if their items are identical.
- New implementation of `copy' on LIST.
- New implementation of an iterative `is_equal' on TREE which will now check
that two trees are identical if their items are identical.
- New implementation of an iterative `copy' on TREE, which recursively
copies the tree.
- New ROUTINE classes which perform better type checking on argument passing.
- Introduction of binary operations on INTEGER types:
`&', `|', `bit_xor', `bit_not', `bit_shift', `|>>', `|<<' and bit_text.
- Removed `infix "^"' from NUMERIC. 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' in BINARY_SEARCH_TREE to take an extra
argument. This was necessary to fix a problem that caused the `parent' attributes to become inconsistent under certain
conditions when calling `pruned'.
- Reimplemented the features `disjoint' and `symdif' of SUBSET. 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 type
`like Current'.
- Many smaller bugfixes for bugs that were reported by our customers
or that have been discovered during our development and testing.
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'.