Version
Major changes between ISE Eiffel 6.0 and ISE Eiffel 6.1
What's new
- Multiple errors are reported for each compilation degree.
- Experimental support for Non-conforming Inheritance has been added (Classic only). Classes may now be inherited (using inherit {NONE} but no conformance of that class is implied.
- Attachment marks are supported. Now it's possible to specify whether an entity is attached or detachable:
a: !A -- a cannot be used before it is attached
b: ?A -- b can be used before it is attached
Default attachment status (for types without an attachment mark) is controlled by the option is_attached_by_default.
- Object test expression is a replacement for the reverse assignment construct with a new notion of scope:
if {o: !A} e then do_something_with (o) end
- Attached variables are subject to the new check that they are properly set before use, in particular, attached attributes must be set by a creation procedure and all attached local variables must be set before they are used. The checks are performed when the option is_void_safe is turned on.
- A feature call can be performed only on an attached target if the option is_void_safe is turned on.
- Certified attachment patterns (CAP) are used to identify additional cases when an entity is attached (controlled by the option is_void_safe). In particular, the following code is considered void-safe:
f (a: ?ANY)
do
if a /= void then
x := a.out
end
end
Improvements
- Improved speed of degree 3. Improvements are even more visible when the checking of inherited features in their descendants is enabled.
Changes
- No major known changes.
Bug fixes
- Fixed an issue where the version of
default_create fromANY would not yield a dynamic binding if statically it had an empty body (See test#exec280).
Compiler issues
- The options is_void_safe and is_attached_by_default are not tracked during recompilation, so in order to take any changes in their settings, the project has to be recompiled from scratch.
- Object test is not permitted inside a precondition or a check instruction.
- Object tests inside a feature should use different names for the corresponding locals.
Runtime/code generation issues
- Non-conforming inheritance dynamic conformance only works with Classic compilations, for .Net non-conforming inheritance has no effect on code generation
- Implemented time accounting on Windows.
Store/Retrieve issues
- Fixed a potential dead lock when an exception occurs while retrieving an object in a multithreaded environment (See test#store012).
Back to 6.x