[[Property:title|Major changes between ISE Eiffel 6.0 and ISE Eiffel 6.1]] [[Property:link_title|6.1]] [[Property:weight|-8]] [[Property:uuid|32beeca8-08df-4918-b231-8a14114fdd62]] ==What's new== {{seealso|See also: [[Differences between standard ECMA-367 and Eiffel Software implementation|Differences between standard ECMA-367 and Eiffel Software implementation]] }} * 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 from ANY 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).