[[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:
<code>a: !A -- a cannot be used before it is attached
b: ?A -- b can be used before it is attached</code>
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: 
<code>if {o: !A} e then do_something_with (o) end</code>

* 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:
<code>f (a: ?ANY)
	do
		if a /= void then
			x := a.out
		end
	end</code>


==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 <eiffel>default_create</eiffel> from <eiffel>ANY</eiffel> 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).




