<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://dev.eiffel.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Peter+gummer</id>
		<title>EiffelStudio: an EiffelSoftware project - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://dev.eiffel.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Peter+gummer"/>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/Special:Contributions/Peter_gummer"/>
		<updated>2026-05-07T22:25:58Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.24.1</generator>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=EiffelStudio_16.05_Releases&amp;diff=15428</id>
		<title>EiffelStudio 16.05 Releases</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=EiffelStudio_16.05_Releases&amp;diff=15428"/>
				<updated>2016-06-13T23:38:17Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: /* Bug fixes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Releases]]__NOTOC__{{ReleaseHistoryHeader}}&lt;br /&gt;
&lt;br /&gt;
= EiffelStudio 16.05 Releases=&lt;br /&gt;
&lt;br /&gt;
Beta download: https://ftp.eiffel.com/pub/beta/16.05/&lt;br /&gt;
&lt;br /&gt;
==16.05.x.x==&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
===Improvements===&lt;br /&gt;
===Feature removed===&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
*EiffelBuild: Fixed a bug causing incompletely initialized application and environment objects to be used when showing a window in a project generated by EiffelBuild.&lt;br /&gt;
*library (Vision): bug#19241 - Fixed a non-critical bug in the feature &amp;lt;e&amp;gt;{EV_DIALOG_IMP_COMMON}.show&amp;lt;/e&amp;gt; that might lead to infinite recursion on Windows, though the feature is never called because it is always redefined except in classes for modal dialogs where a different feature is used for display.&lt;br /&gt;
&lt;br /&gt;
===User changes===&lt;br /&gt;
===Developer changes===&lt;br /&gt;
&lt;br /&gt;
==16.05.9.8814==&lt;br /&gt;
&lt;br /&gt;
===Improvements===&lt;br /&gt;
*compiler: Provided more details  (such as option name, rule name, kind of syntax error) for errors in code analysis command-line options.&lt;br /&gt;
*compiler: Supported position-independent code analysis options (temporary retaining old code analysis options) that act like regular EiffelStudio command-line options:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
-ca_class (-all | &amp;lt;class_name&amp;gt;)&lt;br /&gt;
-ca_default&lt;br /&gt;
-ca_rule &amp;lt;rule_name_with_optional_setting&amp;gt;&lt;br /&gt;
-ca_setting &amp;lt;preference_file_name&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
*compiler: Relaxed void safety rules for local variables and &amp;lt;e&amp;gt;Result&amp;lt;/e&amp;gt; by allowing assigning of detachable values to them even when their type is attached. The change allows dropping explicit detachable marks in local declarations and simplifying code that uses Result, e.g.,&lt;br /&gt;
&amp;lt;e&amp;gt;&lt;br /&gt;
         foo: X&lt;br /&gt;
                 local&lt;br /&gt;
                         r: detachable X&lt;br /&gt;
                 do&lt;br /&gt;
                         r := something&lt;br /&gt;
                         if not attached r then&lt;br /&gt;
                                 r := something_else_attached&lt;br /&gt;
                         end&lt;br /&gt;
                         Result := r&lt;br /&gt;
                 end&lt;br /&gt;
&amp;lt;/e&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
&amp;lt;e&amp;gt;&lt;br /&gt;
         foo: X&lt;br /&gt;
                 do&lt;br /&gt;
                         if attached something as r then&lt;br /&gt;
                                 Result := r&lt;br /&gt;
                         else&lt;br /&gt;
                                 Result := something_else_attached&lt;br /&gt;
                         end&lt;br /&gt;
                 end&lt;br /&gt;
&amp;lt;/e&amp;gt;&lt;br /&gt;
can now be rewritten as&lt;br /&gt;
&amp;lt;e&amp;gt;&lt;br /&gt;
         foo: X&lt;br /&gt;
                 do&lt;br /&gt;
                         Result := something&lt;br /&gt;
                         if not attached Result then&lt;br /&gt;
                                 Result := something_else_attached&lt;br /&gt;
                         end&lt;br /&gt;
                 end&lt;br /&gt;
&amp;lt;/e&amp;gt;&lt;br /&gt;
The change does not allow previously void-unsafe code to be treated as void-safe, but may affect errors reported by the compiler, in particular:&lt;br /&gt;
# VEVI errors may be now reported as VUTA(2) when a local of an attached type is used as a target of call before it is attached.&lt;br /&gt;
# VEVI errors may be now reported as VJAR or VUAR when a local of an attached type is used as a source expression before it is attached.&lt;br /&gt;
# VJAR errors may now be reported as VUTA(2) when a local of an attached type is assigned a detachable value and is later used as a target of a call.&lt;br /&gt;
# VJAR errors may now be reported as VEVI when &amp;lt;e&amp;gt;Result&amp;lt;/e&amp;gt; of an attached type is assigned a detachable value.&lt;br /&gt;
*compiler: Improved code generation for iterative form of loops in finalized mode by taking into account cursor types provided by iterable classes.&lt;br /&gt;
*compiler: Avoided object creation when accessing an attribute (usually &amp;lt;e&amp;gt;item&amp;lt;/e&amp;gt;) on an expression of a basic type.&lt;br /&gt;
*compiler: Slightly improved performance of feature call on void target checks in finalized mode.&lt;br /&gt;
*compiler: Supported nested inlining of &amp;lt;e&amp;gt;{SPECIAL}.item&amp;lt;/e&amp;gt; in finalized mode.&lt;br /&gt;
*library: Improved performance of iteration forms of loops for targets of the following classes: &amp;lt;e&amp;gt;ARRAY&amp;lt;/e&amp;gt;, &amp;lt;e&amp;gt;ARRAYED_LIST&amp;lt;/e&amp;gt;, &amp;lt;e&amp;gt;SPECIAL&amp;lt;/e&amp;gt;, &amp;lt;e&amp;gt;READABLE_STRING_32&amp;lt;/e&amp;gt;, &amp;lt;e&amp;gt;READABLE_STRING_8&amp;lt;/e&amp;gt;.&lt;br /&gt;
*EiffelStudio: Improved reporting for errors in regular expressions used in include and exclude file rules in ECF by adding position information and providing error description all the time.&lt;br /&gt;
&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
*EiffelStudio: bug#19173 - Fixed a bug that caused an exception when requesting to generate documentation or XMI for a target with a library disabled by a condition.&lt;br /&gt;
*compiler: test#codeanalysis019 - Fixed a bug that caused duplicate reports for CA020 rule (unused assigned variable) inside one class or spurious reports for this rule on several classes.&lt;br /&gt;
*compiler: bug#18028 (test#final114), test#final123 - Fixed a bug that caused incorrect code generation when inlining &amp;lt;e&amp;gt;across&amp;lt;/e&amp;gt; loops or &amp;lt;e&amp;gt;separate&amp;lt;/e&amp;gt; instructions.&lt;br /&gt;
*compiler: test#scoop077 - Fixed a bug in applying SCOOP semantics rules and checking SCOOP validity rules for iteration forms of loops with a target of a separate type.&lt;br /&gt;
*EiffelStudio: bug#19212 - Fixed a bug that caused an exception when using metrics tool and affected [[EiffelStudio 15.12 Releases]].&lt;br /&gt;
*library: bug#19213 - Fixed a bug in an external signature of one of WEL features that might cause a crash when compiled with Gobo compiler.&lt;br /&gt;
*compiler: test#attach118 - Fixed a bug that might cause incorrect error reports for inherited code when target of reattachment involving conversion is of a detachable type.&lt;br /&gt;
*EiffelStudio: Added checks for validity of regular expressions used in include and exclude file rules specified in the project settings dialog with rejection of invalid regular expression using the corresponding error dialog to avoid a possibility to store ECF that cannot be retrieved.&lt;br /&gt;
&lt;br /&gt;
===User changes===&lt;br /&gt;
*EiffelStudio: Changed order of processing of arguments taken from the command line and from the environment variable &amp;lt;code&amp;gt;ISE_EC_FLAGS&amp;lt;/code&amp;gt;. Now arguments are first read from the environment variable and then from the command line.&lt;br /&gt;
*compiler: Marked old code analysis command-line options as obsolete.&lt;br /&gt;
*library: Changed interface and implementation of cursor classes used to implement &amp;lt;e&amp;gt;across&amp;lt;/e&amp;gt; loops to get better performance.&lt;br /&gt;
*library: Added protection of window objects (of type &amp;lt;e&amp;gt;EV_WINDOW&amp;lt;/e&amp;gt; and descendants) from garbage collection when there are no references to them or to objects holding such references and the associated windows become visible by using a feature &amp;lt;e&amp;gt;show&amp;lt;/e&amp;gt; or its modifications (&amp;lt;e&amp;gt;show_modal_to_window&amp;lt;/e&amp;gt; and &amp;lt;e&amp;gt;show_relative_to_window&amp;lt;/e&amp;gt;) until the windows become hidden using &amp;lt;e&amp;gt;hide&amp;lt;/e&amp;gt; or &amp;lt;e&amp;gt;destroy&amp;lt;/e&amp;gt;. The protection should not affect any existing applications, but allows for easier window management in user's code especially in SCOOP mode.&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=EiffelStudio_16.05_Releases&amp;diff=15427</id>
		<title>EiffelStudio 16.05 Releases</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=EiffelStudio_16.05_Releases&amp;diff=15427"/>
				<updated>2016-06-12T00:19:30Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: /* 16.05.x.x */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Releases]]__NOTOC__{{ReleaseHistoryHeader}}&lt;br /&gt;
&lt;br /&gt;
= EiffelStudio 16.05 Releases=&lt;br /&gt;
&lt;br /&gt;
Beta download: https://ftp.eiffel.com/pub/beta/16.05/&lt;br /&gt;
&lt;br /&gt;
==16.05.x.x==&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
===Improvements===&lt;br /&gt;
===Feature removed===&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
*EiffelBuild: Fixed a bug causing incompletely initialized application and environment objects to be used when showing a window in a project generated by EiffelBuild.&lt;br /&gt;
*library (Vision): bug#19241 - Fixed a non-critical bug in the feature &amp;lt;e&amp;gt;{EV_DIALOG_IMP_COMMON}.show&amp;lt;/e&amp;gt; that might lead to infinite recursion on Windows, though the feature is never called because it is redefined only in classes for modal dialogs where a different feature is used for display.&lt;br /&gt;
&lt;br /&gt;
===User changes===&lt;br /&gt;
===Developer changes===&lt;br /&gt;
&lt;br /&gt;
==16.05.9.8814==&lt;br /&gt;
&lt;br /&gt;
===Improvements===&lt;br /&gt;
*compiler: Provided more details  (such as option name, rule name, kind of syntax error) for errors in code analysis command-line options.&lt;br /&gt;
*compiler: Supported position-independent code analysis options (temporary retaining old code analysis options) that act like regular EiffelStudio command-line options:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
-ca_class (-all | &amp;lt;class_name&amp;gt;)&lt;br /&gt;
-ca_default&lt;br /&gt;
-ca_rule &amp;lt;rule_name_with_optional_setting&amp;gt;&lt;br /&gt;
-ca_setting &amp;lt;preference_file_name&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
*compiler: Relaxed void safety rules for local variables and &amp;lt;e&amp;gt;Result&amp;lt;/e&amp;gt; by allowing assigning of detachable values to them even when their type is attached. The change allows dropping explicit detachable marks in local declarations and simplifying code that uses Result, e.g.,&lt;br /&gt;
&amp;lt;e&amp;gt;&lt;br /&gt;
         foo: X&lt;br /&gt;
                 local&lt;br /&gt;
                         r: detachable X&lt;br /&gt;
                 do&lt;br /&gt;
                         r := something&lt;br /&gt;
                         if not attached r then&lt;br /&gt;
                                 r := something_else_attached&lt;br /&gt;
                         end&lt;br /&gt;
                         Result := r&lt;br /&gt;
                 end&lt;br /&gt;
&amp;lt;/e&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
&amp;lt;e&amp;gt;&lt;br /&gt;
         foo: X&lt;br /&gt;
                 do&lt;br /&gt;
                         if attached something as r then&lt;br /&gt;
                                 Result := r&lt;br /&gt;
                         else&lt;br /&gt;
                                 Result := something_else_attached&lt;br /&gt;
                         end&lt;br /&gt;
                 end&lt;br /&gt;
&amp;lt;/e&amp;gt;&lt;br /&gt;
can now be rewritten as&lt;br /&gt;
&amp;lt;e&amp;gt;&lt;br /&gt;
         foo: X&lt;br /&gt;
                 do&lt;br /&gt;
                         Result := something&lt;br /&gt;
                         if not attached Result then&lt;br /&gt;
                                 Result := something_else_attached&lt;br /&gt;
                         end&lt;br /&gt;
                 end&lt;br /&gt;
&amp;lt;/e&amp;gt;&lt;br /&gt;
The change does not allow previously void-unsafe code to be treated as void-safe, but may affect errors reported by the compiler, in particular:&lt;br /&gt;
# VEVI errors may be now reported as VUTA(2) when a local of an attached type is used as a target of call before it is attached.&lt;br /&gt;
# VEVI errors may be now reported as VJAR or VUAR when a local of an attached type is used as a source expression before it is attached.&lt;br /&gt;
# VJAR errors may now be reported as VUTA(2) when a local of an attached type is assigned a detachable value and is later used as a target of a call.&lt;br /&gt;
# VJAR errors may now be reported as VEVI when &amp;lt;e&amp;gt;Result&amp;lt;/e&amp;gt; of an attached type is assigned a detachable value.&lt;br /&gt;
*compiler: Improved code generation for iterative form of loops in finalized mode by taking into account cursor types provided by iterable classes.&lt;br /&gt;
*compiler: Avoided object creation when accessing an attribute (usually &amp;lt;e&amp;gt;item&amp;lt;/e&amp;gt;) on an expression of a basic type.&lt;br /&gt;
*compiler: Slightly improved performance of feature call on void target checks in finalized mode.&lt;br /&gt;
*compiler: Supported nested inlining of &amp;lt;e&amp;gt;{SPECIAL}.item&amp;lt;/e&amp;gt; in finalized mode.&lt;br /&gt;
*library: Improved performance of iteration forms of loops for targets of the following classes: &amp;lt;e&amp;gt;ARRAY&amp;lt;/e&amp;gt;, &amp;lt;e&amp;gt;ARRAYED_LIST&amp;lt;/e&amp;gt;, &amp;lt;e&amp;gt;SPECIAL&amp;lt;/e&amp;gt;, &amp;lt;e&amp;gt;READABLE_STRING_32&amp;lt;/e&amp;gt;, &amp;lt;e&amp;gt;READABLE_STRING_8&amp;lt;/e&amp;gt;.&lt;br /&gt;
*EiffelStudio: Improved reporting for errors in regular expressions used in include and exclude file rules in ECF by adding position information and providing error description all the time.&lt;br /&gt;
&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
*EiffelStudio: bug#19173 - Fixed a bug that caused an exception when requesting to generate documentation or XMI for a target with a library disabled by a condition.&lt;br /&gt;
*compiler: test#codeanalysis019 - Fixed a bug that caused duplicate reports for CA020 rule (unused assigned variable) inside one class or spurious reports for this rule on several classes.&lt;br /&gt;
*compiler: bug#18028 (test#final114), test#final123 - Fixed a bug that caused incorrect code generation when inlining &amp;lt;e&amp;gt;across&amp;lt;/e&amp;gt; loops or &amp;lt;e&amp;gt;separate&amp;lt;/e&amp;gt; instructions.&lt;br /&gt;
*compiler: test#scoop077 - Fixed a bug in applying SCOOP semantics rules and checking SCOOP validity rules for iteration forms of loops with a target of a separate type.&lt;br /&gt;
*EiffelStudio: bug#19212 - Fixed a bug that caused an exception when using metrics tool and affected [[EiffelStudio 15.12 Releases]].&lt;br /&gt;
*library: bug#19213 - Fixed a bug in an external signature of one of WEL features that might cause a crash when compiled with Gobo compiler.&lt;br /&gt;
*compiler: test#attach118 - Fixed a bug that might cause incorrect error reports for inherited code when target of reattachment involving conversion is of a detachable type.&lt;br /&gt;
*EiffelStudio: Added checks for validity of regular expressions used in include and exclude file rules specified in the project settings dialog with rejection of invalid regular expression using the corresponding error dialog to avoid a possibility to store ECF that cannot be retrieved.&lt;br /&gt;
&lt;br /&gt;
===User changes===&lt;br /&gt;
*EiffelStudio: Changed order of processing of arguments taken from the command line and from the environment variable &amp;lt;code&amp;gt;ISE_EC_FLAGS&amp;lt;/code&amp;gt;. Now arguments are first read from the environment variable and then from the command line.&lt;br /&gt;
*compiler: Marked old code analysis command-line options as obsolete.&lt;br /&gt;
*library: Changed interface and implementation of cursor classes used to implement &amp;lt;e&amp;gt;across&amp;lt;/e&amp;gt; loops to get better performance.&lt;br /&gt;
*library: Added protection of window objects (of type &amp;lt;e&amp;gt;EV_WINDOW&amp;lt;/e&amp;gt; and descendants) from garbage collection when there are no references to them or to objects holding such references and the associated windows become visible by using a feature &amp;lt;e&amp;gt;show&amp;lt;/e&amp;gt; or its modifications (&amp;lt;e&amp;gt;show_modal_to_window&amp;lt;/e&amp;gt; and &amp;lt;e&amp;gt;show_relative_to_window&amp;lt;/e&amp;gt;) until the windows become hidden using &amp;lt;e&amp;gt;hide&amp;lt;/e&amp;gt; or &amp;lt;e&amp;gt;destroy&amp;lt;/e&amp;gt;. The protection should not affect any existing applications, but allows for easier window management in user's code especially in SCOOP mode.&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=EiffelStudio_16.05_Releases&amp;diff=15392</id>
		<title>EiffelStudio 16.05 Releases</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=EiffelStudio_16.05_Releases&amp;diff=15392"/>
				<updated>2016-02-26T10:02:36Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: /* Improvements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Releases]]__NOTOC__{{ReleaseHistoryHeader}}&lt;br /&gt;
&lt;br /&gt;
= EiffelStudio 16.05.x Releases=&lt;br /&gt;
&lt;br /&gt;
Beta download: https://ftp.eiffel.com/pub/beta/16.05/&lt;br /&gt;
&lt;br /&gt;
==16.05.x.x==&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
===Improvements===&lt;br /&gt;
*compiler: Provided more details  (such as option name, rule name, kind of syntax error) for errors in code analysis command-line options.&lt;br /&gt;
*compiler: Supported position-independent code analysis options (temporary retaining old code analysis options) that act like regular EiffelStudio command-line options:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
-ca_class (-all | &amp;lt;class_name&amp;gt;)&lt;br /&gt;
-ca_default&lt;br /&gt;
-ca_rule &amp;lt;rule_name_with_optional_setting&amp;gt;&lt;br /&gt;
-ca_setting &amp;lt;preference_file_name&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
*compiler: Relaxed void safety rules for local variables and &amp;lt;e&amp;gt;Result&amp;lt;/e&amp;gt; by allowing assigning of detachable values to them even when their type is attached. The change allows dropping explicit detachable marks in local declarations and simplifying code that uses Result, e.g.,&lt;br /&gt;
&amp;lt;e&amp;gt;&lt;br /&gt;
         foo: X&lt;br /&gt;
                 local&lt;br /&gt;
                         r: detachable X&lt;br /&gt;
                 do&lt;br /&gt;
                         r := something&lt;br /&gt;
                         if not attached r then&lt;br /&gt;
                                 r := something_else_attached&lt;br /&gt;
                         end&lt;br /&gt;
                         Result := r&lt;br /&gt;
                 end&lt;br /&gt;
&amp;lt;/e&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
&amp;lt;e&amp;gt;&lt;br /&gt;
         foo: X&lt;br /&gt;
                 do&lt;br /&gt;
                         if attached something as r then&lt;br /&gt;
                                 Result := r&lt;br /&gt;
                         else&lt;br /&gt;
                                 Result := something_else_attached&lt;br /&gt;
                         end&lt;br /&gt;
                 end&lt;br /&gt;
&amp;lt;/e&amp;gt;&lt;br /&gt;
can now be rewritten as&lt;br /&gt;
&amp;lt;e&amp;gt;&lt;br /&gt;
         foo: X&lt;br /&gt;
                 do&lt;br /&gt;
                         Result := something&lt;br /&gt;
                         if not attached Result then&lt;br /&gt;
                                 Result := something_else_attached&lt;br /&gt;
                         end&lt;br /&gt;
                 end&lt;br /&gt;
&amp;lt;/e&amp;gt;&lt;br /&gt;
The change does not allow previously void-unsafe code to be treated as void-safe, but may affect errors reported by the compiler, in particular:&lt;br /&gt;
# VEVI errors may be now reported as VUTA(2) when a local of an attached type is used as a target of call before it is attached.&lt;br /&gt;
# VEVI errors may be now reported as VJAR or VUAR when a local of an attached type is used as a source expression before it is attached.&lt;br /&gt;
# VJAR errors may now be reported as VUTA(2) when a local of an attached type is assigned a detachable value and is later used as a target of a call.&lt;br /&gt;
# VJAR errors may now be reported as VEVI when &amp;lt;e&amp;gt;Result&amp;lt;/e&amp;gt; of an attached type is assigned a detachable value.&lt;br /&gt;
&lt;br /&gt;
===Feature removed===&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
*EiffelStudio: bug#19173 - Fixed a bug that caused an exception when requesting to generate documentation or XMI for a target with a library disabled by a condition.&lt;br /&gt;
*compiler: test#codeanalysis019 - Fixed a bug that caused duplicate reports for CA020 rule (unused assigned variable) inside one class or spurious reports for this rule on several classes.&lt;br /&gt;
&lt;br /&gt;
===User changes===&lt;br /&gt;
*EiffelStudio: Changed order of processing of arguments taken from the command line and from the environment variable &amp;lt;code&amp;gt;ISE_EC_FLAGS&amp;lt;/code&amp;gt;. Now arguments are first read from the environment variable and then from the command line.&lt;br /&gt;
*compiler: Marked old code analysis command-line options as obsolete.&lt;br /&gt;
&lt;br /&gt;
===Developer changes===&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=EiffelOnMac&amp;diff=15345</id>
		<title>EiffelOnMac</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=EiffelOnMac&amp;diff=15345"/>
				<updated>2016-01-04T03:35:48Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: /* Using MacPorts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:EiffelStudio]]&lt;br /&gt;
[[Category:Macintosh]]&lt;br /&gt;
&lt;br /&gt;
This page gives you an overview about how to get EiffelStudio running on your Mac (Mavericks or above).&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
&lt;br /&gt;
*'''X11 (XQuartz)''': install version 2.7.5 minimum from http://xquartz.macosforge.org.&lt;br /&gt;
*You will need to install '''Xcode''' from the App Store. After installing Xcode, make sure to install the command line tools by typing:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xcode-select --install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will popup a dialog asking if you want to install the command line developer tools. &lt;br /&gt;
&lt;br /&gt;
{{Note|If you have an OS older than 10.10 (e.g. 10.9.5) you might have a problem installing Xcode from the App Store. You can then go to https://developer.apple.com/downloads/ (Apple ID needed). Remember to install the command line tools.}}&lt;br /&gt;
&lt;br /&gt;
{{Note| Advanced users may not need to install Xcode as long as you install the '''development tools'''. Even though you save in download time, you might waste  a lot of time trying to fix missing dependencies. In other words, unless you are feeling adventurous, do install Xcode.}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Using MacPorts ===&lt;br /&gt;
MacPorts is a tool that allows you to use many Unix applications on the Mac. We have created a package in the MacPorts repository that allows you to to install Eiffel Studio with all dependencies in a convenient way. First, install [http://guide.macports.org/#installing MacPorts].&lt;br /&gt;
&lt;br /&gt;
Now simply type (from a bash [http://guides.macrumors.com/Terminal terminal]):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port install eiffelstudio&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will actually compile and install the whole EiffelStudio delivery. This takes about 15 minutes on a 2013 Mac.&lt;br /&gt;
&lt;br /&gt;
When a new release of EiffelStudio becomes available, it may take some weeks before it's available from MacPorts. You can check by running this command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
port info eiffelstudio&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once the new release is available, you can upgrade like so:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port selfupdate&lt;br /&gt;
sudo port upgrade outdated&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using Homebrew ===&lt;br /&gt;
A light-weight alternative to installing MacPorts is [https://github.com/Homebrew/homebrew/blob/master/share/doc/homebrew/Installation.md#installation Homebrew].&lt;br /&gt;
Once Homebrew is installed type the following commands to install EiffelStudio (from a bash [http://guides.macrumors.com/Terminal terminal]):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
brew update&lt;br /&gt;
brew tap homebrew/x11&lt;br /&gt;
brew install eiffelstudio&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using binary packages ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|This method still requires an initial installation via MacPorts or Homebrew.}}&lt;br /&gt;
&lt;br /&gt;
Download the latest .tar.bz2 package from the Eiffel Software site that matches MacPorts or Homebrew. Then follow the same [https://docs.eiffel.com/book/eiffelstudio/eiffelstudio-linux instructions as the Linux version] to setup the environment variables needed to run EiffelStudio. Keep the ISE_PLATFORM value to macosx-x86-64.&lt;br /&gt;
&lt;br /&gt;
== Starting EiffelStudio installed via MacPorts ==&lt;br /&gt;
&lt;br /&gt;
Simply navigate to /Applications/MacPorts/Eiffel''XX'' and double click the EiffelStudio icon.&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can also start EiffelStudio from the command line by entering the command 'estudio' or use the command-line eiffel compiler 'ec'.&lt;br /&gt;
&lt;br /&gt;
==Hints==&lt;br /&gt;
* Pick and Drop works with Apple-key + mouse click.&lt;br /&gt;
* To set up the correct (default) browsers use &amp;quot;open&amp;quot; as your command-line browser in Tools&amp;gt;Preferences...&lt;br /&gt;
* The F10 and F11 debugging shortcuts conflict with the standard Exposé keys. Here are some workarounds:&lt;br /&gt;
** Use the toolbar instead.&lt;br /&gt;
** Reassign these shortcuts in EiffelStudio (Tools&amp;gt;Preferences).&lt;br /&gt;
** Reassign the Exposé keys in System Preferences.&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
=== How can I make EiffelStudio on the Mac look nicer? ===&lt;br /&gt;
* From macports, install the gtk2 (if not already installed) and gtk-chtheme packets. Then run gtk-chtheme and you get a nice GUI to choose your theme. Additional GTK themes can be put in  /opt/local/share/themes/ (There a thousands of them on the web, for example here : [http://art.gnome.org/themes/gtk2 http://art.gnome.org/themes/gtk2])&lt;br /&gt;
&lt;br /&gt;
=== Typing ec or estudio on the command line doesn't work ===&lt;br /&gt;
To run the '''ec''' compiler from your shell, set up variables similar to these (e.g. in ~/.profile):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Setting variables for EiffelStudio.&lt;br /&gt;
export ISE_EIFFEL=/Applications/MacPorts/Eiffel66&lt;br /&gt;
export ISE_PLATFORM=macosx-ppc (or macosx-x86)&lt;br /&gt;
export ISE_PROJECTS=$HOME&lt;br /&gt;
export ES_PATH=$ISE_EIFFEL/studio/spec/$ISE_PLATFORM/bin&lt;br /&gt;
export PATH=$ES_PATH:$PATH&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The latest release of EiffelStudio isn't available yet via MacPorts===&lt;br /&gt;
&lt;br /&gt;
If you want to upgrade to the latest release of EiffelStudio, but it isn't available yet via MacPorts, the easiest and quickest thing is to install from binary packages as noted above. Nonetheless, if you really want to install it via MacPorts, here's how.&lt;br /&gt;
&lt;br /&gt;
MacPorts installs a particular version of EiffelStudio by following the rules defined in a '''Portfile'''. For example, http://trac.macports.org/browser/trunk/dports/lang/eiffelstudio71/Portfile is the Portfile for EiffelStudio 7.1. The person who maintains EiffelStudio for MacPorts has to write this file and upload it, but they might not have done so yet. You could make enquiries about when it will be available, but if you want to get the latest urgently it isn't hard to write your own Portfile and run it locally. Here's how.&lt;br /&gt;
&lt;br /&gt;
http://guide.macports.org/#development.local-repositories explains how to do it.&lt;br /&gt;
# Go to https://sourceforge.net/projects/eiffelstudio/files and download the relevant PorterPackage file.&lt;br /&gt;
# Run '''openssl''' to find out the '''checksum''' of the PorterPackage file. E.g., for EiffelStudio 7.2 the command is '''openssl rmd160 ~/Downloads/PorterPackage_72_91284_gpl.tar'''.&lt;br /&gt;
# Open /opt/local/etc/macports/sources.conf in a text editor (with super user privileges). Insert a line as explained on http://guide.macports.org, e.g., file:///Applications/MacPorts/ports&lt;br /&gt;
# Create the Portfile in a text editor, e.g., file:///Applications/MacPorts/ports/lang/eiffelstudio72/Portfile&lt;br /&gt;
#* Copy the contents of the most recently available EiffelStudio Portfile (e.g., from http://trac.macports.org/browser/trunk/dports/lang/eiffelstudio71/Portfile) into your Portfile.&lt;br /&gt;
#* Correct the '''name''', '''minor_version''' and '''version'''.&lt;br /&gt;
#* Make sure that the '''distname''' will resolve to the current PorterPackage file name that you see on https://sourceforge.net/projects/eiffelstudio/files&lt;br /&gt;
#* Set the first '''checksums''' to the value that you got earlier from running openssl.&lt;br /&gt;
#* You've finished writing your Portfile. Save it!&lt;br /&gt;
# Go to the ports directory, e.g., cd /Applications/MacPorts/ports&lt;br /&gt;
# sudo portindex&lt;br /&gt;
# You should now be able to install in the usual way, e.g., sudo port install eiffelstudio72&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=EiffelStudio_15.08_Releases&amp;diff=15286</id>
		<title>EiffelStudio 15.08 Releases</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=EiffelStudio_15.08_Releases&amp;diff=15286"/>
				<updated>2015-04-22T02:39:45Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: /* New features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Releases]]__NOTOC__{{ReleaseHistoryHeader}}&lt;br /&gt;
&lt;br /&gt;
= EiffelStudio 15.05.x Releases=&lt;br /&gt;
&lt;br /&gt;
Beta download: https://ftp.eiffel.com/pub/beta/15.05/&lt;br /&gt;
&lt;br /&gt;
==15.05.x.x==&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
===Improvements===&lt;br /&gt;
===Feature removed===&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
*runtime: The SCOOP runtime is now fully written in C to avoid portability issues.&lt;br /&gt;
&lt;br /&gt;
===User changes===&lt;br /&gt;
===Developer changes===&lt;br /&gt;
&lt;br /&gt;
==15.05.9.7047 (April 9th 2015)==&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
*eiffelstudio: Added ability to control the behavior of dropping a class stone on a tab by either replacing it, always creating a new tab or creating a new tab if the current tab had some edits.&lt;br /&gt;
&lt;br /&gt;
===Improvements===&lt;br /&gt;
*{{red|compiler: Changed agent creation rules for separate targets. This change makes it possible to introduce library features that help users to avoid writing small little wrapper features in SCOOP to control an object. It is now possible to create agents on separate, uncontrolled target. The newly created agent object is placed on the same processor as the target, and it inherits the 'is_controlled' status.}}&lt;br /&gt;
* library: bug#19045 - cleaned up comments in &amp;lt;e&amp;gt;NATURAL_nn_REF&amp;lt;/e&amp;gt; classes.&lt;br /&gt;
&lt;br /&gt;
===Feature removed===&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
*compiler: Fixed eweasel test#final122 and bug#19028 where we would incorrectly optimize `expr and False' or `expr and then False' into just `expr' which is wrong if `expr' is True (as the whole expression would be True and not False). &lt;br /&gt;
*compiler: Optimized `expr and False' and `expr and then False' to just False if `expr' is a local, a argument, Result, Current, an attribute access or if it is the `and' boolean op.&lt;br /&gt;
*eiffelstudio: Fixed issue introduced in version 7.3 of EiffelStudio where .NET classes would not appear in tree view.&lt;br /&gt;
*eiffelstudio: Improved tooltip of assemblies by separating the assembly name from the namespace with &amp;quot;: &amp;quot;.&lt;br /&gt;
*eiffelstudio: Fixed tooltip of referenced assemblies to show assembly information instead of just the path to the assembly.&lt;br /&gt;
*library: Fixed a bug in &amp;lt;e&amp;gt;{STRING_8}.trim&amp;lt;/e&amp;gt; and &amp;lt;e&amp;gt;{STRING_32}.trim&amp;lt;/e&amp;gt; that caused a postcondition violation in this procedure.&lt;br /&gt;
&lt;br /&gt;
===User changes===&lt;br /&gt;
===Developer changes===&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=2013_News&amp;diff=15277</id>
		<title>2013 News</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=2013_News&amp;diff=15277"/>
				<updated>2015-03-02T22:40:05Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: /* November 28th */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:News]]&lt;br /&gt;
All the exciting news of the year 2013.&lt;br /&gt;
&lt;br /&gt;
==November 28th==&lt;br /&gt;
EiffelStudio 13.11 is released with support for conditional expression, parenthesis alias.&lt;br /&gt;
&lt;br /&gt;
==August 7th==&lt;br /&gt;
Annoucing the new numbering scheme based on the year and month of the release. The next version of EiffelStudio will thus be 13.11.&lt;br /&gt;
&lt;br /&gt;
==July 1st==&lt;br /&gt;
EiffelStudio 7.3 is out.&lt;br /&gt;
&lt;br /&gt;
==February 5th==&lt;br /&gt;
EiffelStudio 7.2 is out.&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=EiffelOnMac&amp;diff=15243</id>
		<title>EiffelOnMac</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=EiffelOnMac&amp;diff=15243"/>
				<updated>2014-11-05T20:34:12Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: /* Using Homebrew */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:EiffelStudio]]&lt;br /&gt;
[[Category:Macintosh]]&lt;br /&gt;
&lt;br /&gt;
This page gives you an overview about how to get EiffelStudio running on your Mac (Mavericks or above).&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
&lt;br /&gt;
*You will need to install '''Xcode''' from the App Store. After installing Xcode, make sure to install the command line tools by going to the Xcode preferences and under '''Downloads''' install the '''Command Line Tools''' components.&lt;br /&gt;
&lt;br /&gt;
*X11: install version 2.7.5 minimum from http://xquartz.macosforge.org.&lt;br /&gt;
&lt;br /&gt;
{{Note|Advanced users may not need to install Xcode as long as you install the '''development tools'''. Even though you save in download time, you might waste  a lot of time trying to fix missing dependencies. In other words, unless you are feeling adventurous, do install Xcode.}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Using MacPorts ===&lt;br /&gt;
MacPorts is a tool that allows you to use many Unix applications on the Mac. We have created a package in the MacPorts repository that allows you to to install Eiffel Studio with all dependencies in a convenient way. First, install [http://guide.macports.org/#installing MacPorts].&lt;br /&gt;
&lt;br /&gt;
Now simply type (from a bash [http://guides.macrumors.com/Terminal terminal]):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port install eiffelstudio&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and after some time (compiling on a 2.4 GHz Intel Mac takes about an hour) you're ready to go. &lt;br /&gt;
&lt;br /&gt;
When a new release of the same version EiffelStudio becomes available, you can upgrade like so:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port selfupdate&lt;br /&gt;
sudo port upgrade outdated&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using Homebrew ===&lt;br /&gt;
A light-weight alternative to installing MacPorts is [https://github.com/Homebrew/homebrew/blob/master/share/doc/homebrew/Installation.md#installation Homebrew].&lt;br /&gt;
Once Homebrew is installed type the following commands to install the required packages:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
brew install pkg-config&lt;br /&gt;
brew install gtk+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You also need to add to your PKG_CONFIG_PATH the following path:&lt;br /&gt;
&lt;br /&gt;
 export PKG_CONFIG_PATH=/opt/X11/lib/pkgconfig:$PKG_CONFIG_PATH&lt;br /&gt;
&lt;br /&gt;
Then you need to update the `ec' executable to find the right libraries:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
install_name_tool -change /opt/local/lib/libiconv.2.dylib /usr/lib/libiconv.2.dylib `which ec`&lt;br /&gt;
install_name_tool -change /opt/local/lib/libgthread-2.0.0.dylib /usr/local/lib/libgthread-2.0.0.dylib `which ec`&lt;br /&gt;
install_name_tool -change /opt/local/lib/libgtk-x11-2.0.0.dylib /usr/local/lib/libgtk-x11-2.0.0.dylib `which ec`&lt;br /&gt;
install_name_tool -change /opt/local/lib/libgdk-x11-2.0.0.dylib /usr/local/lib/libgdk-x11-2.0.0.dylib `which ec`&lt;br /&gt;
install_name_tool -change /opt/local/lib/libpangocairo-1.0.0.dylib /usr/local/lib/libpangocairo-1.0.0.dylib `which ec`&lt;br /&gt;
install_name_tool -change /opt/local/lib/libgio-2.0.0.dylib /usr/local/lib/libgio-2.0.0.dylib `which ec`&lt;br /&gt;
install_name_tool -change /opt/local/lib/libXrender.1.dylib /usr/local/lib/libXrender.1.dylib `which ec`&lt;br /&gt;
install_name_tool -change /opt/local/lib/libXinerama.1.dylib /usr/local/lib/libXinerama.1.dylib `which ec`&lt;br /&gt;
install_name_tool -change /opt/local/lib/libXi.6.dylib /usr/local/lib/libXi.6.dylib `which ec`&lt;br /&gt;
install_name_tool -change /opt/local/lib/libXrandr.2.dylib /usr/local/lib/libXrandr.2.dylib `which ec`&lt;br /&gt;
install_name_tool -change /opt/local/lib/libXcursor.1.dylib /usr/local/lib/libXcursor.1.dylib `which ec`&lt;br /&gt;
install_name_tool -change /opt/local/lib/libXcomposite.1.dylib /usr/local/lib/libXcomposite.1.dylib `which ec`&lt;br /&gt;
install_name_tool -change /opt/local/lib/libXdamage.1.dylib /usr/local/lib/libXdamage.1.dylib `which ec`&lt;br /&gt;
install_name_tool -change /opt/local/lib/libXfixes.3.dylib /usr/local/lib/libXfixes.3.dylib `which ec`&lt;br /&gt;
install_name_tool -change /opt/local/lib/libX11.6.dylib /usr/local/lib/libX11.6.dylib `which ec`&lt;br /&gt;
install_name_tool -change /opt/local/lib/libXext.6.dylib /usr/local/lib/libXext.6.dylib `which ec`&lt;br /&gt;
install_name_tool -change /opt/local/lib/libatk-1.0.0.dylib /usr/local/lib/libatk-1.0.0.dylib `which ec`&lt;br /&gt;
install_name_tool -change /opt/local/lib/libcairo.2.dylib /opt/X11/lib/libcairo.2.dylib `which ec`&lt;br /&gt;
install_name_tool -change /opt/local/lib/libgdk_pixbuf-2.0.0.dylib /usr/local/lib/libgdk_pixbuf-2.0.0.dylib `which ec`&lt;br /&gt;
install_name_tool -change /opt/local/lib/libpangoft2-1.0.0.dylib /usr/local/lib/libpangoft2-1.0.0.dylib `which ec`&lt;br /&gt;
install_name_tool -change /opt/local/lib/libpango-1.0.0.dylib /usr/local/lib/libpango-1.0.0.dylib `which ec`&lt;br /&gt;
install_name_tool -change /opt/local/lib/libgobject-2.0.0.dylib /usr/local/lib/libgobject-2.0.0.dylib `which ec`&lt;br /&gt;
install_name_tool -change /opt/local/lib/libfontconfig.1.dylib /opt/X11/lib/libfontconfig.1.dylib `which ec`&lt;br /&gt;
install_name_tool -change /opt/local/lib/libfreetype.6.dylib /opt/X11/lib/libfreetype.6.dylib `which ec`&lt;br /&gt;
install_name_tool -change /opt/local/lib/libgmodule-2.0.0.dylib /usr/local/lib/libgmodule-2.0.0.dylib `which ec`&lt;br /&gt;
install_name_tool -change /opt/local/lib/libglib-2.0.0.dylib /usr/local/lib/libglib-2.0.0.dylib `which ec`&lt;br /&gt;
install_name_tool -change /opt/local/lib/libintl.8.dylib /usr/local/lib/libintl.8.dylib `which ec`&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using binary packages ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|This method still requires an initial installation via MacPorts.}}&lt;br /&gt;
&lt;br /&gt;
Download the latest .tar.bz2 package from the Eiffel Software site and follow the same [https://docs.eiffel.com/book/eiffelstudio/eiffelstudio-linux instructions as the Linux version] to setup the environment variables needed to run EiffelStudio. Keep the ISE_PLATFORM value to macosx-x86-64.&lt;br /&gt;
&lt;br /&gt;
== Starting EiffelStudio installed via MacPorts ==&lt;br /&gt;
&lt;br /&gt;
Simply navigate to /Applications/MacPorts/Eiffel''XX'' and double click the EiffelStudio icon.&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can also start EiffelStudio from the command line by entering the command 'estudio' or use the command-line eiffel compiler 'ec'.&lt;br /&gt;
&lt;br /&gt;
==Hints==&lt;br /&gt;
* Pick and Drop works with Apple-key + mouse click.&lt;br /&gt;
* To set up the correct (default) browsers use &amp;quot;open&amp;quot; as your command-line browser in Tools&amp;gt;Preferences...&lt;br /&gt;
* The F10 and F11 debugging shortcuts conflict with the standard Exposé keys. Here are some workarounds:&lt;br /&gt;
** Use the toolbar instead.&lt;br /&gt;
** Reassign these shortcuts in EiffelStudio (Tools&amp;gt;Preferences).&lt;br /&gt;
** Reassign the Exposé keys in System Preferences.&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
=== How can I make EiffelStudio on the Mac look nicer? ===&lt;br /&gt;
* From macports, install the gtk2 (if not already installed) and gtk-chtheme packets. Then run gtk-chtheme and you get a nice GUI to choose your theme. Additional GTK themes can be put in  /opt/local/share/themes/ (There a thousands of them on the web, for example here : [http://art.gnome.org/themes/gtk2 http://art.gnome.org/themes/gtk2])&lt;br /&gt;
&lt;br /&gt;
=== Typing ec or estudio on the command line doesn't work ===&lt;br /&gt;
To run the '''ec''' compiler from your shell, set up variables similar to these (e.g. in ~/.profile):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Setting variables for EiffelStudio.&lt;br /&gt;
export ISE_EIFFEL=/Applications/MacPorts/Eiffel66&lt;br /&gt;
export ISE_PLATFORM=macosx-ppc (or macosx-x86)&lt;br /&gt;
export ISE_PROJECTS=$HOME&lt;br /&gt;
export ES_PATH=$ISE_EIFFEL/studio/spec/$ISE_PLATFORM/bin&lt;br /&gt;
export PATH=$ES_PATH:$PATH&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The latest release of EiffelStudio isn't available yet via MacPorts===&lt;br /&gt;
&lt;br /&gt;
If you want to upgrade to the latest release of EiffelStudio, but it isn't available yet via MacPorts, the easiest and quickest thing is to install from binary packages as noted above. Nonetheless, if you really want to install it via MacPorts, here's how.&lt;br /&gt;
&lt;br /&gt;
MacPorts installs a particular version of EiffelStudio by following the rules defined in a '''Portfile'''. For example, http://trac.macports.org/browser/trunk/dports/lang/eiffelstudio71/Portfile is the Portfile for EiffelStudio 7.1. The person who maintains EiffelStudio for MacPorts has to write this file and upload it, but they might not have done so yet. You could make enquiries about when it will be available, but if you want to get the latest urgently it isn't hard to write your own Portfile and run it locally. Here's how.&lt;br /&gt;
&lt;br /&gt;
http://guide.macports.org/#development.local-repositories explains how to do it.&lt;br /&gt;
# Go to https://sourceforge.net/projects/eiffelstudio/files and download the relevant PorterPackage file.&lt;br /&gt;
# Run '''openssl''' to find out the '''checksum''' of the PorterPackage file. E.g., for EiffelStudio 7.2 the command is '''openssl rmd160 ~/Downloads/PorterPackage_72_91284_gpl.tar'''.&lt;br /&gt;
# Open /opt/local/etc/macports/sources.conf in a text editor (with super user privileges). Insert a line as explained on http://guide.macports.org, e.g., file:///Applications/MacPorts/ports&lt;br /&gt;
# Create the Portfile in a text editor, e.g., file:///Applications/MacPorts/ports/lang/eiffelstudio72/Portfile&lt;br /&gt;
#* Copy the contents of the most recently available EiffelStudio Portfile (e.g., from http://trac.macports.org/browser/trunk/dports/lang/eiffelstudio71/Portfile) into your Portfile.&lt;br /&gt;
#* Correct the '''name''', '''minor_version''' and '''version'''.&lt;br /&gt;
#* Make sure that the '''distname''' will resolve to the current PorterPackage file name that you see on https://sourceforge.net/projects/eiffelstudio/files&lt;br /&gt;
#* Set the first '''checksums''' to the value that you got earlier from running openssl.&lt;br /&gt;
#* You've finished writing your Portfile. Save it!&lt;br /&gt;
# Go to the ports directory, e.g., cd /Applications/MacPorts/ports&lt;br /&gt;
# sudo portindex&lt;br /&gt;
# You should now be able to install in the usual way, e.g., sudo port install eiffelstudio72&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=EiffelOnMac&amp;diff=15219</id>
		<title>EiffelOnMac</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=EiffelOnMac&amp;diff=15219"/>
				<updated>2014-06-28T02:57:49Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: /* The latest release of EiffelStudio isn't available yet via MacPorts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:EiffelStudio]]&lt;br /&gt;
[[Category:Macintosh]]&lt;br /&gt;
&lt;br /&gt;
This page gives you an overview about how to get EiffelStudio running on your Mac (Mavericks or above).&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
&lt;br /&gt;
*You will need to install '''Xcode''' from the App Store. After installing Xcode, make sure to install the command line tools by going to the Xcode preferences and under '''Downloads''' install the '''Command Line Tools''' components.&lt;br /&gt;
&lt;br /&gt;
*X11: install version 2.7.5 minimum from http://xquartz.macosforge.org.&lt;br /&gt;
&lt;br /&gt;
{{Note|Advanced users may not need to install Xcode as long as you install the '''development tools'''. Even though you save in download time, you might waste  a lot of time trying to fix missing dependencies. In other words, unless you are feeling adventurous, do install Xcode.}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Using MacPorts ===&lt;br /&gt;
MacPorts is a tool that allows you to use many Unix applications on the Mac. We have created a package in the MacPorts repository that allows you to to install Eiffel Studio with all dependencies in a convenient way. First, install [http://guide.macports.org/#installing MacPorts].&lt;br /&gt;
&lt;br /&gt;
Now simply type (from a bash [http://guides.macrumors.com/Terminal terminal]):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port install eiffelstudio&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and after some time (compiling on a 2.4 GHz Intel Mac takes about an hour) you're ready to go. &lt;br /&gt;
&lt;br /&gt;
When a new release of the same version EiffelStudio becomes available, you can upgrade like so:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port selfupdate&lt;br /&gt;
sudo port upgrade outdated&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using binary packages ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|This method still requires an initial installation via MacPorts.}}&lt;br /&gt;
&lt;br /&gt;
Download the latest .tar.bz2 package from the Eiffel Software site and follow the same [https://docs.eiffel.com/book/eiffelstudio/eiffelstudio-linux instructions as the Linux version] to setup the environment variables needed to run EiffelStudio. Keep the ISE_PLATFORM value to macosx-x86-64.&lt;br /&gt;
&lt;br /&gt;
== Starting EiffelStudio installed via MacPorts ==&lt;br /&gt;
&lt;br /&gt;
Simply navigate to /Applications/MacPorts/Eiffel''XX'' and double click the EiffelStudio icon.&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can also start EiffelStudio from the command line by entering the command 'estudio' or use the command-line eiffel compiler 'ec'.&lt;br /&gt;
&lt;br /&gt;
==Hints==&lt;br /&gt;
* Pick and Drop works with Apple-key + mouse click.&lt;br /&gt;
* To set up the correct (default) browsers use &amp;quot;open&amp;quot; as your command-line browser in Tools&amp;gt;Preferences...&lt;br /&gt;
* The F10 and F11 debugging shortcuts conflict with the standard Exposé keys. Here are some workarounds:&lt;br /&gt;
** Use the toolbar instead.&lt;br /&gt;
** Reassign these shortcuts in EiffelStudio (Tools&amp;gt;Preferences).&lt;br /&gt;
** Reassign the Exposé keys in System Preferences.&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
=== How can I make EiffelStudio on the Mac look nicer? ===&lt;br /&gt;
* From macports, install the gtk2 (if not already installed) and gtk-chtheme packets. Then run gtk-chtheme and you get a nice GUI to choose your theme. Additional GTK themes can be put in  /opt/local/share/themes/ (There a thousands of them on the web, for example here : [http://art.gnome.org/themes/gtk2 http://art.gnome.org/themes/gtk2])&lt;br /&gt;
&lt;br /&gt;
=== Typing ec or estudio on the command line doesn't work ===&lt;br /&gt;
To run the '''ec''' compiler from your shell, set up variables similar to these (e.g. in ~/.profile):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Setting variables for EiffelStudio.&lt;br /&gt;
export ISE_EIFFEL=/Applications/MacPorts/Eiffel66&lt;br /&gt;
export ISE_PLATFORM=macosx-ppc (or macosx-x86)&lt;br /&gt;
export ISE_PROJECTS=$HOME&lt;br /&gt;
export ES_PATH=$ISE_EIFFEL/studio/spec/$ISE_PLATFORM/bin&lt;br /&gt;
export PATH=$ES_PATH:$PATH&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The latest release of EiffelStudio isn't available yet via MacPorts===&lt;br /&gt;
&lt;br /&gt;
If you want to upgrade to the latest release of EiffelStudio, but it isn't available yet via MacPorts, the easiest and quickest thing is to install from binary packages as noted above. Nonetheless, if you really want to install it via MacPorts, here's how.&lt;br /&gt;
&lt;br /&gt;
MacPorts installs a particular version of EiffelStudio by following the rules defined in a '''Portfile'''. For example, http://trac.macports.org/browser/trunk/dports/lang/eiffelstudio71/Portfile is the Portfile for EiffelStudio 7.1. The person who maintains EiffelStudio for MacPorts has to write this file and upload it, but they might not have done so yet. You could make enquiries about when it will be available, but if you want to get the latest urgently it isn't hard to write your own Portfile and run it locally. Here's how.&lt;br /&gt;
&lt;br /&gt;
http://guide.macports.org/#development.local-repositories explains how to do it.&lt;br /&gt;
# Go to https://sourceforge.net/projects/eiffelstudio/files and download the relevant PorterPackage file.&lt;br /&gt;
# Run '''openssl''' to find out the '''checksum''' of the PorterPackage file. E.g., for EiffelStudio 7.2 the command is '''openssl rmd160 ~/Downloads/PorterPackage_72_91284_gpl.tar'''.&lt;br /&gt;
# Open /opt/local/etc/macports/sources.conf in a text editor (with super user privileges). Insert a line as explained on http://guide.macports.org, e.g., file:///Applications/MacPorts/ports&lt;br /&gt;
# Create the Portfile in a text editor, e.g., file:///Applications/MacPorts/ports/lang/eiffelstudio72/Portfile&lt;br /&gt;
#* Copy the contents of the most recently available EiffelStudio Portfile (e.g., from http://trac.macports.org/browser/trunk/dports/lang/eiffelstudio71/Portfile) into your Portfile.&lt;br /&gt;
#* Correct the '''name''', '''minor_version''' and '''version'''.&lt;br /&gt;
#* Make sure that the '''distname''' will resolve to the current PorterPackage file name that you see on https://sourceforge.net/projects/eiffelstudio/files&lt;br /&gt;
#* Set the first '''checksums''' to the value that you got earlier from running openssl.&lt;br /&gt;
#* You've finished writing your Portfile. Save it!&lt;br /&gt;
# Go to the ports directory, e.g., cd /Applications/MacPorts/ports&lt;br /&gt;
# sudo portindex&lt;br /&gt;
# You should now be able to install in the usual way, e.g., sudo port install eiffelstudio72&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=EiffelOnMac&amp;diff=15218</id>
		<title>EiffelOnMac</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=EiffelOnMac&amp;diff=15218"/>
				<updated>2014-06-19T22:53:34Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:EiffelStudio]]&lt;br /&gt;
[[Category:Macintosh]]&lt;br /&gt;
&lt;br /&gt;
This page gives you an overview about how to get EiffelStudio running on your Mac (Mavericks or above).&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
&lt;br /&gt;
*You will need to install '''Xcode''' from the App Store. After installing Xcode, make sure to install the command line tools by going to the Xcode preferences and under '''Downloads''' install the '''Command Line Tools''' components.&lt;br /&gt;
&lt;br /&gt;
*X11: install version 2.7.5 minimum from http://xquartz.macosforge.org.&lt;br /&gt;
&lt;br /&gt;
{{Note|Advanced users may not need to install Xcode as long as you install the '''development tools'''. Even though you save in download time, you might waste  a lot of time trying to fix missing dependencies. In other words, unless you are feeling adventurous, do install Xcode.}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Using MacPorts ===&lt;br /&gt;
MacPorts is a tool that allows you to use many Unix applications on the Mac. We have created a package in the MacPorts repository that allows you to to install Eiffel Studio with all dependencies in a convenient way. First, install [http://guide.macports.org/#installing MacPorts].&lt;br /&gt;
&lt;br /&gt;
Now simply type (from a bash [http://guides.macrumors.com/Terminal terminal]):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port install eiffelstudio&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and after some time (compiling on a 2.4 GHz Intel Mac takes about an hour) you're ready to go. &lt;br /&gt;
&lt;br /&gt;
When a new release of the same version EiffelStudio becomes available, you can upgrade like so:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port selfupdate&lt;br /&gt;
sudo port upgrade outdated&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using binary packages ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|This method still requires an initial installation via MacPorts.}}&lt;br /&gt;
&lt;br /&gt;
Download the latest .tar.bz2 package from the Eiffel Software site and follow the same [https://docs.eiffel.com/book/eiffelstudio/eiffelstudio-linux instructions as the Linux version] to setup the environment variables needed to run EiffelStudio. Keep the ISE_PLATFORM value to macosx-x86-64.&lt;br /&gt;
&lt;br /&gt;
== Starting EiffelStudio installed via MacPorts ==&lt;br /&gt;
&lt;br /&gt;
Simply navigate to /Applications/MacPorts/Eiffel''XX'' and double click the EiffelStudio icon.&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can also start EiffelStudio from the command line by entering the command 'estudio' or use the command-line eiffel compiler 'ec'.&lt;br /&gt;
&lt;br /&gt;
==Hints==&lt;br /&gt;
* Pick and Drop works with Apple-key + mouse click.&lt;br /&gt;
* To set up the correct (default) browsers use &amp;quot;open&amp;quot; as your command-line browser in Tools&amp;gt;Preferences...&lt;br /&gt;
* The F10 and F11 debugging shortcuts conflict with the standard Exposé keys. Here are some workarounds:&lt;br /&gt;
** Use the toolbar instead.&lt;br /&gt;
** Reassign these shortcuts in EiffelStudio (Tools&amp;gt;Preferences).&lt;br /&gt;
** Reassign the Exposé keys in System Preferences.&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
=== How can I make EiffelStudio on the Mac look nicer? ===&lt;br /&gt;
* From macports, install the gtk2 (if not already installed) and gtk-chtheme packets. Then run gtk-chtheme and you get a nice GUI to choose your theme. Additional GTK themes can be put in  /opt/local/share/themes/ (There a thousands of them on the web, for example here : [http://art.gnome.org/themes/gtk2 http://art.gnome.org/themes/gtk2])&lt;br /&gt;
&lt;br /&gt;
=== Typing ec or estudio on the command line doesn't work ===&lt;br /&gt;
To run the '''ec''' compiler from your shell, set up variables similar to these (e.g. in ~/.profile):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Setting variables for EiffelStudio.&lt;br /&gt;
export ISE_EIFFEL=/Applications/MacPorts/Eiffel66&lt;br /&gt;
export ISE_PLATFORM=macosx-ppc (or macosx-x86)&lt;br /&gt;
export ISE_PROJECTS=$HOME&lt;br /&gt;
export ES_PATH=$ISE_EIFFEL/studio/spec/$ISE_PLATFORM/bin&lt;br /&gt;
export PATH=$ES_PATH:$PATH&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The latest release of EiffelStudio isn't available yet via MacPorts===&lt;br /&gt;
&lt;br /&gt;
MacPorts installs a particular version of EiffelStudio by following the rules defined in a '''Portfile'''. For example, http://trac.macports.org/browser/trunk/dports/lang/eiffelstudio71/Portfile is the Portfile for EiffelStudio 7.1. The person who maintains EiffelStudio for MacPorts has to write this file and upload it, but they might not have done so yet. You could make enquiries about when it will be available, but if you want to get the latest urgently it isn't hard to write your own Portfile and run it locally. Here's how.&lt;br /&gt;
&lt;br /&gt;
http://guide.macports.org/#development.local-repositories explains how to do it.&lt;br /&gt;
# Go to https://sourceforge.net/projects/eiffelstudio/files and download the relevant PorterPackage file.&lt;br /&gt;
# Run '''openssl''' to find out the '''checksum''' of the PorterPackage file. E.g., for EiffelStudio 7.2 the command is '''openssl rmd160 ~/Downloads/PorterPackage_72_91284_gpl.tar'''.&lt;br /&gt;
# Open /opt/local/etc/macports/sources.conf in a text editor (with super user privileges). Insert a line as explained on http://guide.macports.org, e.g., file:///Applications/MacPorts/ports&lt;br /&gt;
# Create the Portfile in a text editor, e.g., file:///Applications/MacPorts/ports/lang/eiffelstudio72/Portfile&lt;br /&gt;
#* Copy the contents of the most recently available EiffelStudio Portfile (e.g., from http://trac.macports.org/browser/trunk/dports/lang/eiffelstudio71/Portfile) into your Portfile.&lt;br /&gt;
#* Correct the '''name''', '''minor_version''' and '''version'''.&lt;br /&gt;
#* Make sure that the '''distname''' will resolve to the current PorterPackage file name that you see on https://sourceforge.net/projects/eiffelstudio/files&lt;br /&gt;
#* Set the first '''checksums''' to the value that you got earlier from running openssl.&lt;br /&gt;
#* You've finished writing your Portfile. Save it!&lt;br /&gt;
# Go to the ports directory, e.g., cd /Applications/MacPorts/ports&lt;br /&gt;
# sudo portindex&lt;br /&gt;
# You should now be able to install in the usual way, e.g., sudo port install eiffelstudio72&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Installing_Microsoft_C_compiler&amp;diff=15204</id>
		<title>Installing Microsoft C compiler</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Installing_Microsoft_C_compiler&amp;diff=15204"/>
				<updated>2014-06-07T08:09:43Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Windows]]&lt;br /&gt;
{{Note|This is for EiffelStudio 7.2 and above. For older version of EiffelStudio check out [[Installing Microsoft C compiler (Visual Studio 2010 and older, or Windows SDK 7.1 and older)]]}}&lt;br /&gt;
&lt;br /&gt;
In order to install EiffelStudio in Windows you will need a C/C++ compiler. By default, the installer comes complete with the GCC tool suite, which you can opt to install if no compatible C/C++ was detected on your system.&lt;br /&gt;
&lt;br /&gt;
For users who do not want to use GCC, you will need to install Visual Studio 2012 or later. The guide below assumes you are downloading the Express edition of Visual Studio for Windows Desktop.&lt;br /&gt;
&lt;br /&gt;
== Using a Microsoft Visual C/C++ Compiler ==&lt;br /&gt;
&lt;br /&gt;
{{Note| Only [http://msdn.microsoft.com/en-US/vstudio Visual Studio] versions released prior to a release of EiffelStudio are supported.}}&lt;br /&gt;
&lt;br /&gt;
=== Downloading Visual Studio Express ===&lt;br /&gt;
&lt;br /&gt;
The first thing to do is to download Visual Studio Express for Desktop from [http://www.microsoft.com/visualstudio/eng/downloads#d-express-windows-desktop Microsoft's web site] and then choose between the [http://go.microsoft.com/?linkid=9816758 internet installer] or the [http://go.microsoft.com/?linkid=9816768 ISO image].&lt;br /&gt;
&lt;br /&gt;
Simply follow the instructions for the installation. If you are running on a 64-bit system and you are offered a choice of C/C++ compilers, make sure to select the 64-bit compiler if you intend to use the 64-bit version of EiffelStudio, conversely make sure to use the 32-bit compiler with the 32-bit version of EiffelStudio.&lt;br /&gt;
&lt;br /&gt;
== Configuring C Compiler to Compile From the Command Line ==&lt;br /&gt;
The EiffelStudio installation provides the [http://www.eiffelroom.com/tool/espawn espawn] tool. The tool lists all the detected versions of the Microsoft C++ compiler it finds on your system, and it will also let you configure your command prompt to use a C/C++ compiler of your choosing.&lt;br /&gt;
&lt;br /&gt;
For example to get the list of C/C++ compilers enter '''espawn -l''' which will get you an output similar to the following:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Eiffel Environment Command Spawn Utility - Version: 7.2&lt;br /&gt;
Copyright Eiffel Software 1985-2012. All Rights Reserved.&lt;br /&gt;
&lt;br /&gt;
Available C/C++ compilers:&lt;br /&gt;
&lt;br /&gt;
   VC110 :  Microsoft Visual Studio 2012 VC++ (11.0)&lt;br /&gt;
   WSDK71:  Microsoft Windows SDK 7.1 (Windows 7)&lt;br /&gt;
   VC100 :  Microsoft Visual Studio 2010 VC++ (10.0)&lt;br /&gt;
   VC80  :  Microsoft Visual Studio 2005 VC++ (8.0)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To launch a DOS prompt setup for Visual Studio 2012 enter:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
espawn -u:VC110 cmd.exe&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Installing_Microsoft_C_compiler&amp;diff=15203</id>
		<title>Installing Microsoft C compiler</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Installing_Microsoft_C_compiler&amp;diff=15203"/>
				<updated>2014-06-07T08:08:38Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Windows]]&lt;br /&gt;
{{Note|This is for EiffelStudio 7.2 and above,. For older version of EiffelStudio check out [[Installing Microsoft C compiler (Visual Studio 2010 and older, or Windows SDK 7.1 and older)]]}}&lt;br /&gt;
&lt;br /&gt;
In order to install EiffelStudio in Windows you will need a C/C++ compiler. By default, the installer comes complete with the GCC tool suite, which you can opt to install if no compatible C/C++ was detected on your system.&lt;br /&gt;
&lt;br /&gt;
For users who do not want to use GCC, you will need to install Visual Studio 2012 or later. The guide below assumes you are downloading the Express edition of Visual Studio for Windows Desktop.&lt;br /&gt;
&lt;br /&gt;
== Using a Microsoft Visual C/C++ Compiler ==&lt;br /&gt;
&lt;br /&gt;
{{Note| Only [http://msdn.microsoft.com/en-US/vstudio Visual Studio] versions released prior to a release of EiffelStudio are supported.}}&lt;br /&gt;
&lt;br /&gt;
=== Downloading Visual Studio Express ===&lt;br /&gt;
&lt;br /&gt;
The first thing to do is to download Visual Studio Express for Desktop from [http://www.microsoft.com/visualstudio/eng/downloads#d-express-windows-desktop Microsoft's web site] and then choose between the [http://go.microsoft.com/?linkid=9816758 internet installer] or the [http://go.microsoft.com/?linkid=9816768 ISO image].&lt;br /&gt;
&lt;br /&gt;
Simply follow the instructions for the installation. If you are running on a 64-bit system and you are offered a choice of C/C++ compilers, make sure to select the 64-bit compiler if you intend to use the 64-bit version of EiffelStudio, conversely make sure to use the 32-bit compiler with the 32-bit version of EiffelStudio.&lt;br /&gt;
&lt;br /&gt;
== Configuring C Compiler to Compile From the Command Line ==&lt;br /&gt;
The EiffelStudio installation provides the [http://www.eiffelroom.com/tool/espawn espawn] tool. The tool lists all the detected versions of the Microsoft C++ compiler it finds on your system, and it will also let you configure your command prompt to use a C/C++ compiler of your choosing.&lt;br /&gt;
&lt;br /&gt;
For example to get the list of C/C++ compilers enter '''espawn -l''' which will get you an output similar to the following:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Eiffel Environment Command Spawn Utility - Version: 7.2&lt;br /&gt;
Copyright Eiffel Software 1985-2012. All Rights Reserved.&lt;br /&gt;
&lt;br /&gt;
Available C/C++ compilers:&lt;br /&gt;
&lt;br /&gt;
   VC110 :  Microsoft Visual Studio 2012 VC++ (11.0)&lt;br /&gt;
   WSDK71:  Microsoft Windows SDK 7.1 (Windows 7)&lt;br /&gt;
   VC100 :  Microsoft Visual Studio 2010 VC++ (10.0)&lt;br /&gt;
   VC80  :  Microsoft Visual Studio 2005 VC++ (8.0)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To launch a DOS prompt setup for Visual Studio 2012 enter:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
espawn -u:VC110 cmd.exe&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Installing_Microsoft_C_compiler&amp;diff=15202</id>
		<title>Installing Microsoft C compiler</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Installing_Microsoft_C_compiler&amp;diff=15202"/>
				<updated>2014-06-07T00:21:33Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: /* Configuring C Compiler to Compile From the Command Line */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Windows]]&lt;br /&gt;
{{Note|This is for EiffelStudio 7.2 and above,. For older version of EiffelStudio check out [[Installing Microsoft C compiler (Visual Studio 2010 and older, or Windows SDK 7.1 and older)]]}}&lt;br /&gt;
&lt;br /&gt;
In order to install EiffelStudio in Windows you will need a C/C++ compiler. By default, the installer comes complete with the GCC tool suite, which you can opt to install if no compatible C/C++ was detected on your system.&lt;br /&gt;
&lt;br /&gt;
For users who do not want to use GCC, you will need to install Visual Studio 2012 or later. The guide below assumes you are downloading the Express edition of Visual Studio for Windows Desktop.&lt;br /&gt;
&lt;br /&gt;
== Using a Microsoft Visual C/C++ Compiler ==&lt;br /&gt;
&lt;br /&gt;
{{Note| Only [http://msdn.microsoft.com/en-US/vstudio Visual Studio] versions released prior to a release of EiffelStudio are supported.}}&lt;br /&gt;
&lt;br /&gt;
=== Downloading Visual Studio Express ===&lt;br /&gt;
&lt;br /&gt;
The first thing to do is to download Visual Studio Express for Desktop from [http://www.microsoft.com/visualstudio/eng/downloads#d-express-windows-desktop Microsoft's web site] and then choose between the [http://go.microsoft.com/?linkid=9816758 internet installer] or the [http://go.microsoft.com/?linkid=9816768 ISO image].&lt;br /&gt;
&lt;br /&gt;
Simply follow the instructions for the installation. If you are running on a 64-bit system and you are offered a choice of C/C++ compilers, make sure to select the 64-bit compiler if you intend to use the 64-bit version of EiffelStudio, conversely make sure to use the 32-bit compiler with the 32-bit version of EiffelStudio.&lt;br /&gt;
&lt;br /&gt;
== Configuring C Compiler to Compile From the Command Line ==&lt;br /&gt;
The EiffelStudio installation provides the [http://www.eiffelroom.com/tool/espawn espawn] tool. The tool list all the detected version of the Microsoft C++ compiler it finds on your system, and it will also let you configure your command prompt to use a C/C++ compiler of your choosing.&lt;br /&gt;
&lt;br /&gt;
For example to get the list of C/C++ compilers enter '''espawn -l''' which will get you an output similar to the following:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Eiffel Environment Command Spawn Utility - Version: 7.2&lt;br /&gt;
Copyright Eiffel Software 1985-2012. All Rights Reserved.&lt;br /&gt;
&lt;br /&gt;
Available C/C++ compilers:&lt;br /&gt;
&lt;br /&gt;
   VC110 :  Microsoft Visual Studio 2012 VC++ (11.0)&lt;br /&gt;
   WSDK71:  Microsoft Windows SDK 7.1 (Windows 7)&lt;br /&gt;
   VC100 :  Microsoft Visual Studio 2010 VC++ (10.0)&lt;br /&gt;
   VC80  :  Microsoft Visual Studio 2005 VC++ (8.0)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To launch a DOS prompt setup for Visual Studio 2012 enter:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
espawn -u:VC110 cmd.exe&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Subversion_Settings&amp;diff=15177</id>
		<title>Subversion Settings</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Subversion_Settings&amp;diff=15177"/>
				<updated>2014-05-02T21:59:21Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: /* Configuration's examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:SVN]]&lt;br /&gt;
== Overview ==&lt;br /&gt;
* To ensure Subversion is used as wanted, please configure your machine/account as described below to ensure that we enable keywords expansion. The SVN repository is configured to check those keywords, if there are not set, you won't be able to commit new files.&lt;br /&gt;
* Basically you will need to enable auto properties, and set the value for each type of file. Check at the end of this page for examples.&lt;br /&gt;
&lt;br /&gt;
== Install the tools ==&lt;br /&gt;
You will find everything needed on the download page of the [http://subversion.apache.org/packages.html subversion project page]. Especially the subversion command line tools and, for windows users, TortoiseSVN (a graphical tool integrated with the windows Shell).&lt;br /&gt;
&lt;br /&gt;
== Configure your account ==&lt;br /&gt;
=== Configuration : file locations ===&lt;br /&gt;
Typically, Subversion uses two per-user and site-wide configurations.&lt;br /&gt;
==== site-wide configuration ====&lt;br /&gt;
  Unix:&lt;br /&gt;
    /etc/subversion/config&lt;br /&gt;
 &lt;br /&gt;
  Windows:&lt;br /&gt;
    %ALLUSERSPROFILE%\Application Data\Subversion\config&lt;br /&gt;
    REGISTRY:HKLM\Software\Tigris.org\Subversion\Config&lt;br /&gt;
&lt;br /&gt;
==== per-user configuration ====&lt;br /&gt;
  Unix:&lt;br /&gt;
    ~/.subversion/config&lt;br /&gt;
 &lt;br /&gt;
  Windows:&lt;br /&gt;
    %APPDATA%\Subversion\config&lt;br /&gt;
    REGISTRY:HKCU\Software\Tigris.org\Subversion\Config&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
* You can configure your subversion client tools using different ways: INI files and windows registry keys&lt;br /&gt;
* Registry-based configuration options are parsed before their file-based counterparts, so are overridden by values found in the configuration files. In other words, configuration priority is granted in the following order on a Windows system:&lt;br /&gt;
# Command-line options&lt;br /&gt;
# The per-user INI files&lt;br /&gt;
# The per-user Registry values&lt;br /&gt;
# The system-wide INI files&lt;br /&gt;
# The system-wide Registry values&lt;br /&gt;
&lt;br /&gt;
* Check the &amp;quot;%APPDATA%\subversion&amp;quot; folder&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* Use INI based file. Check at the end of this page for examples.&lt;br /&gt;
&lt;br /&gt;
=== Configuration's examples ===&lt;br /&gt;
* Here are concrete examples. We would advise you to use the INI based files; this way you can copy them easily and even use them on Linux and so on. (And also because registry keys are not that easy to edit, and you may have to reboot, or restart a few application to take them into account.)&lt;br /&gt;
&lt;br /&gt;
* Using registry keys&lt;br /&gt;
 &lt;br /&gt;
 REGEDIT4  &lt;br /&gt;
 [HKEY_CURRENT_USER\Software\Tigris.org\Subversion]&lt;br /&gt;
 [HKEY_CURRENT_USER\Software\Tigris.org\Subversion\Config] &lt;br /&gt;
 [HKEY_CURRENT_USER\Software\Tigris.org\Subversion\Config\miscellany]&lt;br /&gt;
 &amp;quot;global-ignores&amp;quot;=&amp;quot;*.o *.lo *.la #*# .*.rej *.rej .*~ *~ .#* *.swp .*.swp ~* EIFGENs .git &amp;quot; &lt;br /&gt;
 &amp;quot;enable-auto-props&amp;quot;=&amp;quot;yes&amp;quot;&lt;br /&gt;
 &amp;quot;use-commit-times&amp;quot;=&amp;quot;yes&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
* Using INI based files:&lt;br /&gt;
&lt;br /&gt;
 [miscellany]&lt;br /&gt;
 global-ignores = *.o *.lo *.la #*# .*.rej *.rej .*~ *~ .#* *.swp ~*&lt;br /&gt;
 enable-auto-props = yes&lt;br /&gt;
 use-commit-times = yes&lt;br /&gt;
&lt;br /&gt;
==Read More==&lt;br /&gt;
Read the [[Subversion_Tutorial|tutorial on subversion]] for more details about subversion.&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=EiffelStudio_14.05_Releases&amp;diff=15167</id>
		<title>EiffelStudio 14.05 Releases</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=EiffelStudio_14.05_Releases&amp;diff=15167"/>
				<updated>2014-05-02T00:18:27Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: /* Bug fixes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Releases]]__NOTOC__{{ReleaseHistoryHeader}}&lt;br /&gt;
&lt;br /&gt;
= EiffelStudio 14.05.x Releases=&lt;br /&gt;
&lt;br /&gt;
Beta download: ftp://beta:beta57@ftp.eiffel.com/14.05/&lt;br /&gt;
&lt;br /&gt;
==14.05.x.x (...)==&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
===Improvements===&lt;br /&gt;
===Feature removed===&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
===User changes===&lt;br /&gt;
===Developer changes===&lt;br /&gt;
&lt;br /&gt;
==14.05.9.4974 (May 1st 2014)==&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
* iron: Integration of iron package manager to EiffelStudio.&lt;br /&gt;
* studio: New Fix facilities to semi-automatically fix errors or warnings such as unused local variables.&lt;br /&gt;
&lt;br /&gt;
===Improvements===&lt;br /&gt;
* iOS: Refreshed our runtime support for the latest iOS 7 with support for both 32-bit and 64-bit architecture.&lt;br /&gt;
* {{Red|compiler: Now compiler reports all VWEQ warnings as before it was only doing it if you were comparing an expanded with a reference. (rev#94966)}}&lt;br /&gt;
* store: Better handling of REAL_32 and REAL_64 to decimal when the associated column is a decimal (see updated TEST_NUMERIC_TYPES test).&lt;br /&gt;
* store: Removed precondition `is_allocatable' or `descriptor_available' or `descriptor_is_available'. We simply perform a check after trying to allocate a descriptor if it is successful or not. This fixes some issue with the interface of DATABASE_MANAGER which never checked that precondition anyway. (rev#94913)&lt;br /&gt;
* wel: Optimized WEL_RICH_EDIT_BUFFER_SAVER.&lt;br /&gt;
* vision2: On GTK made creation of an EV_PIXEL_BUFFER slightly faster.&lt;br /&gt;
* vision2: Made it possible to query `start_selection' and `end_selection' even when there is no selection, in which case they return the same value as `caret_position'. Same for `selected_text' and returning an empty string when there is no selection.&lt;br /&gt;
&lt;br /&gt;
===Feature removed===&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
* compiler: Fixed CECIL library creation to take into account the new memory_analyzer.o and offset.o modules of the runtime.&lt;br /&gt;
* compiler: Fixed bug#18855 where we used the wrong constant to display the command switch for the `-debug' option. (rev#94884)&lt;br /&gt;
* studio: Fixed error that prevented adding templates when editing the contract of a routine.&lt;br /&gt;
* autotest: Fixed issue introduced in previous intermediate release which prevented AutoTest from running.&lt;br /&gt;
* base: Fixed postcondition of `escaped_utf_32_substring_into_utf_16_0_pointer' where we forgot the `negation' on whether the source string has a %U character or not. As a consequence we never checked that the output string would roundtrip. (rev#94842).&lt;br /&gt;
* base: Fixed issues with the handling of the Unicode escape character. If the escaped UTF-32 string contains the escape sequence and it is trying to escape something that could fit the UTF-16 or UTF-8 encoding, then we store the content as is. This is to avoid the case for UTF-16 where if you have: &amp;quot;?61&amp;quot; it would yield &amp;quot;a&amp;quot; after round-tripping.  Now if the UTF-16 or UTF-8, contains the escape character, the resulting string would have it twice, which again preventing proper roundtriping. (review#6283628036227072, autotest#TEST_UTF_CONVERTER, rev#94898).&lt;br /&gt;
* store: Fixed issue with storing large strings when using a prepared statement or a stored procedure (rev#94776).&lt;br /&gt;
* store: Fixed a bug when storing a string into a binary column in the database, because we would convert the database type from binary to longvarchar which would cause a mismatch.&lt;br /&gt;
* {{Red | store: For stored procedures and prepared statements, improved the behavior of storing binary data by not imposing on the user to convert its binary stream to hexadecimal. This is a breaking change as now it will store whatever you provide as is. For traditional SQL statements it remains the same and binary data needs to be converted. (rev#94824).}}&lt;br /&gt;
* wel: Fixed autotest#TEST_WEL_STRING where if you have Unicode characters above the 65535 value, the result of the conversion to UTF-16 requires more space and when you have to replace %N into %R%N we forgot to resize the content before inserting the %R%N characters. (rev#94836).&lt;br /&gt;
* vision2: Fixed a bug in {EV_TEXT}.selected_text on the Unix platform where if the text contained non-ASCII character, then it will just return the UTF-8 sequence of those Unicode characters instead of the Unicode characters (rev#94874).&lt;br /&gt;
* vision2: Fixed `{EV_DRAWABLE}.draw_sub_pixel_buffer' on GTK when the rectangle provided is larger than the image. This was causing a seg fault on GTK. Fixed `{EV_PIXEL_BUFFER}.sub_pixel_buffer' which also failed if the provided area was larger than the image. (rev#94882)&lt;br /&gt;
* vision2: Fixed a precondition violation in the implementation of `get_pixel' where the C memory was shared with a size too small we need 4 extra-bytes to read our pixel integer data. This fixes autotest#TEST_EV_SCREEN.text_pixel_color_relative_to.(rev#94887).&lt;br /&gt;
* vision2: Fixed various issues on Windows with EV_TEXTABLE component when the text contains Unicode characters that generate a surrogate pair in UTF-16, the Windows API always refers to UTF-16 code units while at the Eiffel level we still refer to character position.&lt;br /&gt;
* vision2: * Made `selection_start' and `selection_end' obsolete as `selection_end' was returning a character position and not a caret position which is counter-intuitive since `set_selection' is using caret positions. Introduced `start_selection' and `end_selection' instead that return the selection start and end in caret positions. This fixes autotest#TEST_EV_TEXT with respect to `has_selection', `set_selection', `selected_text', `start_selection' and `end_selection'.&lt;br /&gt;
* autotest: Fixed an issue that happens once in a while where on Linux tests would fail with &amp;quot;Evaluator Died&amp;quot; . (bug#18078, rev#94876)&lt;br /&gt;
* autotest: Partial fix for bug#18838 by preventing a crash when no executable is present (case of compiling an ECF as a library instead of an application). Now the next step will be to disable the menu entries when we have such as system. (rev#94972).&lt;br /&gt;
* autotest: Fixed bug#18686 where if you start running a test that you just renamed it would crash because we reset the evaluator controller and thus make `connection' Void. Now we check that connection is still active before sending the request. (rev#94973)&lt;br /&gt;
&lt;br /&gt;
===User changes===&lt;br /&gt;
===Developer changes===&lt;br /&gt;
&lt;br /&gt;
==14.05.9.4743 (March 31st 2014)==&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
* {{Red|Inspector Eiffel: Added a new static analysis tool to help you improve the quality of your code using predefined rules such as useless entities, unneeded nested ifs, unused arguments,... More details at [[User:Stefan/Code_Analysis | Code Analysis]]}}&lt;br /&gt;
* Added tool `emdc.exe' to inspect the .NET cache at a given location.&lt;br /&gt;
* base: Added is_substring_whitespace (rev#94633).&lt;br /&gt;
* logging: Added support for PATH in log writer file to handle unicode file name (rev#94634).&lt;br /&gt;
&lt;br /&gt;
===Improvements===&lt;br /&gt;
* store: Added support for handling NULL values in a database using ODBC when using a mapping in DB_SELECTION, DB_DYN_SELECTION, DB_CHANGE or DB_DYN_CHANGE (rev#94622).&lt;br /&gt;
* compiler: various improvements to type inference.&lt;br /&gt;
&lt;br /&gt;
===Feature removed===&lt;br /&gt;
&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
* store: Fixed a crash when the length of a table or column name would be more than 50 characters (Fixes test TEST_LENGTH_OF_COLUMN_NAME in rev#94591).&lt;br /&gt;
* store: Fixed an issue where large ASCII data would have their first byte missing when using ODBC (Fixed in rev#94661).&lt;br /&gt;
* runtime: Fixed an issue where retrieving a large amount of objects on a x86 platform, we would crash where restoring one of the store/retrieve stack using `epop' (see rev#94572).&lt;br /&gt;
* runtime: Fixed a potential overflow issue with store/retrieve when you have more than 2^31 objects. (Fixes bug#18835 in rev#94573).&lt;br /&gt;
* studio: The addition of the showing of contracts in the completion window had the side effect of removing the comment when showing a feature tooltip because we forgot to ask for them (Fixes bug#18839).&lt;br /&gt;
&lt;br /&gt;
===User changes===&lt;br /&gt;
* arguments: Changed the default display of help by showing first the option arguments and then the non-switched arguments.&lt;br /&gt;
* {{Red|studio: EiffelStudio will not load 5.7 and older .ACE file or .EPR file. Support for .EPR files is completely dropped. Support for .ACE file is continued but a tool is provided to convert them into a .ECF file; the tool is available with the other tools from EiffelStudio and its name is '''ace2ecf'''.}}&lt;br /&gt;
* regexp: Renamed CHARACTER_SET and BYTE_CODE into PCRE_CHARACTER_SET and PCRE_BYTE_CODE to avoid name conflicts with libraries that have the same class names.&lt;br /&gt;
&lt;br /&gt;
===Developer changes===&lt;br /&gt;
* void-safety: most of the framework libraries are now fully void-safe.&lt;br /&gt;
&lt;br /&gt;
==14.05.9.4570 (March 3rd 2014)==&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
===Improvements===&lt;br /&gt;
&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
* xml: Fixed XML parser when the input file is exactly the same size as the xml file input stream chunk size (default 4096 bytes). Improved parser to catch earlier issue related with end of input. This fixed an issue in the compiler not being able to retrieve ECFs with such a size.&lt;br /&gt;
* compiler: Fixed eweasel test#valid265 where if the variant expression is of an anchored type, it would fail to accept it, even if the anchor resolves to an integer type.&lt;br /&gt;
* compiler: Fixed test#anchor075 for bug#18824 where `like {X}.dotnet_query' would crash the compiler at degree 3 because we do not fill the {SYSTEM_I}.rout_info_table for .NET routines.&lt;br /&gt;
* compiler: Fixed eweasel test#freez022 by recording the converted type of an argument to later properly evaluate like arguments.&lt;br /&gt;
* compiler: Fixed an issue with catcall checking which would crash when enabled in the specific case where a type used as argument has some conversion routines. See test#catcall013.&lt;br /&gt;
&lt;br /&gt;
==14.05.9.4490 (February 21st 2014)==&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
* compiler: Added ability to extract file location of a class in interactive mode.&lt;br /&gt;
* {{red|compiler: Made it possible to compile a project for Windows on Unix, and vice-versa by using the -platform xxx command line, where xxx can be unix, windows, macintosh or vxworks.}}&lt;br /&gt;
* {{red| compile_all: Improved '''compile_all''' tool to return a non-zero exit code when there is a failure. Made it possible to target a specific platform. Also if an ECF has a platform setting set, and we are not compiling for that platform, the ECF will be ignored. }}&lt;br /&gt;
* compiler: The interactive mode of the compiler can now show the path of a class using the w menu in the class menu.&lt;br /&gt;
* base: Added is_whitespace and is_substring_whitespace.&lt;br /&gt;
* compiler: improved support for type inference.&lt;br /&gt;
&lt;br /&gt;
===Improvements===&lt;br /&gt;
* studio: Reduced size of '''project.epr''' and time it takes to save/retrieve a project by only saving what is needed. Some large projects went from 250MB down to 100MB on disk, and from 800MB to 300MB in memory usage.&lt;br /&gt;
* store: All sublibraries compile in complete void-safety mode.&lt;br /&gt;
* compiler: Made compiler more robust if some routines/classes are not found as expected by the compiler. It will now report a Library_error error instead of crashing at various stages of the compilation process.&lt;br /&gt;
* libraries: All libraries/examples/tools and other ECFs are now checked daily to ensure nothing breaks. As a result fixed a few issues for code that did not compile.&lt;br /&gt;
* {{red|compiler: Improved command line usage which will report why the command line is incorrect instead of displaying the whole help which is not very useful.}}&lt;br /&gt;
* compiler: Fixed an issue when you provide a directory instead of a file, it would report an internal error instead of just stating it could not open the file.&lt;br /&gt;
&lt;br /&gt;
===Feature removed===&lt;br /&gt;
&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
* vision2: Fixed by one error when mapping a caret position to the actual caret position of the underlying Windows implementation that has %R%N and not just %N. This fixes vision2 test {TEST_EV_TEXT}.test_test_caret_positioning.&lt;br /&gt;
* compiler: Fixed an issue with interactive mode where displaying all classes was actually not display classes which are part of a recursive cluster.&lt;br /&gt;
* compiler: Fixed eweasel test#anchor073 and test#anchor074 for bug#18758, and test#anchor059. Code now compiles, but it shows that there is still some work to be done. It improves the behavior of test#anchor005 and test#anchor042.&lt;br /&gt;
* compiler: Fixed test#anchor050. This addresses an issue where on .NET it would fail because for a query whose type is `like {X}.val' we would record what the type of `{X}.val' was, and not record that we needed the routine `val' of {X} for generating the type information for .NET code.&lt;br /&gt;
* compiler: Fixed eweasel test#anchor065 where if you have `like {G}.value' it would crash the compiler.&lt;br /&gt;
* compiler: Remove a code generation cast that caused a failure. The drawback is that the code does not verify any more (even though the code is safe). This fixes test#anchor018, test#anchor050, test#anchor054, test#anchor056, test#anchor059, test#anchor063 and potentially other tests.&lt;br /&gt;
* compiler: Fixed a bug in the interactive mode of the compiler that was preventing the display of classes that belong to a folder of a cluster.&lt;br /&gt;
&lt;br /&gt;
===User changes===&lt;br /&gt;
* {{red|studio: Now EiffelStudio will never propose to save tests in the hidden EIFGENs/project/Testing subdirectory.}}&lt;br /&gt;
&lt;br /&gt;
===Developer changes===&lt;br /&gt;
* compiler: Fixed test#term194.&lt;br /&gt;
* compiler: Improved memory tool to list all fields of an object.&lt;br /&gt;
&lt;br /&gt;
==14.05.9.4243 (February 10th 2014)==&lt;br /&gt;
===New features===&lt;br /&gt;
* net: EiffelNet with SSL support.&lt;br /&gt;
* zlib: New Zlib compression library&lt;br /&gt;
* ribbon: Added support for assigning hot keys to ribbon elements.&lt;br /&gt;
&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
* compiler: Fixed bug#18758 and test#anchor072 which only affected .NET code generation of qualified anchor types.&lt;br /&gt;
* compiler: Fixed a long standing bug where descriptions in external nodes were lost.&lt;br /&gt;
* compiler: Fixed eweasel test#config028, test#config029 and test#config038 where compiler would crash when using a cluster/library with an invalid path.&lt;br /&gt;
* compiler: Fixed a regression that caused a C compilation error after removing a type from the system.&lt;br /&gt;
* studio: Fixed improper display of conditions in task and external nodes.&lt;br /&gt;
* vision2: Fixed a regression in EV_DRAWABLE_IMP on Unix platforms that causes a crash on some Unix platforms.&lt;br /&gt;
* other: Fixed various regression from rev#94113.&lt;br /&gt;
&lt;br /&gt;
==14.05.9.4113 (January 29th 2014)==&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
* base: Added epsilon and machine_epsilon queries as requested by users in REAL_32 and REAL_64. Added missing min_value and max_value from the .NET version of REAL_32 and REAL_64.&lt;br /&gt;
* espec: Added latest version of ESPEC.&lt;br /&gt;
* {{Red | compiler: The compiler will now report syntax warnings for non-supported empty lists such as {}, () and []. And it will report an error in an export clause if after the type nothing is specified.}}&lt;br /&gt;
&lt;br /&gt;
===Improvements===&lt;br /&gt;
* argument: we allow the nologo command line option on Unix to ensure that programs have pretty much the exact same command line interface.&lt;br /&gt;
* compiler: we now provide syntax warnings for unsupported empty lists such as (), or [], or {}, as well as an empty export clause `export {NONE} end'. It is not ECMA compliant to accept those.&lt;br /&gt;
* {{Red| compiler: made workbench code more compact and faster by about 5 to 9% average.}}&lt;br /&gt;
* Made most libraries compile in the highest level of void-safety except the following ones:&lt;br /&gt;
** docking&lt;br /&gt;
** editor&lt;br /&gt;
** edk&lt;br /&gt;
** graph&lt;br /&gt;
** memory_analyzer&lt;br /&gt;
* testing: Made possible to run AutoTest test cases outside of the AutoTest framework by simply calling them from a normal class.&lt;br /&gt;
* vision2: Created a set of classes to make it easier to develop AutoTest tests for code based on vision2.&lt;br /&gt;
* {{Red|runtime: In workbench mode, if the melted file cannot be found, instead of exiting the application, the application will run as if it had never been melted and will print a warning in the console.}}&lt;br /&gt;
&lt;br /&gt;
===Feature removed===&lt;br /&gt;
* library: Removed obsolete feature &amp;lt;e&amp;gt;{TUPLE}.make&amp;lt;/e&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
* compiler: bug#18759 (test#iteration004) - Changed processing of &amp;lt;e&amp;gt;{ITERABLE}.new_cursor&amp;lt;/e&amp;gt; to use a renamed version of the feature in a descendant class rather than the feature having this name.&lt;br /&gt;
* compiler: bug#17233 (test#term196) - Supported iteration on an expression of a formal generic type.&lt;br /&gt;
* compiler: bug#17239 (test#term198) - Fixed a bug that caused a crash when compiling the code that used an inline agent as an iteration expression.&lt;br /&gt;
* compiler: bug#16983 (test#anchor055), bug#17034 (test#anchor057) - Fixed a bug that caused a crash when compiling the code with the creation of an object of a qualified anchored type with a formal generic.&lt;br /&gt;
* compiler: test#anchor070 - Fixed a bug that might cause compiler crash when nested qualified anchored types with a longer feature chain were involved in qualifiers of other qualified anchored types.&lt;br /&gt;
* compiler: bug#16991 (test#anchor056) - Fixed a bug that might cause a compiler to report an unknown feature in a qualified anchored type with a formal generic qualifier constrained only by formal generic types.&lt;br /&gt;
* compiler: bug#18795 (test#melt104) - Fixed an issue with address expression (not part of the Eiffel specification, only supported for backward compatibility) when melting code would crash the compiler.&lt;br /&gt;
* compiler: fixed test#exec341 where performing an assignment via &amp;quot;{EXT}.fea := bar&amp;quot; would fail at runtime.&lt;br /&gt;
* dotnet: Fixed a code generation bug when using across where the .NET code generation would perform a cast on the target type of the expression instead of on the type of the cursor.&lt;br /&gt;
*studio: Fixed an issue where if you open EiffelStudio on screen 1 of a multiple screen setup, then maximize EiffelStudio on screen 2. Next time you open EiffelStudio it would open maximized on screen 1 rather than on screen 2.&lt;br /&gt;
* wel: Fixed a bug with `set_string_with_newline_conversion' where if the input string had only one character after the last %N, that character would be discarded. That is to say &amp;quot;%Na&amp;quot; would yield &amp;quot;%R%N&amp;quot; instead of &amp;quot;%R%Na&amp;quot;. This fixes bug#18783.&lt;br /&gt;
* studio: Fixed an issue on Windows where once you set a preference to True, you could never go back to its default value. For example, force debug mode would always be active once set, same for linking the editor and the context tool and many others.&lt;br /&gt;
* studio: Fixed a saving issue where each time you saved a document, it will blink instead of not changing anything.&lt;br /&gt;
* studio: Fixed a copy and paste texts with multiple lines with some leading tabs into the editor. The cursor in the end is positioned N characters before the place it used to be. (N is the number of lines of the pasted text)&lt;br /&gt;
* base_extension: Fixed a crash in ENVIRONMENT_ARGUMENTS when arguments are removed after first access to ENVIRONMENT_ARGUMENTS. This is the case when using `--sync' option in a Vision2 application on Unix.&lt;br /&gt;
* process: Fixed redirection of standard error to a file which was redirecting to standard output instead.&lt;br /&gt;
* runtime: Fixed bug#18785 and eweasel test#ccomp089 for Linux 32-bit, but the fix will also affect any platform where the C compiler was not doing what we expected to compute the value of NaN, +Infinity and -Infinity for floating numbers.&lt;br /&gt;
* compiler: test#anchor071 - Fixed computation of a qualified anchored type that involves a formal generic parameter and feature redeclaration in a descendant of the formal generic constraint.&lt;br /&gt;
* studio: Fixed bug#18792, bug#18501 and bug#17626 when searching for a feature while the editor hasn't finished loading.&lt;br /&gt;
* studio: Fixed a long standing issue where the new class template had the wrong newline on Windows.&lt;br /&gt;
* store: Fixed Autotest test#test_numeric_types and test#test_numeric_types_use_decimal_mode by ensuring that a decimal read from the database (almost like a string representation) is converted to a REAL_64 the same way it is done in class {STRING}.to_real_64, otherwise we get different rounding.&lt;br /&gt;
&lt;br /&gt;
===User changes===&lt;br /&gt;
* EiffelStudio: Moved project setting option ''Full class checking'' to ''Advanced'' section.&lt;br /&gt;
* EiffelStudio: Changed project settings defaults to complete void safety.&lt;br /&gt;
* {{Red| compiler: In circa 2000, we allowed $x and $(expr) as expression instead of just argument passing. But while this was good for just $x, $(expr) is actually not supported properly in the code generation. As a consequence we have disallowed $(expr) outside argument passing.}}&lt;br /&gt;
* {{Red| wel: Fixed incorrect signatures of wrapping for PostMessage, GetCurrentProcessId and GetWindowThreadProcessID which do not return a pointer but an integer type.}}&lt;br /&gt;
&lt;br /&gt;
===Developer changes===&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=EiffelStudio_14.05_Releases&amp;diff=15166</id>
		<title>EiffelStudio 14.05 Releases</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=EiffelStudio_14.05_Releases&amp;diff=15166"/>
				<updated>2014-05-02T00:00:28Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: /* Improvements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Releases]]__NOTOC__{{ReleaseHistoryHeader}}&lt;br /&gt;
&lt;br /&gt;
= EiffelStudio 14.05.x Releases=&lt;br /&gt;
&lt;br /&gt;
Beta download: ftp://beta:beta57@ftp.eiffel.com/14.05/&lt;br /&gt;
&lt;br /&gt;
==14.05.x.x (...)==&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
===Improvements===&lt;br /&gt;
===Feature removed===&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
===User changes===&lt;br /&gt;
===Developer changes===&lt;br /&gt;
&lt;br /&gt;
==14.05.9.4974 (May 1st 2014)==&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
* iron: Integration of iron package manager to EiffelStudio.&lt;br /&gt;
* studio: New Fix facilities to semi-automatically fix errors or warnings such as unused local variables.&lt;br /&gt;
&lt;br /&gt;
===Improvements===&lt;br /&gt;
* iOS: Refreshed our runtime support for the latest iOS 7 with support for both 32-bit and 64-bit architecture.&lt;br /&gt;
* {{Red|compiler: Now compiler reports all VWEQ warnings as before it was only doing it if you were comparing an expanded with a reference. (rev#94966)}}&lt;br /&gt;
* store: Better handling of REAL_32 and REAL_64 to decimal when the associated column is a decimal (see updated TEST_NUMERIC_TYPES test).&lt;br /&gt;
* store: Removed precondition `is_allocatable' or `descriptor_available' or `descriptor_is_available'. We simply perform a check after trying to allocate a descriptor if it is successful or not. This fixes some issue with the interface of DATABASE_MANAGER which never checked that precondition anyway. (rev#94913)&lt;br /&gt;
* wel: Optimized WEL_RICH_EDIT_BUFFER_SAVER.&lt;br /&gt;
* vision2: On GTK made creation of an EV_PIXEL_BUFFER slightly faster.&lt;br /&gt;
* vision2: Made it possible to query `start_selection' and `end_selection' even when there is no selection, in which case they return the same value as `caret_position'. Same for `selected_text' and returning an empty string when there is no selection.&lt;br /&gt;
&lt;br /&gt;
===Feature removed===&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
* compiler: Fixed CECIL library creation to take into account the new memory_analyzer.o and offset.o modules of the runtime.&lt;br /&gt;
* compiler: Fixed bug#18855 where we used the wrong constant to display the command switch for the `-debug' option. (rev#94884)&lt;br /&gt;
* studio: Fixed error that prevented to add templates when editing contract of a routine.&lt;br /&gt;
* autotest: Fixed issue introduced in previous intermediate release which prevented AutoTest from running.&lt;br /&gt;
* base: Fixed postcondition of `escaped_utf_32_substring_into_utf_16_0_pointer' where we forgot the `negation' on whether the source string has a %U character or not. As a consequence we never checked that the output string would roundtrip. (rev#94842).&lt;br /&gt;
* base: Fixed issues with the handling of the Unicode escape character. If the escaped UTF-32 string contains the escape sequence and that it is trying to escape something that could fit the UTF-16 or UTF-8 encoding, then we store the content as is. This is to avoid the case for UTF-16 where if you have: &amp;quot;?61&amp;quot; would yield &amp;quot;a&amp;quot; after roundtriping.  Now if the UTF-16 or UTF-8, contains the escape character, the resulting string would have it twice, which again preventing proper roundtriping. (review#6283628036227072, autotest#TEST_UTF_CONVERTER, rev#94898).&lt;br /&gt;
* store: Fixed issue with storing large strings when using a prepared statement or a stored procedure (rev#94776).&lt;br /&gt;
* store: Fixed a bug when storing a string into a binary column in the database, because we would convert the database type from binary to longvarchar and that would cause a mismatch.&lt;br /&gt;
* {{Red | store: For stored procedures and prepared statements, improved the behavior of storing binary data by not imposing the user to convert its binary stream in hexadecimal. This is a breaking change as now it will store whatever you provide as is. For traditional SQL statements it remains the same and binary data needs to be converted. (rev#94824).}}&lt;br /&gt;
&lt;br /&gt;
* wel: Fixed autotest#TEST_WEL_STRING where if you have Unicode characters above the 65535 value, the result of the conversion to UTF-16 requires more space and when you have to replace %N into %R%N we forgot to resize the content before inserting the %R%N characters. (rev#94836).&lt;br /&gt;
* vision2: Fixed a bug in {EV_TEXT}.selected_text on Unix platform where if the text contained non-ASCII character, then it will just return the UTF-8 sequence of those Unicode character instead of the Unicode characters (rev#94874).&lt;br /&gt;
* vision2: Fixed `{EV_DRAWABLE}.draw_sub_pixel_buffer' on GTK when the rectangle provided is larger than the image. This was causing a seg fault on GTK. Fixed `{EV_PIXEL_BUFFER}.sub_pixel_buffer' which also failed if the provided area was larger than the image. (rev#94882)&lt;br /&gt;
* vision2: Fixed a precondition violation in the implementation of `get_pixel' where the C memory was shared with a size too small we need 4 extra-bytes to read our pixel integer data. This fixes autotest#TEST_EV_SCREEN.text_pixel_color_relative_to.(rev#94887).&lt;br /&gt;
* vision2: Fixed various issues on Windows with EV_TEXTABLE component when the text contains Unicode characters that generate a surrogate pair in UTF-16, the Windows API always refer to UTF-16 code units while at the Eiffel level we still refer to character position.&lt;br /&gt;
* vision2: * Made `selection_start' and `selection_end' obsolete as `selection_end' was returning a character position and not a caret position which is counter-intuitive since `set_selection' is using caret positions. Introduced `start_selection' and `end_selection' instead that returns the selection start and end in caret positions. This fixes autotest#TEST_EV_TEXT with respected to `has_selection', `set_selection', `selected_text', `start_selection' and `end_selection'.&lt;br /&gt;
&lt;br /&gt;
* autotest: Fixed an issue that happens once in a while where on Linux tests would fail with &amp;quot;Evaluator Died&amp;quot; . (bug#18078, rev#94876)&lt;br /&gt;
* autotest: Partial fix for bug#18838 by preventing a crash when no executable is present (case of compiling an ECF as a library instead of an application). Now the next step will be to disable the menu entries when we have such as system. (rev#94972).&lt;br /&gt;
* autotest: Fixed bug#18686 where if you start running a test that you just renamed it would crash because we reset the evaluator controler and thus make `connection' Void. Now we check that connection is still active before sending the request. (rev#94973)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===User changes===&lt;br /&gt;
===Developer changes===&lt;br /&gt;
&lt;br /&gt;
==14.05.9.4743 (March 31st 2014)==&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
* {{Red|Inspector Eiffel: Added a new static analysis tool to help you improve the quality of your code using predefined rules such as useless entities, unneeded nested ifs, unused arguments,... More details at [[User:Stefan/Code_Analysis | Code Analysis]]}}&lt;br /&gt;
* Added tool `emdc.exe' to inspect the .NET cache at a given location.&lt;br /&gt;
* base: Added is_substring_whitespace (rev#94633).&lt;br /&gt;
* logging: Added support for PATH in log writer file to handle unicode file name (rev#94634).&lt;br /&gt;
&lt;br /&gt;
===Improvements===&lt;br /&gt;
* store: Added support for handling NULL values in a database using ODBC when using a mapping in DB_SELECTION, DB_DYN_SELECTION, DB_CHANGE or DB_DYN_CHANGE (rev#94622).&lt;br /&gt;
* compiler: various improvements to type inference.&lt;br /&gt;
&lt;br /&gt;
===Feature removed===&lt;br /&gt;
&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
* store: Fixed a crash when the length of a table or column name would be more than 50 characters (Fixes test TEST_LENGTH_OF_COLUMN_NAME in rev#94591).&lt;br /&gt;
* store: Fixed an issue where large ASCII data would have their first byte missing when using ODBC (Fixed in rev#94661).&lt;br /&gt;
* runtime: Fixed an issue where retrieving a large amount of objects on a x86 platform, we would crash where restoring one of the store/retrieve stack using `epop' (see rev#94572).&lt;br /&gt;
* runtime: Fixed a potential overflow issue with store/retrieve when you have more than 2^31 objects. (Fixes bug#18835 in rev#94573).&lt;br /&gt;
* studio: The addition of the showing of contracts in the completion window had the side effect of removing the comment when showing a feature tooltip because we forgot to ask for them (Fixes bug#18839).&lt;br /&gt;
&lt;br /&gt;
===User changes===&lt;br /&gt;
* arguments: Changed the default display of help by showing first the option arguments and then the non-switched arguments.&lt;br /&gt;
* {{Red|studio: EiffelStudio will not load 5.7 and older .ACE file or .EPR file. Support for .EPR files is completely dropped. Support for .ACE file is continued but a tool is provided to convert them into a .ECF file; the tool is available with the other tools from EiffelStudio and its name is '''ace2ecf'''.}}&lt;br /&gt;
* regexp: Renamed CHARACTER_SET and BYTE_CODE into PCRE_CHARACTER_SET and PCRE_BYTE_CODE to avoid name conflicts with libraries that have the same class names.&lt;br /&gt;
&lt;br /&gt;
===Developer changes===&lt;br /&gt;
* void-safety: most of the framework libraries are now fully void-safe.&lt;br /&gt;
&lt;br /&gt;
==14.05.9.4570 (March 3rd 2014)==&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
===Improvements===&lt;br /&gt;
&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
* xml: Fixed XML parser when the input file is exactly the same size as the xml file input stream chunk size (default 4096 bytes). Improved parser to catch earlier issue related with end of input. This fixed an issue in the compiler not being able to retrieve ECFs with such a size.&lt;br /&gt;
* compiler: Fixed eweasel test#valid265 where if the variant expression is of an anchored type, it would fail to accept it, even if the anchor resolves to an integer type.&lt;br /&gt;
* compiler: Fixed test#anchor075 for bug#18824 where `like {X}.dotnet_query' would crash the compiler at degree 3 because we do not fill the {SYSTEM_I}.rout_info_table for .NET routines.&lt;br /&gt;
* compiler: Fixed eweasel test#freez022 by recording the converted type of an argument to later properly evaluate like arguments.&lt;br /&gt;
* compiler: Fixed an issue with catcall checking which would crash when enabled in the specific case where a type used as argument has some conversion routines. See test#catcall013.&lt;br /&gt;
&lt;br /&gt;
==14.05.9.4490 (February 21st 2014)==&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
* compiler: Added ability to extract file location of a class in interactive mode.&lt;br /&gt;
* {{red|compiler: Made it possible to compile a project for Windows on Unix, and vice-versa by using the -platform xxx command line, where xxx can be unix, windows, macintosh or vxworks.}}&lt;br /&gt;
* {{red| compile_all: Improved '''compile_all''' tool to return a non-zero exit code when there is a failure. Made it possible to target a specific platform. Also if an ECF has a platform setting set, and we are not compiling for that platform, the ECF will be ignored. }}&lt;br /&gt;
* compiler: The interactive mode of the compiler can now show the path of a class using the w menu in the class menu.&lt;br /&gt;
* base: Added is_whitespace and is_substring_whitespace.&lt;br /&gt;
* compiler: improved support for type inference.&lt;br /&gt;
&lt;br /&gt;
===Improvements===&lt;br /&gt;
* studio: Reduced size of '''project.epr''' and time it takes to save/retrieve a project by only saving what is needed. Some large projects went from 250MB down to 100MB on disk, and from 800MB to 300MB in memory usage.&lt;br /&gt;
* store: All sublibraries compile in complete void-safety mode.&lt;br /&gt;
* compiler: Made compiler more robust if some routines/classes are not found as expected by the compiler. It will now report a Library_error error instead of crashing at various stages of the compilation process.&lt;br /&gt;
* libraries: All libraries/examples/tools and other ECFs are now checked daily to ensure nothing breaks. As a result fixed a few issues for code that did not compile.&lt;br /&gt;
* {{red|compiler: Improved command line usage which will report why the command line is incorrect instead of displaying the whole help which is not very useful.}}&lt;br /&gt;
* compiler: Fixed an issue when you provide a directory instead of a file, it would report an internal error instead of just stating it could not open the file.&lt;br /&gt;
&lt;br /&gt;
===Feature removed===&lt;br /&gt;
&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
* vision2: Fixed by one error when mapping a caret position to the actual caret position of the underlying Windows implementation that has %R%N and not just %N. This fixes vision2 test {TEST_EV_TEXT}.test_test_caret_positioning.&lt;br /&gt;
* compiler: Fixed an issue with interactive mode where displaying all classes was actually not display classes which are part of a recursive cluster.&lt;br /&gt;
* compiler: Fixed eweasel test#anchor073 and test#anchor074 for bug#18758, and test#anchor059. Code now compiles, but it shows that there is still some work to be done. It improves the behavior of test#anchor005 and test#anchor042.&lt;br /&gt;
* compiler: Fixed test#anchor050. This addresses an issue where on .NET it would fail because for a query whose type is `like {X}.val' we would record what the type of `{X}.val' was, and not record that we needed the routine `val' of {X} for generating the type information for .NET code.&lt;br /&gt;
* compiler: Fixed eweasel test#anchor065 where if you have `like {G}.value' it would crash the compiler.&lt;br /&gt;
* compiler: Remove a code generation cast that caused a failure. The drawback is that the code does not verify any more (even though the code is safe). This fixes test#anchor018, test#anchor050, test#anchor054, test#anchor056, test#anchor059, test#anchor063 and potentially other tests.&lt;br /&gt;
* compiler: Fixed a bug in the interactive mode of the compiler that was preventing the display of classes that belong to a folder of a cluster.&lt;br /&gt;
&lt;br /&gt;
===User changes===&lt;br /&gt;
* {{red|studio: Now EiffelStudio will never propose to save tests in the hidden EIFGENs/project/Testing subdirectory.}}&lt;br /&gt;
&lt;br /&gt;
===Developer changes===&lt;br /&gt;
* compiler: Fixed test#term194.&lt;br /&gt;
* compiler: Improved memory tool to list all fields of an object.&lt;br /&gt;
&lt;br /&gt;
==14.05.9.4243 (February 10th 2014)==&lt;br /&gt;
===New features===&lt;br /&gt;
* net: EiffelNet with SSL support.&lt;br /&gt;
* zlib: New Zlib compression library&lt;br /&gt;
* ribbon: Added support for assigning hot keys to ribbon elements.&lt;br /&gt;
&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
* compiler: Fixed bug#18758 and test#anchor072 which only affected .NET code generation of qualified anchor types.&lt;br /&gt;
* compiler: Fixed a long standing bug where descriptions in external nodes were lost.&lt;br /&gt;
* compiler: Fixed eweasel test#config028, test#config029 and test#config038 where compiler would crash when using a cluster/library with an invalid path.&lt;br /&gt;
* compiler: Fixed a regression that caused a C compilation error after removing a type from the system.&lt;br /&gt;
* studio: Fixed improper display of conditions in task and external nodes.&lt;br /&gt;
* vision2: Fixed a regression in EV_DRAWABLE_IMP on Unix platforms that causes a crash on some Unix platforms.&lt;br /&gt;
* other: Fixed various regression from rev#94113.&lt;br /&gt;
&lt;br /&gt;
==14.05.9.4113 (January 29th 2014)==&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
* base: Added epsilon and machine_epsilon queries as requested by users in REAL_32 and REAL_64. Added missing min_value and max_value from the .NET version of REAL_32 and REAL_64.&lt;br /&gt;
* espec: Added latest version of ESPEC.&lt;br /&gt;
* {{Red | compiler: The compiler will now report syntax warnings for non-supported empty lists such as {}, () and []. And it will report an error in an export clause if after the type nothing is specified.}}&lt;br /&gt;
&lt;br /&gt;
===Improvements===&lt;br /&gt;
* argument: we allow the nologo command line option on Unix to ensure that programs have pretty much the exact same command line interface.&lt;br /&gt;
* compiler: we now provide syntax warnings for unsupported empty lists such as (), or [], or {}, as well as an empty export clause `export {NONE} end'. It is not ECMA compliant to accept those.&lt;br /&gt;
* {{Red| compiler: made workbench code more compact and faster by about 5 to 9% average.}}&lt;br /&gt;
* Made most libraries compile in the highest level of void-safety except the following ones:&lt;br /&gt;
** docking&lt;br /&gt;
** editor&lt;br /&gt;
** edk&lt;br /&gt;
** graph&lt;br /&gt;
** memory_analyzer&lt;br /&gt;
* testing: Made possible to run AutoTest test cases outside of the AutoTest framework by simply calling them from a normal class.&lt;br /&gt;
* vision2: Created a set of classes to make it easier to develop AutoTest tests for code based on vision2.&lt;br /&gt;
* {{Red|runtime: In workbench mode, if the melted file cannot be found, instead of exiting the application, the application will run as if it had never been melted and will print a warning in the console.}}&lt;br /&gt;
&lt;br /&gt;
===Feature removed===&lt;br /&gt;
* library: Removed obsolete feature &amp;lt;e&amp;gt;{TUPLE}.make&amp;lt;/e&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
* compiler: bug#18759 (test#iteration004) - Changed processing of &amp;lt;e&amp;gt;{ITERABLE}.new_cursor&amp;lt;/e&amp;gt; to use a renamed version of the feature in a descendant class rather than the feature having this name.&lt;br /&gt;
* compiler: bug#17233 (test#term196) - Supported iteration on an expression of a formal generic type.&lt;br /&gt;
* compiler: bug#17239 (test#term198) - Fixed a bug that caused a crash when compiling the code that used an inline agent as an iteration expression.&lt;br /&gt;
* compiler: bug#16983 (test#anchor055), bug#17034 (test#anchor057) - Fixed a bug that caused a crash when compiling the code with the creation of an object of a qualified anchored type with a formal generic.&lt;br /&gt;
* compiler: test#anchor070 - Fixed a bug that might cause compiler crash when nested qualified anchored types with a longer feature chain were involved in qualifiers of other qualified anchored types.&lt;br /&gt;
* compiler: bug#16991 (test#anchor056) - Fixed a bug that might cause a compiler to report an unknown feature in a qualified anchored type with a formal generic qualifier constrained only by formal generic types.&lt;br /&gt;
* compiler: bug#18795 (test#melt104) - Fixed an issue with address expression (not part of the Eiffel specification, only supported for backward compatibility) when melting code would crash the compiler.&lt;br /&gt;
* compiler: fixed test#exec341 where performing an assignment via &amp;quot;{EXT}.fea := bar&amp;quot; would fail at runtime.&lt;br /&gt;
* dotnet: Fixed a code generation bug when using across where the .NET code generation would perform a cast on the target type of the expression instead of on the type of the cursor.&lt;br /&gt;
*studio: Fixed an issue where if you open EiffelStudio on screen 1 of a multiple screen setup, then maximize EiffelStudio on screen 2. Next time you open EiffelStudio it would open maximized on screen 1 rather than on screen 2.&lt;br /&gt;
* wel: Fixed a bug with `set_string_with_newline_conversion' where if the input string had only one character after the last %N, that character would be discarded. That is to say &amp;quot;%Na&amp;quot; would yield &amp;quot;%R%N&amp;quot; instead of &amp;quot;%R%Na&amp;quot;. This fixes bug#18783.&lt;br /&gt;
* studio: Fixed an issue on Windows where once you set a preference to True, you could never go back to its default value. For example, force debug mode would always be active once set, same for linking the editor and the context tool and many others.&lt;br /&gt;
* studio: Fixed a saving issue where each time you saved a document, it will blink instead of not changing anything.&lt;br /&gt;
* studio: Fixed a copy and paste texts with multiple lines with some leading tabs into the editor. The cursor in the end is positioned N characters before the place it used to be. (N is the number of lines of the pasted text)&lt;br /&gt;
* base_extension: Fixed a crash in ENVIRONMENT_ARGUMENTS when arguments are removed after first access to ENVIRONMENT_ARGUMENTS. This is the case when using `--sync' option in a Vision2 application on Unix.&lt;br /&gt;
* process: Fixed redirection of standard error to a file which was redirecting to standard output instead.&lt;br /&gt;
* runtime: Fixed bug#18785 and eweasel test#ccomp089 for Linux 32-bit, but the fix will also affect any platform where the C compiler was not doing what we expected to compute the value of NaN, +Infinity and -Infinity for floating numbers.&lt;br /&gt;
* compiler: test#anchor071 - Fixed computation of a qualified anchored type that involves a formal generic parameter and feature redeclaration in a descendant of the formal generic constraint.&lt;br /&gt;
* studio: Fixed bug#18792, bug#18501 and bug#17626 when searching for a feature while the editor hasn't finished loading.&lt;br /&gt;
* studio: Fixed a long standing issue where the new class template had the wrong newline on Windows.&lt;br /&gt;
* store: Fixed Autotest test#test_numeric_types and test#test_numeric_types_use_decimal_mode by ensuring that a decimal read from the database (almost like a string representation) is converted to a REAL_64 the same way it is done in class {STRING}.to_real_64, otherwise we get different rounding.&lt;br /&gt;
&lt;br /&gt;
===User changes===&lt;br /&gt;
* EiffelStudio: Moved project setting option ''Full class checking'' to ''Advanced'' section.&lt;br /&gt;
* EiffelStudio: Changed project settings defaults to complete void safety.&lt;br /&gt;
* {{Red| compiler: In circa 2000, we allowed $x and $(expr) as expression instead of just argument passing. But while this was good for just $x, $(expr) is actually not supported properly in the code generation. As a consequence we have disallowed $(expr) outside argument passing.}}&lt;br /&gt;
* {{Red| wel: Fixed incorrect signatures of wrapping for PostMessage, GetCurrentProcessId and GetWindowThreadProcessID which do not return a pointer but an integer type.}}&lt;br /&gt;
&lt;br /&gt;
===Developer changes===&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=EiffelStudio_14.05_Releases&amp;diff=15165</id>
		<title>EiffelStudio 14.05 Releases</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=EiffelStudio_14.05_Releases&amp;diff=15165"/>
				<updated>2014-05-01T23:54:40Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: /* New features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Releases]]__NOTOC__{{ReleaseHistoryHeader}}&lt;br /&gt;
&lt;br /&gt;
= EiffelStudio 14.05.x Releases=&lt;br /&gt;
&lt;br /&gt;
Beta download: ftp://beta:beta57@ftp.eiffel.com/14.05/&lt;br /&gt;
&lt;br /&gt;
==14.05.x.x (...)==&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
===Improvements===&lt;br /&gt;
===Feature removed===&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
===User changes===&lt;br /&gt;
===Developer changes===&lt;br /&gt;
&lt;br /&gt;
==14.05.9.4974 (May 1st 2014)==&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
* iron: Integration of iron package manager to EiffelStudio.&lt;br /&gt;
* studio: New Fix facilities to semi-automatically fix errors or warnings such as unused local variables.&lt;br /&gt;
&lt;br /&gt;
===Improvements===&lt;br /&gt;
* iOS: Refreshed our runtime support for the latest iOS 7 with support for both 32-bit and 64-bit architecture.&lt;br /&gt;
* {{Red|compiler: Now compiler reports all VWEQ warnings as before it was only doing it if you were comparing an expanded with a reference). (rev#94966)}}&lt;br /&gt;
* store: Better handling of REAL_32 and REAL_64 to decimal when the associated column is a decimal (see updated TEST_NUMERIC_TYPES test).&lt;br /&gt;
* store: Removed precondition `is_allocatable' or `descriptor_available' or `descriptor_is_available'. We simply perform a check after trying to allocate a descriptor if it is successful or not. This fixes some issue with the interface of DATABASE_MANAGER which never checked that precondition anyway. (rev#94913)&lt;br /&gt;
* wel: Optimized WEL_RICH_EDIT_BUFFER_SAVER.&lt;br /&gt;
* vision2: On GTK made creation of an EV_PIXEL_BUFFER slightly faster.&lt;br /&gt;
* vision2: Made it possible to query `start_selection' and `end_selection' even when there is no selection, in which case they return the same value as `caret_position'. Same for `selected_text' and returning an empty string when there is no selection.&lt;br /&gt;
&lt;br /&gt;
===Feature removed===&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
* compiler: Fixed CECIL library creation to take into account the new memory_analyzer.o and offset.o modules of the runtime.&lt;br /&gt;
* compiler: Fixed bug#18855 where we used the wrong constant to display the command switch for the `-debug' option. (rev#94884)&lt;br /&gt;
* studio: Fixed error that prevented to add templates when editing contract of a routine.&lt;br /&gt;
* autotest: Fixed issue introduced in previous intermediate release which prevented AutoTest from running.&lt;br /&gt;
* base: Fixed postcondition of `escaped_utf_32_substring_into_utf_16_0_pointer' where we forgot the `negation' on whether the source string has a %U character or not. As a consequence we never checked that the output string would roundtrip. (rev#94842).&lt;br /&gt;
* base: Fixed issues with the handling of the Unicode escape character. If the escaped UTF-32 string contains the escape sequence and that it is trying to escape something that could fit the UTF-16 or UTF-8 encoding, then we store the content as is. This is to avoid the case for UTF-16 where if you have: &amp;quot;?61&amp;quot; would yield &amp;quot;a&amp;quot; after roundtriping.  Now if the UTF-16 or UTF-8, contains the escape character, the resulting string would have it twice, which again preventing proper roundtriping. (review#6283628036227072, autotest#TEST_UTF_CONVERTER, rev#94898).&lt;br /&gt;
* store: Fixed issue with storing large strings when using a prepared statement or a stored procedure (rev#94776).&lt;br /&gt;
* store: Fixed a bug when storing a string into a binary column in the database, because we would convert the database type from binary to longvarchar and that would cause a mismatch.&lt;br /&gt;
* {{Red | store: For stored procedures and prepared statements, improved the behavior of storing binary data by not imposing the user to convert its binary stream in hexadecimal. This is a breaking change as now it will store whatever you provide as is. For traditional SQL statements it remains the same and binary data needs to be converted. (rev#94824).}}&lt;br /&gt;
&lt;br /&gt;
* wel: Fixed autotest#TEST_WEL_STRING where if you have Unicode characters above the 65535 value, the result of the conversion to UTF-16 requires more space and when you have to replace %N into %R%N we forgot to resize the content before inserting the %R%N characters. (rev#94836).&lt;br /&gt;
* vision2: Fixed a bug in {EV_TEXT}.selected_text on Unix platform where if the text contained non-ASCII character, then it will just return the UTF-8 sequence of those Unicode character instead of the Unicode characters (rev#94874).&lt;br /&gt;
* vision2: Fixed `{EV_DRAWABLE}.draw_sub_pixel_buffer' on GTK when the rectangle provided is larger than the image. This was causing a seg fault on GTK. Fixed `{EV_PIXEL_BUFFER}.sub_pixel_buffer' which also failed if the provided area was larger than the image. (rev#94882)&lt;br /&gt;
* vision2: Fixed a precondition violation in the implementation of `get_pixel' where the C memory was shared with a size too small we need 4 extra-bytes to read our pixel integer data. This fixes autotest#TEST_EV_SCREEN.text_pixel_color_relative_to.(rev#94887).&lt;br /&gt;
* vision2: Fixed various issues on Windows with EV_TEXTABLE component when the text contains Unicode characters that generate a surrogate pair in UTF-16, the Windows API always refer to UTF-16 code units while at the Eiffel level we still refer to character position.&lt;br /&gt;
* vision2: * Made `selection_start' and `selection_end' obsolete as `selection_end' was returning a character position and not a caret position which is counter-intuitive since `set_selection' is using caret positions. Introduced `start_selection' and `end_selection' instead that returns the selection start and end in caret positions. This fixes autotest#TEST_EV_TEXT with respected to `has_selection', `set_selection', `selected_text', `start_selection' and `end_selection'.&lt;br /&gt;
&lt;br /&gt;
* autotest: Fixed an issue that happens once in a while where on Linux tests would fail with &amp;quot;Evaluator Died&amp;quot; . (bug#18078, rev#94876)&lt;br /&gt;
* autotest: Partial fix for bug#18838 by preventing a crash when no executable is present (case of compiling an ECF as a library instead of an application). Now the next step will be to disable the menu entries when we have such as system. (rev#94972).&lt;br /&gt;
* autotest: Fixed bug#18686 where if you start running a test that you just renamed it would crash because we reset the evaluator controler and thus make `connection' Void. Now we check that connection is still active before sending the request. (rev#94973)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===User changes===&lt;br /&gt;
===Developer changes===&lt;br /&gt;
&lt;br /&gt;
==14.05.9.4743 (March 31st 2014)==&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
* {{Red|Inspector Eiffel: Added a new static analysis tool to help you improve the quality of your code using predefined rules such as useless entities, unneeded nested ifs, unused arguments,... More details at [[User:Stefan/Code_Analysis | Code Analysis]]}}&lt;br /&gt;
* Added tool `emdc.exe' to inspect the .NET cache at a given location.&lt;br /&gt;
* base: Added is_substring_whitespace (rev#94633).&lt;br /&gt;
* logging: Added support for PATH in log writer file to handle unicode file name (rev#94634).&lt;br /&gt;
&lt;br /&gt;
===Improvements===&lt;br /&gt;
* store: Added support for handling NULL values in a database using ODBC when using a mapping in DB_SELECTION, DB_DYN_SELECTION, DB_CHANGE or DB_DYN_CHANGE (rev#94622).&lt;br /&gt;
* compiler: various improvements to type inference.&lt;br /&gt;
&lt;br /&gt;
===Feature removed===&lt;br /&gt;
&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
* store: Fixed a crash when the length of a table or column name would be more than 50 characters (Fixes test TEST_LENGTH_OF_COLUMN_NAME in rev#94591).&lt;br /&gt;
* store: Fixed an issue where large ASCII data would have their first byte missing when using ODBC (Fixed in rev#94661).&lt;br /&gt;
* runtime: Fixed an issue where retrieving a large amount of objects on a x86 platform, we would crash where restoring one of the store/retrieve stack using `epop' (see rev#94572).&lt;br /&gt;
* runtime: Fixed a potential overflow issue with store/retrieve when you have more than 2^31 objects. (Fixes bug#18835 in rev#94573).&lt;br /&gt;
* studio: The addition of the showing of contracts in the completion window had the side effect of removing the comment when showing a feature tooltip because we forgot to ask for them (Fixes bug#18839).&lt;br /&gt;
&lt;br /&gt;
===User changes===&lt;br /&gt;
* arguments: Changed the default display of help by showing first the option arguments and then the non-switched arguments.&lt;br /&gt;
* {{Red|studio: EiffelStudio will not load 5.7 and older .ACE file or .EPR file. Support for .EPR files is completely dropped. Support for .ACE file is continued but a tool is provided to convert them into a .ECF file; the tool is available with the other tools from EiffelStudio and its name is '''ace2ecf'''.}}&lt;br /&gt;
* regexp: Renamed CHARACTER_SET and BYTE_CODE into PCRE_CHARACTER_SET and PCRE_BYTE_CODE to avoid name conflicts with libraries that have the same class names.&lt;br /&gt;
&lt;br /&gt;
===Developer changes===&lt;br /&gt;
* void-safety: most of the framework libraries are now fully void-safe.&lt;br /&gt;
&lt;br /&gt;
==14.05.9.4570 (March 3rd 2014)==&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
===Improvements===&lt;br /&gt;
&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
* xml: Fixed XML parser when the input file is exactly the same size as the xml file input stream chunk size (default 4096 bytes). Improved parser to catch earlier issue related with end of input. This fixed an issue in the compiler not being able to retrieve ECFs with such a size.&lt;br /&gt;
* compiler: Fixed eweasel test#valid265 where if the variant expression is of an anchored type, it would fail to accept it, even if the anchor resolves to an integer type.&lt;br /&gt;
* compiler: Fixed test#anchor075 for bug#18824 where `like {X}.dotnet_query' would crash the compiler at degree 3 because we do not fill the {SYSTEM_I}.rout_info_table for .NET routines.&lt;br /&gt;
* compiler: Fixed eweasel test#freez022 by recording the converted type of an argument to later properly evaluate like arguments.&lt;br /&gt;
* compiler: Fixed an issue with catcall checking which would crash when enabled in the specific case where a type used as argument has some conversion routines. See test#catcall013.&lt;br /&gt;
&lt;br /&gt;
==14.05.9.4490 (February 21st 2014)==&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
* compiler: Added ability to extract file location of a class in interactive mode.&lt;br /&gt;
* {{red|compiler: Made it possible to compile a project for Windows on Unix, and vice-versa by using the -platform xxx command line, where xxx can be unix, windows, macintosh or vxworks.}}&lt;br /&gt;
* {{red| compile_all: Improved '''compile_all''' tool to return a non-zero exit code when there is a failure. Made it possible to target a specific platform. Also if an ECF has a platform setting set, and we are not compiling for that platform, the ECF will be ignored. }}&lt;br /&gt;
* compiler: The interactive mode of the compiler can now show the path of a class using the w menu in the class menu.&lt;br /&gt;
* base: Added is_whitespace and is_substring_whitespace.&lt;br /&gt;
* compiler: improved support for type inference.&lt;br /&gt;
&lt;br /&gt;
===Improvements===&lt;br /&gt;
* studio: Reduced size of '''project.epr''' and time it takes to save/retrieve a project by only saving what is needed. Some large projects went from 250MB down to 100MB on disk, and from 800MB to 300MB in memory usage.&lt;br /&gt;
* store: All sublibraries compile in complete void-safety mode.&lt;br /&gt;
* compiler: Made compiler more robust if some routines/classes are not found as expected by the compiler. It will now report a Library_error error instead of crashing at various stages of the compilation process.&lt;br /&gt;
* libraries: All libraries/examples/tools and other ECFs are now checked daily to ensure nothing breaks. As a result fixed a few issues for code that did not compile.&lt;br /&gt;
* {{red|compiler: Improved command line usage which will report why the command line is incorrect instead of displaying the whole help which is not very useful.}}&lt;br /&gt;
* compiler: Fixed an issue when you provide a directory instead of a file, it would report an internal error instead of just stating it could not open the file.&lt;br /&gt;
&lt;br /&gt;
===Feature removed===&lt;br /&gt;
&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
* vision2: Fixed by one error when mapping a caret position to the actual caret position of the underlying Windows implementation that has %R%N and not just %N. This fixes vision2 test {TEST_EV_TEXT}.test_test_caret_positioning.&lt;br /&gt;
* compiler: Fixed an issue with interactive mode where displaying all classes was actually not display classes which are part of a recursive cluster.&lt;br /&gt;
* compiler: Fixed eweasel test#anchor073 and test#anchor074 for bug#18758, and test#anchor059. Code now compiles, but it shows that there is still some work to be done. It improves the behavior of test#anchor005 and test#anchor042.&lt;br /&gt;
* compiler: Fixed test#anchor050. This addresses an issue where on .NET it would fail because for a query whose type is `like {X}.val' we would record what the type of `{X}.val' was, and not record that we needed the routine `val' of {X} for generating the type information for .NET code.&lt;br /&gt;
* compiler: Fixed eweasel test#anchor065 where if you have `like {G}.value' it would crash the compiler.&lt;br /&gt;
* compiler: Remove a code generation cast that caused a failure. The drawback is that the code does not verify any more (even though the code is safe). This fixes test#anchor018, test#anchor050, test#anchor054, test#anchor056, test#anchor059, test#anchor063 and potentially other tests.&lt;br /&gt;
* compiler: Fixed a bug in the interactive mode of the compiler that was preventing the display of classes that belong to a folder of a cluster.&lt;br /&gt;
&lt;br /&gt;
===User changes===&lt;br /&gt;
* {{red|studio: Now EiffelStudio will never propose to save tests in the hidden EIFGENs/project/Testing subdirectory.}}&lt;br /&gt;
&lt;br /&gt;
===Developer changes===&lt;br /&gt;
* compiler: Fixed test#term194.&lt;br /&gt;
* compiler: Improved memory tool to list all fields of an object.&lt;br /&gt;
&lt;br /&gt;
==14.05.9.4243 (February 10th 2014)==&lt;br /&gt;
===New features===&lt;br /&gt;
* net: EiffelNet with SSL support.&lt;br /&gt;
* zlib: New Zlib compression library&lt;br /&gt;
* ribbon: Added support for assigning hot keys to ribbon elements.&lt;br /&gt;
&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
* compiler: Fixed bug#18758 and test#anchor072 which only affected .NET code generation of qualified anchor types.&lt;br /&gt;
* compiler: Fixed a long standing bug where descriptions in external nodes were lost.&lt;br /&gt;
* compiler: Fixed eweasel test#config028, test#config029 and test#config038 where compiler would crash when using a cluster/library with an invalid path.&lt;br /&gt;
* compiler: Fixed a regression that caused a C compilation error after removing a type from the system.&lt;br /&gt;
* studio: Fixed improper display of conditions in task and external nodes.&lt;br /&gt;
* vision2: Fixed a regression in EV_DRAWABLE_IMP on Unix platforms that causes a crash on some Unix platforms.&lt;br /&gt;
* other: Fixed various regression from rev#94113.&lt;br /&gt;
&lt;br /&gt;
==14.05.9.4113 (January 29th 2014)==&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
* base: Added epsilon and machine_epsilon queries as requested by users in REAL_32 and REAL_64. Added missing min_value and max_value from the .NET version of REAL_32 and REAL_64.&lt;br /&gt;
* espec: Added latest version of ESPEC.&lt;br /&gt;
* {{Red | compiler: The compiler will now report syntax warnings for non-supported empty lists such as {}, () and []. And it will report an error in an export clause if after the type nothing is specified.}}&lt;br /&gt;
&lt;br /&gt;
===Improvements===&lt;br /&gt;
* argument: we allow the nologo command line option on Unix to ensure that programs have pretty much the exact same command line interface.&lt;br /&gt;
* compiler: we now provide syntax warnings for unsupported empty lists such as (), or [], or {}, as well as an empty export clause `export {NONE} end'. It is not ECMA compliant to accept those.&lt;br /&gt;
* {{Red| compiler: made workbench code more compact and faster by about 5 to 9% average.}}&lt;br /&gt;
* Made most libraries compile in the highest level of void-safety except the following ones:&lt;br /&gt;
** docking&lt;br /&gt;
** editor&lt;br /&gt;
** edk&lt;br /&gt;
** graph&lt;br /&gt;
** memory_analyzer&lt;br /&gt;
* testing: Made possible to run AutoTest test cases outside of the AutoTest framework by simply calling them from a normal class.&lt;br /&gt;
* vision2: Created a set of classes to make it easier to develop AutoTest tests for code based on vision2.&lt;br /&gt;
* {{Red|runtime: In workbench mode, if the melted file cannot be found, instead of exiting the application, the application will run as if it had never been melted and will print a warning in the console.}}&lt;br /&gt;
&lt;br /&gt;
===Feature removed===&lt;br /&gt;
* library: Removed obsolete feature &amp;lt;e&amp;gt;{TUPLE}.make&amp;lt;/e&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
* compiler: bug#18759 (test#iteration004) - Changed processing of &amp;lt;e&amp;gt;{ITERABLE}.new_cursor&amp;lt;/e&amp;gt; to use a renamed version of the feature in a descendant class rather than the feature having this name.&lt;br /&gt;
* compiler: bug#17233 (test#term196) - Supported iteration on an expression of a formal generic type.&lt;br /&gt;
* compiler: bug#17239 (test#term198) - Fixed a bug that caused a crash when compiling the code that used an inline agent as an iteration expression.&lt;br /&gt;
* compiler: bug#16983 (test#anchor055), bug#17034 (test#anchor057) - Fixed a bug that caused a crash when compiling the code with the creation of an object of a qualified anchored type with a formal generic.&lt;br /&gt;
* compiler: test#anchor070 - Fixed a bug that might cause compiler crash when nested qualified anchored types with a longer feature chain were involved in qualifiers of other qualified anchored types.&lt;br /&gt;
* compiler: bug#16991 (test#anchor056) - Fixed a bug that might cause a compiler to report an unknown feature in a qualified anchored type with a formal generic qualifier constrained only by formal generic types.&lt;br /&gt;
* compiler: bug#18795 (test#melt104) - Fixed an issue with address expression (not part of the Eiffel specification, only supported for backward compatibility) when melting code would crash the compiler.&lt;br /&gt;
* compiler: fixed test#exec341 where performing an assignment via &amp;quot;{EXT}.fea := bar&amp;quot; would fail at runtime.&lt;br /&gt;
* dotnet: Fixed a code generation bug when using across where the .NET code generation would perform a cast on the target type of the expression instead of on the type of the cursor.&lt;br /&gt;
*studio: Fixed an issue where if you open EiffelStudio on screen 1 of a multiple screen setup, then maximize EiffelStudio on screen 2. Next time you open EiffelStudio it would open maximized on screen 1 rather than on screen 2.&lt;br /&gt;
* wel: Fixed a bug with `set_string_with_newline_conversion' where if the input string had only one character after the last %N, that character would be discarded. That is to say &amp;quot;%Na&amp;quot; would yield &amp;quot;%R%N&amp;quot; instead of &amp;quot;%R%Na&amp;quot;. This fixes bug#18783.&lt;br /&gt;
* studio: Fixed an issue on Windows where once you set a preference to True, you could never go back to its default value. For example, force debug mode would always be active once set, same for linking the editor and the context tool and many others.&lt;br /&gt;
* studio: Fixed a saving issue where each time you saved a document, it will blink instead of not changing anything.&lt;br /&gt;
* studio: Fixed a copy and paste texts with multiple lines with some leading tabs into the editor. The cursor in the end is positioned N characters before the place it used to be. (N is the number of lines of the pasted text)&lt;br /&gt;
* base_extension: Fixed a crash in ENVIRONMENT_ARGUMENTS when arguments are removed after first access to ENVIRONMENT_ARGUMENTS. This is the case when using `--sync' option in a Vision2 application on Unix.&lt;br /&gt;
* process: Fixed redirection of standard error to a file which was redirecting to standard output instead.&lt;br /&gt;
* runtime: Fixed bug#18785 and eweasel test#ccomp089 for Linux 32-bit, but the fix will also affect any platform where the C compiler was not doing what we expected to compute the value of NaN, +Infinity and -Infinity for floating numbers.&lt;br /&gt;
* compiler: test#anchor071 - Fixed computation of a qualified anchored type that involves a formal generic parameter and feature redeclaration in a descendant of the formal generic constraint.&lt;br /&gt;
* studio: Fixed bug#18792, bug#18501 and bug#17626 when searching for a feature while the editor hasn't finished loading.&lt;br /&gt;
* studio: Fixed a long standing issue where the new class template had the wrong newline on Windows.&lt;br /&gt;
* store: Fixed Autotest test#test_numeric_types and test#test_numeric_types_use_decimal_mode by ensuring that a decimal read from the database (almost like a string representation) is converted to a REAL_64 the same way it is done in class {STRING}.to_real_64, otherwise we get different rounding.&lt;br /&gt;
&lt;br /&gt;
===User changes===&lt;br /&gt;
* EiffelStudio: Moved project setting option ''Full class checking'' to ''Advanced'' section.&lt;br /&gt;
* EiffelStudio: Changed project settings defaults to complete void safety.&lt;br /&gt;
* {{Red| compiler: In circa 2000, we allowed $x and $(expr) as expression instead of just argument passing. But while this was good for just $x, $(expr) is actually not supported properly in the code generation. As a consequence we have disallowed $(expr) outside argument passing.}}&lt;br /&gt;
* {{Red| wel: Fixed incorrect signatures of wrapping for PostMessage, GetCurrentProcessId and GetWindowThreadProcessID which do not return a pointer but an integer type.}}&lt;br /&gt;
&lt;br /&gt;
===Developer changes===&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=EiffelStudio_14.05_Releases&amp;diff=15138</id>
		<title>EiffelStudio 14.05 Releases</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=EiffelStudio_14.05_Releases&amp;diff=15138"/>
				<updated>2014-03-31T05:37:51Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: /* User changes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Releases]]__NOTOC__{{ReleaseHistoryHeader}}&lt;br /&gt;
&lt;br /&gt;
= EiffelStudio 14.05.x Releases=&lt;br /&gt;
&lt;br /&gt;
Beta download: ftp://beta:beta57@ftp.eiffel.com/14.05/&lt;br /&gt;
&lt;br /&gt;
==14.05.x.x (...)==&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
===Improvements===&lt;br /&gt;
===Feature removed===&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
===User changes===&lt;br /&gt;
===Developer changes===&lt;br /&gt;
&lt;br /&gt;
==14.05.x.x (March 31st 2014)==&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
* {{Red|Inspector Eiffel: Added a new static analysis tool to help you improve the quality of your code using predefined rules such as useless entities, unneeded nested ifs, unused arguments,... More details at [[User:Stefan/Code_Analysis | Code Analysis]]}}&lt;br /&gt;
* Added tool `emdc.exe' to inspect the .NET cache at a given location.&lt;br /&gt;
* base: Added is_substring_whitespace (rev#94633).&lt;br /&gt;
* logging: Added support for PATH in log writer file to handle unicode file name (rev#94634).&lt;br /&gt;
&lt;br /&gt;
===Improvements===&lt;br /&gt;
* store: Added support for handling NULL values in a database using ODBC when using a mapping in DB_SELECTION, DB_DYN_SELECTION, DB_CHANGE or DB_DYN_CHANGE (rev#94622).&lt;br /&gt;
* compiler: various improvements to type inference.&lt;br /&gt;
&lt;br /&gt;
===Feature removed===&lt;br /&gt;
&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
* store: Fixed a crash when the length of a table or column name would be more than 50 characters (Fixes test TEST_LENGTH_OF_COLUMN_NAME in rev#94591).&lt;br /&gt;
* store: Fixed an issue where large ASCII data would have their first byte missing when using ODBC (Fixed in rev#94661).&lt;br /&gt;
* runtime: Fixed an issue where retrieving a large amount of objects on a x86 platform, we would crash where restoring one of the store/retrieve stack using `epop' (see rev#94572).&lt;br /&gt;
* runtime: Fixed a potential overflow issue with store/retrieve when you have more than 2^31 objects. (Fixes bug#18835 in rev#94573).&lt;br /&gt;
* studio: The addition of the showing of contracts in the completion window had the side effect of removing the comment when showing a feature tooltip because we forgot to ask for them (Fixes bug#18839).&lt;br /&gt;
&lt;br /&gt;
===User changes===&lt;br /&gt;
* arguments: Changed the default display of help by showing first the option arguments and then the non-switched arguments.&lt;br /&gt;
* {{Red|studio: EiffelStudio will not load 5.7 and older .ACE file or .EPR file. Support for .EPR files is completely dropped. Support for .ACE file is continued but a tool is provided to convert them into a .ECF file; the tool is available with the other tools from EiffelStudio and its name is '''ace2ecf'''.}}&lt;br /&gt;
* regexp: Renamed CHARACTER_SET and BYTE_CODE into PCRE_CHARACTER_SET and PCRE_BYTE_CODE to avoid name conflicts with libraries that have the same class names.&lt;br /&gt;
&lt;br /&gt;
===Developer changes===&lt;br /&gt;
* void-safety: most of the framework libraries are not fully void-safe.&lt;br /&gt;
&lt;br /&gt;
==14.05.9.4570 (March 3rd 2014)==&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
===Improvements===&lt;br /&gt;
&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
* xml: Fixed XML parser when the input file is exactly the same size as the xml file input stream chunk size (default 4096 bytes). Improved parser to catch earlier issue related with end of input. This fixed an issue in the compiler not being able to retrieve ECFs with such a size.&lt;br /&gt;
* compiler: Fixed eweasel test#valid265 where if the variant expression is of an anchored type, it would fail to accept it, even if the anchor resolves to an integer type.&lt;br /&gt;
* compiler: Fixed test#anchor075 for bug#18824 where `like {X}.dotnet_query' would crash the compiler at degree 3 because we do not fill the {SYSTEM_I}.rout_info_table for .NET routines.&lt;br /&gt;
* compiler: Fixed eweasel test#freez022 by recording the converted type of an argument to later properly evaluate like arguments.&lt;br /&gt;
* compiler: Fixed an issue with catcall checking which would crash when enabled in the specific case where a type used as argument has some conversion routines. See test#catcall013.&lt;br /&gt;
&lt;br /&gt;
==14.05.9.4490 (February 21st 2014)==&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
* compiler: Added ability to extract file location of a class in interactive mode.&lt;br /&gt;
* {{red|compiler: Made it possible to compile a project for Windows on Unix, and vice-versa by using the -platform xxx command line, where xxx can be unix, windows, macintosh or vxworks.}}&lt;br /&gt;
* {{red| compile_all: Improved '''compile_all''' tool to return a non-zero exit code when there is a failure. Made it possible to target a specific platform. Also if an ECF has a platform setting set, and we are not compiling for that platform, the ECF will be ignored. }}&lt;br /&gt;
* compiler: The interactive mode of the compiler can now show the path of a class using the w menu in the class menu.&lt;br /&gt;
* base: Added is_whitespace and is_substring_whitespace.&lt;br /&gt;
* compiler: improved support for type inference.&lt;br /&gt;
&lt;br /&gt;
===Improvements===&lt;br /&gt;
* studio: Reduced size of '''project.epr''' and time it takes to save/retrieve a project by only saving what is needed. Some large projects went from 250MB down to 100MB on disk, and from 800MB to 300MB in memory usage.&lt;br /&gt;
* store: All sublibraries compile in complete void-safety mode.&lt;br /&gt;
* compiler: Made compiler more robust if some routines/classes are not found as expected by the compiler. It will now report a Library_error error instead of crashing at various stages of the compilation process.&lt;br /&gt;
* libraries: All libraries/examples/tools and other ECFs are now checked daily to ensure nothing breaks. As a result fixed a few issues for code that did not compile.&lt;br /&gt;
* {{red|compiler: Improved command line usage which will report why the command line is incorrect instead of displaying the whole help which is not very useful.}}&lt;br /&gt;
* compiler: Fixed an issue when you provide a directory instead of a file, it would report an internal error instead of just stating it could not open the file.&lt;br /&gt;
&lt;br /&gt;
===Feature removed===&lt;br /&gt;
&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
* vision2: Fixed by one error when mapping a caret position to the actual caret position of the underlying Windows implementation that has %R%N and not just %N. This fixes vision2 test {TEST_EV_TEXT}.test_test_caret_positioning.&lt;br /&gt;
* compiler: Fixed an issue with interactive mode where displaying all classes was actually not display classes which are part of a recursive cluster.&lt;br /&gt;
* compiler: Fixed eweasel test#anchor073 and test#anchor074 for bug#18758, and test#anchor059. Code now compiles, but it shows that there is still some work to be done. It improves the behavior of test#anchor005 and test#anchor042.&lt;br /&gt;
* compiler: Fixed test#anchor050. This addresses an issue where on .NET it would fail because for a query whose type is `like {X}.val' we would record what the type of `{X}.val' was, and not record that we needed the routine `val' of {X} for generating the type information for .NET code.&lt;br /&gt;
* compiler: Fixed eweasel test#anchor065 where if you have `like {G}.value' it would crash the compiler.&lt;br /&gt;
* compiler: Remove a code generation cast that caused a failure. The drawback is that the code does not verify any more (even though the code is safe). This fixes test#anchor018, test#anchor050, test#anchor054, test#anchor056, test#anchor059, test#anchor063 and potentially other tests.&lt;br /&gt;
* compiler: Fixed a bug in the interactive mode of the compiler that was preventing the display of classes that belong to a folder of a cluster.&lt;br /&gt;
&lt;br /&gt;
===User changes===&lt;br /&gt;
* {{red|studio: Now EiffelStudio will never propose to save tests in the hidden EIFGENs/project/Testing subdirectory.}}&lt;br /&gt;
&lt;br /&gt;
===Developer changes===&lt;br /&gt;
* compiler: Fixed test#term194.&lt;br /&gt;
* compiler: Improved memory tool to list all fields of an object.&lt;br /&gt;
&lt;br /&gt;
==14.05.9.4243 (February 10th 2014)==&lt;br /&gt;
===New features===&lt;br /&gt;
* net: EiffelNet with SSL support.&lt;br /&gt;
* zlib: New Zlib compression library&lt;br /&gt;
* ribbon: Added support for assigning hot keys to ribbon elements.&lt;br /&gt;
&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
* compiler: Fixed bug#18758 and test#anchor072 which only affected .NET code generation of qualified anchor types.&lt;br /&gt;
* compiler: Fixed a long standing bug where descriptions in external nodes were lost.&lt;br /&gt;
* compiler: Fixed eweasel test#config028, test#config029 and test#config038 where compiler would crash when using a cluster/library with an invalid path.&lt;br /&gt;
* compiler: Fixed a regression that caused a C compilation error after removing a type from the system.&lt;br /&gt;
* studio: Fixed improper display of conditions in task and external nodes.&lt;br /&gt;
* vision2: Fixed a regression in EV_DRAWABLE_IMP on Unix platforms that causes a crash on some Unix platforms.&lt;br /&gt;
* other: Fixed various regression from rev#94113.&lt;br /&gt;
&lt;br /&gt;
==14.05.9.4113 (January 29th 2014)==&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
* base: Added epsilon and machine_epsilon queries as requested by users in REAL_32 and REAL_64. Added missing min_value and max_value from the .NET version of REAL_32 and REAL_64.&lt;br /&gt;
* espec: Added latest version of ESPEC.&lt;br /&gt;
* {{Red | compiler: The compiler will now report syntax warnings for non-supported empty lists such as {}, () and []. And it will report an error in an export clause if after the type nothing is specified.}}&lt;br /&gt;
&lt;br /&gt;
===Improvements===&lt;br /&gt;
* argument: we allow the nologo command line option on Unix to ensure that programs have pretty much the exact same command line interface.&lt;br /&gt;
* compiler: we now provide syntax warnings for unsupported empty lists such as (), or [], or {}, as well as an empty export clause `export {NONE} end'. It is not ECMA compliant to accept those.&lt;br /&gt;
* {{Red| compiler: made workbench code more compact and faster by about 5 to 9% average.}}&lt;br /&gt;
* Made most libraries compile in the highest level of void-safety except the following ones:&lt;br /&gt;
** docking&lt;br /&gt;
** editor&lt;br /&gt;
** edk&lt;br /&gt;
** graph&lt;br /&gt;
** memory_analyzer&lt;br /&gt;
* testing: Made possible to run AutoTest test cases outside of the AutoTest framework by simply calling them from a normal class.&lt;br /&gt;
* vision2: Created a set of classes to make it easier to develop AutoTest tests for code based on vision2.&lt;br /&gt;
* {{Red|runtime: In workbench mode, if the melted file cannot be found, instead of exiting the application, the application will run as if it had never been melted and will print a warning in the console.}}&lt;br /&gt;
&lt;br /&gt;
===Feature removed===&lt;br /&gt;
* library: Removed obsolete feature &amp;lt;e&amp;gt;{TUPLE}.make&amp;lt;/e&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
* compiler: bug#18759 (test#iteration004) - Changed processing of &amp;lt;e&amp;gt;{ITERABLE}.new_cursor&amp;lt;/e&amp;gt; to use a renamed version of the feature in a descendant class rather than the feature having this name.&lt;br /&gt;
* compiler: bug#17233 (test#term196) - Supported iteration on an expression of a formal generic type.&lt;br /&gt;
* compiler: bug#17239 (test#term198) - Fixed a bug that caused a crash when compiling the code that used an inline agent as an iteration expression.&lt;br /&gt;
* compiler: bug#16983 (test#anchor055), bug#17034 (test#anchor057) - Fixed a bug that caused a crash when compiling the code with the creation of an object of a qualified anchored type with a formal generic.&lt;br /&gt;
* compiler: test#anchor070 - Fixed a bug that might cause compiler crash when nested qualified anchored types with a longer feature chain were involved in qualifiers of other qualified anchored types.&lt;br /&gt;
* compiler: bug#16991 (test#anchor056) - Fixed a bug that might cause a compiler to report an unknown feature in a qualified anchored type with a formal generic qualifier constrained only by formal generic types.&lt;br /&gt;
* compiler: bug#18795 (test#melt104) - Fixed an issue with address expression (not part of the Eiffel specification, only supported for backward compatibility) when melting code would crash the compiler.&lt;br /&gt;
* compiler: fixed test#exec341 where performing an assignment via &amp;quot;{EXT}.fea := bar&amp;quot; would fail at runtime.&lt;br /&gt;
* dotnet: Fixed a code generation bug when using across where the .NET code generation would perform a cast on the target type of the expression instead of on the type of the cursor.&lt;br /&gt;
*studio: Fixed an issue where if you open EiffelStudio on screen 1 of a multiple screen setup, then maximize EiffelStudio on screen 2. Next time you open EiffelStudio it would open maximized on screen 1 rather than on screen 2.&lt;br /&gt;
* wel: Fixed a bug with `set_string_with_newline_conversion' where if the input string had only one character after the last %N, that character would be discarded. That is to say &amp;quot;%Na&amp;quot; would yield &amp;quot;%R%N&amp;quot; instead of &amp;quot;%R%Na&amp;quot;. This fixes bug#18783.&lt;br /&gt;
* studio: Fixed an issue on Windows where once you set a preference to True, you could never go back to its default value. For example, force debug mode would always be active once set, same for linking the editor and the context tool and many others.&lt;br /&gt;
* studio: Fixed a saving issue where each time you saved a document, it will blink instead of not changing anything.&lt;br /&gt;
* studio: Fixed a copy and paste texts with multiple lines with some leading tabs into the editor. The cursor in the end is positioned N characters before the place it used to be. (N is the number of lines of the pasted text)&lt;br /&gt;
* base_extension: Fixed a crash in ENVIRONMENT_ARGUMENTS when arguments are removed after first access to ENVIRONMENT_ARGUMENTS. This is the case when using `--sync' option in a Vision2 application on Unix.&lt;br /&gt;
* process: Fixed redirection of standard error to a file which was redirecting to standard output instead.&lt;br /&gt;
* runtime: Fixed bug#18785 and eweasel test#ccomp089 for Linux 32-bit, but the fix will also affect any platform where the C compiler was not doing what we expected to compute the value of NaN, +Infinity and -Infinity for floating numbers.&lt;br /&gt;
* compiler: test#anchor071 - Fixed computation of a qualified anchored type that involves a formal generic parameter and feature redeclaration in a descendant of the formal generic constraint.&lt;br /&gt;
* studio: Fixed bug#18792, bug#18501 and bug#17626 when searching for a feature while the editor hasn't finished loading.&lt;br /&gt;
* studio: Fixed a long standing issue where the new class template had the wrong newline on Windows.&lt;br /&gt;
* store: Fixed Autotest test#test_numeric_types and test#test_numeric_types_use_decimal_mode by ensuring that a decimal read from the database (almost like a string representation) is converted to a REAL_64 the same way it is done in class {STRING}.to_real_64, otherwise we get different rounding.&lt;br /&gt;
&lt;br /&gt;
===User changes===&lt;br /&gt;
* EiffelStudio: Moved project setting option ''Full class checking'' to ''Advanced'' section.&lt;br /&gt;
* EiffelStudio: Changed project settings defaults to complete void safety.&lt;br /&gt;
* {{Red| compiler: In circa 2000, we allowed $x and $(expr) as expression instead of just argument passing. But while this was good for just $x, $(expr) is actually not supported properly in the code generation. As a consequence we have disallowed $(expr) outside argument passing.}}&lt;br /&gt;
* {{Red| wel: Fixed incorrect signatures of wrapping for PostMessage, GetCurrentProcessId and GetWindowThreadProcessID which do not return a pointer but an integer type.}}&lt;br /&gt;
&lt;br /&gt;
===Developer changes===&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=EiffelStudio_14.05_Releases&amp;diff=15137</id>
		<title>EiffelStudio 14.05 Releases</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=EiffelStudio_14.05_Releases&amp;diff=15137"/>
				<updated>2014-03-31T05:32:02Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: /* New features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Releases]]__NOTOC__{{ReleaseHistoryHeader}}&lt;br /&gt;
&lt;br /&gt;
= EiffelStudio 14.05.x Releases=&lt;br /&gt;
&lt;br /&gt;
Beta download: ftp://beta:beta57@ftp.eiffel.com/14.05/&lt;br /&gt;
&lt;br /&gt;
==14.05.x.x (...)==&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
===Improvements===&lt;br /&gt;
===Feature removed===&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
===User changes===&lt;br /&gt;
===Developer changes===&lt;br /&gt;
&lt;br /&gt;
==14.05.x.x (March 31st 2014)==&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
* {{Red|Inspector Eiffel: Added a new static analysis tool to help you improve the quality of your code using predefined rules such as useless entities, unneeded nested ifs, unused arguments,... More details at [[User:Stefan/Code_Analysis | Code Analysis]]}}&lt;br /&gt;
* Added tool `emdc.exe' to inspect the .NET cache at a given location.&lt;br /&gt;
* base: Added is_substring_whitespace (rev#94633).&lt;br /&gt;
* logging: Added support for PATH in log writer file to handle unicode file name (rev#94634).&lt;br /&gt;
&lt;br /&gt;
===Improvements===&lt;br /&gt;
* store: Added support for handling NULL values in a database using ODBC when using a mapping in DB_SELECTION, DB_DYN_SELECTION, DB_CHANGE or DB_DYN_CHANGE (rev#94622).&lt;br /&gt;
* compiler: various improvements to type inference.&lt;br /&gt;
&lt;br /&gt;
===Feature removed===&lt;br /&gt;
&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
* store: Fixed a crash when the length of a table or column name would be more than 50 characters (Fixes test TEST_LENGTH_OF_COLUMN_NAME in rev#94591).&lt;br /&gt;
* store: Fixed an issue where large ASCII data would have their first byte missing when using ODBC (Fixed in rev#94661).&lt;br /&gt;
* runtime: Fixed an issue where retrieving a large amount of objects on a x86 platform, we would crash where restoring one of the store/retrieve stack using `epop' (see rev#94572).&lt;br /&gt;
* runtime: Fixed a potential overflow issue with store/retrieve when you have more than 2^31 objects. (Fixes bug#18835 in rev#94573).&lt;br /&gt;
* studio: The addition of the showing of contracts in the completion window had the side effect of removing the comment when showing a feature tooltip because we forgot to ask for them (Fixes bug#18839).&lt;br /&gt;
&lt;br /&gt;
===User changes===&lt;br /&gt;
* arguments: Changed the default display of help by showing first the option arguments and then the non-switched arguments.&lt;br /&gt;
* {{Red|studio: EiffelStudio will not load 5.7 and older .ACE file or .EPR file. Support for .EPR files is completely dropped. Support for .ACE file is continued but a tool is provided to convert them into a .ECF file, the tool is available with the other tools from EiffelStudio and its name is '''ace2ecf'''.}}&lt;br /&gt;
* regexp: Renamed CHARACTER_SET and BYTE_CODE into PCRE_CHARACTER_SET and PCRE_BYTE_CODE to avoid name conflicts with libraries that have the same class names.&lt;br /&gt;
&lt;br /&gt;
===Developer changes===&lt;br /&gt;
* void-safety: most of the framework libraries are not fully void-safe.&lt;br /&gt;
&lt;br /&gt;
==14.05.9.4570 (March 3rd 2014)==&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
===Improvements===&lt;br /&gt;
&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
* xml: Fixed XML parser when the input file is exactly the same size as the xml file input stream chunk size (default 4096 bytes). Improved parser to catch earlier issue related with end of input. This fixed an issue in the compiler not being able to retrieve ECFs with such a size.&lt;br /&gt;
* compiler: Fixed eweasel test#valid265 where if the variant expression is of an anchored type, it would fail to accept it, even if the anchor resolves to an integer type.&lt;br /&gt;
* compiler: Fixed test#anchor075 for bug#18824 where `like {X}.dotnet_query' would crash the compiler at degree 3 because we do not fill the {SYSTEM_I}.rout_info_table for .NET routines.&lt;br /&gt;
* compiler: Fixed eweasel test#freez022 by recording the converted type of an argument to later properly evaluate like arguments.&lt;br /&gt;
* compiler: Fixed an issue with catcall checking which would crash when enabled in the specific case where a type used as argument has some conversion routines. See test#catcall013.&lt;br /&gt;
&lt;br /&gt;
==14.05.9.4490 (February 21st 2014)==&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
* compiler: Added ability to extract file location of a class in interactive mode.&lt;br /&gt;
* {{red|compiler: Made it possible to compile a project for Windows on Unix, and vice-versa by using the -platform xxx command line, where xxx can be unix, windows, macintosh or vxworks.}}&lt;br /&gt;
* {{red| compile_all: Improved '''compile_all''' tool to return a non-zero exit code when there is a failure. Made it possible to target a specific platform. Also if an ECF has a platform setting set, and we are not compiling for that platform, the ECF will be ignored. }}&lt;br /&gt;
* compiler: The interactive mode of the compiler can now show the path of a class using the w menu in the class menu.&lt;br /&gt;
* base: Added is_whitespace and is_substring_whitespace.&lt;br /&gt;
* compiler: improved support for type inference.&lt;br /&gt;
&lt;br /&gt;
===Improvements===&lt;br /&gt;
* studio: Reduced size of '''project.epr''' and time it takes to save/retrieve a project by only saving what is needed. Some large projects went from 250MB down to 100MB on disk, and from 800MB to 300MB in memory usage.&lt;br /&gt;
* store: All sublibraries compile in complete void-safety mode.&lt;br /&gt;
* compiler: Made compiler more robust if some routines/classes are not found as expected by the compiler. It will now report a Library_error error instead of crashing at various stages of the compilation process.&lt;br /&gt;
* libraries: All libraries/examples/tools and other ECFs are now checked daily to ensure nothing breaks. As a result fixed a few issues for code that did not compile.&lt;br /&gt;
* {{red|compiler: Improved command line usage which will report why the command line is incorrect instead of displaying the whole help which is not very useful.}}&lt;br /&gt;
* compiler: Fixed an issue when you provide a directory instead of a file, it would report an internal error instead of just stating it could not open the file.&lt;br /&gt;
&lt;br /&gt;
===Feature removed===&lt;br /&gt;
&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
* vision2: Fixed by one error when mapping a caret position to the actual caret position of the underlying Windows implementation that has %R%N and not just %N. This fixes vision2 test {TEST_EV_TEXT}.test_test_caret_positioning.&lt;br /&gt;
* compiler: Fixed an issue with interactive mode where displaying all classes was actually not display classes which are part of a recursive cluster.&lt;br /&gt;
* compiler: Fixed eweasel test#anchor073 and test#anchor074 for bug#18758, and test#anchor059. Code now compiles, but it shows that there is still some work to be done. It improves the behavior of test#anchor005 and test#anchor042.&lt;br /&gt;
* compiler: Fixed test#anchor050. This addresses an issue where on .NET it would fail because for a query whose type is `like {X}.val' we would record what the type of `{X}.val' was, and not record that we needed the routine `val' of {X} for generating the type information for .NET code.&lt;br /&gt;
* compiler: Fixed eweasel test#anchor065 where if you have `like {G}.value' it would crash the compiler.&lt;br /&gt;
* compiler: Remove a code generation cast that caused a failure. The drawback is that the code does not verify any more (even though the code is safe). This fixes test#anchor018, test#anchor050, test#anchor054, test#anchor056, test#anchor059, test#anchor063 and potentially other tests.&lt;br /&gt;
* compiler: Fixed a bug in the interactive mode of the compiler that was preventing the display of classes that belong to a folder of a cluster.&lt;br /&gt;
&lt;br /&gt;
===User changes===&lt;br /&gt;
* {{red|studio: Now EiffelStudio will never propose to save tests in the hidden EIFGENs/project/Testing subdirectory.}}&lt;br /&gt;
&lt;br /&gt;
===Developer changes===&lt;br /&gt;
* compiler: Fixed test#term194.&lt;br /&gt;
* compiler: Improved memory tool to list all fields of an object.&lt;br /&gt;
&lt;br /&gt;
==14.05.9.4243 (February 10th 2014)==&lt;br /&gt;
===New features===&lt;br /&gt;
* net: EiffelNet with SSL support.&lt;br /&gt;
* zlib: New Zlib compression library&lt;br /&gt;
* ribbon: Added support for assigning hot keys to ribbon elements.&lt;br /&gt;
&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
* compiler: Fixed bug#18758 and test#anchor072 which only affected .NET code generation of qualified anchor types.&lt;br /&gt;
* compiler: Fixed a long standing bug where descriptions in external nodes were lost.&lt;br /&gt;
* compiler: Fixed eweasel test#config028, test#config029 and test#config038 where compiler would crash when using a cluster/library with an invalid path.&lt;br /&gt;
* compiler: Fixed a regression that caused a C compilation error after removing a type from the system.&lt;br /&gt;
* studio: Fixed improper display of conditions in task and external nodes.&lt;br /&gt;
* vision2: Fixed a regression in EV_DRAWABLE_IMP on Unix platforms that causes a crash on some Unix platforms.&lt;br /&gt;
* other: Fixed various regression from rev#94113.&lt;br /&gt;
&lt;br /&gt;
==14.05.9.4113 (January 29th 2014)==&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
* base: Added epsilon and machine_epsilon queries as requested by users in REAL_32 and REAL_64. Added missing min_value and max_value from the .NET version of REAL_32 and REAL_64.&lt;br /&gt;
* espec: Added latest version of ESPEC.&lt;br /&gt;
* {{Red | compiler: The compiler will now report syntax warnings for non-supported empty lists such as {}, () and []. And it will report an error in an export clause if after the type nothing is specified.}}&lt;br /&gt;
&lt;br /&gt;
===Improvements===&lt;br /&gt;
* argument: we allow the nologo command line option on Unix to ensure that programs have pretty much the exact same command line interface.&lt;br /&gt;
* compiler: we now provide syntax warnings for unsupported empty lists such as (), or [], or {}, as well as an empty export clause `export {NONE} end'. It is not ECMA compliant to accept those.&lt;br /&gt;
* {{Red| compiler: made workbench code more compact and faster by about 5 to 9% average.}}&lt;br /&gt;
* Made most libraries compile in the highest level of void-safety except the following ones:&lt;br /&gt;
** docking&lt;br /&gt;
** editor&lt;br /&gt;
** edk&lt;br /&gt;
** graph&lt;br /&gt;
** memory_analyzer&lt;br /&gt;
* testing: Made possible to run AutoTest test cases outside of the AutoTest framework by simply calling them from a normal class.&lt;br /&gt;
* vision2: Created a set of classes to make it easier to develop AutoTest tests for code based on vision2.&lt;br /&gt;
* {{Red|runtime: In workbench mode, if the melted file cannot be found, instead of exiting the application, the application will run as if it had never been melted and will print a warning in the console.}}&lt;br /&gt;
&lt;br /&gt;
===Feature removed===&lt;br /&gt;
* library: Removed obsolete feature &amp;lt;e&amp;gt;{TUPLE}.make&amp;lt;/e&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
* compiler: bug#18759 (test#iteration004) - Changed processing of &amp;lt;e&amp;gt;{ITERABLE}.new_cursor&amp;lt;/e&amp;gt; to use a renamed version of the feature in a descendant class rather than the feature having this name.&lt;br /&gt;
* compiler: bug#17233 (test#term196) - Supported iteration on an expression of a formal generic type.&lt;br /&gt;
* compiler: bug#17239 (test#term198) - Fixed a bug that caused a crash when compiling the code that used an inline agent as an iteration expression.&lt;br /&gt;
* compiler: bug#16983 (test#anchor055), bug#17034 (test#anchor057) - Fixed a bug that caused a crash when compiling the code with the creation of an object of a qualified anchored type with a formal generic.&lt;br /&gt;
* compiler: test#anchor070 - Fixed a bug that might cause compiler crash when nested qualified anchored types with a longer feature chain were involved in qualifiers of other qualified anchored types.&lt;br /&gt;
* compiler: bug#16991 (test#anchor056) - Fixed a bug that might cause a compiler to report an unknown feature in a qualified anchored type with a formal generic qualifier constrained only by formal generic types.&lt;br /&gt;
* compiler: bug#18795 (test#melt104) - Fixed an issue with address expression (not part of the Eiffel specification, only supported for backward compatibility) when melting code would crash the compiler.&lt;br /&gt;
* compiler: fixed test#exec341 where performing an assignment via &amp;quot;{EXT}.fea := bar&amp;quot; would fail at runtime.&lt;br /&gt;
* dotnet: Fixed a code generation bug when using across where the .NET code generation would perform a cast on the target type of the expression instead of on the type of the cursor.&lt;br /&gt;
*studio: Fixed an issue where if you open EiffelStudio on screen 1 of a multiple screen setup, then maximize EiffelStudio on screen 2. Next time you open EiffelStudio it would open maximized on screen 1 rather than on screen 2.&lt;br /&gt;
* wel: Fixed a bug with `set_string_with_newline_conversion' where if the input string had only one character after the last %N, that character would be discarded. That is to say &amp;quot;%Na&amp;quot; would yield &amp;quot;%R%N&amp;quot; instead of &amp;quot;%R%Na&amp;quot;. This fixes bug#18783.&lt;br /&gt;
* studio: Fixed an issue on Windows where once you set a preference to True, you could never go back to its default value. For example, force debug mode would always be active once set, same for linking the editor and the context tool and many others.&lt;br /&gt;
* studio: Fixed a saving issue where each time you saved a document, it will blink instead of not changing anything.&lt;br /&gt;
* studio: Fixed a copy and paste texts with multiple lines with some leading tabs into the editor. The cursor in the end is positioned N characters before the place it used to be. (N is the number of lines of the pasted text)&lt;br /&gt;
* base_extension: Fixed a crash in ENVIRONMENT_ARGUMENTS when arguments are removed after first access to ENVIRONMENT_ARGUMENTS. This is the case when using `--sync' option in a Vision2 application on Unix.&lt;br /&gt;
* process: Fixed redirection of standard error to a file which was redirecting to standard output instead.&lt;br /&gt;
* runtime: Fixed bug#18785 and eweasel test#ccomp089 for Linux 32-bit, but the fix will also affect any platform where the C compiler was not doing what we expected to compute the value of NaN, +Infinity and -Infinity for floating numbers.&lt;br /&gt;
* compiler: test#anchor071 - Fixed computation of a qualified anchored type that involves a formal generic parameter and feature redeclaration in a descendant of the formal generic constraint.&lt;br /&gt;
* studio: Fixed bug#18792, bug#18501 and bug#17626 when searching for a feature while the editor hasn't finished loading.&lt;br /&gt;
* studio: Fixed a long standing issue where the new class template had the wrong newline on Windows.&lt;br /&gt;
* store: Fixed Autotest test#test_numeric_types and test#test_numeric_types_use_decimal_mode by ensuring that a decimal read from the database (almost like a string representation) is converted to a REAL_64 the same way it is done in class {STRING}.to_real_64, otherwise we get different rounding.&lt;br /&gt;
&lt;br /&gt;
===User changes===&lt;br /&gt;
* EiffelStudio: Moved project setting option ''Full class checking'' to ''Advanced'' section.&lt;br /&gt;
* EiffelStudio: Changed project settings defaults to complete void safety.&lt;br /&gt;
* {{Red| compiler: In circa 2000, we allowed $x and $(expr) as expression instead of just argument passing. But while this was good for just $x, $(expr) is actually not supported properly in the code generation. As a consequence we have disallowed $(expr) outside argument passing.}}&lt;br /&gt;
* {{Red| wel: Fixed incorrect signatures of wrapping for PostMessage, GetCurrentProcessId and GetWindowThreadProcessID which do not return a pointer but an integer type.}}&lt;br /&gt;
&lt;br /&gt;
===Developer changes===&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=EiffelStudio_14.05_Releases&amp;diff=15064</id>
		<title>EiffelStudio 14.05 Releases</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=EiffelStudio_14.05_Releases&amp;diff=15064"/>
				<updated>2014-03-01T00:20:52Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: /* Bug fixes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Releases]]__NOTOC__{{ReleaseHistoryHeader}}&lt;br /&gt;
&lt;br /&gt;
= EiffelStudio 14.05.x Releases=&lt;br /&gt;
&lt;br /&gt;
Beta download: ftp://beta:beta57@ftp.eiffel.com/14.05/&lt;br /&gt;
&lt;br /&gt;
==14.05.x.x (...)==&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
&lt;br /&gt;
===Improvements===&lt;br /&gt;
&lt;br /&gt;
===Feature removed===&lt;br /&gt;
&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
&lt;br /&gt;
===User changes===&lt;br /&gt;
&lt;br /&gt;
===Developer changes===&lt;br /&gt;
&lt;br /&gt;
==14.05.9.4490 (February 21st 2014)==&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
* compiler: Added ability to extract file location of a class in interactive mode.&lt;br /&gt;
* {{red|compiler: Made it possible to compile a project for Windows on Unix, and vice-versa by using the -platform xxx command line, where xxx can be unix, windows, macintosh or vxworks.}}&lt;br /&gt;
* {{red| compile_all: Improved '''compile_all''' tool to return a non-zero exit code when there is a failure. Made it possible to target a specific platform. Also if an ECF has a platform setting set, and we are not compiling for that platform, the ECF will be ignored. }}&lt;br /&gt;
* compiler: The interactive mode of the compiler can now show the path of a class using the w menu in the class menu.&lt;br /&gt;
* base: Added is_whitespace and is_substring_whitespace.&lt;br /&gt;
* compiler: improved support for type inference.&lt;br /&gt;
&lt;br /&gt;
===Improvements===&lt;br /&gt;
* studio: Reduced size of '''project.epr''' and time it takes to save/retrieve a project by only saving what is needed. Some large projects went from 250MB down to 100MB on disk, and from 800MB to 300MB in memory usage.&lt;br /&gt;
* store: All sublibraries compile in complete void-safety mode.&lt;br /&gt;
* compiler: Made compiler more robust if some routines/classes are not found as expected by the compiler. It will now report a Library_error error instead of crashing at various stages of the compilation process.&lt;br /&gt;
* libraries: All libraries/examples/tools and other ECFs are now checked daily to ensure nothing breaks. As a result fixed a few issues for code that did not compile.&lt;br /&gt;
* {{red|compiler: Improved command line usage which will report why the command line is incorrect instead of displaying the whole help which is not very useful.}}&lt;br /&gt;
* compiler: Fixed an issue when you provide a directory instead of a file, it would report an internal error instead of just stating it could not open the file.&lt;br /&gt;
&lt;br /&gt;
===Feature removed===&lt;br /&gt;
&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
* vision2: Fixed by one error when mapping a caret position to the actual caret position of the underlying Windows implementation that has %R%N and not just %N. This fixes vision2 test {TEST_EV_TEXT}.test_test_caret_positioning.&lt;br /&gt;
* compiler: Fixed an issue with interactive mode where displaying all classes was actually not display classes which are part of a recursive cluster.&lt;br /&gt;
* compiler: Fixed eweasel test#anchor073 and test#anchor074 for bug#18758, and test#anchor059. Code now compiles, but it shows that there is still some work to be done. It improves the behavior of test#anchor005 and test#anchor042.&lt;br /&gt;
* compiler: Fixed test#anchor050. This addresses an issue where on .NET it would fail because for a query whose type is `like {X}.val' we would record what the type of `{X}.val' was, and not record that we needed the routine `val' of {X} for generating the type information for .NET code.&lt;br /&gt;
* compiler: Fixed eweasel test#anchor065 where if you have `like {G}.value' it would crash the compiler.&lt;br /&gt;
* compiler: Remove a code generation cast that caused a failure. The drawback is that the code does not verify any more (even though the code is safe). This fixes test#anchor018, test#anchor050, test#anchor054, test#anchor056, test#anchor059, test#anchor063 and potentially other tests.&lt;br /&gt;
* compiler: Fixed a bug in the interactive mode of the compiler that was preventing the display of classes that belong to a folder of a cluster.&lt;br /&gt;
&lt;br /&gt;
===User changes===&lt;br /&gt;
* {{red|studio: Now EiffelStudio will never propose to save tests in the hidden EIFGENs/project/Testing subdirectory.}}&lt;br /&gt;
&lt;br /&gt;
===Developer changes===&lt;br /&gt;
* compiler: Fixed test#term194.&lt;br /&gt;
* compiler: Improved memory tool to list all fields of an object.&lt;br /&gt;
&lt;br /&gt;
==14.05.9.4243 (February 10th 2014)==&lt;br /&gt;
===New features===&lt;br /&gt;
* net: EiffelNet with SSL support.&lt;br /&gt;
* zlib: New Zlib compression library&lt;br /&gt;
* ribbon: Added support for assigning hot keys to ribbon elements.&lt;br /&gt;
&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
* compiler: Fixed bug#18758 and test#anchor072 which only affected .NET code generation of qualified anchor types.&lt;br /&gt;
* compiler: Fixed a long standing bug where descriptions in external nodes were lost.&lt;br /&gt;
* compiler: Fixed eweasel test#config028, test#config029 and test#config038 where compiler would crash when using a cluster/library with an invalid path.&lt;br /&gt;
* compiler: Fixed a regression that caused a C compilation error after removing a type from the system.&lt;br /&gt;
* studio: Fixed improper display of conditions in task and external nodes.&lt;br /&gt;
* vision2: Fixed a regression in EV_DRAWABLE_IMP on Unix platforms that causes a crash on some Unix platforms.&lt;br /&gt;
* other: Fixed various regression from rev#94113.&lt;br /&gt;
&lt;br /&gt;
==14.05.9.4113 (January 29th 2014)==&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
* base: Added epsilon and machine_epsilon queries as requested by users in REAL_32 and REAL_64. Added missing min_value and max_value from the .NET version of REAL_32 and REAL_64.&lt;br /&gt;
* espec: Added latest version of ESPEC.&lt;br /&gt;
* {{Red | compiler: The compiler will now report syntax warnings for non-supported empty lists such as {}, () and []. And it will report an error in an export clause if after the type nothing is specified.}}&lt;br /&gt;
&lt;br /&gt;
===Improvements===&lt;br /&gt;
* argument: we allow the nologo command line option on Unix to ensure that programs have pretty much the exact same command line interface.&lt;br /&gt;
* compiler: we now provide syntax warnings for unsupported empty lists such as (), or [], or {}, as well as an empty export clause `export {NONE} end'. It is not ECMA compliant to accept those.&lt;br /&gt;
* {{Red| compiler: made workbench code more compact and faster by about 5 to 9% average.}}&lt;br /&gt;
* Made most libraries compile in the highest level of void-safety except the following ones:&lt;br /&gt;
** docking&lt;br /&gt;
** editor&lt;br /&gt;
** edk&lt;br /&gt;
** graph&lt;br /&gt;
** memory_analyzer&lt;br /&gt;
* testing: Made possible to run AutoTest test cases outside of the AutoTest framework by simply calling them from a normal class.&lt;br /&gt;
* vision2: Created a set of classes to make it easier to develop AutoTest tests for code based on vision2.&lt;br /&gt;
* {{Red|runtime: In workbench mode, if the melted file cannot be found, instead of exiting the application, the application will run as if it had never been melted and will print a warning in the console.}}&lt;br /&gt;
&lt;br /&gt;
===Feature removed===&lt;br /&gt;
* library: Removed obsolete feature &amp;lt;e&amp;gt;{TUPLE}.make&amp;lt;/e&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
* compiler: bug#18759 (test#iteration004) - Changed processing of &amp;lt;e&amp;gt;{ITERABLE}.new_cursor&amp;lt;/e&amp;gt; to use a renamed version of the feature in a descendant class rather than the feature having this name.&lt;br /&gt;
* compiler: bug#17233 (test#term196) - Supported iteration on an expression of a formal generic type.&lt;br /&gt;
* compiler: bug#17239 (test#term198) - Fixed a bug that caused a crash when compiling the code that used an inline agent as an iteration expression.&lt;br /&gt;
* compiler: bug#16983 (test#anchor055), bug#17034 (test#anchor057) - Fixed a bug that caused a crash when compiling the code with the creation of an object of a qualified anchored type with a formal generic.&lt;br /&gt;
* compiler: test#anchor070 - Fixed a bug that might cause compiler crash when nested qualified anchored types with a longer feature chain were involved in qualifiers of other qualified anchored types.&lt;br /&gt;
* compiler: bug#16991 (test#anchor056) - Fixed a bug that might cause a compiler to report an unknown feature in a qualified anchored type with a formal generic qualifier constrained only by formal generic types.&lt;br /&gt;
* compiler: bug#18795 (test#melt104) - Fixed an issue with address expression (not part of the Eiffel specification, only supported for backward compatibility) when melting code would crash the compiler.&lt;br /&gt;
* compiler: fixed test#exec341 where performing an assignment via &amp;quot;{EXT}.fea := bar&amp;quot; would fail at runtime.&lt;br /&gt;
* dotnet: Fixed a code generation bug when using across where the .NET code generation would perform a cast on the target type of the expression instead of on the type of the cursor.&lt;br /&gt;
*studio: Fixed an issue where if you open EiffelStudio on screen 1 of a multiple screen setup, then maximize EiffelStudio on screen 2. Next time you open EiffelStudio it would open maximized on screen 1 rather than on screen 2.&lt;br /&gt;
* wel: Fixed a bug with `set_string_with_newline_conversion' where if the input string had only one character after the last %N, that character would be discarded. That is to say &amp;quot;%Na&amp;quot; would yield &amp;quot;%R%N&amp;quot; instead of &amp;quot;%R%Na&amp;quot;. This fixes bug#18783.&lt;br /&gt;
* studio: Fixed an issue on Windows where once you set a preference to True, you could never go back to its default value. For example, force debug mode would always be active once set, same for linking the editor and the context tool and many others.&lt;br /&gt;
* studio: Fixed a saving issue where each time you saved a document, it will blink instead of not changing anything.&lt;br /&gt;
* studio: Fixed a copy and paste texts with multiple lines with some leading tabs into the editor. The cursor in the end is positioned N characters before the place it used to be. (N is the number of lines of the pasted text)&lt;br /&gt;
* base_extension: Fixed a crash in ENVIRONMENT_ARGUMENTS when arguments are removed after first access to ENVIRONMENT_ARGUMENTS. This is the case when using `--sync' option in a Vision2 application on Unix.&lt;br /&gt;
* process: Fixed redirection of standard error to a file which was redirecting to standard output instead.&lt;br /&gt;
* runtime: Fixed bug#18785 and eweasel test#ccomp089 for Linux 32-bit, but the fix will also affect any platform where the C compiler was not doing what we expected to compute the value of NaN, +Infinity and -Infinity for floating numbers.&lt;br /&gt;
* compiler: test#anchor071 - Fixed computation of a qualified anchored type that involves a formal generic parameter and feature redeclaration in a descendant of the formal generic constraint.&lt;br /&gt;
* studio: Fixed bug#18792, bug#18501 and bug#17626 when searching for a feature while the editor hasn't finished loading.&lt;br /&gt;
* studio: Fixed a long standing issue where the new class template had the wrong newline on Windows.&lt;br /&gt;
* store: Fixed Autotest test#test_numeric_types and test#test_numeric_types_use_decimal_mode by ensuring that a decimal read from the database (almost like a string representation) is converted to a REAL_64 the same way it is done in class {STRING}.to_real_64, otherwise we get different rounding.&lt;br /&gt;
&lt;br /&gt;
===User changes===&lt;br /&gt;
* EiffelStudio: Moved project setting option ''Full class checking'' to ''Advanced'' section.&lt;br /&gt;
* EiffelStudio: Changed project settings defaults to complete void safety.&lt;br /&gt;
* {{Red| compiler: In circa 2000, we allowed $x and $(expr) as expression instead of just argument passing. But while this was good for just $x, $(expr) is actually not supported properly in the code generation. As a consequence we have disallowed $(expr) outside argument passing.}}&lt;br /&gt;
* {{Red| wel: Fixed incorrect signatures of wrapping for PostMessage, GetCurrentProcessId and GetWindowThreadProcessID which do not return a pointer but an integer type.}}&lt;br /&gt;
&lt;br /&gt;
===Developer changes===&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=EiffelStudio_14.05_Releases&amp;diff=15062</id>
		<title>EiffelStudio 14.05 Releases</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=EiffelStudio_14.05_Releases&amp;diff=15062"/>
				<updated>2014-02-28T01:25:52Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: /* Bug fixes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Releases]]__NOTOC__{{ReleaseHistoryHeader}}&lt;br /&gt;
&lt;br /&gt;
= EiffelStudio 14.05.x Releases=&lt;br /&gt;
&lt;br /&gt;
Beta download: ftp://beta:beta57@ftp.eiffel.com/14.05/&lt;br /&gt;
&lt;br /&gt;
==14.05.x.x (...)==&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
&lt;br /&gt;
===Improvements===&lt;br /&gt;
&lt;br /&gt;
===Feature removed===&lt;br /&gt;
&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
&lt;br /&gt;
===User changes===&lt;br /&gt;
&lt;br /&gt;
===Developer changes===&lt;br /&gt;
&lt;br /&gt;
==14.05.9.4490 (February 21st 2014)==&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
* compiler: Added ability to extract file location of a class in interactive mode.&lt;br /&gt;
* {{red|compiler: Made it possible to compile a project for Windows on Unix, and vice-versa by using the -platform xxx command line, where xxx can be unix, windows, macintosh or vxworks.}}&lt;br /&gt;
* {{red| compile_all: Improved '''compile_all''' tool to return a non-zero exit code when there is a failure. Made it possible to target a specific platform. Also if an ECF has a platform setting set, and we are not compiling for that platform, the ECF will be ignored. }}&lt;br /&gt;
* compiler: The interactive mode of the compiler can now show the path of a class using the w menu in the class menu.&lt;br /&gt;
* base: Added is_whitespace and is_substring_whitespace.&lt;br /&gt;
* compiler: improved support for type inference.&lt;br /&gt;
&lt;br /&gt;
===Improvements===&lt;br /&gt;
* studio: Reduced size of '''project.epr''' and time it takes to save/retrieve a project by only saving what is needed. Some large projects went from 250MB down to 100MB on disk, and from 800MB to 300MB in memory usage.&lt;br /&gt;
* store: All sublibraries compile in complete void-safety mode.&lt;br /&gt;
* compiler: Made compiler more robust if some routines/classes are not found as expected by the compiler. It will now report a Library_error error instead of crashing at various stages of the compilation process.&lt;br /&gt;
* libraries: All libraries/examples/tools and other ECFs are now checked daily to ensure nothing breaks. As a result fixed a few issues for code that did not compile.&lt;br /&gt;
* {{red|compiler: Improved command line usage which will report why the command line is incorrect instead of displaying the whole help which is not very useful.}}&lt;br /&gt;
* compiler: Fixed an issue when you provide a directory instead of a file, it would report an internal error instead of just stating it could not open the file.&lt;br /&gt;
&lt;br /&gt;
===Feature removed===&lt;br /&gt;
&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
* vision2: Fixed by one error when mapping a caret position to the actual caret position of the underlying Windows implementation that has %R%N and not just %N. This fixes vision2 test {TEST_EV_TEXT}.test_test_caret_positioning.&lt;br /&gt;
* compiler: Fixed an issue with interactive mode where displaying all classes was actually not display classes which are part of a recursive cluster.&lt;br /&gt;
* compiler: Fixed eweasel test#anchor073 and test#anchor074 for bug#18758, and test#anchor059. Code now compiles, but it shows that there is still some work to be done. It improves the behavior of test#anchor005 and test#anchor042.&lt;br /&gt;
* compiler: Fixed test#anchor050. This addresses an issue where on .NET it would fail because for a query whose type is `like {X}.val' we would record what the type of `{X}.val' was, and not record that we needed the routine `val' of {X} for generating the type information for .NET code.&lt;br /&gt;
* compiler: Fixed eweasel test#anchor065 where if you have `like {G}.value' it would crash the compiler.&lt;br /&gt;
* compiler: Remove a code generation cast that caused a failure. The drawback is that the code does not verify any more (even though the code is safe). This fixes test#anchor018, test#anchor050, test#anchor054, test#anchor056, test#anchor059, test#anchor063 and potentially other tests.&lt;br /&gt;
* compiler: Fixed a bug that was preventing the display of classes in folder.&lt;br /&gt;
&lt;br /&gt;
===User changes===&lt;br /&gt;
* {{red|studio: Now EiffelStudio will never propose to save tests in the hidden EIFGENs/project/Testing subdirectory.}}&lt;br /&gt;
&lt;br /&gt;
===Developer changes===&lt;br /&gt;
* compiler: Fixed test#term194.&lt;br /&gt;
* compiler: Improved memory tool to list all fields of an object.&lt;br /&gt;
&lt;br /&gt;
==14.05.9.4243 (February 10th 2014)==&lt;br /&gt;
===New features===&lt;br /&gt;
* net: EiffelNet with SSL support.&lt;br /&gt;
* zlib: New Zlib compression library&lt;br /&gt;
* ribbon: Added support for assigning hot keys to ribbon elements.&lt;br /&gt;
&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
* compiler: Fixed bug#18758 and test#anchor072 which only affected .NET code generation of qualified anchor types.&lt;br /&gt;
* compiler: Fixed a long standing bug where descriptions in external nodes were lost.&lt;br /&gt;
* compiler: Fixed eweasel test#config028, test#config029 and test#config038 where compiler would crash when using a cluster/library with an invalid path.&lt;br /&gt;
* compiler: Fixed a regression that caused a C compilation error after removing a type from the system.&lt;br /&gt;
* studio: Fixed improper display of conditions in task and external nodes.&lt;br /&gt;
* vision2: Fixed a regression in EV_DRAWABLE_IMP on Unix platforms that causes a crash on some Unix platforms.&lt;br /&gt;
* other: Fixed various regression from rev#94113.&lt;br /&gt;
&lt;br /&gt;
==14.05.9.4113 (January 29th 2014)==&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
* base: Added epsilon and machine_epsilon queries as requested by users in REAL_32 and REAL_64. Added missing min_value and max_value from the .NET version of REAL_32 and REAL_64.&lt;br /&gt;
* espec: Added latest version of ESPEC.&lt;br /&gt;
* {{Red | compiler: The compiler will now report syntax warnings for non-supported empty lists such as {}, () and []. And it will report an error in an export clause if after the type nothing is specified.}}&lt;br /&gt;
&lt;br /&gt;
===Improvements===&lt;br /&gt;
* argument: we allow the nologo command line option on Unix to ensure that programs have pretty much the exact same command line interface.&lt;br /&gt;
* compiler: we now provide syntax warnings for unsupported empty lists such as (), or [], or {}, as well as an empty export clause `export {NONE} end'. It is not ECMA compliant to accept those.&lt;br /&gt;
* {{Red| compiler: made workbench code more compact and faster by about 5 to 9% average.}}&lt;br /&gt;
* Made most libraries compile in the highest level of void-safety except the following ones:&lt;br /&gt;
** docking&lt;br /&gt;
** editor&lt;br /&gt;
** edk&lt;br /&gt;
** graph&lt;br /&gt;
** memory_analyzer&lt;br /&gt;
* testing: Made possible to run AutoTest test cases outside of the AutoTest framework by simply calling them from a normal class.&lt;br /&gt;
* vision2: Created a set of classes to make it easier to develop AutoTest tests for code based on vision2.&lt;br /&gt;
* {{Red|runtime: In workbench mode, if the melted file cannot be found, instead of exiting the application, the application will run as if it had never been melted and will print a warning in the console.}}&lt;br /&gt;
&lt;br /&gt;
===Feature removed===&lt;br /&gt;
* library: Removed obsolete feature &amp;lt;e&amp;gt;{TUPLE}.make&amp;lt;/e&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
* compiler: bug#18759 (test#iteration004) - Changed processing of &amp;lt;e&amp;gt;{ITERABLE}.new_cursor&amp;lt;/e&amp;gt; to use a renamed version of the feature in a descendant class rather than the feature having this name.&lt;br /&gt;
* compiler: bug#17233 (test#term196) - Supported iteration on an expression of a formal generic type.&lt;br /&gt;
* compiler: bug#17239 (test#term198) - Fixed a bug that caused a crash when compiling the code that used an inline agent as an iteration expression.&lt;br /&gt;
* compiler: bug#16983 (test#anchor055), bug#17034 (test#anchor057) - Fixed a bug that caused a crash when compiling the code with the creation of an object of a qualified anchored type with a formal generic.&lt;br /&gt;
* compiler: test#anchor070 - Fixed a bug that might cause compiler crash when nested qualified anchored types with a longer feature chain were involved in qualifiers of other qualified anchored types.&lt;br /&gt;
* compiler: bug#16991 (test#anchor056) - Fixed a bug that might cause a compiler to report an unknown feature in a qualified anchored type with a formal generic qualifier constrained only by formal generic types.&lt;br /&gt;
* compiler: bug#18795 (test#melt104) - Fixed an issue with address expression (not part of the Eiffel specification, only supported for backward compatibility) when melting code would crash the compiler.&lt;br /&gt;
* compiler: fixed test#exec341 where performing an assignment via &amp;quot;{EXT}.fea := bar&amp;quot; would fail at runtime.&lt;br /&gt;
* dotnet: Fixed a code generation bug when using across where the .NET code generation would perform a cast on the target type of the expression instead of on the type of the cursor.&lt;br /&gt;
*studio: Fixed an issue where if you open EiffelStudio on screen 1 of a multiple screen setup, then maximize EiffelStudio on screen 2. Next time you open EiffelStudio it would open maximized on screen 1 rather than on screen 2.&lt;br /&gt;
* wel: Fixed a bug with `set_string_with_newline_conversion' where if the input string had only one character after the last %N, that character would be discarded. That is to say &amp;quot;%Na&amp;quot; would yield &amp;quot;%R%N&amp;quot; instead of &amp;quot;%R%Na&amp;quot;. This fixes bug#18783.&lt;br /&gt;
* studio: Fixed an issue on Windows where once you set a preference to True, you could never go back to its default value. For example, force debug mode would always be active once set, same for linking the editor and the context tool and many others.&lt;br /&gt;
* studio: Fixed a saving issue where each time you saved a document, it will blink instead of not changing anything.&lt;br /&gt;
* studio: Fixed a copy and paste texts with multiple lines with some leading tabs into the editor. The cursor in the end is positioned N characters before the place it used to be. (N is the number of lines of the pasted text)&lt;br /&gt;
* base_extension: Fixed a crash in ENVIRONMENT_ARGUMENTS when arguments are removed after first access to ENVIRONMENT_ARGUMENTS. This is the case when using `--sync' option in a Vision2 application on Unix.&lt;br /&gt;
* process: Fixed redirection of standard error to a file which was redirecting to standard output instead.&lt;br /&gt;
* runtime: Fixed bug#18785 and eweasel test#ccomp089 for Linux 32-bit, but the fix will also affect any platform where the C compiler was not doing what we expected to compute the value of NaN, +Infinity and -Infinity for floating numbers.&lt;br /&gt;
* compiler: test#anchor071 - Fixed computation of a qualified anchored type that involves a formal generic parameter and feature redeclaration in a descendant of the formal generic constraint.&lt;br /&gt;
* studio: Fixed bug#18792, bug#18501 and bug#17626 when searching for a feature while the editor hasn't finished loading.&lt;br /&gt;
* studio: Fixed a long standing issue where the new class template had the wrong newline on Windows.&lt;br /&gt;
* store: Fixed Autotest test#test_numeric_types and test#test_numeric_types_use_decimal_mode by ensuring that a decimal read from the database (almost like a string representation) is converted to a REAL_64 the same way it is done in class {STRING}.to_real_64, otherwise we get different rounding.&lt;br /&gt;
&lt;br /&gt;
===User changes===&lt;br /&gt;
* EiffelStudio: Moved project setting option ''Full class checking'' to ''Advanced'' section.&lt;br /&gt;
* EiffelStudio: Changed project settings defaults to complete void safety.&lt;br /&gt;
* {{Red| compiler: In circa 2000, we allowed $x and $(expr) as expression instead of just argument passing. But while this was good for just $x, $(expr) is actually not supported properly in the code generation. As a consequence we have disallowed $(expr) outside argument passing.}}&lt;br /&gt;
* {{Red| wel: Fixed incorrect signatures of wrapping for PostMessage, GetCurrentProcessId and GetWindowThreadProcessID which do not return a pointer but an integer type.}}&lt;br /&gt;
&lt;br /&gt;
===Developer changes===&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=EiffelStudio_14.05_Releases&amp;diff=15061</id>
		<title>EiffelStudio 14.05 Releases</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=EiffelStudio_14.05_Releases&amp;diff=15061"/>
				<updated>2014-02-28T01:23:25Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: /* Bug fixes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Releases]]__NOTOC__{{ReleaseHistoryHeader}}&lt;br /&gt;
&lt;br /&gt;
= EiffelStudio 14.05.x Releases=&lt;br /&gt;
&lt;br /&gt;
Beta download: ftp://beta:beta57@ftp.eiffel.com/14.05/&lt;br /&gt;
&lt;br /&gt;
==14.05.x.x (...)==&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
&lt;br /&gt;
===Improvements===&lt;br /&gt;
&lt;br /&gt;
===Feature removed===&lt;br /&gt;
&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
&lt;br /&gt;
===User changes===&lt;br /&gt;
&lt;br /&gt;
===Developer changes===&lt;br /&gt;
&lt;br /&gt;
==14.05.9.4490 (February 21st 2014)==&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
* compiler: Added ability to extract file location of a class in interactive mode.&lt;br /&gt;
* {{red|compiler: Made it possible to compile a project for Windows on Unix, and vice-versa by using the -platform xxx command line, where xxx can be unix, windows, macintosh or vxworks.}}&lt;br /&gt;
* {{red| compile_all: Improved '''compile_all''' tool to return a non-zero exit code when there is a failure. Made it possible to target a specific platform. Also if an ECF has a platform setting set, and we are not compiling for that platform, the ECF will be ignored. }}&lt;br /&gt;
* compiler: The interactive mode of the compiler can now show the path of a class using the w menu in the class menu.&lt;br /&gt;
* base: Added is_whitespace and is_substring_whitespace.&lt;br /&gt;
* compiler: improved support for type inference.&lt;br /&gt;
&lt;br /&gt;
===Improvements===&lt;br /&gt;
* studio: Reduced size of '''project.epr''' and time it takes to save/retrieve a project by only saving what is needed. Some large projects went from 250MB down to 100MB on disk, and from 800MB to 300MB in memory usage.&lt;br /&gt;
* store: All sublibraries compile in complete void-safety mode.&lt;br /&gt;
* compiler: Made compiler more robust if some routines/classes are not found as expected by the compiler. It will now report a Library_error error instead of crashing at various stages of the compilation process.&lt;br /&gt;
* libraries: All libraries/examples/tools and other ECFs are now checked daily to ensure nothing breaks. As a result fixed a few issues for code that did not compile.&lt;br /&gt;
* {{red|compiler: Improved command line usage which will report why the command line is incorrect instead of displaying the whole help which is not very useful.}}&lt;br /&gt;
* compiler: Fixed an issue when you provide a directory instead of a file, it would report an internal error instead of just stating it could not open the file.&lt;br /&gt;
&lt;br /&gt;
===Feature removed===&lt;br /&gt;
&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
* vision2: Fixed by one error when mapping a caret position to the actual caret position of the underlying Windows implementation that has %R%N and not just %N. This fixes vision2 test {TEST_EV_TEXT}.test_test_caret_positioning.&lt;br /&gt;
* compiler: Fixed an issue with interactive mode where displaying all classes was actually not display classes which are part of a recursive cluster.&lt;br /&gt;
* compiler: Fixed eweasel test#anchor073 and test#anchor074 for bug#18758, and test#anchor059. Code now compiles, but it shows that there is still some work to be done. It improves behavior of test#anchor005 and test#anchor042.&lt;br /&gt;
* compiler: Fixed test#anchor050. This addresses an issue where on .NET it would fail because for a query whose type is `like {X}.val' we would record what the type of `{X}.val' was, and not record that we needed the routine `val' of {X} for generating the type information for .NET code.&lt;br /&gt;
* compiler: Fixed eweasel test#anchor065 where if you have `like {G}.value' it would crash the compiler.&lt;br /&gt;
* compiler: Remove a code generation cast that caused a failure. The drawback is that the code does not verify anymore (eventhough the code is safe). This fixes test#anchor018, test#anchor050, test#anchor054, test#anchor056, test#anchor059, test#anchor063 and potentially other tests.&lt;br /&gt;
* compiler: Fixed a bug that preventing the display of classes in folder.&lt;br /&gt;
&lt;br /&gt;
===User changes===&lt;br /&gt;
* {{red|studio: Now EiffelStudio will never propose to save tests in the hidden EIFGENs/project/Testing subdirectory.}}&lt;br /&gt;
&lt;br /&gt;
===Developer changes===&lt;br /&gt;
* compiler: Fixed test#term194.&lt;br /&gt;
* compiler: Improved memory tool to list all fields of an object.&lt;br /&gt;
&lt;br /&gt;
==14.05.9.4243 (February 10th 2014)==&lt;br /&gt;
===New features===&lt;br /&gt;
* net: EiffelNet with SSL support.&lt;br /&gt;
* zlib: New Zlib compression library&lt;br /&gt;
* ribbon: Added support for assigning hot keys to ribbon elements.&lt;br /&gt;
&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
* compiler: Fixed bug#18758 and test#anchor072 which only affected .NET code generation of qualified anchor types.&lt;br /&gt;
* compiler: Fixed a long standing bug where descriptions in external nodes were lost.&lt;br /&gt;
* compiler: Fixed eweasel test#config028, test#config029 and test#config038 where compiler would crash when using a cluster/library with an invalid path.&lt;br /&gt;
* compiler: Fixed a regression that caused a C compilation error after removing a type from the system.&lt;br /&gt;
* studio: Fixed improper display of conditions in task and external nodes.&lt;br /&gt;
* vision2: Fixed a regression in EV_DRAWABLE_IMP on Unix platforms that causes a crash on some Unix platforms.&lt;br /&gt;
* other: Fixed various regression from rev#94113.&lt;br /&gt;
&lt;br /&gt;
==14.05.9.4113 (January 29th 2014)==&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
* base: Added epsilon and machine_epsilon queries as requested by users in REAL_32 and REAL_64. Added missing min_value and max_value from the .NET version of REAL_32 and REAL_64.&lt;br /&gt;
* espec: Added latest version of ESPEC.&lt;br /&gt;
* {{Red | compiler: The compiler will now report syntax warnings for non-supported empty lists such as {}, () and []. And it will report an error in an export clause if after the type nothing is specified.}}&lt;br /&gt;
&lt;br /&gt;
===Improvements===&lt;br /&gt;
* argument: we allow the nologo command line option on Unix to ensure that programs have pretty much the exact same command line interface.&lt;br /&gt;
* compiler: we now provide syntax warnings for unsupported empty lists such as (), or [], or {}, as well as an empty export clause `export {NONE} end'. It is not ECMA compliant to accept those.&lt;br /&gt;
* {{Red| compiler: made workbench code more compact and faster by about 5 to 9% average.}}&lt;br /&gt;
* Made most libraries compile in the highest level of void-safety except the following ones:&lt;br /&gt;
** docking&lt;br /&gt;
** editor&lt;br /&gt;
** edk&lt;br /&gt;
** graph&lt;br /&gt;
** memory_analyzer&lt;br /&gt;
* testing: Made possible to run AutoTest test cases outside of the AutoTest framework by simply calling them from a normal class.&lt;br /&gt;
* vision2: Created a set of classes to make it easier to develop AutoTest tests for code based on vision2.&lt;br /&gt;
* {{Red|runtime: In workbench mode, if the melted file cannot be found, instead of exiting the application, the application will run as if it had never been melted and will print a warning in the console.}}&lt;br /&gt;
&lt;br /&gt;
===Feature removed===&lt;br /&gt;
* library: Removed obsolete feature &amp;lt;e&amp;gt;{TUPLE}.make&amp;lt;/e&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
* compiler: bug#18759 (test#iteration004) - Changed processing of &amp;lt;e&amp;gt;{ITERABLE}.new_cursor&amp;lt;/e&amp;gt; to use a renamed version of the feature in a descendant class rather than the feature having this name.&lt;br /&gt;
* compiler: bug#17233 (test#term196) - Supported iteration on an expression of a formal generic type.&lt;br /&gt;
* compiler: bug#17239 (test#term198) - Fixed a bug that caused a crash when compiling the code that used an inline agent as an iteration expression.&lt;br /&gt;
* compiler: bug#16983 (test#anchor055), bug#17034 (test#anchor057) - Fixed a bug that caused a crash when compiling the code with the creation of an object of a qualified anchored type with a formal generic.&lt;br /&gt;
* compiler: test#anchor070 - Fixed a bug that might cause compiler crash when nested qualified anchored types with a longer feature chain were involved in qualifiers of other qualified anchored types.&lt;br /&gt;
* compiler: bug#16991 (test#anchor056) - Fixed a bug that might cause a compiler to report an unknown feature in a qualified anchored type with a formal generic qualifier constrained only by formal generic types.&lt;br /&gt;
* compiler: bug#18795 (test#melt104) - Fixed an issue with address expression (not part of the Eiffel specification, only supported for backward compatibility) when melting code would crash the compiler.&lt;br /&gt;
* compiler: fixed test#exec341 where performing an assignment via &amp;quot;{EXT}.fea := bar&amp;quot; would fail at runtime.&lt;br /&gt;
* dotnet: Fixed a code generation bug when using across where the .NET code generation would perform a cast on the target type of the expression instead of on the type of the cursor.&lt;br /&gt;
*studio: Fixed an issue where if you open EiffelStudio on screen 1 of a multiple screen setup, then maximize EiffelStudio on screen 2. Next time you open EiffelStudio it would open maximized on screen 1 rather than on screen 2.&lt;br /&gt;
* wel: Fixed a bug with `set_string_with_newline_conversion' where if the input string had only one character after the last %N, that character would be discarded. That is to say &amp;quot;%Na&amp;quot; would yield &amp;quot;%R%N&amp;quot; instead of &amp;quot;%R%Na&amp;quot;. This fixes bug#18783.&lt;br /&gt;
* studio: Fixed an issue on Windows where once you set a preference to True, you could never go back to its default value. For example, force debug mode would always be active once set, same for linking the editor and the context tool and many others.&lt;br /&gt;
* studio: Fixed a saving issue where each time you saved a document, it will blink instead of not changing anything.&lt;br /&gt;
* studio: Fixed a copy and paste texts with multiple lines with some leading tabs into the editor. The cursor in the end is positioned N characters before the place it used to be. (N is the number of lines of the pasted text)&lt;br /&gt;
* base_extension: Fixed a crash in ENVIRONMENT_ARGUMENTS when arguments are removed after first access to ENVIRONMENT_ARGUMENTS. This is the case when using `--sync' option in a Vision2 application on Unix.&lt;br /&gt;
* process: Fixed redirection of standard error to a file which was redirecting to standard output instead.&lt;br /&gt;
* runtime: Fixed bug#18785 and eweasel test#ccomp089 for Linux 32-bit, but the fix will also affect any platform where the C compiler was not doing what we expected to compute the value of NaN, +Infinity and -Infinity for floating numbers.&lt;br /&gt;
* compiler: test#anchor071 - Fixed computation of a qualified anchored type that involves a formal generic parameter and feature redeclaration in a descendant of the formal generic constraint.&lt;br /&gt;
* studio: Fixed bug#18792, bug#18501 and bug#17626 when searching for a feature while the editor hasn't finished loading.&lt;br /&gt;
* studio: Fixed a long standing issue where the new class template had the wrong newline on Windows.&lt;br /&gt;
* store: Fixed Autotest test#test_numeric_types and test#test_numeric_types_use_decimal_mode by ensuring that a decimal read from the database (almost like a string representation) is converted to a REAL_64 the same way it is done in class {STRING}.to_real_64, otherwise we get different rounding.&lt;br /&gt;
&lt;br /&gt;
===User changes===&lt;br /&gt;
* EiffelStudio: Moved project setting option ''Full class checking'' to ''Advanced'' section.&lt;br /&gt;
* EiffelStudio: Changed project settings defaults to complete void safety.&lt;br /&gt;
* {{Red| compiler: In circa 2000, we allowed $x and $(expr) as expression instead of just argument passing. But while this was good for just $x, $(expr) is actually not supported properly in the code generation. As a consequence we have disallowed $(expr) outside argument passing.}}&lt;br /&gt;
* {{Red| wel: Fixed incorrect signatures of wrapping for PostMessage, GetCurrentProcessId and GetWindowThreadProcessID which do not return a pointer but an integer type.}}&lt;br /&gt;
&lt;br /&gt;
===Developer changes===&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=EiffelStudio_14.05_Releases&amp;diff=15009</id>
		<title>EiffelStudio 14.05 Releases</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=EiffelStudio_14.05_Releases&amp;diff=15009"/>
				<updated>2014-02-05T21:37:47Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: /* Bug fixes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Releases]]__NOTOC__{{ReleaseHistoryHeader}}&lt;br /&gt;
&lt;br /&gt;
= EiffelStudio 14.05.x Releases=&lt;br /&gt;
&lt;br /&gt;
Beta download: ftp://beta:beta57@ftp.eiffel.com/14.05/&lt;br /&gt;
&lt;br /&gt;
==14.05.x.x (...)==&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
===Improvements===&lt;br /&gt;
&lt;br /&gt;
===Feature removed===&lt;br /&gt;
&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
&lt;br /&gt;
===User changes===&lt;br /&gt;
&lt;br /&gt;
===Developer changes===&lt;br /&gt;
&lt;br /&gt;
==14.05.9.4181 (February 4th 2014)==&lt;br /&gt;
&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
* compiler: Fixed bug#18758 and test#anchor072 which only affected .NET code generation of qualified anchor types.&lt;br /&gt;
* compiler: Fixed a long standing bug where descriptions in external nodes were lost.&lt;br /&gt;
* compiler: Fixed eweasel test#config028, test#config029 and test#config038 where compiler would crash when using a cluster/library with an invalid path.&lt;br /&gt;
* studio: Fixed improper display of conditions in task and external nodes.&lt;br /&gt;
* other: Fixed various regression from rev#94113.&lt;br /&gt;
&lt;br /&gt;
==14.05.9.4113 (January 29th 2014)==&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
* base: Added epsilon and machine_epsilon queries as requested by users in REAL_32 and REAL_64. Added missing min_value and max_value from the .NET version of REAL_32 and REAL_64.&lt;br /&gt;
* espec: Added latest version of ESPEC.&lt;br /&gt;
* {{Red | compiler: The compiler will now report syntax warnings for non-supported empty lists such as {}, () and []. And it will report an error in an export clause if after the type nothing is specified.}}&lt;br /&gt;
&lt;br /&gt;
===Improvements===&lt;br /&gt;
* argument: we allow the nologo command line option on Unix to ensure that programs have pretty much the exact same command line interface.&lt;br /&gt;
* compiler: we now provide syntax warnings for unsupported empty lists such as (), or [], or {}, as well as an empty export clause `export {NONE} end'. It is not ECMA compliant to accept those.&lt;br /&gt;
* {{Red| compiler: made workbench code more compact and faster by about 5 to 9% average.}}&lt;br /&gt;
* Made most libraries compile in the highest level of void-safety except the following ones:&lt;br /&gt;
** docking&lt;br /&gt;
** editor&lt;br /&gt;
** edk&lt;br /&gt;
** graph&lt;br /&gt;
** memory_analyzer&lt;br /&gt;
* testing: Made possible to run AutoTest test cases outside of the AutoTest framework by simply calling them from a normal class.&lt;br /&gt;
* vision2: Created a set of classes to make it easier to develop AutoTest tests for code based on vision2.&lt;br /&gt;
* {{Red|runtime: In workbench mode, if the melted file cannot be found, instead of exiting the application, the application will run as if it had never been melted and will print a warning in the console.}}&lt;br /&gt;
&lt;br /&gt;
===Feature removed===&lt;br /&gt;
* library: Removed obsolete feature &amp;lt;e&amp;gt;{TUPLE}.make&amp;lt;/e&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
* compiler: bug#18759 (test#iteration004) - Changed processing of &amp;lt;e&amp;gt;{ITERABLE}.new_cursor&amp;lt;/e&amp;gt; to use a renamed version of the feature in a descendant class rather than the feature having this name.&lt;br /&gt;
* compiler: bug#17233 (test#term196) - Supported iteration on an expression of a formal generic type.&lt;br /&gt;
* compiler: bug#17239 (test#term198) - Fixed a bug that caused a crash when compiling the code that used an inline agent as an iteration expression.&lt;br /&gt;
* compiler: bug#16983 (test#anchor055), bug#17034 (test#anchor057) - Fixed a bug that caused a crash when compiling the code with the creation of an object of a qualified anchored type with a formal generic.&lt;br /&gt;
* compiler: test#anchor070 - Fixed a bug that might cause compiler crash when nested qualified anchored types with a longer feature chain were involved in qualifiers of other qualified anchored types.&lt;br /&gt;
* compiler: bug#16991 (test#anchor056) - Fixed a bug that might cause a compiler to report an unknown feature in a qualified anchored type with a formal generic qualifier constrained only by formal generic types.&lt;br /&gt;
* compiler: bug#18795 (test#melt104) - Fixed an issue with address expression (not part of the Eiffel specification, only supported for backward compatibility) when melting code would crash the compiler.&lt;br /&gt;
* compiler: fixed test#exec341 where performing an assignment via &amp;quot;{EXT}.fea := bar&amp;quot; would fail at runtime.&lt;br /&gt;
* dotnet: Fixed a code generation bug when using across where the .NET code generation would perform a cast on the target type of the expression instead of on the type of the cursor.&lt;br /&gt;
*studio: Fixed an issue where if you open EiffelStudio on screen 1 of a multiple screen setup, then maximize EiffelStudio on screen 2. Next time you open EiffelStudio it would open maximized on screen 1 rather than on screen 2.&lt;br /&gt;
* wel: Fixed a bug with `set_string_with_newline_conversion' where if the input string had only one character after the last %N, that character would be discarded. That is to say &amp;quot;%Na&amp;quot; would yield &amp;quot;%R%N&amp;quot; instead of &amp;quot;%R%Na&amp;quot;. This fixes bug#18783.&lt;br /&gt;
* studio: Fixed an issue on Windows where once you set a preference to True, you could never go back to its default value. For example, force debug mode would always be active once set, same for linking the editor and the context tool and many others.&lt;br /&gt;
* studio: Fixed a saving issue where each time you saved a document, it will blink instead of not changing anything.&lt;br /&gt;
* studio: Fixed a copy and paste texts with multiple lines with some leading tabs into the editor. The cursor in the end is positioned N characters before the place it used to be. (N is the number of lines of the pasted text)&lt;br /&gt;
* base_extension: Fixed a crash in ENVIRONMENT_ARGUMENTS when arguments are removed after first access to ENVIRONMENT_ARGUMENTS. This is the case when using `--sync' option in a Vision2 application on Unix.&lt;br /&gt;
* process: Fixed redirection of standard error to a file which was redirecting to standard output instead.&lt;br /&gt;
* runtime: Fixed bug#18785 and eweasel test#ccomp089 for Linux 32-bit, but the fix will also affect any platform where the C compiler was not doing what we expected to compute the value of NaN, +Infinity and -Infinity for floating numbers.&lt;br /&gt;
* compiler: test#anchor071 - Fixed computation of a qualified anchored type that involves a formal generic parameter and feature redeclaration in a descendant of the formal generic constraint.&lt;br /&gt;
* studio: Fixed bug#18792, bug#18501 and bug#17626 when searching for a feature while the editor hasn't finished loading.&lt;br /&gt;
* studio: Fixed a long standing issue where the new class template had the wrong newline on Windows.&lt;br /&gt;
* store: Fixed Autotest test#test_numeric_types and test#test_numeric_types_use_decimal_mode by ensuring that a decimal read from the database (almost like a string representation) is converted to a REAL_64 the same way it is done in class {STRING}.to_real_64, otherwise we get different rounding.&lt;br /&gt;
&lt;br /&gt;
===User changes===&lt;br /&gt;
* EiffelStudio: Moved project setting option ''Full class checking'' to ''Advanced'' section.&lt;br /&gt;
* EiffelStudio: Changed project settings defaults to complete void safety.&lt;br /&gt;
* {{Red| compiler: In circa 2000, we allowed $x and $(expr) as expression instead of just argument passing. But while this was good for just $x, $(expr) is actually not supported properly in the code generation. As a consequence we have disallowed $(expr) outside argument passing.}}&lt;br /&gt;
* {{Red| wel: Fixed incorrect signatures of wrapping for PostMessage, GetCurrentProcessId and GetWindowThreadProcessID which do not return a pointer but an integer type.}}&lt;br /&gt;
&lt;br /&gt;
===Developer changes===&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=EiffelStudio_14.05_Releases&amp;diff=14977</id>
		<title>EiffelStudio 14.05 Releases</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=EiffelStudio_14.05_Releases&amp;diff=14977"/>
				<updated>2014-01-17T23:19:46Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: Fix typo.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Releases]]__NOTOC__{{ReleaseHistoryHeader}}&lt;br /&gt;
&lt;br /&gt;
= EiffelStudio 14.05.x Releases=&lt;br /&gt;
&lt;br /&gt;
Beta download: ftp://beta:beta57@ftp.eiffel.com/14.05/&lt;br /&gt;
&lt;br /&gt;
==14.05.x.x (...)==&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
===Improvements===&lt;br /&gt;
* argument: we allow the nologo command line option on Unix to ensure that programs have pretty much the exact same command line interface.&lt;br /&gt;
* compiler: we now provide syntax warnings for unsupported empty lists such as (), or [], or {}, as well as an empty export clause `export {NONE} end'. It is not ECMA compliant to accept those.&lt;br /&gt;
&lt;br /&gt;
===Feature removed===&lt;br /&gt;
* library: Removed obsolete feature &amp;lt;e&amp;gt;{TUPLE}.make&amp;lt;/e&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
* compiler: bug#18759 (test#iteration004) - Changed processing of &amp;lt;e&amp;gt;{ITERABLE}.new_cursor&amp;lt;/e&amp;gt; to use a renamed version of the feature in a descendant class rather than the feature having this name.&lt;br /&gt;
* compiler: bug#17233 (test#term196) - Supported iteration on an expression of a formal generic type.&lt;br /&gt;
* compiler: bug#17239 (test#term198) - Fixed a bug that caused a crash when compiling the code that used an inline agent as an iteration expression.&lt;br /&gt;
* compiler: bug#16983 (test#anchor055), bug#17034 (test#anchor057) - Fixed a bug that caused a crash when compiling the code with the creation of an object of a qualified anchored type with a formal generic.&lt;br /&gt;
* compiler: test#anchor070 - Fixed a bug that might cause compiler crash when nested qualified anchored types with a longer feature chain were involved in qualifiers of other qualified anchored types.&lt;br /&gt;
* compiler: bug#16991 (test#anchor056) - Fixed a bug that might cause a compiler to report an unknown feature in a qualified anchored type with a formal generic qualifier constrained only by formal generic types.&lt;br /&gt;
* compiler: bug#18795 (test#melt104) - Fixed an issue with address expression (not part of the Eiffel specification, only supported for backward compatibility) when melting code would crash the compiler.&lt;br /&gt;
*studio: Fixed an issue where if you open EiffelStudio on screen 1 of a multiple screen setup, then maximize EiffelStudio on screen 2. Next time you open EiffelStudio it would open maximized on screen 1 rather than on screen 2.&lt;br /&gt;
* wel: Fixed a bug with `set_string_with_newline_conversion' where if the input string had only one character after the last %N, that character would be discarded. That is to say &amp;quot;%Na&amp;quot; would yield &amp;quot;%R%N&amp;quot; instead of &amp;quot;%R%Na&amp;quot;. This fixes bug#18783.&lt;br /&gt;
* studio: Fixed an issue on Windows where once you set a preference to True, you could never go back to its default value. For example, force debug mode would always be active once set, same for linking the editor and the context tool and many others.&lt;br /&gt;
* studio: Fixed a saving issue where each time you saved a document, it will blink instead of not changing anything.&lt;br /&gt;
* studio: Fixed a copy and paste texts with multiple lines with some leading tabs into the editor. The cursor in the end is positioned N characters before the place it used to be. (N is the number of lines of the pasted text)&lt;br /&gt;
* base_extension: Fixed a crash in ENVIRONMENT_ARGUMENTS when arguments are removed after first access to ENVIRONMENT_ARGUMENTS. This is the case when using `--sync' option in a Vision2 application on Unix.&lt;br /&gt;
* process: Fixed redirection of standard error to a file which was redirecting to standard output instead.&lt;br /&gt;
* runtime: Fixed bug#18785 and eweasel test#ccomp089 for Linux 32-bit, but the fix will also affect any platform where the C compiler was not doing what we expected to compute the value of NaN, +Infinity and -Infinity for floating numbers.&lt;br /&gt;
&lt;br /&gt;
===User changes===&lt;br /&gt;
* EiffelStudio: Moved project setting option ''Full class checking'' to ''Advanced'' section.&lt;br /&gt;
* EiffelStudio: Changed project settings defaults to complete void safety.&lt;br /&gt;
&lt;br /&gt;
===Developer changes===&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Eiffel_Coding_Standard&amp;diff=14866</id>
		<title>Eiffel Coding Standard</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Eiffel_Coding_Standard&amp;diff=14866"/>
				<updated>2013-08-04T08:11:19Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Coding Standards]]&lt;br /&gt;
==Language consideration==&lt;br /&gt;
*  Do not put a blank line between&lt;br /&gt;
:* '''create''' and creation instructions&lt;br /&gt;
:* '''inherit''' and parent clauses&lt;br /&gt;
* Do not use assertion clauses without tag names.&lt;br /&gt;
&lt;br /&gt;
A sample of proper formatting of code:&lt;br /&gt;
&amp;lt;e&amp;gt;note&lt;br /&gt;
    description: &amp;quot;Descr....&amp;quot;&lt;br /&gt;
    date: &amp;quot;$date: $&amp;quot;&lt;br /&gt;
&lt;br /&gt;
class A&lt;br /&gt;
&lt;br /&gt;
inherit&lt;br /&gt;
    B&lt;br /&gt;
       rename&lt;br /&gt;
           f as g&lt;br /&gt;
       end&lt;br /&gt;
&lt;br /&gt;
create&lt;br /&gt;
    make&lt;br /&gt;
&lt;br /&gt;
feature {NONE} -- Initialization&lt;br /&gt;
&lt;br /&gt;
    make (a: INTEGER)&lt;br /&gt;
            -- Initialize Current with `a'.&lt;br /&gt;
        do&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
invariant&lt;br /&gt;
    a_positive: a &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
end&amp;lt;/e&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Style==&lt;br /&gt;
*  If instructions:&lt;br /&gt;
&amp;lt;e&amp;gt;if expr1 then&lt;br /&gt;
    ...&lt;br /&gt;
elseif expr2 then&lt;br /&gt;
    ...&lt;br /&gt;
else&lt;br /&gt;
    ...&lt;br /&gt;
end&amp;lt;/e&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If expressions are very long, break them on conjunctions as in:&lt;br /&gt;
&amp;lt;e&amp;gt;if&lt;br /&gt;
    expr1 or else&lt;br /&gt;
    expr2&lt;br /&gt;
then&lt;br /&gt;
    ...&lt;br /&gt;
end&amp;lt;/e&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Loop instructions:&lt;br /&gt;
&amp;lt;e&amp;gt;from&lt;br /&gt;
    ...&lt;br /&gt;
until&lt;br /&gt;
    ...&lt;br /&gt;
loop&lt;br /&gt;
    ...&lt;br /&gt;
end&amp;lt;/e&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Inspect instructions:&lt;br /&gt;
&amp;lt;e&amp;gt;inspect expr&lt;br /&gt;
when val1 then ....&lt;br /&gt;
else&lt;br /&gt;
    ...&lt;br /&gt;
end&amp;lt;/e&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
&amp;lt;e&amp;gt;inspect&lt;br /&gt;
    expr&lt;br /&gt;
when val1 then&lt;br /&gt;
    ...&lt;br /&gt;
else&lt;br /&gt;
    ...&lt;br /&gt;
end&amp;lt;/e&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* For punctuation, we always have a space before '''(''' and a space after ''')''', ''',''', ''':''', or ''';''':&lt;br /&gt;
&amp;lt;e&amp;gt;require&lt;br /&gt;
   a_tag: query (a, b, c) or other_query (c, d)&lt;br /&gt;
local&lt;br /&gt;
   i: INTEGER; j: INTEGER&amp;lt;/e&amp;gt;&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=EiffelOnMac&amp;diff=14850</id>
		<title>EiffelOnMac</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=EiffelOnMac&amp;diff=14850"/>
				<updated>2013-07-26T04:18:34Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:EiffelStudio]]&lt;br /&gt;
[[Category:Macintosh]]&lt;br /&gt;
&lt;br /&gt;
This page gives you an overview about how to get EiffelStudio running on your Mac (Leopard, Snow Leopard, Lion or Mountain Lion).&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
&lt;br /&gt;
*You will need to install '''Xcode''' from the App Store. (On old versions of OS X, Xcode was on your OSX-Installation disk, or you downloaded it from Apple's developer web site.) After installing Xcode, make sure to install the command line tools by going to the Xcode preferences and under '''Downloads''' install the '''Command Line Tools''' components.&lt;br /&gt;
&lt;br /&gt;
*X11:&lt;br /&gt;
** On OS X 10.8 (Mountain Lion): install it from http://xquartz.macosforge.org.&lt;br /&gt;
** On OS X 10.5, 10.6 and 10.7: nothing to be done.&lt;br /&gt;
** ON OS X 10.4 and older: install it from your OS X installation disk.&lt;br /&gt;
&lt;br /&gt;
{{Note|Advanced users may not need to install Xcode as long as you install the '''development tools'''. Even though you save in download time, you might waste  a lot of time trying to fix missing dependencies. In other words, unless you are feeling adventurous, do install Xcode.}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Using MacPorts ===&lt;br /&gt;
The following should work on Mac OS X 10.4 and later.&lt;br /&gt;
&lt;br /&gt;
MacPorts is a tool that allows you to use many Unix applications on the Mac. We have created a package in the MacPorts repository that allows you to to install Eiffel Studio with all dependencies in a convenient way. First, install [http://guide.macports.org/#installing MacPorts].&lt;br /&gt;
&lt;br /&gt;
Now simply type (from a bash [http://guides.macrumors.com/Terminal terminal]):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port install eiffelstudioXX&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
where 'XX' stands for the EiffelStudio version you want to install (for example eiffelstudio72) and after some time (compiling on a 2.4 GHz Intel Mac takes about an hour) you're ready to go. &lt;br /&gt;
&lt;br /&gt;
Older development packages are available under the name eiffelstudioYY, etc. All packages can be installed simultaneously because they are located in different directories.&lt;br /&gt;
&lt;br /&gt;
When a new release of the same version EiffelStudio becomes available, you can upgrade like so:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port selfupdate&lt;br /&gt;
sudo port upgrade outdated&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Issues with old versions of EiffelStudio ===&lt;br /&gt;
* '''EiffelStudio 7.1''' had a bug preventing Vision2 applications from compiling out of the box. You can work around this by editing /Applications/MacPorts/Eiffel71/library/vision2/vision2.ecf and removing line 147:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;custom name=&amp;quot;vision_implementation&amp;quot; excluded_value=&amp;quot;gtk34&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''EiffelStudio 6.8''' was broken by GTK+-2.0 version 2_24_5_0+x11. A fix is to install gtk2 2_24_4_0+x11 (the previous minor version), or to deactivate the former and activate the latter if you already have both installed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port deactivate gtk2 @2_24_5_0+x11&lt;br /&gt;
sudo port activate gtk2 @2_24_4_0+x11&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using binary packages ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|This method does not work at the moment. Please install EiffelStudio using MacPorts.&amp;lt;br/&amp;gt;See [[Talk:EiffelOnMac|Discussion]] for more information.}}&lt;br /&gt;
&lt;br /&gt;
# Install the latest version of [http://xquartz.macosforge.org/trac/wiki/WikiStart XQuartz]: [http://xquartz.macosforge.org/downloads/X11-2.4.0.dmg download]&lt;br /&gt;
# Install the EiffelStudio 6.4 Mac package: [http://dfurrer.com/files/eiffelstudio64.dmg download]&lt;br /&gt;
&lt;br /&gt;
This installer was created using MacPorts as well as using the mpkg command. For more information take a look at the [http://guide.macports.org MacPorts Guide]&lt;br /&gt;
&lt;br /&gt;
== Starting EiffelStudio ==&lt;br /&gt;
&lt;br /&gt;
Simply navigate to /Applications/MacPorts/Eiffel''XX'' and double click the EiffelStudio icon.&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can also start EiffelStudio from the command line by entering the command 'estudio' or use the command-line eiffel compiler 'ec'.&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
===I get a crash with a Permission denied: Operating system error, how do I fix it?===&lt;br /&gt;
&lt;br /&gt;
Delete the .ec directory in your home directory.&lt;br /&gt;
&lt;br /&gt;
===I get an error with precompiles, why is that ?===&lt;br /&gt;
&lt;br /&gt;
Precompiles did not work on the Mac before EiffelStudio 6.4 due to a limitation of the linker. To work around this issue you have to disable the precompiles with those versions or upgrade to a recent version of EiffelStudio.&lt;br /&gt;
&lt;br /&gt;
{{Note|When you create a project, EiffelStudio will ask if you want to perform precompiles – say no. Then disable the precompiles for this project through the Project&amp;gt;Project menu. In the 'Groups&amp;gt;Precompile' section, remove all precompiles (eg., base_pre). Select the 'base_pre' precompile and click the red cross delete tool at the top of the window.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Note|Precompiling the Eiffel libraries after installing the Port is possible, there are security policies to take into account. The Port installs EiffelStudio under the system's ''/Application/MacPorts'' directory and '''not''' the user ''~/Application/MacPorts''. Due of this, EiffelStudio must be run as a super user and the precompiles build using the '''Tools''' &amp;gt; '''Precompile Wizard''' option. Alternatively, alter the base installation path when requesting to install the Port.}}&lt;br /&gt;
&lt;br /&gt;
=== How can I make EiffelStudio on the Mac look nicer? ===&lt;br /&gt;
* From macports, install the gtk2 (if not already installed) and gtk-chtheme packets. Then run gtk-chtheme and you get a nice GUI to choose your theme. Additional GTK themes can be put in  /opt/local/share/themes/ (There a thousands of them on the web, for example here : [http://art.gnome.org/themes/gtk2 http://art.gnome.org/themes/gtk2])&lt;br /&gt;
&lt;br /&gt;
=== Typing ec or estudio on the command line doesn't work ===&lt;br /&gt;
To run the '''ec''' compiler from your shell, set up variables similar to these (e.g. in ~/.profile):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Setting variables for EiffelStudio.&lt;br /&gt;
export ISE_EIFFEL=/Applications/MacPorts/Eiffel66&lt;br /&gt;
export ISE_PLATFORM=macosx-ppc (or macosx-x86)&lt;br /&gt;
export ISE_PROJECTS=$HOME&lt;br /&gt;
export ES_PATH=$ISE_EIFFEL/studio/spec/$ISE_PLATFORM/bin&lt;br /&gt;
export PATH=$ES_PATH:$PATH&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The latest release of EiffelStudio isn't available yet via MacPorts===&lt;br /&gt;
&lt;br /&gt;
MacPorts installs a particular version of EiffelStudio by following the rules defined in a '''Portfile'''. For example, http://trac.macports.org/browser/trunk/dports/lang/eiffelstudio71/Portfile is the Portfile for EiffelStudio 7.1. The person who maintains EiffelStudio for MacPorts has to write this file and upload it, but they might not have done so yet. You could make enquiries about when it will be available, but if you want to get the latest urgently it isn't hard to write your own Portfile and run it locally. Here's how.&lt;br /&gt;
&lt;br /&gt;
http://guide.macports.org/#development.local-repositories explains how to do it.&lt;br /&gt;
# Go to https://sourceforge.net/projects/eiffelstudio/files and download the relevant PorterPackage file.&lt;br /&gt;
# Run '''openssl''' to find out the '''checksum''' of the PorterPackage file. E.g., for EiffelStudio 7.2 the command is '''openssl rmd160 ~/Downloads/PorterPackage_72_91284_gpl.tar'''.&lt;br /&gt;
# Open /opt/local/etc/macports/sources.conf in a text editor (with super user privileges). Insert a line as explained on http://guide.macports.org, e.g., file:///Applications/MacPorts/ports&lt;br /&gt;
# Create the Portfile in a text editor, e.g., file:///Applications/MacPorts/ports/lang/eiffelstudio72/Portfile&lt;br /&gt;
#* Copy the contents of the most recently available EiffelStudio Portfile (e.g., from http://trac.macports.org/browser/trunk/dports/lang/eiffelstudio71/Portfile) into your Portfile.&lt;br /&gt;
#* Correct the '''name''', '''minor_version''' and '''version'''.&lt;br /&gt;
#* Make sure that the '''distname''' will resolve to the current PorterPackage file name that you see on https://sourceforge.net/projects/eiffelstudio/files&lt;br /&gt;
#* Set the first '''checksums''' to the value that you got earlier from running openssl.&lt;br /&gt;
#* You've finished writing your Portfile. Save it!&lt;br /&gt;
# Go to the ports directory, e.g., cd /Applications/MacPorts/ports&lt;br /&gt;
# sudo portindex&lt;br /&gt;
# You should now be able to install in the usual way, e.g., sudo port install eiffelstudio72&lt;br /&gt;
&lt;br /&gt;
==Hints==&lt;br /&gt;
* Pick and Drop works with Apple-key + mouse click.&lt;br /&gt;
* To set up the correct (default) browsers use &amp;quot;open&amp;quot; as your command-line browser in Tools&amp;gt;Preferences...&lt;br /&gt;
* The F10 and F11 debugging shortcuts conflict with the standard Exposé keys. Here are some workarounds:&lt;br /&gt;
** Use the toolbar instead.&lt;br /&gt;
** Reassign these shortcuts in EiffelStudio (Tools&amp;gt;Preferences).&lt;br /&gt;
** Reassign the Exposé keys in System Preferences.&lt;br /&gt;
* The version of '''X11 installed with Mac OS X Leopard 10.5.0 and 10.5.1 does not work'''. The 10.5.2 and later updates are probably ok, however, but if you're having problems have a look at http://trac.macosforge.org/projects/xquartz. For more details, see http://www.eiffelroom.com/blog/paulbates/a_little_help_for_mac_users which pre-dates the release of 10.5.2.&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Agents_in_SCOOP&amp;diff=14754</id>
		<title>Agents in SCOOP</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Agents_in_SCOOP&amp;diff=14754"/>
				<updated>2013-05-07T22:08:35Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: Fix typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The page reflects current decisions taken for the current SCOOP implementation, in particular without support for processor tags. So it may change in the future.&lt;br /&gt;
&lt;br /&gt;
== Status of agent targets ==&lt;br /&gt;
: Because any agent object is created on a processor associated with the agent's target, that target has to be controlled.&lt;br /&gt;
'''Agent target validity rule.''' The target of an agent must be controlled.&lt;br /&gt;
&lt;br /&gt;
== Types ==&lt;br /&gt;
'''Agent argument types validity rule.''' If an agent has a separate target, every non-expanded argument of the associated feature must be separate.&lt;br /&gt;
: Because an agent is created on a processor of a target, without processor tags it is impossible to create an agent on an open target of separate type and then pass the corresponding target object at the agent call. Also there is no way to make an open target controlled (see previous rule).&lt;br /&gt;
'''Agent open target type validity rule.''' If the target of an agent is open, it may not be separate.&lt;br /&gt;
&lt;br /&gt;
'''Example.''' &amp;lt;e&amp;gt;&lt;br /&gt;
f (p: separate P; q: separate Q): R&lt;br /&gt;
t: separate T&lt;br /&gt;
...&lt;br /&gt;
r := agent t.f (c, ?)&lt;br /&gt;
x := r.item ([a])&lt;br /&gt;
&amp;lt;/e&amp;gt;&lt;br /&gt;
The type &amp;lt;e&amp;gt;t&amp;lt;/e&amp;gt; of &amp;lt;e&amp;gt;agent t.f (c, ?)&amp;lt;/e&amp;gt; is &amp;lt;e&amp;gt;&lt;br /&gt;
      separate FUNCTION [ANY, TUPLE [separate Q], separate R]&lt;br /&gt;
&amp;lt;/e&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: The first parameter is not separate because the target and the agent object have the same handler.&lt;br /&gt;
: The separateness status of the type &amp;lt;e&amp;gt;TUPLE&amp;lt;/e&amp;gt; used for arguments does not matter, what matters is the types of arguments. In many cases when &amp;lt;e&amp;gt;TUPLE&amp;lt;/e&amp;gt; is used, it is used as a value type, i.e. it could even be an expanded type, so that a separate mark is not required. But then we need some conversion rules to attach different types of &amp;lt;e&amp;gt;TUPLE&amp;lt;/e&amp;gt;. In order to avoid unnecessary processor dependency, it's going to be created on the target processor (as a routine object itself), therefore it is not &amp;lt;e&amp;gt;separate&amp;lt;/e&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Agent classes ==&lt;br /&gt;
The first parameter in the class &amp;lt;e&amp;gt;ROUTINE&amp;lt;/e&amp;gt; and descendants is not used, so in the future it will be dropped altogether.&lt;br /&gt;
&lt;br /&gt;
'''Example.''' The agent type from the example above becomes&amp;lt;e&amp;gt;&lt;br /&gt;
      separate FUNCTION [TUPLE [separate Q], separate R]&lt;br /&gt;
&amp;lt;/e&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Correctness and wait conditions ==&lt;br /&gt;
The feature &amp;lt;e&amp;gt;{ROUTINE}.precondition&amp;lt;/e&amp;gt; should be split into 2 parts: &amp;lt;e&amp;gt;correctness_condition&amp;lt;/e&amp;gt; and &amp;lt;e&amp;gt;wait_condition&amp;lt;/e&amp;gt;. Then the routine &amp;lt;e&amp;gt;call&amp;lt;/e&amp;gt; looks like&amp;lt;e&amp;gt;&lt;br /&gt;
      call (a: OPEN_ARGS)&lt;br /&gt;
          require&lt;br /&gt;
              correctness_condition (a)&lt;br /&gt;
          do&lt;br /&gt;
              from&lt;br /&gt;
              until&lt;br /&gt;
                  not wait_condition (a)&lt;br /&gt;
              loop&lt;br /&gt;
                  execute_body (a)&lt;br /&gt;
              end&lt;br /&gt;
          end&lt;br /&gt;
&amp;lt;/e&amp;gt;&lt;br /&gt;
The same change applies to the feature &amp;lt;e&amp;gt;item&amp;lt;/e&amp;gt;.&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=EiffelStudio_Wish_List&amp;diff=14736</id>
		<title>EiffelStudio Wish List</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=EiffelStudio_Wish_List&amp;diff=14736"/>
				<updated>2013-05-05T00:20:57Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: /* Language */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Projects]]&lt;br /&gt;
Welcome to the Eiffel/EiffelStudio Wish List. This is the place where you, the community, get a chance to tell us what you think is important to include in the future versions of the Eiffel compiler and EiffelStudio IDE.&lt;br /&gt;
&lt;br /&gt;
Please use this list responsibly and try to correctly categorize your wishes. A brief description may help us evaluate your requirements but please be brief.&lt;br /&gt;
&lt;br /&gt;
Our stock pile of genie snared, dusty gold lamps is running low for our next release ([[EiffelStudio Releases]]) but we'll be sure to scour the lands for more.&lt;br /&gt;
&lt;br /&gt;
== Compiler ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!ID !! Short Summary !! Pros !! Cons !! More info&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Source &amp;amp; Generated Files in an RDBMS and (optionally) Compile directly from database &lt;br /&gt;
| Use an RDBMS to store all sources,libraries and generated files instead of a filesystem.  Optionally directly compile from the database. Repository can be shared amongst multiple users &lt;br /&gt;
|| Pro's:&lt;br /&gt;
* Easy queriable&lt;br /&gt;
* Much more appropriate to use a database to store relations (dependencies) between objects.&lt;br /&gt;
* Easier for using a shared repository amongst multiple users&lt;br /&gt;
||&lt;br /&gt;
* Sophisticated collaboration tools already exist for sharing project source e.g. SVN, CVS&lt;br /&gt;
||&lt;br /&gt;
* Would be a smart idea implementing this in a similar way as IP (Intentional Programming) does (storing source files as Abstract Syntax Tree, representable in different representations, and using a smart versioning system). More info: see [http://intentsoft.com/]&lt;br /&gt;
|-&lt;br /&gt;
! Shared EIFGEN&lt;br /&gt;
| Allow sharing of EIFGENs (in read-only mode)|| || ||]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! On-demand tab loading&lt;br /&gt;
| Allow creation of an EV_NOTEBOOK tab with an agent to be called to fill the tab when it is first loaded|| || ||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Enum&lt;br /&gt;
| A way to author Enum-like class for typed options or flags. Currently using INTEGER and a bag of analogous constants doesn't make Eiffel &amp;quot;elegant&amp;quot;. || ||&lt;br /&gt;
* The best practice way to get a value that only needs to be defined once is by using the &amp;quot;once&amp;quot; keyword in combination with a feature.&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Decimal&lt;br /&gt;
|Addition of a decimal type / REAL_128 for 28 digit precision -  || MA_DECIMAL is not efficient || MA_DECIMAL already covers this||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!User types&lt;br /&gt;
|I want to be able to define types .e.g. a decimal type as mentioned above. I know all built in types can be defined from scratch, except I a way to initialise from literals. So we need a way to define them as well. Suggest a new defered class with create methods from_literal( s:STRING), and queries is_interger_ok:BOOLIAN, is_real_ok:BOOLIAN, is_arbitary_string_ok:BOOLIAN, is_type_string_ok:BOOLIAN (we would define a new type of string just for this). The compiler when generating optimised code will have to compile the new types and dynamicaly bind to them to create an object that can be embeded into the code. I beleave this would let us write code like: x:DECIMAL; x=1.23 (without a conversion from REAL (float base2)) || || ||   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! CHARACTER_16&lt;br /&gt;
| CHARACTER_16 type || Smaller footprint than CHARACTER_32, UTF-16 is the default internal text representation for Windows/.Net/OS X/Java so conversion from CHARACTER_32 is costly, particular when dealing with large amounts of text || Please No! CHARACTER_32 covers this already. And UTF-8 is more space-efficient than UTF-16, which is an abomination. What will happen if you have a character from above the BMP? You will then have two CHARACTER_16s in the string for one real character - neither of which is a valid character - then `count' and `item' are all wrong. If you must have UTF-16 STRINGs, then let item return a CHARACTER_32. But note that having a UTF_16 STRING in itself won't eliminate all conversion costs - there is still the endian problem - this could be tackled by each individual UTF-16 STRING knowing whether it is UTF-16BE or UTF-16LE, but you may still need to convert. Comparing two such strings with different endianness would then have to be done using the codes - in what way is that going to be more efficient than using UTF-32? See [[Wish_CHARACTER_16]] for more details on why it is not ok.||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! 7-bit ASCII&lt;br /&gt;
| 7-bit (US) ASCII_CHARACTER and ASCII_STRING which extends upon an ARRAY [ASCII_CHARACTER] with values of 0-127, removing the need for UTF8 conversion/checking when passing basic char values to C (gtk interfacing for example when connecting to signals) || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! MUTEX&lt;br /&gt;
| Make MUTEX recursive on non-windows platforms or at least provide a mutex and separate recursive mutex for all platforms. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Multiple Precompiled.&lt;br /&gt;
| Ability for multiple precompiles in a system. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Ability to compile/debug for both 32/64 bit systems via project settings || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Ability for for a fully optimal finalization for systems marked as 'client only', so that unused variables will not get generated in the finalized C Code. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Ability for Eiffel Studio to cross compile || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Ability to be able to control all user settable options in studio without having to resort to manually editing files, this is mainly for C compilation options || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Have a smarter C code generation system that can launch a C compilation of any module as soon as the C code is generated, this way we can also be smarter when monitoring C compilation progress || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Ability for ANY to generate a unique id for each object for referencing and hashability || ||&lt;br /&gt;
Objects that are hashable should implement HASHABLE&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| With hashable ability of ANY, change object graph traversal for serialization so that multiple threads can serialize at the same time without having to wait linearly (lock_marking/unlock_marking). This may also require a reworking of the mismatch corrector facility as this does not appear to be thread-safe when magically called by the run-time|| || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Ability for Studio to work and compile with Cygwin || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Ability to get a list of file dependencies in the form of a file listing to stdout. This list would contain a) all .e files used in the system, b) all .lib/.so files explicitly listed in the ECF/Ace file and c) all .h files referenced in external features (ideally that have not been subjected to dead code removal). Preferably, this feature should be able to be used without performing a full compilation (level 4?). || || ||&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== .NET ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!ID !! Short Summary !! Pros !! Cons !! More info&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Consume .NET generics. Not being able to use them is becoming harder.&amp;lt;br/&amp;gt;We cannot write Atlas (AJAX) based web applications because of it. The Visual Studio SDK, used by EiffelEnvision, is increasing it's use of generics and preventing use from supporting some features. The people who want to use the .NET framework classes instead of the Eiffel ones cannot use generics and have to resort to using the non-generic versions of list, which bulks implementation and leads ambiguity. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Emit .NET generics types for Eiffel generic classes. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Allow direct access to member of TYPED_POINTER [xxx] item out/ref routine arguments. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Allow direct setting of TYPED_POINTER [xxx] item for out/ref routine arguments. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Optimized ''call.do_nothing'' as a IL pop instruction to removed returned value. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Custom attributes on routine arguments and Result. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| An ability to call a parent .NET constructor from an Eiffel creation routine. || || ||&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== IDE ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!ID !! Short Summary !! Pros !! Cons !! More info&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Halt repainting for the GUI library while the GUI is assembled or changed. &lt;br /&gt;
|| || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Give the user control over which classes will be compiled over the GUI (say: click on grey class and it becomes yellow and will be compiled always from now on, even though it may not be used at all. This is good for development of classes which are not added over GUI in ES.) || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| While searching for word or after a double click on a word, it would be nice if all words would be highlighted in pastel color style. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Allow arguments and locals of a routine to be pickable so that they can be renamed via the refactoring tool. || || || In the case of arguments it might be interesting to allow&lt;br /&gt;
renaming in ancestor and descendant versions of the feature.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| It's a pain to pick`n`drop huge features source code into the context window for setting break point. What about the following: Pick on the right side of the class text picks the feature as well? (Pick on the left side of the class text picks already the feature call). || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Make editor and grid more theme compliant in terms of color and font || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Remove all use of EV_TREE and EV_MULTI_COLUMN_LIST from studio so that all list widgets are drawn by vision2, this will make porting easier, we can also use the grid items to be able to change names of clusters, classes and features inline via the tree items. || || To which other platform would it make porting easier? For the Mac OS port that's completely unnecessary I think. Also it would make the tree view look uglier (not as other tree views etc on the same platform) and inline editing can be made accessible in other ways (at least in OS X that's quite easy) ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Extended Static Checking&lt;br /&gt;
| Extended static checking integrated into the IDE. || Provides more immediate feedback on potential contract violations. || ||See, for example, [http://secure.ucd.ie/products/opensource/ESCJava2/ ESC/Java2] and the associated Eclipse plugin, or Spec# integration into VisualStudio [http://download.microsoft.com/download/9/4/1/94138e2a-d9dc-435a-9240-bcd985bf5bd7/MikeBarnett-SpecSharp.wmv]. Eiffel has most of the necessary language constructs already and doesn't require annotations. See also [http://fm06.mcmaster.ca/es-verify.pdf ES-Verify]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Rearrange widgets of ''search tool'' so that they use free space on the right. Currently it uses too much vertical space. || || I don't see free space on the right. Has this already been done? ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Add an option to show the target name before the current edited class in the application title bar. When multiple projects are open, it's not possible to identify an EStudio session based on the title that appears on the tray bar|| || |||&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
!Step-by-step debugging&lt;br /&gt;
| It would be useful in step-by-step debugging to be able to follow the execution cursor when checking the invariants as it is done for the preconditions and postconditions of a routine.  This way, it would be easy to step into the right features and skip some (or all) of those present in the invariant. || || |||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!Integrated Designer&lt;br /&gt;
| It would be nice to have an integrated visual designer so that building business applications where visual design is very import can be created more easily. || || || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Drag-n-Drop&lt;br /&gt;
| Allow the alternative of using drag and drop everywhere instead of pick and drop. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Code annotation tags support&lt;br /&gt;
| Log the tags contained in comments.  For example, when using Eclipse, it is useful to leave TODO comments behind to ensure that a part that is not implemented will be eventually.  When the time comes to clean up the TODO tags, a tool can list them all along with the descriptions and the locations of the comments.  || || || Similar approach can be applied to indexing/note tags.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Token locations in flat-view&lt;br /&gt;
| When debugging, I always look at flat view of a feature, then I found something that I want to change, so I have to go back to basic view. Buf often, I need to search the basic view to relocate the code. It would be nice if I can somehow pick a location in flat view and drop it into the right location in basic view. &lt;br /&gt;
|| || ||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! External commands in context menu&lt;br /&gt;
| Suppose there is an external command &amp;quot;tortoisediff $file_name&amp;quot; to show diff of a file from its working base, then when a context menu for a class is displayed, this command will be in it, and before launch this command, the  $file_name placeholder will be replaced by the actual file name. Also, some special placeholders starting with # will be recognized. They represent open arguments. So before launching the command, a dialog will prompt out asking for those values. &lt;br /&gt;
|Easy to use, no need to go to Console tool anymore. || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Outline&lt;br /&gt;
| When a mouse pointer is over a class name, a feature name, etc., it would be nice to see in a pop-up tooltip some basic information about it like description, header comment, signature, etc. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Current value of a variable&lt;br /&gt;
| When a mouse pointer is over a variable in debug mode if would be nice to see in a pop-up tooltip its value. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Immediate syntax checks&lt;br /&gt;
| It would be nice if editor can detect syntax errors and warnings and highlight them inline as well as outline (using a vertical bar, an icon of a particular color, etc.). || || || Syntax warnings include obsolete language constructs as well as unused code (such as unused local variables). For them it should be possible to suggest a replacement, so that manual editing is not required.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Refactoring: unused inheritance&lt;br /&gt;
| A new tool can be introduced to check if a given inheritance path is actually used in a project and if not, would suggest to remove it. || || || It would be great to be able to run such tools in background, so that the checks are invisible to the user that only gets a warning and a suggestion to remove the unused parent clause. This way some other similar tools can be added.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Refactoring: unused arguments&lt;br /&gt;
| A new tool can be introduced to check if all arguments of a feature are used (including all versions of the feature) and would suggest to remove those that are never used. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Refactoring: more interactive renaming&lt;br /&gt;
| Renaming tool can be changed to prompt for renaming in comments and strings (one by one) rather than to apply renaming for all of them silently. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Improve search tool&lt;br /&gt;
| Progress of search operation could be shown when performing search on a project and would ensure that the IDE remains responsible at that time. It should be also possible for a user to break the search operation. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Automatic source format&lt;br /&gt;
| There could be an option to tell the editor to reformat the code according to user preference settings.  Those can address the multi-line expression format and the exceptions to the comb format (like for a class' name), for example.  The reformat feature can be made to affect only the display so that different project members can view the source as it pleases them in an uniform way. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Customizing the font of different lexical components&lt;br /&gt;
| It would be useful to be able to set different fonts for different lexical components.  It is already possible for keywords some other may be useful too like class names, locals, queries, commands, comments ... || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!Auto Indent&lt;br /&gt;
|Auto indent does not work, yes it does what 90% of editors that clame to do auto indent do. But if you have seen auto indent you would know this is not it.&lt;br /&gt;
You should be able to just press &amp;lt;CR&amp;gt; at end of line and type. E.G. if you are in a do block and type ensure it should unindent. |Badly indented should be an earlt indication of some syntax errors. &lt;br /&gt;
| Less key presses, less stress. || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!Select and Paste&lt;br /&gt;
|Like On X, middle button pastes previus selection.&lt;br /&gt;
|less mouse presses || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!Dialog Boxes, Yes or No&lt;br /&gt;
|In a dialog box that askes whould you like to save, have buttons labelled &amp;quot;Save&amp;quot; and &amp;quot;Discard&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
|Much quicker for intermediate and advanced users, as dont need to read all the text. Less error prone (as these users wont read the text)&lt;br /&gt;
&lt;br /&gt;
Better for begginers: Resurch has shown that begginers see these questions as asking for permition, and do not feal qualified to give it. Most begginers press No the first time. Then later wonder where there work went.&lt;br /&gt;
&lt;br /&gt;
Or even better just save it.&lt;br /&gt;
&lt;br /&gt;
|See: &amp;quot;Open Office&amp;quot; for an example.&lt;br /&gt;
See: The Inmates Are Running the Asylum: Why High-Tech Products Drive Us Crazy and How to Restore the Sanity (http://www.cooper.com/insights/books/)&lt;br /&gt;
&lt;br /&gt;
 ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Pebble for Override Clusters&lt;br /&gt;
| Further integrate  'Override Clusters' into the IDE, i.e., rather than having to manually copy a class from an existing library to the override cluster's folder, use a pebble and drop the class in the override cluster directly.&lt;br /&gt;
|| ||&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Language ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!ID !! Short Summary !! Pros !! Cons !! More info&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Allow to use '''?''' in assigner declaration For instance &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 foo: STRING assign set_key_value (&amp;quot;foo&amp;quot;, ?)&lt;br /&gt;
     do&lt;br /&gt;
         Result := values.item (&amp;quot;foo&amp;quot;)&lt;br /&gt;
     end&lt;br /&gt;
 &lt;br /&gt;
 values: HASH_TABLE [STRING, STRING]&lt;br /&gt;
 &lt;br /&gt;
 set_key_value (k, v: STRING)&lt;br /&gt;
     do&lt;br /&gt;
         values.force (v, k)&lt;br /&gt;
     end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Convenient Number Syntax&lt;br /&gt;
|| Adalike syntax for numbers, e.g. 2#101010 = 10#42 = 2#10_10_10 and 100_000_000 = 100000000. || effectively reduces silly bugs when reading and writing numbers || Eiffel allows underscores within numbers to allow digit grouping e.g. 8_961_226||see annotated ada reference manual   ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Exceptions mentioned in method interface&lt;br /&gt;
|| syntax for telling developers about exceptions thrown by a method. e.g.:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
foo( a : B): C&lt;br /&gt;
     exceptions&lt;br /&gt;
         Net_Unreachable, Net_Timeout&lt;br /&gt;
     do&lt;br /&gt;
         Result := values.item (&amp;quot;foo&amp;quot;)&lt;br /&gt;
     end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
|| Clear and elegant syntax, no more looking into the implementation to find out which exceptions might occur and which of them might be handled at which level.&lt;br /&gt;
|| 1) new keyword. 2) new compiler option necessary (using this interface extension is fully useful only if enforced by the compiler which would break older code). 3) Does not scale well with sub classing and redefining features.  Redefined versions may have fewer exceptions, in which some stated exceptions won't occur anymore, or more exceptions, where the feature would no longer conform to the signature and a hack would need to be made or redefining the base class in which case you have a fragile base class problem.  The Eiffel way of handling exceptions with the paradigm &amp;quot;a feature either satisfies its contract or an exception is thrown&amp;quot; is really an elegant way of handling the unknown, although it takes some getting used to when coming from Java.  ECMA exceptions as objects and the type multibranch instructions will help with non-trivial exception handling.&lt;br /&gt;
|| &lt;br /&gt;
Could this be included only on generated views. Not in typed in code, as this can cause a maintinance problem having to propogate changes.&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! 'across' with optional 'as'&lt;br /&gt;
| Allow to use '''across''' without '''as''' &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 a_routine&lt;br /&gt;
     do&lt;br /&gt;
         across 1 |..| 10&lt;br /&gt;
         loop&lt;br /&gt;
              -- do something&lt;br /&gt;
         end&lt;br /&gt;
     end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Simple conversion declaration&lt;br /&gt;
| Allow to write a simple conversion statment:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
class&lt;br /&gt;
    CONVERSION_PROPOSAL&lt;br /&gt;
&lt;br /&gt;
create&lt;br /&gt;
    make_from&lt;br /&gt;
&lt;br /&gt;
convert&lt;br /&gt;
    make_from,&lt;br /&gt;
    something&lt;br /&gt;
&lt;br /&gt;
feature&lt;br /&gt;
    make_from (v: A_TYPE)&lt;br /&gt;
        do end&lt;br /&gt;
&lt;br /&gt;
    something: ANOTHER_TYPE&lt;br /&gt;
        do end&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
equivalent to:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
class&lt;br /&gt;
    CURRENT_CONVERSION&lt;br /&gt;
&lt;br /&gt;
create&lt;br /&gt;
    make_from&lt;br /&gt;
&lt;br /&gt;
convert&lt;br /&gt;
    make_from ({A_TYPE}),&lt;br /&gt;
    something: {ANOTHER_TYPE}&lt;br /&gt;
&lt;br /&gt;
feature&lt;br /&gt;
    make_from (v: A_TYPE)&lt;br /&gt;
        do end&lt;br /&gt;
&lt;br /&gt;
    something: ANOTHER_TYPE&lt;br /&gt;
        do end&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
| Esaier and more readable declaration&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Iterable 'TUPLE'&lt;br /&gt;
| Allow to use an iterator on TUPLE.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Customized creation procedure for expanded type&lt;br /&gt;
| Require 'default_create' as now but allow to use another creation procedure.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Empty braces for unexported features&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
class&lt;br /&gt;
    PROPOSITION&lt;br /&gt;
&lt;br /&gt;
feature {}&lt;br /&gt;
    internal_something: A_TYPE&lt;br /&gt;
        do end&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
equivalent to:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
class&lt;br /&gt;
    CURRENT_STANDARD&lt;br /&gt;
&lt;br /&gt;
feature {NONE}&lt;br /&gt;
    internal_something: A_TYPE&lt;br /&gt;
        do end&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
* Liberty Eiffel uses this syntax.&lt;br /&gt;
* NONE keyword could be deprecated in the future (save a keyword and remove the concept of a class NONE inheriting of all classes)&lt;br /&gt;
|&lt;br /&gt;
* The proposal &amp;lt;code&amp;gt;{}&amp;lt;/code&amp;gt; is less explicit, so it is arguably harder to read than the current standard &amp;lt;code&amp;gt;{NONE}&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The proposal &amp;lt;code&amp;gt;{}&amp;lt;/code&amp;gt; is likely to cause confusion between unexported features and features exported to &amp;lt;code&amp;gt;{ANY}&amp;lt;/code&amp;gt;. Empty braces look very similar to braces omitted entirely.&lt;br /&gt;
* The proposal would force upgrading of existing code, which would be disruptive to existing users (although probably easily automated).&lt;br /&gt;
* What about &amp;lt;code&amp;gt;inherit {NONE}&amp;lt;/code&amp;gt;?&lt;br /&gt;
* What would the type of &amp;lt;code&amp;gt;Void&amp;lt;/code&amp;gt; be?&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Remove only postcondition&lt;br /&gt;
| Replace only postcondition with the old convention.&lt;br /&gt;
Bertrand MEYER described that in this article : [here][http://bertrandmeyer.com/2011/07/04/if-im-not-pure-at-least-my-functions-are/]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Library ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!ID !! Short Summary !! Pros !! Cons !! More info&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! until_do_and_remove&lt;br /&gt;
| Add DISPENCER_ITERATOR[G-&amp;gt;DISPENCER] inherit ITERATOR ....&lt;br /&gt;
  Add procedures until_do_and_remove and its brothers.&lt;br /&gt;
| if I want to iterate a QUEUE, I dont want the items to exist afterwards.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! SQL like where&lt;br /&gt;
| simmala to do_if, but a function:&lt;br /&gt;
  where (test: FUNCTION [ANY, TUPLE [G], BOOLEAN]): like Current&lt;br /&gt;
  		--returns container like current, for items satisfying test&lt;br /&gt;
  	deferred&lt;br /&gt;
  	end &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! slice functions&lt;br /&gt;
|   &lt;br /&gt;
  slice_until, slice_after, slice_after_and_including, etc (test: FUNCTION [ANY, TUPLE [G], BOOLEAN]): like Current&lt;br /&gt;
  	deferred&lt;br /&gt;
  	end&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!ID !! Short Summary !! Pros !! Cons !! More info&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Make every effective EiffelBase class implement default_create so that it can be used to instantiate any class with default values. || || ||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Provide a WEAK_REFERENCE [G] class to abstract away the implementation details currently provided by IDENTIFIED for implementing weak references. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Locale support to determine what the default charset is (or whether it is UTF-8 or not) || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Build an object storing database with built-in record locking so that multiple systems can have access to the same 'objects' || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Make base.ecf rely on smaller ecf's (kernel.ecf, structures.ecf, support.ecf) so that these smaller dependancies can be compiled in only if needs be.  It would be good if ANY could be optimized so that it doesn't have any references to io (or print) or mismatch information (only needed when storable is employed) as these bring in a lot of overhead when compiling a simple system.  The smaller ecf could also link in with the object files of the runtime to avoid linking against a monolithic runtime (cecil, storable, etc) when you only want to print (&amp;quot;Hello World&amp;quot;) || ||&lt;br /&gt;
* Unused features are already eliminated in the dead code removal step when finalizing a system.&lt;br /&gt;
 ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Put more of the run-time code in to inline C code reducing the size of the executable if you are not using certain features, ideally the linked against runtime should only contain the core functionality needed to create objects, perform simple operations and garbage collect, any other features can be brought in on a class/library/configuration level. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Additional Classes&lt;br /&gt;
| It would be nice to have classes in the basic eiffel libraries for handling serial port communication, zip compression, encryption, smtp, pop3, ftp, http, TCP/IP, usb, pdf generation, print engine for report writing.  I am sure their are others but the basic idea is that it would be nice to have a complete multi-OS tool for developing business applications with quick access to classes needed.  Presently you have to search the internet to find some of these classes.  It would be nicer to have a more complete library available from within the IDE. ||&lt;br /&gt;
|-&lt;br /&gt;
! Easier Method for using eternal dll&lt;br /&gt;
| When I wanted to include the Advantage Database Server and Virtual Print Engine client libraries written in C with an Eiffel project I was told you had to write wrappers for the header files and create an Eiffel method for each of the function calls in the library.  This was and is too time consuming.  Eiffel should be able to use external dlls without all this work or it should generate the required classes/methods itself.  As a result the project was completed in another language.&lt;br /&gt;
 || ||&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=EiffelStudio_Wish_List&amp;diff=14735</id>
		<title>EiffelStudio Wish List</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=EiffelStudio_Wish_List&amp;diff=14735"/>
				<updated>2013-05-05T00:09:06Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: /* Language */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Projects]]&lt;br /&gt;
Welcome to the Eiffel/EiffelStudio Wish List. This is the place where you, the community, get a chance to tell us what you think is important to include in the future versions of the Eiffel compiler and EiffelStudio IDE.&lt;br /&gt;
&lt;br /&gt;
Please use this list responsibly and try to correctly categorize your wishes. A brief description may help us evaluate your requirements but please be brief.&lt;br /&gt;
&lt;br /&gt;
Our stock pile of genie snared, dusty gold lamps is running low for our next release ([[EiffelStudio Releases]]) but we'll be sure to scour the lands for more.&lt;br /&gt;
&lt;br /&gt;
== Compiler ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!ID !! Short Summary !! Pros !! Cons !! More info&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Source &amp;amp; Generated Files in an RDBMS and (optionally) Compile directly from database &lt;br /&gt;
| Use an RDBMS to store all sources,libraries and generated files instead of a filesystem.  Optionally directly compile from the database. Repository can be shared amongst multiple users &lt;br /&gt;
|| Pro's:&lt;br /&gt;
* Easy queriable&lt;br /&gt;
* Much more appropriate to use a database to store relations (dependencies) between objects.&lt;br /&gt;
* Easier for using a shared repository amongst multiple users&lt;br /&gt;
||&lt;br /&gt;
* Sophisticated collaboration tools already exist for sharing project source e.g. SVN, CVS&lt;br /&gt;
||&lt;br /&gt;
* Would be a smart idea implementing this in a similar way as IP (Intentional Programming) does (storing source files as Abstract Syntax Tree, representable in different representations, and using a smart versioning system). More info: see [http://intentsoft.com/]&lt;br /&gt;
|-&lt;br /&gt;
! Shared EIFGEN&lt;br /&gt;
| Allow sharing of EIFGENs (in read-only mode)|| || ||]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! On-demand tab loading&lt;br /&gt;
| Allow creation of an EV_NOTEBOOK tab with an agent to be called to fill the tab when it is first loaded|| || ||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Enum&lt;br /&gt;
| A way to author Enum-like class for typed options or flags. Currently using INTEGER and a bag of analogous constants doesn't make Eiffel &amp;quot;elegant&amp;quot;. || ||&lt;br /&gt;
* The best practice way to get a value that only needs to be defined once is by using the &amp;quot;once&amp;quot; keyword in combination with a feature.&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Decimal&lt;br /&gt;
|Addition of a decimal type / REAL_128 for 28 digit precision -  || MA_DECIMAL is not efficient || MA_DECIMAL already covers this||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!User types&lt;br /&gt;
|I want to be able to define types .e.g. a decimal type as mentioned above. I know all built in types can be defined from scratch, except I a way to initialise from literals. So we need a way to define them as well. Suggest a new defered class with create methods from_literal( s:STRING), and queries is_interger_ok:BOOLIAN, is_real_ok:BOOLIAN, is_arbitary_string_ok:BOOLIAN, is_type_string_ok:BOOLIAN (we would define a new type of string just for this). The compiler when generating optimised code will have to compile the new types and dynamicaly bind to them to create an object that can be embeded into the code. I beleave this would let us write code like: x:DECIMAL; x=1.23 (without a conversion from REAL (float base2)) || || ||   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! CHARACTER_16&lt;br /&gt;
| CHARACTER_16 type || Smaller footprint than CHARACTER_32, UTF-16 is the default internal text representation for Windows/.Net/OS X/Java so conversion from CHARACTER_32 is costly, particular when dealing with large amounts of text || Please No! CHARACTER_32 covers this already. And UTF-8 is more space-efficient than UTF-16, which is an abomination. What will happen if you have a character from above the BMP? You will then have two CHARACTER_16s in the string for one real character - neither of which is a valid character - then `count' and `item' are all wrong. If you must have UTF-16 STRINGs, then let item return a CHARACTER_32. But note that having a UTF_16 STRING in itself won't eliminate all conversion costs - there is still the endian problem - this could be tackled by each individual UTF-16 STRING knowing whether it is UTF-16BE or UTF-16LE, but you may still need to convert. Comparing two such strings with different endianness would then have to be done using the codes - in what way is that going to be more efficient than using UTF-32? See [[Wish_CHARACTER_16]] for more details on why it is not ok.||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! 7-bit ASCII&lt;br /&gt;
| 7-bit (US) ASCII_CHARACTER and ASCII_STRING which extends upon an ARRAY [ASCII_CHARACTER] with values of 0-127, removing the need for UTF8 conversion/checking when passing basic char values to C (gtk interfacing for example when connecting to signals) || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! MUTEX&lt;br /&gt;
| Make MUTEX recursive on non-windows platforms or at least provide a mutex and separate recursive mutex for all platforms. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Multiple Precompiled.&lt;br /&gt;
| Ability for multiple precompiles in a system. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Ability to compile/debug for both 32/64 bit systems via project settings || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Ability for for a fully optimal finalization for systems marked as 'client only', so that unused variables will not get generated in the finalized C Code. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Ability for Eiffel Studio to cross compile || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Ability to be able to control all user settable options in studio without having to resort to manually editing files, this is mainly for C compilation options || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Have a smarter C code generation system that can launch a C compilation of any module as soon as the C code is generated, this way we can also be smarter when monitoring C compilation progress || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Ability for ANY to generate a unique id for each object for referencing and hashability || ||&lt;br /&gt;
Objects that are hashable should implement HASHABLE&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| With hashable ability of ANY, change object graph traversal for serialization so that multiple threads can serialize at the same time without having to wait linearly (lock_marking/unlock_marking). This may also require a reworking of the mismatch corrector facility as this does not appear to be thread-safe when magically called by the run-time|| || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Ability for Studio to work and compile with Cygwin || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Ability to get a list of file dependencies in the form of a file listing to stdout. This list would contain a) all .e files used in the system, b) all .lib/.so files explicitly listed in the ECF/Ace file and c) all .h files referenced in external features (ideally that have not been subjected to dead code removal). Preferably, this feature should be able to be used without performing a full compilation (level 4?). || || ||&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== .NET ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!ID !! Short Summary !! Pros !! Cons !! More info&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Consume .NET generics. Not being able to use them is becoming harder.&amp;lt;br/&amp;gt;We cannot write Atlas (AJAX) based web applications because of it. The Visual Studio SDK, used by EiffelEnvision, is increasing it's use of generics and preventing use from supporting some features. The people who want to use the .NET framework classes instead of the Eiffel ones cannot use generics and have to resort to using the non-generic versions of list, which bulks implementation and leads ambiguity. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Emit .NET generics types for Eiffel generic classes. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Allow direct access to member of TYPED_POINTER [xxx] item out/ref routine arguments. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Allow direct setting of TYPED_POINTER [xxx] item for out/ref routine arguments. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Optimized ''call.do_nothing'' as a IL pop instruction to removed returned value. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Custom attributes on routine arguments and Result. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| An ability to call a parent .NET constructor from an Eiffel creation routine. || || ||&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== IDE ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!ID !! Short Summary !! Pros !! Cons !! More info&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Halt repainting for the GUI library while the GUI is assembled or changed. &lt;br /&gt;
|| || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Give the user control over which classes will be compiled over the GUI (say: click on grey class and it becomes yellow and will be compiled always from now on, even though it may not be used at all. This is good for development of classes which are not added over GUI in ES.) || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| While searching for word or after a double click on a word, it would be nice if all words would be highlighted in pastel color style. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Allow arguments and locals of a routine to be pickable so that they can be renamed via the refactoring tool. || || || In the case of arguments it might be interesting to allow&lt;br /&gt;
renaming in ancestor and descendant versions of the feature.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| It's a pain to pick`n`drop huge features source code into the context window for setting break point. What about the following: Pick on the right side of the class text picks the feature as well? (Pick on the left side of the class text picks already the feature call). || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Make editor and grid more theme compliant in terms of color and font || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Remove all use of EV_TREE and EV_MULTI_COLUMN_LIST from studio so that all list widgets are drawn by vision2, this will make porting easier, we can also use the grid items to be able to change names of clusters, classes and features inline via the tree items. || || To which other platform would it make porting easier? For the Mac OS port that's completely unnecessary I think. Also it would make the tree view look uglier (not as other tree views etc on the same platform) and inline editing can be made accessible in other ways (at least in OS X that's quite easy) ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Extended Static Checking&lt;br /&gt;
| Extended static checking integrated into the IDE. || Provides more immediate feedback on potential contract violations. || ||See, for example, [http://secure.ucd.ie/products/opensource/ESCJava2/ ESC/Java2] and the associated Eclipse plugin, or Spec# integration into VisualStudio [http://download.microsoft.com/download/9/4/1/94138e2a-d9dc-435a-9240-bcd985bf5bd7/MikeBarnett-SpecSharp.wmv]. Eiffel has most of the necessary language constructs already and doesn't require annotations. See also [http://fm06.mcmaster.ca/es-verify.pdf ES-Verify]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Rearrange widgets of ''search tool'' so that they use free space on the right. Currently it uses too much vertical space. || || I don't see free space on the right. Has this already been done? ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Add an option to show the target name before the current edited class in the application title bar. When multiple projects are open, it's not possible to identify an EStudio session based on the title that appears on the tray bar|| || |||&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
!Step-by-step debugging&lt;br /&gt;
| It would be useful in step-by-step debugging to be able to follow the execution cursor when checking the invariants as it is done for the preconditions and postconditions of a routine.  This way, it would be easy to step into the right features and skip some (or all) of those present in the invariant. || || |||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!Integrated Designer&lt;br /&gt;
| It would be nice to have an integrated visual designer so that building business applications where visual design is very import can be created more easily. || || || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Drag-n-Drop&lt;br /&gt;
| Allow the alternative of using drag and drop everywhere instead of pick and drop. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Code annotation tags support&lt;br /&gt;
| Log the tags contained in comments.  For example, when using Eclipse, it is useful to leave TODO comments behind to ensure that a part that is not implemented will be eventually.  When the time comes to clean up the TODO tags, a tool can list them all along with the descriptions and the locations of the comments.  || || || Similar approach can be applied to indexing/note tags.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Token locations in flat-view&lt;br /&gt;
| When debugging, I always look at flat view of a feature, then I found something that I want to change, so I have to go back to basic view. Buf often, I need to search the basic view to relocate the code. It would be nice if I can somehow pick a location in flat view and drop it into the right location in basic view. &lt;br /&gt;
|| || ||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! External commands in context menu&lt;br /&gt;
| Suppose there is an external command &amp;quot;tortoisediff $file_name&amp;quot; to show diff of a file from its working base, then when a context menu for a class is displayed, this command will be in it, and before launch this command, the  $file_name placeholder will be replaced by the actual file name. Also, some special placeholders starting with # will be recognized. They represent open arguments. So before launching the command, a dialog will prompt out asking for those values. &lt;br /&gt;
|Easy to use, no need to go to Console tool anymore. || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Outline&lt;br /&gt;
| When a mouse pointer is over a class name, a feature name, etc., it would be nice to see in a pop-up tooltip some basic information about it like description, header comment, signature, etc. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Current value of a variable&lt;br /&gt;
| When a mouse pointer is over a variable in debug mode if would be nice to see in a pop-up tooltip its value. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Immediate syntax checks&lt;br /&gt;
| It would be nice if editor can detect syntax errors and warnings and highlight them inline as well as outline (using a vertical bar, an icon of a particular color, etc.). || || || Syntax warnings include obsolete language constructs as well as unused code (such as unused local variables). For them it should be possible to suggest a replacement, so that manual editing is not required.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Refactoring: unused inheritance&lt;br /&gt;
| A new tool can be introduced to check if a given inheritance path is actually used in a project and if not, would suggest to remove it. || || || It would be great to be able to run such tools in background, so that the checks are invisible to the user that only gets a warning and a suggestion to remove the unused parent clause. This way some other similar tools can be added.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Refactoring: unused arguments&lt;br /&gt;
| A new tool can be introduced to check if all arguments of a feature are used (including all versions of the feature) and would suggest to remove those that are never used. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Refactoring: more interactive renaming&lt;br /&gt;
| Renaming tool can be changed to prompt for renaming in comments and strings (one by one) rather than to apply renaming for all of them silently. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Improve search tool&lt;br /&gt;
| Progress of search operation could be shown when performing search on a project and would ensure that the IDE remains responsible at that time. It should be also possible for a user to break the search operation. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Automatic source format&lt;br /&gt;
| There could be an option to tell the editor to reformat the code according to user preference settings.  Those can address the multi-line expression format and the exceptions to the comb format (like for a class' name), for example.  The reformat feature can be made to affect only the display so that different project members can view the source as it pleases them in an uniform way. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Customizing the font of different lexical components&lt;br /&gt;
| It would be useful to be able to set different fonts for different lexical components.  It is already possible for keywords some other may be useful too like class names, locals, queries, commands, comments ... || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!Auto Indent&lt;br /&gt;
|Auto indent does not work, yes it does what 90% of editors that clame to do auto indent do. But if you have seen auto indent you would know this is not it.&lt;br /&gt;
You should be able to just press &amp;lt;CR&amp;gt; at end of line and type. E.G. if you are in a do block and type ensure it should unindent. |Badly indented should be an earlt indication of some syntax errors. &lt;br /&gt;
| Less key presses, less stress. || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!Select and Paste&lt;br /&gt;
|Like On X, middle button pastes previus selection.&lt;br /&gt;
|less mouse presses || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!Dialog Boxes, Yes or No&lt;br /&gt;
|In a dialog box that askes whould you like to save, have buttons labelled &amp;quot;Save&amp;quot; and &amp;quot;Discard&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
|Much quicker for intermediate and advanced users, as dont need to read all the text. Less error prone (as these users wont read the text)&lt;br /&gt;
&lt;br /&gt;
Better for begginers: Resurch has shown that begginers see these questions as asking for permition, and do not feal qualified to give it. Most begginers press No the first time. Then later wonder where there work went.&lt;br /&gt;
&lt;br /&gt;
Or even better just save it.&lt;br /&gt;
&lt;br /&gt;
|See: &amp;quot;Open Office&amp;quot; for an example.&lt;br /&gt;
See: The Inmates Are Running the Asylum: Why High-Tech Products Drive Us Crazy and How to Restore the Sanity (http://www.cooper.com/insights/books/)&lt;br /&gt;
&lt;br /&gt;
 ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Pebble for Override Clusters&lt;br /&gt;
| Further integrate  'Override Clusters' into the IDE, i.e., rather than having to manually copy a class from an existing library to the override cluster's folder, use a pebble and drop the class in the override cluster directly.&lt;br /&gt;
|| ||&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Language ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!ID !! Short Summary !! Pros !! Cons !! More info&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Allow to use '''?''' in assigner declaration For instance &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 foo: STRING assign set_key_value (&amp;quot;foo&amp;quot;, ?)&lt;br /&gt;
     do&lt;br /&gt;
         Result := values.item (&amp;quot;foo&amp;quot;)&lt;br /&gt;
     end&lt;br /&gt;
 &lt;br /&gt;
 values: HASH_TABLE [STRING, STRING]&lt;br /&gt;
 &lt;br /&gt;
 set_key_value (k, v: STRING)&lt;br /&gt;
     do&lt;br /&gt;
         values.force (v, k)&lt;br /&gt;
     end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Convenient Number Syntax&lt;br /&gt;
|| Adalike syntax for numbers, e.g. 2#101010 = 10#42 = 2#10_10_10 and 100_000_000 = 100000000. || effectively reduces silly bugs when reading and writing numbers || Eiffel allows underscores within numbers to allow digit grouping e.g. 8_961_226||see annotated ada reference manual   ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Exceptions mentioned in method interface&lt;br /&gt;
|| syntax for telling developers about exceptions thrown by a method. e.g.:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
foo( a : B): C&lt;br /&gt;
     exceptions&lt;br /&gt;
         Net_Unreachable, Net_Timeout&lt;br /&gt;
     do&lt;br /&gt;
         Result := values.item (&amp;quot;foo&amp;quot;)&lt;br /&gt;
     end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
|| Clear and elegant syntax, no more looking into the implementation to find out which exceptions might occur and which of them might be handled at which level.&lt;br /&gt;
|| 1) new keyword. 2) new compiler option necessary (using this interface extension is fully useful only if enforced by the compiler which would break older code). 3) Does not scale well with sub classing and redefining features.  Redefined versions may have fewer exceptions, in which some stated exceptions won't occur anymore, or more exceptions, where the feature would no longer conform to the signature and a hack would need to be made or redefining the base class in which case you have a fragile base class problem.  The Eiffel way of handling exceptions with the paradigm &amp;quot;a feature either satisfies its contract or an exception is thrown&amp;quot; is really an elegant way of handling the unknown, although it takes some getting used to when coming from Java.  ECMA exceptions as objects and the type multibranch instructions will help with non-trivial exception handling.&lt;br /&gt;
|| &lt;br /&gt;
Could this be included only on generated views. Not in typed in code, as this can cause a maintinance problem having to propogate changes.&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! 'across' with optional 'as'&lt;br /&gt;
| Allow to use '''across''' without '''as''' &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 a_routine&lt;br /&gt;
     do&lt;br /&gt;
         across 1 |..| 10&lt;br /&gt;
         loop&lt;br /&gt;
              -- do something&lt;br /&gt;
         end&lt;br /&gt;
     end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Simple conversion declaration&lt;br /&gt;
| Allow to write a simple conversion statment:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
class&lt;br /&gt;
    CONVERSION_PROPOSAL&lt;br /&gt;
&lt;br /&gt;
create&lt;br /&gt;
    make_from&lt;br /&gt;
&lt;br /&gt;
convert&lt;br /&gt;
    make_from,&lt;br /&gt;
    something&lt;br /&gt;
&lt;br /&gt;
feature&lt;br /&gt;
    make_from (v: A_TYPE)&lt;br /&gt;
        do end&lt;br /&gt;
&lt;br /&gt;
    something: ANOTHER_TYPE&lt;br /&gt;
        do end&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
equivalent to:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
class&lt;br /&gt;
    CURRENT_CONVERSION&lt;br /&gt;
&lt;br /&gt;
create&lt;br /&gt;
    make_from&lt;br /&gt;
&lt;br /&gt;
convert&lt;br /&gt;
    make_from ({A_TYPE}),&lt;br /&gt;
    something: {ANOTHER_TYPE}&lt;br /&gt;
&lt;br /&gt;
feature&lt;br /&gt;
    make_from (v: A_TYPE)&lt;br /&gt;
        do end&lt;br /&gt;
&lt;br /&gt;
    something: ANOTHER_TYPE&lt;br /&gt;
        do end&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
| Esaier and more readable declaration&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Iterable 'TUPLE'&lt;br /&gt;
| Allow to use an iterator on TUPLE.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Customized creation procedure for expanded type&lt;br /&gt;
| Require 'default_create' as now but allow to use another creation procedure.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Empty braces for unexported features&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
class&lt;br /&gt;
    PROPOSITION&lt;br /&gt;
&lt;br /&gt;
feature {}&lt;br /&gt;
    internal_something: A_TYPE&lt;br /&gt;
        do end&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
equivalent to:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
class&lt;br /&gt;
    CURRENT_STANDARD&lt;br /&gt;
&lt;br /&gt;
feature {NONE}&lt;br /&gt;
    internal_something: A_TYPE&lt;br /&gt;
        do end&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
* Liberty Eiffel uses this syntax.&lt;br /&gt;
* NONE keyword could be deprecated in the future (save a keyword and remove the concept of a class NONE inheriting of all classes)&lt;br /&gt;
|&lt;br /&gt;
* The proposal &amp;lt;code&amp;gt;{}&amp;lt;/code&amp;gt; is less explicit, so it is arguably harder to read than the current standard &amp;lt;code&amp;gt;{NONE}&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The proposal would force upgrading of existing code, which would be disruptive to existing users (although probably easily automated).&lt;br /&gt;
* What about &amp;lt;code&amp;gt;inherit {NONE}&amp;lt;/code&amp;gt;?&lt;br /&gt;
* What would the type of &amp;lt;code&amp;gt;Void&amp;lt;/code&amp;gt; be?&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Remove only postcondition&lt;br /&gt;
| Replace only postcondition with the old convention.&lt;br /&gt;
Bertrand MEYER described that in this article : [here][http://bertrandmeyer.com/2011/07/04/if-im-not-pure-at-least-my-functions-are/]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Library ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!ID !! Short Summary !! Pros !! Cons !! More info&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! until_do_and_remove&lt;br /&gt;
| Add DISPENCER_ITERATOR[G-&amp;gt;DISPENCER] inherit ITERATOR ....&lt;br /&gt;
  Add procedures until_do_and_remove and its brothers.&lt;br /&gt;
| if I want to iterate a QUEUE, I dont want the items to exist afterwards.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! SQL like where&lt;br /&gt;
| simmala to do_if, but a function:&lt;br /&gt;
  where (test: FUNCTION [ANY, TUPLE [G], BOOLEAN]): like Current&lt;br /&gt;
  		--returns container like current, for items satisfying test&lt;br /&gt;
  	deferred&lt;br /&gt;
  	end &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! slice functions&lt;br /&gt;
|   &lt;br /&gt;
  slice_until, slice_after, slice_after_and_including, etc (test: FUNCTION [ANY, TUPLE [G], BOOLEAN]): like Current&lt;br /&gt;
  	deferred&lt;br /&gt;
  	end&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!ID !! Short Summary !! Pros !! Cons !! More info&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Make every effective EiffelBase class implement default_create so that it can be used to instantiate any class with default values. || || ||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Provide a WEAK_REFERENCE [G] class to abstract away the implementation details currently provided by IDENTIFIED for implementing weak references. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Locale support to determine what the default charset is (or whether it is UTF-8 or not) || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Build an object storing database with built-in record locking so that multiple systems can have access to the same 'objects' || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Make base.ecf rely on smaller ecf's (kernel.ecf, structures.ecf, support.ecf) so that these smaller dependancies can be compiled in only if needs be.  It would be good if ANY could be optimized so that it doesn't have any references to io (or print) or mismatch information (only needed when storable is employed) as these bring in a lot of overhead when compiling a simple system.  The smaller ecf could also link in with the object files of the runtime to avoid linking against a monolithic runtime (cecil, storable, etc) when you only want to print (&amp;quot;Hello World&amp;quot;) || ||&lt;br /&gt;
* Unused features are already eliminated in the dead code removal step when finalizing a system.&lt;br /&gt;
 ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Put more of the run-time code in to inline C code reducing the size of the executable if you are not using certain features, ideally the linked against runtime should only contain the core functionality needed to create objects, perform simple operations and garbage collect, any other features can be brought in on a class/library/configuration level. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Additional Classes&lt;br /&gt;
| It would be nice to have classes in the basic eiffel libraries for handling serial port communication, zip compression, encryption, smtp, pop3, ftp, http, TCP/IP, usb, pdf generation, print engine for report writing.  I am sure their are others but the basic idea is that it would be nice to have a complete multi-OS tool for developing business applications with quick access to classes needed.  Presently you have to search the internet to find some of these classes.  It would be nicer to have a more complete library available from within the IDE. ||&lt;br /&gt;
|-&lt;br /&gt;
! Easier Method for using eternal dll&lt;br /&gt;
| When I wanted to include the Advantage Database Server and Virtual Print Engine client libraries written in C with an Eiffel project I was told you had to write wrappers for the header files and create an Eiffel method for each of the function calls in the library.  This was and is too time consuming.  Eiffel should be able to use external dlls without all this work or it should generate the required classes/methods itself.  As a result the project was completed in another language.&lt;br /&gt;
 || ||&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=EiffelStudio_Wish_List&amp;diff=14734</id>
		<title>EiffelStudio Wish List</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=EiffelStudio_Wish_List&amp;diff=14734"/>
				<updated>2013-05-05T00:02:28Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Projects]]&lt;br /&gt;
Welcome to the Eiffel/EiffelStudio Wish List. This is the place where you, the community, get a chance to tell us what you think is important to include in the future versions of the Eiffel compiler and EiffelStudio IDE.&lt;br /&gt;
&lt;br /&gt;
Please use this list responsibly and try to correctly categorize your wishes. A brief description may help us evaluate your requirements but please be brief.&lt;br /&gt;
&lt;br /&gt;
Our stock pile of genie snared, dusty gold lamps is running low for our next release ([[EiffelStudio Releases]]) but we'll be sure to scour the lands for more.&lt;br /&gt;
&lt;br /&gt;
== Compiler ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!ID !! Short Summary !! Pros !! Cons !! More info&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Source &amp;amp; Generated Files in an RDBMS and (optionally) Compile directly from database &lt;br /&gt;
| Use an RDBMS to store all sources,libraries and generated files instead of a filesystem.  Optionally directly compile from the database. Repository can be shared amongst multiple users &lt;br /&gt;
|| Pro's:&lt;br /&gt;
* Easy queriable&lt;br /&gt;
* Much more appropriate to use a database to store relations (dependencies) between objects.&lt;br /&gt;
* Easier for using a shared repository amongst multiple users&lt;br /&gt;
||&lt;br /&gt;
* Sophisticated collaboration tools already exist for sharing project source e.g. SVN, CVS&lt;br /&gt;
||&lt;br /&gt;
* Would be a smart idea implementing this in a similar way as IP (Intentional Programming) does (storing source files as Abstract Syntax Tree, representable in different representations, and using a smart versioning system). More info: see [http://intentsoft.com/]&lt;br /&gt;
|-&lt;br /&gt;
! Shared EIFGEN&lt;br /&gt;
| Allow sharing of EIFGENs (in read-only mode)|| || ||]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! On-demand tab loading&lt;br /&gt;
| Allow creation of an EV_NOTEBOOK tab with an agent to be called to fill the tab when it is first loaded|| || ||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Enum&lt;br /&gt;
| A way to author Enum-like class for typed options or flags. Currently using INTEGER and a bag of analogous constants doesn't make Eiffel &amp;quot;elegant&amp;quot;. || ||&lt;br /&gt;
* The best practice way to get a value that only needs to be defined once is by using the &amp;quot;once&amp;quot; keyword in combination with a feature.&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Decimal&lt;br /&gt;
|Addition of a decimal type / REAL_128 for 28 digit precision -  || MA_DECIMAL is not efficient || MA_DECIMAL already covers this||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!User types&lt;br /&gt;
|I want to be able to define types .e.g. a decimal type as mentioned above. I know all built in types can be defined from scratch, except I a way to initialise from literals. So we need a way to define them as well. Suggest a new defered class with create methods from_literal( s:STRING), and queries is_interger_ok:BOOLIAN, is_real_ok:BOOLIAN, is_arbitary_string_ok:BOOLIAN, is_type_string_ok:BOOLIAN (we would define a new type of string just for this). The compiler when generating optimised code will have to compile the new types and dynamicaly bind to them to create an object that can be embeded into the code. I beleave this would let us write code like: x:DECIMAL; x=1.23 (without a conversion from REAL (float base2)) || || ||   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! CHARACTER_16&lt;br /&gt;
| CHARACTER_16 type || Smaller footprint than CHARACTER_32, UTF-16 is the default internal text representation for Windows/.Net/OS X/Java so conversion from CHARACTER_32 is costly, particular when dealing with large amounts of text || Please No! CHARACTER_32 covers this already. And UTF-8 is more space-efficient than UTF-16, which is an abomination. What will happen if you have a character from above the BMP? You will then have two CHARACTER_16s in the string for one real character - neither of which is a valid character - then `count' and `item' are all wrong. If you must have UTF-16 STRINGs, then let item return a CHARACTER_32. But note that having a UTF_16 STRING in itself won't eliminate all conversion costs - there is still the endian problem - this could be tackled by each individual UTF-16 STRING knowing whether it is UTF-16BE or UTF-16LE, but you may still need to convert. Comparing two such strings with different endianness would then have to be done using the codes - in what way is that going to be more efficient than using UTF-32? See [[Wish_CHARACTER_16]] for more details on why it is not ok.||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! 7-bit ASCII&lt;br /&gt;
| 7-bit (US) ASCII_CHARACTER and ASCII_STRING which extends upon an ARRAY [ASCII_CHARACTER] with values of 0-127, removing the need for UTF8 conversion/checking when passing basic char values to C (gtk interfacing for example when connecting to signals) || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! MUTEX&lt;br /&gt;
| Make MUTEX recursive on non-windows platforms or at least provide a mutex and separate recursive mutex for all platforms. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Multiple Precompiled.&lt;br /&gt;
| Ability for multiple precompiles in a system. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Ability to compile/debug for both 32/64 bit systems via project settings || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Ability for for a fully optimal finalization for systems marked as 'client only', so that unused variables will not get generated in the finalized C Code. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Ability for Eiffel Studio to cross compile || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Ability to be able to control all user settable options in studio without having to resort to manually editing files, this is mainly for C compilation options || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Have a smarter C code generation system that can launch a C compilation of any module as soon as the C code is generated, this way we can also be smarter when monitoring C compilation progress || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Ability for ANY to generate a unique id for each object for referencing and hashability || ||&lt;br /&gt;
Objects that are hashable should implement HASHABLE&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| With hashable ability of ANY, change object graph traversal for serialization so that multiple threads can serialize at the same time without having to wait linearly (lock_marking/unlock_marking). This may also require a reworking of the mismatch corrector facility as this does not appear to be thread-safe when magically called by the run-time|| || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Ability for Studio to work and compile with Cygwin || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Ability to get a list of file dependencies in the form of a file listing to stdout. This list would contain a) all .e files used in the system, b) all .lib/.so files explicitly listed in the ECF/Ace file and c) all .h files referenced in external features (ideally that have not been subjected to dead code removal). Preferably, this feature should be able to be used without performing a full compilation (level 4?). || || ||&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== .NET ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!ID !! Short Summary !! Pros !! Cons !! More info&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Consume .NET generics. Not being able to use them is becoming harder.&amp;lt;br/&amp;gt;We cannot write Atlas (AJAX) based web applications because of it. The Visual Studio SDK, used by EiffelEnvision, is increasing it's use of generics and preventing use from supporting some features. The people who want to use the .NET framework classes instead of the Eiffel ones cannot use generics and have to resort to using the non-generic versions of list, which bulks implementation and leads ambiguity. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Emit .NET generics types for Eiffel generic classes. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Allow direct access to member of TYPED_POINTER [xxx] item out/ref routine arguments. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Allow direct setting of TYPED_POINTER [xxx] item for out/ref routine arguments. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Optimized ''call.do_nothing'' as a IL pop instruction to removed returned value. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Custom attributes on routine arguments and Result. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| An ability to call a parent .NET constructor from an Eiffel creation routine. || || ||&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== IDE ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!ID !! Short Summary !! Pros !! Cons !! More info&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Halt repainting for the GUI library while the GUI is assembled or changed. &lt;br /&gt;
|| || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Give the user control over which classes will be compiled over the GUI (say: click on grey class and it becomes yellow and will be compiled always from now on, even though it may not be used at all. This is good for development of classes which are not added over GUI in ES.) || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| While searching for word or after a double click on a word, it would be nice if all words would be highlighted in pastel color style. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Allow arguments and locals of a routine to be pickable so that they can be renamed via the refactoring tool. || || || In the case of arguments it might be interesting to allow&lt;br /&gt;
renaming in ancestor and descendant versions of the feature.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| It's a pain to pick`n`drop huge features source code into the context window for setting break point. What about the following: Pick on the right side of the class text picks the feature as well? (Pick on the left side of the class text picks already the feature call). || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Make editor and grid more theme compliant in terms of color and font || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Remove all use of EV_TREE and EV_MULTI_COLUMN_LIST from studio so that all list widgets are drawn by vision2, this will make porting easier, we can also use the grid items to be able to change names of clusters, classes and features inline via the tree items. || || To which other platform would it make porting easier? For the Mac OS port that's completely unnecessary I think. Also it would make the tree view look uglier (not as other tree views etc on the same platform) and inline editing can be made accessible in other ways (at least in OS X that's quite easy) ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Extended Static Checking&lt;br /&gt;
| Extended static checking integrated into the IDE. || Provides more immediate feedback on potential contract violations. || ||See, for example, [http://secure.ucd.ie/products/opensource/ESCJava2/ ESC/Java2] and the associated Eclipse plugin, or Spec# integration into VisualStudio [http://download.microsoft.com/download/9/4/1/94138e2a-d9dc-435a-9240-bcd985bf5bd7/MikeBarnett-SpecSharp.wmv]. Eiffel has most of the necessary language constructs already and doesn't require annotations. See also [http://fm06.mcmaster.ca/es-verify.pdf ES-Verify]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Rearrange widgets of ''search tool'' so that they use free space on the right. Currently it uses too much vertical space. || || I don't see free space on the right. Has this already been done? ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Add an option to show the target name before the current edited class in the application title bar. When multiple projects are open, it's not possible to identify an EStudio session based on the title that appears on the tray bar|| || |||&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
!Step-by-step debugging&lt;br /&gt;
| It would be useful in step-by-step debugging to be able to follow the execution cursor when checking the invariants as it is done for the preconditions and postconditions of a routine.  This way, it would be easy to step into the right features and skip some (or all) of those present in the invariant. || || |||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!Integrated Designer&lt;br /&gt;
| It would be nice to have an integrated visual designer so that building business applications where visual design is very import can be created more easily. || || || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Drag-n-Drop&lt;br /&gt;
| Allow the alternative of using drag and drop everywhere instead of pick and drop. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Code annotation tags support&lt;br /&gt;
| Log the tags contained in comments.  For example, when using Eclipse, it is useful to leave TODO comments behind to ensure that a part that is not implemented will be eventually.  When the time comes to clean up the TODO tags, a tool can list them all along with the descriptions and the locations of the comments.  || || || Similar approach can be applied to indexing/note tags.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Token locations in flat-view&lt;br /&gt;
| When debugging, I always look at flat view of a feature, then I found something that I want to change, so I have to go back to basic view. Buf often, I need to search the basic view to relocate the code. It would be nice if I can somehow pick a location in flat view and drop it into the right location in basic view. &lt;br /&gt;
|| || ||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! External commands in context menu&lt;br /&gt;
| Suppose there is an external command &amp;quot;tortoisediff $file_name&amp;quot; to show diff of a file from its working base, then when a context menu for a class is displayed, this command will be in it, and before launch this command, the  $file_name placeholder will be replaced by the actual file name. Also, some special placeholders starting with # will be recognized. They represent open arguments. So before launching the command, a dialog will prompt out asking for those values. &lt;br /&gt;
|Easy to use, no need to go to Console tool anymore. || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Outline&lt;br /&gt;
| When a mouse pointer is over a class name, a feature name, etc., it would be nice to see in a pop-up tooltip some basic information about it like description, header comment, signature, etc. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Current value of a variable&lt;br /&gt;
| When a mouse pointer is over a variable in debug mode if would be nice to see in a pop-up tooltip its value. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Immediate syntax checks&lt;br /&gt;
| It would be nice if editor can detect syntax errors and warnings and highlight them inline as well as outline (using a vertical bar, an icon of a particular color, etc.). || || || Syntax warnings include obsolete language constructs as well as unused code (such as unused local variables). For them it should be possible to suggest a replacement, so that manual editing is not required.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Refactoring: unused inheritance&lt;br /&gt;
| A new tool can be introduced to check if a given inheritance path is actually used in a project and if not, would suggest to remove it. || || || It would be great to be able to run such tools in background, so that the checks are invisible to the user that only gets a warning and a suggestion to remove the unused parent clause. This way some other similar tools can be added.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Refactoring: unused arguments&lt;br /&gt;
| A new tool can be introduced to check if all arguments of a feature are used (including all versions of the feature) and would suggest to remove those that are never used. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Refactoring: more interactive renaming&lt;br /&gt;
| Renaming tool can be changed to prompt for renaming in comments and strings (one by one) rather than to apply renaming for all of them silently. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Improve search tool&lt;br /&gt;
| Progress of search operation could be shown when performing search on a project and would ensure that the IDE remains responsible at that time. It should be also possible for a user to break the search operation. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Automatic source format&lt;br /&gt;
| There could be an option to tell the editor to reformat the code according to user preference settings.  Those can address the multi-line expression format and the exceptions to the comb format (like for a class' name), for example.  The reformat feature can be made to affect only the display so that different project members can view the source as it pleases them in an uniform way. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Customizing the font of different lexical components&lt;br /&gt;
| It would be useful to be able to set different fonts for different lexical components.  It is already possible for keywords some other may be useful too like class names, locals, queries, commands, comments ... || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!Auto Indent&lt;br /&gt;
|Auto indent does not work, yes it does what 90% of editors that clame to do auto indent do. But if you have seen auto indent you would know this is not it.&lt;br /&gt;
You should be able to just press &amp;lt;CR&amp;gt; at end of line and type. E.G. if you are in a do block and type ensure it should unindent. |Badly indented should be an earlt indication of some syntax errors. &lt;br /&gt;
| Less key presses, less stress. || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!Select and Paste&lt;br /&gt;
|Like On X, middle button pastes previus selection.&lt;br /&gt;
|less mouse presses || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!Dialog Boxes, Yes or No&lt;br /&gt;
|In a dialog box that askes whould you like to save, have buttons labelled &amp;quot;Save&amp;quot; and &amp;quot;Discard&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
|Much quicker for intermediate and advanced users, as dont need to read all the text. Less error prone (as these users wont read the text)&lt;br /&gt;
&lt;br /&gt;
Better for begginers: Resurch has shown that begginers see these questions as asking for permition, and do not feal qualified to give it. Most begginers press No the first time. Then later wonder where there work went.&lt;br /&gt;
&lt;br /&gt;
Or even better just save it.&lt;br /&gt;
&lt;br /&gt;
|See: &amp;quot;Open Office&amp;quot; for an example.&lt;br /&gt;
See: The Inmates Are Running the Asylum: Why High-Tech Products Drive Us Crazy and How to Restore the Sanity (http://www.cooper.com/insights/books/)&lt;br /&gt;
&lt;br /&gt;
 ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Pebble for Override Clusters&lt;br /&gt;
| Further integrate  'Override Clusters' into the IDE, i.e., rather than having to manually copy a class from an existing library to the override cluster's folder, use a pebble and drop the class in the override cluster directly.&lt;br /&gt;
|| ||&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Language ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!ID !! Short Summary !! Pros !! Cons !! More info&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Allow to use '''?''' in assigner declaration For instance &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 foo: STRING assign set_key_value (&amp;quot;foo&amp;quot;, ?)&lt;br /&gt;
     do&lt;br /&gt;
         Result := values.item (&amp;quot;foo&amp;quot;)&lt;br /&gt;
     end&lt;br /&gt;
 &lt;br /&gt;
 values: HASH_TABLE [STRING, STRING]&lt;br /&gt;
 &lt;br /&gt;
 set_key_value (k, v: STRING)&lt;br /&gt;
     do&lt;br /&gt;
         values.force (v, k)&lt;br /&gt;
     end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Convenient Number Syntax&lt;br /&gt;
|| Adalike syntax for numbers, e.g. 2#101010 = 10#42 = 2#10_10_10 and 100_000_000 = 100000000. || effectively reduces silly bugs when reading and writing numbers || Eiffel allows underscores within numbers to allow digit grouping e.g. 8_961_226||see annotated ada reference manual   ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Exceptions mentioned in method interface&lt;br /&gt;
|| syntax for telling developers about exceptions thrown by a method. e.g.:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
foo( a : B): C&lt;br /&gt;
     exceptions&lt;br /&gt;
         Net_Unreachable, Net_Timeout&lt;br /&gt;
     do&lt;br /&gt;
         Result := values.item (&amp;quot;foo&amp;quot;)&lt;br /&gt;
     end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
|| Clear and elegant syntax, no more looking into the implementation to find out which exceptions might occur and which of them might be handled at which level.&lt;br /&gt;
|| 1) new keyword. 2) new compiler option necessary (using this interface extension is fully useful only if enforced by the compiler which would break older code). 3) Does not scale well with sub classing and redefining features.  Redefined versions may have fewer exceptions, in which some stated exceptions won't occur anymore, or more exceptions, where the feature would no longer conform to the signature and a hack would need to be made or redefining the base class in which case you have a fragile base class problem.  The Eiffel way of handling exceptions with the paradigm &amp;quot;a feature either satisfies its contract or an exception is thrown&amp;quot; is really an elegant way of handling the unknown, although it takes some getting used to when coming from Java.  ECMA exceptions as objects and the type multibranch instructions will help with non-trivial exception handling.&lt;br /&gt;
|| &lt;br /&gt;
Could this be included only on generated views. Not in typed in code, as this can cause a maintinance problem having to propogate changes.&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! 'across' with optional 'as'&lt;br /&gt;
| Allow to use '''across''' without '''as''' &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 a_routine&lt;br /&gt;
     do&lt;br /&gt;
         across 1 |..| 10&lt;br /&gt;
         loop&lt;br /&gt;
              -- do something&lt;br /&gt;
         end&lt;br /&gt;
     end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Simple conversion declaration&lt;br /&gt;
| Allow to write a simple conversion statment:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
class&lt;br /&gt;
    CONVERSION_PROPOSAL&lt;br /&gt;
&lt;br /&gt;
create&lt;br /&gt;
    make_from&lt;br /&gt;
&lt;br /&gt;
convert&lt;br /&gt;
    make_from,&lt;br /&gt;
    something&lt;br /&gt;
&lt;br /&gt;
feature&lt;br /&gt;
    make_from (v: A_TYPE)&lt;br /&gt;
        do end&lt;br /&gt;
&lt;br /&gt;
    something: ANOTHER_TYPE&lt;br /&gt;
        do end&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
equivalent to:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
class&lt;br /&gt;
    CURRENT_CONVERSION&lt;br /&gt;
&lt;br /&gt;
create&lt;br /&gt;
    make_from&lt;br /&gt;
&lt;br /&gt;
convert&lt;br /&gt;
    make_from ({A_TYPE}),&lt;br /&gt;
    something: {ANOTHER_TYPE}&lt;br /&gt;
&lt;br /&gt;
feature&lt;br /&gt;
    make_from (v: A_TYPE)&lt;br /&gt;
        do end&lt;br /&gt;
&lt;br /&gt;
    something: ANOTHER_TYPE&lt;br /&gt;
        do end&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
| Esaier and more readable declaration&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Iterable 'TUPLE'&lt;br /&gt;
| Allow to use an iterator on TUPLE.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Customized creation procedure for expanded type&lt;br /&gt;
| Require 'default_create' as now but allow to use another creation procedure.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Empty braces for unexported features&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
class&lt;br /&gt;
    PROPOSITION&lt;br /&gt;
&lt;br /&gt;
feature {}&lt;br /&gt;
    internal_something: A_TYPE&lt;br /&gt;
        do end&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
equivalent to:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
class&lt;br /&gt;
    CURRENT_STANDART&lt;br /&gt;
&lt;br /&gt;
feature {NONE}&lt;br /&gt;
    internal_something: A_TYPE&lt;br /&gt;
        do end&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
* Liberty Eiffel use this syntax.&lt;br /&gt;
* NONE keyword could be deprecated in the future (save a keyword and remove the concept of a class NONE inheriting of all classes)&lt;br /&gt;
|&lt;br /&gt;
* What about &amp;lt;code&amp;gt;inherit {NONE}&amp;lt;/code&amp;gt;?&lt;br /&gt;
* What would the type of &amp;lt;code&amp;gt;Void&amp;lt;/code&amp;gt; be?&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Remove only postcondition&lt;br /&gt;
| Replace only postcondition with the old convention.&lt;br /&gt;
Bertrand MEYER described that in this article : [here][http://bertrandmeyer.com/2011/07/04/if-im-not-pure-at-least-my-functions-are/]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Library ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!ID !! Short Summary !! Pros !! Cons !! More info&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! until_do_and_remove&lt;br /&gt;
| Add DISPENCER_ITERATOR[G-&amp;gt;DISPENCER] inherit ITERATOR ....&lt;br /&gt;
  Add procedures until_do_and_remove and its brothers.&lt;br /&gt;
| if I want to iterate a QUEUE, I dont want the items to exist afterwards.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! SQL like where&lt;br /&gt;
| simmala to do_if, but a function:&lt;br /&gt;
  where (test: FUNCTION [ANY, TUPLE [G], BOOLEAN]): like Current&lt;br /&gt;
  		--returns container like current, for items satisfying test&lt;br /&gt;
  	deferred&lt;br /&gt;
  	end &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! slice functions&lt;br /&gt;
|   &lt;br /&gt;
  slice_until, slice_after, slice_after_and_including, etc (test: FUNCTION [ANY, TUPLE [G], BOOLEAN]): like Current&lt;br /&gt;
  	deferred&lt;br /&gt;
  	end&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!ID !! Short Summary !! Pros !! Cons !! More info&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Make every effective EiffelBase class implement default_create so that it can be used to instantiate any class with default values. || || ||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Provide a WEAK_REFERENCE [G] class to abstract away the implementation details currently provided by IDENTIFIED for implementing weak references. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Locale support to determine what the default charset is (or whether it is UTF-8 or not) || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Build an object storing database with built-in record locking so that multiple systems can have access to the same 'objects' || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Make base.ecf rely on smaller ecf's (kernel.ecf, structures.ecf, support.ecf) so that these smaller dependancies can be compiled in only if needs be.  It would be good if ANY could be optimized so that it doesn't have any references to io (or print) or mismatch information (only needed when storable is employed) as these bring in a lot of overhead when compiling a simple system.  The smaller ecf could also link in with the object files of the runtime to avoid linking against a monolithic runtime (cecil, storable, etc) when you only want to print (&amp;quot;Hello World&amp;quot;) || ||&lt;br /&gt;
* Unused features are already eliminated in the dead code removal step when finalizing a system.&lt;br /&gt;
 ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XXX&lt;br /&gt;
| Put more of the run-time code in to inline C code reducing the size of the executable if you are not using certain features, ideally the linked against runtime should only contain the core functionality needed to create objects, perform simple operations and garbage collect, any other features can be brought in on a class/library/configuration level. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Additional Classes&lt;br /&gt;
| It would be nice to have classes in the basic eiffel libraries for handling serial port communication, zip compression, encryption, smtp, pop3, ftp, http, TCP/IP, usb, pdf generation, print engine for report writing.  I am sure their are others but the basic idea is that it would be nice to have a complete multi-OS tool for developing business applications with quick access to classes needed.  Presently you have to search the internet to find some of these classes.  It would be nicer to have a more complete library available from within the IDE. ||&lt;br /&gt;
|-&lt;br /&gt;
! Easier Method for using eternal dll&lt;br /&gt;
| When I wanted to include the Advantage Database Server and Virtual Print Engine client libraries written in C with an Eiffel project I was told you had to write wrappers for the header files and create an Eiffel method for each of the function calls in the library.  This was and is too time consuming.  Eiffel should be able to use external dlls without all this work or it should generate the required classes/methods itself.  As a result the project was completed in another language.&lt;br /&gt;
 || ||&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=URLs&amp;diff=14728</id>
		<title>URLs</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=URLs&amp;diff=14728"/>
				<updated>2013-05-01T05:38:49Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: Correct the URL to the svn browser&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:URLs]]&lt;br /&gt;
Here is the list of useful URLs you may need to use on a daily basis:&lt;br /&gt;
&lt;br /&gt;
* General information:&lt;br /&gt;
** Wiki: http://dev.eiffel.com/&lt;br /&gt;
** Sourceforge project: http://sourceforge.net/projects/eiffelstudio/&lt;br /&gt;
** Documentation website: http://docs.eiffel.com&lt;br /&gt;
&lt;br /&gt;
* SVN:&lt;br /&gt;
** SVN browser: http://svn.eiffel.com/wsvn&lt;br /&gt;
** SVN repository: https://svn.eiffel.com/eiffelstudio/&lt;br /&gt;
&lt;br /&gt;
* Downloads:&lt;br /&gt;
** Builds: http://dev.eiffel.com/downloads/&lt;br /&gt;
&lt;br /&gt;
* Others:&lt;br /&gt;
** Bugtracking: http://support.eiffel.com&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=EiffelOnMac&amp;diff=14663</id>
		<title>EiffelOnMac</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=EiffelOnMac&amp;diff=14663"/>
				<updated>2013-03-01T02:18:21Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: /* The latest release of EiffelStudio isn't available yet via MacPorts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:EiffelStudio]]&lt;br /&gt;
[[Category:Macintosh]]&lt;br /&gt;
&lt;br /&gt;
This page gives you an overview about how to get EiffelStudio running on your Mac (Leopard, Snow Leopard, Lion or Mountain Lion).&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
&lt;br /&gt;
*You will need to install '''Xcode''' from the App Store. (On old versions of OS X, Xcode was on your OSX-Installation disk, or you downloaded it from Apple's developer web site.)&lt;br /&gt;
&lt;br /&gt;
*Make sure that you install the '''development tools''' with Xcode. (In theory, with current versions of the development tools, you may not need to install Xcode. You could save yourself a huge amount of time by not downloading Xcode; but on the other hand, you might waste a lot of time trying to fix missing dependencies if things go wrong. Unless you're feeling adventurous, do install Xcode.)&lt;br /&gt;
&lt;br /&gt;
*On OS X 10.5 and later, you don't need to install '''X11'''. (On older versions of OS X, install it from your OS X installation disk.)&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Using MacPorts ===&lt;br /&gt;
The following should work on Mac OS X 10.4 and later.&lt;br /&gt;
&lt;br /&gt;
MacPorts is a tool that allows you to use many Unix applications on the Mac. We have created a package in the MacPorts repository that allows you to to install Eiffel Studio with all dependencies in a convenient way. First, install [http://guide.macports.org/#installing MacPorts].&lt;br /&gt;
&lt;br /&gt;
Now simply type (from a bash [http://guides.macrumors.com/Terminal terminal]):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port install eiffelstudioXX&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
where 'XX' stands for the EiffelStudio version you want to install (for example eiffelstudio72) and after some time (compiling on a 2.4 GHz Intel Mac takes about an hour) you're ready to go. &lt;br /&gt;
&lt;br /&gt;
Older development packages are available under the name eiffelstudio65, etc. All packages can be installed simultaneously because they are located in different directories.&lt;br /&gt;
&lt;br /&gt;
When a new release of the same version EiffelStudio becomes available, you can upgrade like so:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port selfupdate&lt;br /&gt;
sudo port upgrade outdated&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Warning|EiffelStudio 7.1 has a bug that prevents Vision2 applications from compiling out of the box. You can work around this by editing /Applications/MacPorts/Eiffel71/library/vision2/vision2.ecf and removing line 147:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;custom name=&amp;quot;vision_implementation&amp;quot; excluded_value=&amp;quot;gtk34&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|gtk2 version 2_24_5_0+x11 breaks EiffelStudio 6.8 (that depends on it). A fix is to install gtk2 2_24_4_0+x11 (the previous minor version), or to deactivate the former and activate the latter if you already have both installed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port deactivate gtk2 @2_24_5_0+x11&lt;br /&gt;
sudo port activate gtk2 @2_24_4_0+x11&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Using binary packages ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|This method does not work at the moment. Please install EiffelStudio using MacPorts.&amp;lt;br/&amp;gt;See [[Talk:EiffelOnMac|Discussion]] for more information.}}&lt;br /&gt;
&lt;br /&gt;
# Install the latest version of [http://xquartz.macosforge.org/trac/wiki/WikiStart XQuartz]: [http://xquartz.macosforge.org/downloads/X11-2.4.0.dmg download]&lt;br /&gt;
# Install the EiffelStudio 6.4 Mac package: [http://dfurrer.com/files/eiffelstudio64.dmg download]&lt;br /&gt;
&lt;br /&gt;
This installer was created using MacPorts as well as using the mpkg command. For more information take a look at the [http://guide.macports.org MacPorts Guide]&lt;br /&gt;
&lt;br /&gt;
== Starting EiffelStudio ==&lt;br /&gt;
&lt;br /&gt;
Simply navigate to /Applications/MacPorts/Eiffel''XX'' and double click the EiffelStudio icon.&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can also start EiffelStudio from the command line by entering the command 'estudio' or use the command-line eiffel compiler 'ec'.&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
===I get a crash with a Permission denied: Operating system error, how do I fix it?===&lt;br /&gt;
&lt;br /&gt;
Delete the .ec directory in your home directory.&lt;br /&gt;
&lt;br /&gt;
===I get an error with precompiles, why is that ?===&lt;br /&gt;
&lt;br /&gt;
Precompiles did not work on the Mac before EiffelStudio 6.4 due to a limitation of the linker. To work around this issue you have to disable the precompiles with those versions or upgrade to a recent version of EiffelStudio.&lt;br /&gt;
&lt;br /&gt;
{{Note|When you create a project, EiffelStudio will ask if you want to perform precompiles – say no. Then disable the precompiles for this project through the Project&amp;gt;Project menu. In the 'Groups&amp;gt;Precompile' section, remove all precompiles (eg., base_pre). Select the 'base_pre' precompile and click the red cross delete tool at the top of the window.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Note|Precompiling the Eiffel libraries after installing the Port is possible, there are security policies to take into account. The Port installs EiffelStudio under the system's ''/Application/MacPorts'' directory and '''not''' the user ''~/Application/MacPorts''. Due of this, EiffelStudio must be run as a super user and the precompiles build using the '''Tools''' &amp;gt; '''Precompile Wizard''' option. Alternatively, alter the base installation path when requesting to install the Port.}}&lt;br /&gt;
&lt;br /&gt;
=== How can I make EiffelStudio on the Mac look nicer? ===&lt;br /&gt;
* From macports, install the gtk2 (if not already installed) and gtk-chtheme packets. Then run gtk-chtheme and you get a nice GUI to choose your theme. Additional GTK themes can be put in  /opt/local/share/themes/ (There a thousands of them on the web, for example here : [http://art.gnome.org/themes/gtk2 http://art.gnome.org/themes/gtk2])&lt;br /&gt;
&lt;br /&gt;
=== Typing ec or estudio on the command line doesn't work ===&lt;br /&gt;
To run the '''ec''' compiler from your shell, set up variables similar to these (e.g. in ~/.profile):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Setting variables for EiffelStudio.&lt;br /&gt;
export ISE_EIFFEL=/Applications/MacPorts/Eiffel66&lt;br /&gt;
export ISE_PLATFORM=macosx-ppc (or macosx-x86)&lt;br /&gt;
export ISE_PROJECTS=$HOME&lt;br /&gt;
export ES_PATH=$ISE_EIFFEL/studio/spec/$ISE_PLATFORM/bin&lt;br /&gt;
export PATH=$ES_PATH:$PATH&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The latest release of EiffelStudio isn't available yet via MacPorts===&lt;br /&gt;
&lt;br /&gt;
MacPorts installs a particular version of EiffelStudio by following the rules defined in a '''Portfile'''. For example, http://trac.macports.org/browser/trunk/dports/lang/eiffelstudio71/Portfile is the Portfile for EiffelStudio 7.1. The person who maintains EiffelStudio for MacPorts has to write this file and upload it, but they might not have done so yet. You could make enquiries about when it will be available, but if you want to get the latest urgently it isn't hard to write your own Portfile and run it locally. Here's how.&lt;br /&gt;
&lt;br /&gt;
http://guide.macports.org/#development.local-repositories explains how to do it.&lt;br /&gt;
# Go to https://sourceforge.net/projects/eiffelstudio/files and download the relevant PorterPackage file.&lt;br /&gt;
# Run '''openssl''' to find out the '''checksum''' of the PorterPackage file. E.g., for EiffelStudio 7.2 the command is '''openssl rmd160 ~/Downloads/PorterPackage_72_91284_gpl.tar'''.&lt;br /&gt;
# Open /opt/local/etc/macports/sources.conf in a text editor (with super user privileges). Insert a line as explained on http://guide.macports.org, e.g., file:///Applications/MacPorts/ports&lt;br /&gt;
# Create the Portfile in a text editor, e.g., file:///Applications/MacPorts/ports/lang/eiffelstudio72/Portfile&lt;br /&gt;
#* Copy the contents of the most recently available EiffelStudio Portfile (e.g., from http://trac.macports.org/browser/trunk/dports/lang/eiffelstudio71/Portfile) into your Portfile.&lt;br /&gt;
#* Correct the '''name''', '''minor_version''' and '''version'''.&lt;br /&gt;
#* Make sure that the '''distname''' will resolve to the current PorterPackage file name that you see on https://sourceforge.net/projects/eiffelstudio/files&lt;br /&gt;
#* Set the first '''checksums''' to the value that you got earlier from running openssl.&lt;br /&gt;
#* You've finished writing your Portfile. Save it!&lt;br /&gt;
# Go to the ports directory, e.g., cd /Applications/MacPorts/ports&lt;br /&gt;
# sudo portindex&lt;br /&gt;
# You should now be able to install in the usual way, e.g., sudo port install eiffelstudio72&lt;br /&gt;
&lt;br /&gt;
==Hints==&lt;br /&gt;
* Pick and Drop works with Apple-key + mouse click.&lt;br /&gt;
* To set up the correct (default) browsers use &amp;quot;open&amp;quot; as your command-line browser in Tools&amp;gt;Preferences...&lt;br /&gt;
* The F10 and F11 debugging shortcuts conflict with the standard Exposé keys. Here are some workarounds:&lt;br /&gt;
** Use the toolbar instead.&lt;br /&gt;
** Reassign these shortcuts in EiffelStudio (Tools&amp;gt;Preferences).&lt;br /&gt;
** Reassign the Exposé keys in System Preferences.&lt;br /&gt;
* The version of '''X11 installed with Mac OS X Leopard 10.5.0 and 10.5.1 does not work'''. The 10.5.2 and later updates are probably ok, however, but if you're having problems have a look at http://trac.macosforge.org/projects/xquartz. For more details, see http://www.eiffelroom.com/blog/paulbates/a_little_help_for_mac_users which pre-dates the release of 10.5.2.&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=EiffelStudio_7.2_Releases&amp;diff=14662</id>
		<title>EiffelStudio 7.2 Releases</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=EiffelStudio_7.2_Releases&amp;diff=14662"/>
				<updated>2013-02-26T22:24:25Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: /* Bug fixes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Releases]]__NOTOC__{{ReleaseHistoryHeader}}&lt;br /&gt;
&lt;br /&gt;
= EiffelStudio 7.2.x Releases=&lt;br /&gt;
&lt;br /&gt;
==7.2.9.1284 (February 25th 2013, Maintenance Release)==&lt;br /&gt;
===Bug fixes ===&lt;br /&gt;
* studio: Made sure that conditions in Project settings are human readable. This fixes bug#18519.&lt;br /&gt;
* studio: Fixed bug#18504 when adding removing libraries to a project.&lt;br /&gt;
* compiler: Fixed a regression where using the compiler option `-safe' will not work anymore if you apply it to ECFs already containing some ECFs without a corresponding -safe ECF.&lt;br /&gt;
* compiler: Fixed a bug where after a finalization, the printed message was always mentioning the workbench version. &lt;br /&gt;
* library: Updated FILE/DIRECTORY classes to recent changes in the compatible version so that gobo descendants can compile.&lt;br /&gt;
* compiler: Fixed bug#18509 and eweasel test#config036 where the library_target of an ECF was not compared in a case insensitive manner with the name of the target thus causing an error if the target name was anything but lower case. Improved error messages by using the name as specified in the ECF (i.e. no lower case conversions).&lt;br /&gt;
* compiler: Improved error message when you cannot find an assembly (as if you specified $ISE_DOTNET_FRAMEWORKmscorlib.dll, missing the / here) the error message would be confusing because it would say that base is not present. Now we print the original path of the assembly and the evaluated path of the ECF containing a reference to that assembly.&lt;br /&gt;
* debugger: Fixed a catcall when debugging a .NET system causing a crash at execution because we were comparing a STRING_32 with a STRING_8.&lt;br /&gt;
* library: Added some renamings so that Gobo tools do not report VSCN errors for classes not in system that could potentially give a conflict if compiled.&lt;br /&gt;
&lt;br /&gt;
==7.2.9.1169 (February 5th 2013, Final release)==&lt;br /&gt;
===New features===&lt;br /&gt;
*{{red|library (base)}}: Added support for converting CHARACTER_32 to lower or upper case.&lt;br /&gt;
*installation: Added support for Visual Studio 2012 as a C compiler backend.&lt;br /&gt;
*{{red|library (base)}}: Added support to manipulate Unicode path.&lt;br /&gt;
*Added support for installing EiffelStudio in a path with Unicode characters.&lt;br /&gt;
&lt;br /&gt;
===Improvements===&lt;br /&gt;
* EiffelStudio: Added &amp;lt;code&amp;gt;VWAB&amp;lt;/code&amp;gt; to the list of filtered warning messages.&lt;br /&gt;
* EiffelStudio: Slightly improved reading of the error messages for &amp;lt;code&amp;gt;VBAC(3)&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;VBAR(2)&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;VUTA(2)&amp;lt;/code&amp;gt;.&lt;br /&gt;
* library (base): Added a new class &amp;lt;e&amp;gt;REPEATABLE&amp;lt;/e&amp;gt; for the objects that can iterate over they own state.&lt;br /&gt;
* example (scoop): Simplified dining philosophers example and used the class &amp;lt;e&amp;gt;REPEATABLE&amp;lt;/e&amp;gt; for a philosopher's life cycle.&lt;br /&gt;
&lt;br /&gt;
===Feature removed===&lt;br /&gt;
&lt;br /&gt;
===Bug fixes===&lt;br /&gt;
* library (WEL): Fixed a bug in &amp;lt;e&amp;gt;{WEL_FONT}.string_size_extended&amp;lt;/e&amp;gt; that could cause access on an invalid index if the string contained characters that are mapped to the surrogate pairs in UTF-16.&lt;br /&gt;
* EiffelStudio: Corrected a pretty printer to remove a temporary file after prettifying source code.&lt;br /&gt;
* EiffelStudio: bug#17588 - Supported prettyfing of source code containing Unicode characters.&lt;br /&gt;
* library (base): Fixed a bug in SED where if your retrieval fails while retrieving data, you would get a partial object.&lt;br /&gt;
* library (base): Fixed a bug in recoverable version of SED where if attributes are missing in the retrieval system, it would fail to retrieve the serialized object even though you have some correct_mismatch or have allowed for attribute removal.&lt;br /&gt;
&lt;br /&gt;
===User changes===&lt;br /&gt;
*compiler: banned the following syntax for types in object creation using the old syntax of object creation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	! attached like ... !&lt;br /&gt;
	! detachable like .... !&lt;br /&gt;
	! attached separate like ... !&lt;br /&gt;
	! detachable separate like .... !&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*compiler: banned the following syntax for using the old attachment marks with the new `separate' keywords:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	! separate ... &lt;br /&gt;
	? separate ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*c-compiler: On Windows when using the Microsoft C/C++ compiler we have removed the generation of PDB files in workbench mode. If you need this, please define the environment variable ISE_CFLAGS to include the -Zi flag.&lt;br /&gt;
* library (kmp_matcher): Supported wildcard patterns and source texts in Unicode.&lt;br /&gt;
&lt;br /&gt;
===Developer changes===&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=EiffelOnMac&amp;diff=14657</id>
		<title>EiffelOnMac</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=EiffelOnMac&amp;diff=14657"/>
				<updated>2013-02-24T11:36:27Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: Update with details for EiffelStudio 7.2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:EiffelStudio]]&lt;br /&gt;
[[Category:Macintosh]]&lt;br /&gt;
&lt;br /&gt;
This page gives you an overview about how to get EiffelStudio running on your Mac (Leopard, Snow Leopard, Lion or Mountain Lion).&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
&lt;br /&gt;
*You will need to install '''Xcode''' from the App Store. (On old versions of OS X, Xcode was on your OSX-Installation disk, or you downloaded it from Apple's developer web site.)&lt;br /&gt;
&lt;br /&gt;
*Make sure that you install the '''development tools''' with Xcode. (In theory, with current versions of the development tools, you may not need to install Xcode. You could save yourself a huge amount of time by not downloading Xcode; but on the other hand, you might waste a lot of time trying to fix missing dependencies if things go wrong. Unless you're feeling adventurous, do install Xcode.)&lt;br /&gt;
&lt;br /&gt;
*On OS X 10.5 and later, you don't need to install '''X11'''. (On older versions of OS X, install it from your OS X installation disk.)&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Using MacPorts ===&lt;br /&gt;
The following should work on Mac OS X 10.4 and later.&lt;br /&gt;
&lt;br /&gt;
MacPorts is a tool that allows you to use many Unix applications on the Mac. We have created a package in the MacPorts repository that allows you to to install Eiffel Studio with all dependencies in a convenient way. First, install [http://guide.macports.org/#installing MacPorts].&lt;br /&gt;
&lt;br /&gt;
Now simply type (from a bash [http://guides.macrumors.com/Terminal terminal]):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port install eiffelstudioXX&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
where 'XX' stands for the EiffelStudio version you want to install (for example eiffelstudio72) and after some time (compiling on a 2.4 GHz Intel Mac takes about an hour) you're ready to go. &lt;br /&gt;
&lt;br /&gt;
Older development packages are available under the name eiffelstudio65, etc. All packages can be installed simultaneously because they are located in different directories.&lt;br /&gt;
&lt;br /&gt;
When a new release of the same version EiffelStudio becomes available, you can upgrade like so:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port selfupdate&lt;br /&gt;
sudo port upgrade outdated&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Warning|EiffelStudio 7.1 has a bug that prevents Vision2 applications from compiling out of the box. You can work around this by editing /Applications/MacPorts/Eiffel71/library/vision2/vision2.ecf and removing line 147:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;custom name=&amp;quot;vision_implementation&amp;quot; excluded_value=&amp;quot;gtk34&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|gtk2 version 2_24_5_0+x11 breaks EiffelStudio 6.8 (that depends on it). A fix is to install gtk2 2_24_4_0+x11 (the previous minor version), or to deactivate the former and activate the latter if you already have both installed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port deactivate gtk2 @2_24_5_0+x11&lt;br /&gt;
sudo port activate gtk2 @2_24_4_0+x11&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Using binary packages ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|This method does not work at the moment. Please install EiffelStudio using MacPorts.&amp;lt;br/&amp;gt;See [[Talk:EiffelOnMac|Discussion]] for more information.}}&lt;br /&gt;
&lt;br /&gt;
# Install the latest version of [http://xquartz.macosforge.org/trac/wiki/WikiStart XQuartz]: [http://xquartz.macosforge.org/downloads/X11-2.4.0.dmg download]&lt;br /&gt;
# Install the EiffelStudio 6.4 Mac package: [http://dfurrer.com/files/eiffelstudio64.dmg download]&lt;br /&gt;
&lt;br /&gt;
This installer was created using MacPorts as well as using the mpkg command. For more information take a look at the [http://guide.macports.org MacPorts Guide]&lt;br /&gt;
&lt;br /&gt;
== Starting EiffelStudio ==&lt;br /&gt;
&lt;br /&gt;
Simply navigate to /Applications/MacPorts/Eiffel''XX'' and double click the EiffelStudio icon.&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can also start EiffelStudio from the command line by entering the command 'estudio' or use the command-line eiffel compiler 'ec'.&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
===I get a crash with a Permission denied: Operating system error, how do I fix it?===&lt;br /&gt;
&lt;br /&gt;
Delete the .ec directory in your home directory.&lt;br /&gt;
&lt;br /&gt;
===I get an error with precompiles, why is that ?===&lt;br /&gt;
&lt;br /&gt;
Precompiles did not work on the Mac before EiffelStudio 6.4 due to a limitation of the linker. To work around this issue you have to disable the precompiles with those versions or upgrade to a recent version of EiffelStudio.&lt;br /&gt;
&lt;br /&gt;
{{Note|When you create a project, EiffelStudio will ask if you want to perform precompiles – say no. Then disable the precompiles for this project through the Project&amp;gt;Project menu. In the 'Groups&amp;gt;Precompile' section, remove all precompiles (eg., base_pre). Select the 'base_pre' precompile and click the red cross delete tool at the top of the window.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Note|Precompiling the Eiffel libraries after installing the Port is possible, there are security policies to take into account. The Port installs EiffelStudio under the system's ''/Application/MacPorts'' directory and '''not''' the user ''~/Application/MacPorts''. Due of this, EiffelStudio must be run as a super user and the precompiles build using the '''Tools''' &amp;gt; '''Precompile Wizard''' option. Alternatively, alter the base installation path when requesting to install the Port.}}&lt;br /&gt;
&lt;br /&gt;
=== How can I make EiffelStudio on the Mac look nicer? ===&lt;br /&gt;
* From macports, install the gtk2 (if not already installed) and gtk-chtheme packets. Then run gtk-chtheme and you get a nice GUI to choose your theme. Additional GTK themes can be put in  /opt/local/share/themes/ (There a thousands of them on the web, for example here : [http://art.gnome.org/themes/gtk2 http://art.gnome.org/themes/gtk2])&lt;br /&gt;
&lt;br /&gt;
=== Typing ec or estudio on the command line doesn't work ===&lt;br /&gt;
To run the '''ec''' compiler from your shell, set up variables similar to these (e.g. in ~/.profile):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Setting variables for EiffelStudio.&lt;br /&gt;
export ISE_EIFFEL=/Applications/MacPorts/Eiffel66&lt;br /&gt;
export ISE_PLATFORM=macosx-ppc (or macosx-x86)&lt;br /&gt;
export ISE_PROJECTS=$HOME&lt;br /&gt;
export ES_PATH=$ISE_EIFFEL/studio/spec/$ISE_PLATFORM/bin&lt;br /&gt;
export PATH=$ES_PATH:$PATH&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The latest release of EiffelStudio isn't available yet via MacPorts===&lt;br /&gt;
&lt;br /&gt;
MacPorts installs a particular version of EiffelStudio by following the rules defined in a '''Portfile'''. For example, http://trac.macports.org/browser/trunk/dports/lang/eiffelstudio71/Portfile is the Portfile for EiffelStudio 7.1. The person who maintains EiffelStudio for MacPorts has to write this file and upload it, but they might not have done so yet. You could make enquiries about when it will be available, but if you want to get the latest urgently it isn't hard to write your own Portfile and run it locally. Here's how.&lt;br /&gt;
&lt;br /&gt;
http://guide.macports.org/#development.local-repositories explains how to do it.&lt;br /&gt;
# Go to https://sourceforge.net/projects/eiffelstudio/files and download the relevant PorterPackage file.&lt;br /&gt;
# Run '''openssl''' to find out the '''checksum''' of the PorterPackage file. E.g., for EiffelStudio 7.2 the command is '''openssl rmd160 ~/Downloads/PorterPackage_72_91169_gpl.tar'''.&lt;br /&gt;
# Open /opt/local/etc/macports/sources.conf in a text editor (with super user privileges). Insert a line as explained on http://guide.macports.org, e.g., file:///Applications/MacPorts/ports&lt;br /&gt;
# Create the Portfile in a text editor, e.g., file:///Applications/MacPorts/ports/lang/eiffelstudio72/Portfile&lt;br /&gt;
#* Copy the contents of the most recently available EiffelStudio Portfile (e.g., from http://trac.macports.org/browser/trunk/dports/lang/eiffelstudio71/Portfile) into your Portfile.&lt;br /&gt;
#* Correct the '''name''', '''minor_version''' and '''version'''.&lt;br /&gt;
#* Make sure that the '''distname''' will resolve to the current PorterPackage file name that you see on https://sourceforge.net/projects/eiffelstudio/files&lt;br /&gt;
#* Set the first '''checksums''' to the value that you got earlier from running openssl.&lt;br /&gt;
#* You've finished writing your Portfile. Save it!&lt;br /&gt;
# Go to the ports directory, e.g., cd /Applications/MacPorts/ports&lt;br /&gt;
# sudo portindex&lt;br /&gt;
# You should now be able to install in the usual way, e.g., sudo port install eiffelstudio72&lt;br /&gt;
&lt;br /&gt;
==Hints==&lt;br /&gt;
* Pick and Drop works with Apple-key + mouse click.&lt;br /&gt;
* To set up the correct (default) browsers use &amp;quot;open&amp;quot; as your command-line browser in Tools&amp;gt;Preferences...&lt;br /&gt;
* The F10 and F11 debugging shortcuts conflict with the standard Exposé keys. Here are some workarounds:&lt;br /&gt;
** Use the toolbar instead.&lt;br /&gt;
** Reassign these shortcuts in EiffelStudio (Tools&amp;gt;Preferences).&lt;br /&gt;
** Reassign the Exposé keys in System Preferences.&lt;br /&gt;
* The version of '''X11 installed with Mac OS X Leopard 10.5.0 and 10.5.1 does not work'''. The 10.5.2 and later updates are probably ok, however, but if you're having problems have a look at http://trac.macosforge.org/projects/xquartz. For more details, see http://www.eiffelroom.com/blog/paulbates/a_little_help_for_mac_users which pre-dates the release of 10.5.2.&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=EiffelOnMac&amp;diff=14567</id>
		<title>EiffelOnMac</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=EiffelOnMac&amp;diff=14567"/>
				<updated>2012-10-10T05:27:43Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: Add a link to an explanation of what the Mac Terminal is&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:EiffelStudio]]&lt;br /&gt;
[[Category:Macintosh]]&lt;br /&gt;
&lt;br /&gt;
This page gives you an overview about how to get EiffelStudio running on your Mac (Leopard, Snow Leopard, Lion or Mountain Lion).&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
&lt;br /&gt;
*You will need to install '''Xcode''' from the App Store. (On old versions of OS X, Xcode was on your OSX-Installation disk, or you downloaded it from Apple's developer web site.)&lt;br /&gt;
&lt;br /&gt;
*Make sure that you install the '''development tools''' with Xcode. (In theory, with current versions of the development tools, you may not need to install Xcode. You could save yourself a huge amount of time by not downloading Xcode; but on the other hand, you might waste a lot of time trying to fix missing dependencies if things go wrong. Unless you're feeling adventurous, do install Xcode.)&lt;br /&gt;
&lt;br /&gt;
*On OS X 10.5 and later, you don't need to install '''X11'''. (On older versions of OS X, install it from your OS X installation disk.)&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Using MacPorts ===&lt;br /&gt;
The following should work on Mac OS X 10.4 and later.&lt;br /&gt;
&lt;br /&gt;
MacPorts is a tool that allows you to use many Unix applications on the Mac. We have created a package in the MacPorts repository that allows you to to install Eiffel Studio with all dependencies in a convenient way. First, install [http://guide.macports.org/#installing MacPorts].&lt;br /&gt;
&lt;br /&gt;
Now simply type (from a bash [http://guides.macrumors.com/Terminal terminal]):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port install eiffelstudioXX&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
where 'XX' stands for the EiffelStudio version you want to install (for example eiffelstudio71) and after some time (compiling on a 2.4 GHz Intel Mac takes about an hour) you're ready to go. &lt;br /&gt;
&lt;br /&gt;
Older development packages are available under the name eiffelstudio65, etc. All packages can be installed simultaneously because they are located in different directories.&lt;br /&gt;
&lt;br /&gt;
When a new release of the same version EiffelStudio becomes available, you can upgrade like so:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port selfupdate&lt;br /&gt;
sudo port upgrade outdated&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Warning|EiffelStudio 7.1 has a bug that prevents Vision2 applications from compiling out of the box. You can work around this by editing /Applications/MacPorts/Eiffel71/library/vision2/vision2.ecf and removing line 147:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;custom name=&amp;quot;vision_implementation&amp;quot; excluded_value=&amp;quot;gtk34&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|gtk2 version 2_24_5_0+x11 breaks EiffelStudio 6.8 (that depends on it). A fix is to install gtk2 2_24_4_0+x11 (the previous minor version), or to deactivate the former and activate the latter if you already have both installed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port deactivate gtk2 @2_24_5_0+x11&lt;br /&gt;
sudo port activate gtk2 @2_24_4_0+x11&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Using binary packages ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|This method does not work at the moment. Please install EiffelStudio using MacPorts.&amp;lt;br/&amp;gt;See [[Talk:EiffelOnMac|Discussion]] for more information.}}&lt;br /&gt;
&lt;br /&gt;
# Install the latest version of [http://xquartz.macosforge.org/trac/wiki/WikiStart XQuartz]: [http://xquartz.macosforge.org/downloads/X11-2.4.0.dmg download]&lt;br /&gt;
# Install the EiffelStudio 6.4 Mac package: [http://dfurrer.com/files/eiffelstudio64.dmg download]&lt;br /&gt;
&lt;br /&gt;
This installer was created using MacPorts as well as using the mpkg command. For more information take a look at the [http://guide.macports.org MacPorts Guide]&lt;br /&gt;
&lt;br /&gt;
== Starting EiffelStudio ==&lt;br /&gt;
&lt;br /&gt;
Simply navigate to /Applications/MacPorts/Eiffel''XX'' and double click the EiffelStudio icon.&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can also start EiffelStudio from the command line by entering the command 'estudio' or use the command-line eiffel compiler 'ec'.&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
===I get a crash with a Permission denied: Operating system error, how do I fix it?===&lt;br /&gt;
&lt;br /&gt;
Delete the .ec directory in your home directory.&lt;br /&gt;
&lt;br /&gt;
===I get an error with precompiles, why is that ?===&lt;br /&gt;
&lt;br /&gt;
Precompiles did not work on the Mac before EiffelStudio 6.4 due to a limitation of the linker. To work around this issue you have to disable the precompiles with those versions or upgrade to a recent version of EiffelStudio.&lt;br /&gt;
&lt;br /&gt;
{{Note|When you create a project, EiffelStudio will ask if you want to perform precompiles – say no. Then disable the precompiles for this project through the Project&amp;gt;Project menu. In the 'Groups&amp;gt;Precompile' section, remove all precompiles (eg., base_pre). Select the 'base_pre' precompile and click the red cross delete tool at the top of the window.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Note|Precompiling the Eiffel libraries after installing the Port is possible, there are security policies to take into account. The Port installs EiffelStudio under the system's ''/Application/MacPorts'' directory and '''not''' the user ''~/Application/MacPorts''. Due of this, EiffelStudio must be run as a super user and the precompiles build using the '''Tools''' &amp;gt; '''Precompile Wizard''' option. Alternatively, alter the base installation path when requesting to install the Port.}}&lt;br /&gt;
&lt;br /&gt;
=== How can I make EiffelStudio on the Mac look nicer? ===&lt;br /&gt;
* From macports, install the gtk2 (if not already installed) and gtk-chtheme packets. Then run gtk-chtheme and you get a nice GUI to choose your theme. Additional GTK themes can be put in  /opt/local/share/themes/ (There a thousands of them on the web, for example here : [http://art.gnome.org/themes/gtk2 http://art.gnome.org/themes/gtk2])&lt;br /&gt;
&lt;br /&gt;
=== Typing ec or estudio on the command line doesn't work ===&lt;br /&gt;
To run the '''ec''' compiler from your shell, set up variables similar to these (e.g. in ~/.profile):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Setting variables for EiffelStudio.&lt;br /&gt;
export ISE_EIFFEL=/Applications/MacPorts/Eiffel66&lt;br /&gt;
export ISE_PLATFORM=macosx-ppc (or macosx-x86)&lt;br /&gt;
export ISE_PROJECTS=$HOME&lt;br /&gt;
export ES_PATH=$ISE_EIFFEL/studio/spec/$ISE_PLATFORM/bin&lt;br /&gt;
export PATH=$ES_PATH:$PATH&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The latest release of EiffelStudio isn't available yet via MacPorts===&lt;br /&gt;
&lt;br /&gt;
MacPorts installs a particular version of EiffelStudio by following the rules defined in a '''Portfile'''. For example, http://trac.macports.org/browser/trunk/dports/lang/eiffelstudio68/Portfile is the Portfile for EiffelStudio 6.8. Someone has to write this file and upload it, but they might not have done so yet. You could make enquiries about when it will be available, but if you want to get the latest urgently it isn't hard to write your own Portfile and run it locally. Here's how.&lt;br /&gt;
&lt;br /&gt;
http://guide.macports.org/#development.local-repositories explains how to do it.&lt;br /&gt;
# Go to https://sourceforge.net/projects/eiffelstudio/files and download the relevant PorterPackage file.&lt;br /&gt;
# Run '''openssl''' to find out the '''checksum''' of the PorterPackage file. E.g., for EiffelStudio 7.1 the command is '''openssl rmd160 ~/Downloads/PorterPackage_88986_gpl.tar'''.&lt;br /&gt;
# Open /opt/local/etc/macports/sources.conf in a text editor (with super user privileges). Insert a line as explained on http://guide.macports.org, e.g., file:///Applications/MacPorts/ports&lt;br /&gt;
# Create the Portfile in a text editor, e.g., file:///Applications/MacPorts/ports/lang/eiffelstudio71/Portfile&lt;br /&gt;
#* Copy the contents of the most recently available EiffelStudio Portfile (e.g., from http://trac.macports.org/browser/trunk/dports/lang/eiffelstudio68/Portfile) into your Portfile.&lt;br /&gt;
#* Correct the '''name''', '''minor_version''' and '''version'''.&lt;br /&gt;
#* Make sure that the '''distname''' will resolve to the current PorterPackage file name that you see on https://sourceforge.net/projects/eiffelstudio/files&lt;br /&gt;
#* Set the first '''checksums''' to the value that you got earlier from running openssl.&lt;br /&gt;
#* You've finished writing your Portfile. Save it!&lt;br /&gt;
# Go to the ports directory, e.g., cd /Applications/MacPorts/ports&lt;br /&gt;
# sudo portindex&lt;br /&gt;
# You should now be able to install in the usual way, e.g., sudo port install eiffelstudio71&lt;br /&gt;
&lt;br /&gt;
==Hints==&lt;br /&gt;
* Pick and Drop works with Apple-key + mouse click.&lt;br /&gt;
* To set up the correct (default) browsers use &amp;quot;open&amp;quot; as your command-line browser in Tools&amp;gt;Preferences...&lt;br /&gt;
* The F10 and F11 debugging shortcuts conflict with the standard Exposé keys. Here are some workarounds:&lt;br /&gt;
** Use the toolbar instead.&lt;br /&gt;
** Reassign these shortcuts in EiffelStudio (Tools&amp;gt;Preferences).&lt;br /&gt;
** Reassign the Exposé keys in System Preferences.&lt;br /&gt;
* The version of '''X11 installed with Mac OS X Leopard 10.5.0 and 10.5.1 does not work'''. The 10.5.2 and later updates are probably ok, however, but if you're having problems have a look at http://trac.macosforge.org/projects/xquartz. For more details, see http://www.eiffelroom.com/blog/paulbates/a_little_help_for_mac_users which pre-dates the release of 10.5.2.&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=EiffelOnMac&amp;diff=14566</id>
		<title>EiffelOnMac</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=EiffelOnMac&amp;diff=14566"/>
				<updated>2012-10-10T05:23:50Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: Corrected broken link for installing MacPorts&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:EiffelStudio]]&lt;br /&gt;
[[Category:Macintosh]]&lt;br /&gt;
&lt;br /&gt;
This page gives you an overview about how to get EiffelStudio running on your Mac (Leopard, Snow Leopard, Lion or Mountain Lion).&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
&lt;br /&gt;
*You will need to install '''Xcode''' from the App Store. (On old versions of OS X, Xcode was on your OSX-Installation disk, or you downloaded it from Apple's developer web site.)&lt;br /&gt;
&lt;br /&gt;
*Make sure that you install the '''development tools''' with Xcode. (In theory, with current versions of the development tools, you may not need to install Xcode. You could save yourself a huge amount of time by not downloading Xcode; but on the other hand, you might waste a lot of time trying to fix missing dependencies if things go wrong. Unless you're feeling adventurous, do install Xcode.)&lt;br /&gt;
&lt;br /&gt;
*On OS X 10.5 and later, you don't need to install '''X11'''. (On older versions of OS X, install it from your OS X installation disk.)&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Using MacPorts ===&lt;br /&gt;
The following should work on Mac OS X 10.4 and later.&lt;br /&gt;
&lt;br /&gt;
MacPorts is a tool that allows you to use many Unix applications on the Mac. We have created a package in the MacPorts repository that allows you to to install Eiffel Studio with all dependencies in a convenient way. First, install [http://guide.macports.org/#installing MacPorts].&lt;br /&gt;
&lt;br /&gt;
Now simply type (from a bash terminal):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port install eiffelstudioXX&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
where 'XX' stands for the EiffelStudio version you want to install (for example eiffelstudio71) and after some time (compiling on a 2.4 GHz Intel Mac takes about an hour) you're ready to go. &lt;br /&gt;
&lt;br /&gt;
Older development packages are available under the name eiffelstudio65, etc. All packages can be installed simultaneously because they are located in different directories.&lt;br /&gt;
&lt;br /&gt;
When a new release of the same version EiffelStudio becomes available, you can upgrade like so:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port selfupdate&lt;br /&gt;
sudo port upgrade outdated&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Warning|EiffelStudio 7.1 has a bug that prevents Vision2 applications from compiling out of the box. You can work around this by editing /Applications/MacPorts/Eiffel71/library/vision2/vision2.ecf and removing line 147:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;custom name=&amp;quot;vision_implementation&amp;quot; excluded_value=&amp;quot;gtk34&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|gtk2 version 2_24_5_0+x11 breaks EiffelStudio 6.8 (that depends on it). A fix is to install gtk2 2_24_4_0+x11 (the previous minor version), or to deactivate the former and activate the latter if you already have both installed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port deactivate gtk2 @2_24_5_0+x11&lt;br /&gt;
sudo port activate gtk2 @2_24_4_0+x11&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Using binary packages ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|This method does not work at the moment. Please install EiffelStudio using MacPorts.&amp;lt;br/&amp;gt;See [[Talk:EiffelOnMac|Discussion]] for more information.}}&lt;br /&gt;
&lt;br /&gt;
# Install the latest version of [http://xquartz.macosforge.org/trac/wiki/WikiStart XQuartz]: [http://xquartz.macosforge.org/downloads/X11-2.4.0.dmg download]&lt;br /&gt;
# Install the EiffelStudio 6.4 Mac package: [http://dfurrer.com/files/eiffelstudio64.dmg download]&lt;br /&gt;
&lt;br /&gt;
This installer was created using MacPorts as well as using the mpkg command. For more information take a look at the [http://guide.macports.org MacPorts Guide]&lt;br /&gt;
&lt;br /&gt;
== Starting EiffelStudio ==&lt;br /&gt;
&lt;br /&gt;
Simply navigate to /Applications/MacPorts/Eiffel''XX'' and double click the EiffelStudio icon.&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can also start EiffelStudio from the command line by entering the command 'estudio' or use the command-line eiffel compiler 'ec'.&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
===I get a crash with a Permission denied: Operating system error, how do I fix it?===&lt;br /&gt;
&lt;br /&gt;
Delete the .ec directory in your home directory.&lt;br /&gt;
&lt;br /&gt;
===I get an error with precompiles, why is that ?===&lt;br /&gt;
&lt;br /&gt;
Precompiles did not work on the Mac before EiffelStudio 6.4 due to a limitation of the linker. To work around this issue you have to disable the precompiles with those versions or upgrade to a recent version of EiffelStudio.&lt;br /&gt;
&lt;br /&gt;
{{Note|When you create a project, EiffelStudio will ask if you want to perform precompiles – say no. Then disable the precompiles for this project through the Project&amp;gt;Project menu. In the 'Groups&amp;gt;Precompile' section, remove all precompiles (eg., base_pre). Select the 'base_pre' precompile and click the red cross delete tool at the top of the window.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Note|Precompiling the Eiffel libraries after installing the Port is possible, there are security policies to take into account. The Port installs EiffelStudio under the system's ''/Application/MacPorts'' directory and '''not''' the user ''~/Application/MacPorts''. Due of this, EiffelStudio must be run as a super user and the precompiles build using the '''Tools''' &amp;gt; '''Precompile Wizard''' option. Alternatively, alter the base installation path when requesting to install the Port.}}&lt;br /&gt;
&lt;br /&gt;
=== How can I make EiffelStudio on the Mac look nicer? ===&lt;br /&gt;
* From macports, install the gtk2 (if not already installed) and gtk-chtheme packets. Then run gtk-chtheme and you get a nice GUI to choose your theme. Additional GTK themes can be put in  /opt/local/share/themes/ (There a thousands of them on the web, for example here : [http://art.gnome.org/themes/gtk2 http://art.gnome.org/themes/gtk2])&lt;br /&gt;
&lt;br /&gt;
=== Typing ec or estudio on the command line doesn't work ===&lt;br /&gt;
To run the '''ec''' compiler from your shell, set up variables similar to these (e.g. in ~/.profile):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Setting variables for EiffelStudio.&lt;br /&gt;
export ISE_EIFFEL=/Applications/MacPorts/Eiffel66&lt;br /&gt;
export ISE_PLATFORM=macosx-ppc (or macosx-x86)&lt;br /&gt;
export ISE_PROJECTS=$HOME&lt;br /&gt;
export ES_PATH=$ISE_EIFFEL/studio/spec/$ISE_PLATFORM/bin&lt;br /&gt;
export PATH=$ES_PATH:$PATH&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The latest release of EiffelStudio isn't available yet via MacPorts===&lt;br /&gt;
&lt;br /&gt;
MacPorts installs a particular version of EiffelStudio by following the rules defined in a '''Portfile'''. For example, http://trac.macports.org/browser/trunk/dports/lang/eiffelstudio68/Portfile is the Portfile for EiffelStudio 6.8. Someone has to write this file and upload it, but they might not have done so yet. You could make enquiries about when it will be available, but if you want to get the latest urgently it isn't hard to write your own Portfile and run it locally. Here's how.&lt;br /&gt;
&lt;br /&gt;
http://guide.macports.org/#development.local-repositories explains how to do it.&lt;br /&gt;
# Go to https://sourceforge.net/projects/eiffelstudio/files and download the relevant PorterPackage file.&lt;br /&gt;
# Run '''openssl''' to find out the '''checksum''' of the PorterPackage file. E.g., for EiffelStudio 7.1 the command is '''openssl rmd160 ~/Downloads/PorterPackage_88986_gpl.tar'''.&lt;br /&gt;
# Open /opt/local/etc/macports/sources.conf in a text editor (with super user privileges). Insert a line as explained on http://guide.macports.org, e.g., file:///Applications/MacPorts/ports&lt;br /&gt;
# Create the Portfile in a text editor, e.g., file:///Applications/MacPorts/ports/lang/eiffelstudio71/Portfile&lt;br /&gt;
#* Copy the contents of the most recently available EiffelStudio Portfile (e.g., from http://trac.macports.org/browser/trunk/dports/lang/eiffelstudio68/Portfile) into your Portfile.&lt;br /&gt;
#* Correct the '''name''', '''minor_version''' and '''version'''.&lt;br /&gt;
#* Make sure that the '''distname''' will resolve to the current PorterPackage file name that you see on https://sourceforge.net/projects/eiffelstudio/files&lt;br /&gt;
#* Set the first '''checksums''' to the value that you got earlier from running openssl.&lt;br /&gt;
#* You've finished writing your Portfile. Save it!&lt;br /&gt;
# Go to the ports directory, e.g., cd /Applications/MacPorts/ports&lt;br /&gt;
# sudo portindex&lt;br /&gt;
# You should now be able to install in the usual way, e.g., sudo port install eiffelstudio71&lt;br /&gt;
&lt;br /&gt;
==Hints==&lt;br /&gt;
* Pick and Drop works with Apple-key + mouse click.&lt;br /&gt;
* To set up the correct (default) browsers use &amp;quot;open&amp;quot; as your command-line browser in Tools&amp;gt;Preferences...&lt;br /&gt;
* The F10 and F11 debugging shortcuts conflict with the standard Exposé keys. Here are some workarounds:&lt;br /&gt;
** Use the toolbar instead.&lt;br /&gt;
** Reassign these shortcuts in EiffelStudio (Tools&amp;gt;Preferences).&lt;br /&gt;
** Reassign the Exposé keys in System Preferences.&lt;br /&gt;
* The version of '''X11 installed with Mac OS X Leopard 10.5.0 and 10.5.1 does not work'''. The 10.5.2 and later updates are probably ok, however, but if you're having problems have a look at http://trac.macosforge.org/projects/xquartz. For more details, see http://www.eiffelroom.com/blog/paulbates/a_little_help_for_mac_users which pre-dates the release of 10.5.2.&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Talk:Migration_to_Unicode&amp;diff=14546</id>
		<title>Talk:Migration to Unicode</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Talk:Migration_to_Unicode&amp;diff=14546"/>
				<updated>2012-09-25T22:25:44Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: Questions about migration to Unicode&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[User:Peter gummer|Peter gummer]] 22:25, 25 September 2012 (UTC) These are interesting guidelines. Is this recommended already in EiffelStudio 7.1?&lt;br /&gt;
&lt;br /&gt;
Our code currently uses &amp;lt;e&amp;gt;STRING&amp;lt;/e&amp;gt; almost everywhere; the ECF maps &amp;lt;e&amp;gt;STRING&amp;lt;/e&amp;gt; to &amp;lt;e&amp;gt;STRING_8&amp;lt;/e&amp;gt;. Do the guidelines mean that we can change the ECF mapping from &amp;lt;e&amp;gt;STRING&amp;lt;/e&amp;gt; to &amp;lt;e&amp;gt;STRING_32&amp;lt;/e&amp;gt;? This would be much faster than editing every class individually.&lt;br /&gt;
&lt;br /&gt;
The guidelines recommend using some &amp;lt;e&amp;gt;*_FILE_32&amp;lt;/e&amp;gt; classes. Most of our files are UTF-8, not UTF-32. Will using the &amp;lt;e&amp;gt;*_FILE_32&amp;lt;/e&amp;gt; classes work?&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=EiffelOnMac&amp;diff=14544</id>
		<title>EiffelOnMac</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=EiffelOnMac&amp;diff=14544"/>
				<updated>2012-09-19T04:50:56Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: /* Starting EiffelStudio */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:EiffelStudio]]&lt;br /&gt;
[[Category:Macintosh]]&lt;br /&gt;
&lt;br /&gt;
This page gives you an overview about how to get EiffelStudio running on your Mac (Leopard, Snow Leopard, Lion or Mountain Lion).&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
&lt;br /&gt;
*You will need to install '''Xcode''' from the App Store. (On old versions of OS X, Xcode was on your OSX-Installation disk, or you downloaded it from Apple's developer web site.)&lt;br /&gt;
&lt;br /&gt;
*Make sure that you install the '''development tools''' with Xcode. (In theory, with current versions of the development tools, you may not need to install Xcode. You could save yourself a huge amount of time by not downloading Xcode; but on the other hand, you might waste a lot of time trying to fix missing dependencies if things go wrong. Unless you're feeling adventurous, do install Xcode.)&lt;br /&gt;
&lt;br /&gt;
*On OS X 10.5 and later, you don't need to install '''X11'''. (On older versions of OS X, install it from your OS X installation disk.)&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Using MacPorts ===&lt;br /&gt;
The following should work on Mac OS X 10.4 and later.&lt;br /&gt;
&lt;br /&gt;
MacPorts is a tool that allows you to use many Unix applications on the Mac. We have created a package in the MacPorts repository that allows you to to install Eiffel Studio with all dependencies in a convenient way. First, install [http://trac.macosforge.org/projects/macports/wiki/InstallingMacPorts MacPorts].&lt;br /&gt;
&lt;br /&gt;
Now simply type (from a bash terminal):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port install eiffelstudioXX&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
where 'XX' stands for the EiffelStudio version you want to install (for example eiffelstudio71) and after some time (compiling on a 2.4 GHz Intel Mac takes about an hour) you're ready to go. &lt;br /&gt;
&lt;br /&gt;
Older development packages are available under the name eiffelstudio65, etc. All packages can be installed simultaneously because they are located in different directories.&lt;br /&gt;
&lt;br /&gt;
When a new release of the same version EiffelStudio becomes available, you can upgrade like so:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port selfupdate&lt;br /&gt;
sudo port upgrade outdated&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Warning|EiffelStudio 7.1 has a bug that prevents Vision2 applications from compiling out of the box. You can work around this by editing /Applications/MacPorts/Eiffel71/library/vision2/vision2.ecf and removing line 147:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;custom name=&amp;quot;vision_implementation&amp;quot; excluded_value=&amp;quot;gtk34&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|gtk2 version 2_24_5_0+x11 breaks EiffelStudio 6.8 (that depends on it). A fix is to install gtk2 2_24_4_0+x11 (the previous minor version), or to deactivate the former and activate the latter if you already have both installed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port deactivate gtk2 @2_24_5_0+x11&lt;br /&gt;
sudo port activate gtk2 @2_24_4_0+x11&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Using binary packages ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|This method does not work at the moment. Please install EiffelStudio using MacPorts.&amp;lt;br/&amp;gt;See [[Talk:EiffelOnMac|Discussion]] for more information.}}&lt;br /&gt;
&lt;br /&gt;
# Install the latest version of [http://xquartz.macosforge.org/trac/wiki/WikiStart XQuartz]: [http://xquartz.macosforge.org/downloads/X11-2.4.0.dmg download]&lt;br /&gt;
# Install the EiffelStudio 6.4 Mac package: [http://dfurrer.com/files/eiffelstudio64.dmg download]&lt;br /&gt;
&lt;br /&gt;
This installer was created using MacPorts as well as using the mpkg command. For more information take a look at the [http://guide.macports.org MacPorts Guide]&lt;br /&gt;
&lt;br /&gt;
== Starting EiffelStudio ==&lt;br /&gt;
&lt;br /&gt;
Simply navigate to /Applications/MacPorts/Eiffel''XX'' and double click the EiffelStudio icon.&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can also start EiffelStudio from the command line by entering the command 'estudio' or use the command-line eiffel compiler 'ec'.&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
===I get a crash with a Permission denied: Operating system error, how do I fix it?===&lt;br /&gt;
&lt;br /&gt;
Delete the .ec directory in your home directory.&lt;br /&gt;
&lt;br /&gt;
===I get an error with precompiles, why is that ?===&lt;br /&gt;
&lt;br /&gt;
Precompiles did not work on the Mac before EiffelStudio 6.4 due to a limitation of the linker. To work around this issue you have to disable the precompiles with those versions or upgrade to a recent version of EiffelStudio.&lt;br /&gt;
&lt;br /&gt;
{{Note|When you create a project, EiffelStudio will ask if you want to perform precompiles – say no. Then disable the precompiles for this project through the Project&amp;gt;Project menu. In the 'Groups&amp;gt;Precompile' section, remove all precompiles (eg., base_pre). Select the 'base_pre' precompile and click the red cross delete tool at the top of the window.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Note|Precompiling the Eiffel libraries after installing the Port is possible, there are security policies to take into account. The Port installs EiffelStudio under the system's ''/Application/MacPorts'' directory and '''not''' the user ''~/Application/MacPorts''. Due of this, EiffelStudio must be run as a super user and the precompiles build using the '''Tools''' &amp;gt; '''Precompile Wizard''' option. Alternatively, alter the base installation path when requesting to install the Port.}}&lt;br /&gt;
&lt;br /&gt;
=== How can I make EiffelStudio on the Mac look nicer? ===&lt;br /&gt;
* From macports, install the gtk2 (if not already installed) and gtk-chtheme packets. Then run gtk-chtheme and you get a nice GUI to choose your theme. Additional GTK themes can be put in  /opt/local/share/themes/ (There a thousands of them on the web, for example here : [http://art.gnome.org/themes/gtk2 http://art.gnome.org/themes/gtk2])&lt;br /&gt;
&lt;br /&gt;
=== Typing ec or estudio on the command line doesn't work ===&lt;br /&gt;
To run the '''ec''' compiler from your shell, set up variables similar to these (e.g. in ~/.profile):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Setting variables for EiffelStudio.&lt;br /&gt;
export ISE_EIFFEL=/Applications/MacPorts/Eiffel66&lt;br /&gt;
export ISE_PLATFORM=macosx-ppc (or macosx-x86)&lt;br /&gt;
export ISE_PROJECTS=$HOME&lt;br /&gt;
export ES_PATH=$ISE_EIFFEL/studio/spec/$ISE_PLATFORM/bin&lt;br /&gt;
export PATH=$ES_PATH:$PATH&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The latest release of EiffelStudio isn't available yet via MacPorts===&lt;br /&gt;
&lt;br /&gt;
MacPorts installs a particular version of EiffelStudio by following the rules defined in a '''Portfile'''. For example, http://trac.macports.org/browser/trunk/dports/lang/eiffelstudio68/Portfile is the Portfile for EiffelStudio 6.8. Someone has to write this file and upload it, but they might not have done so yet. You could make enquiries about when it will be available, but if you want to get the latest urgently it isn't hard to write your own Portfile and run it locally. Here's how.&lt;br /&gt;
&lt;br /&gt;
http://guide.macports.org/#development.local-repositories explains how to do it.&lt;br /&gt;
# Go to https://sourceforge.net/projects/eiffelstudio/files and download the relevant PorterPackage file.&lt;br /&gt;
# Run '''openssl''' to find out the '''checksum''' of the PorterPackage file. E.g., for EiffelStudio 7.1 the command is '''openssl rmd160 ~/Downloads/PorterPackage_88986_gpl.tar'''.&lt;br /&gt;
# Open /opt/local/etc/macports/sources.conf in a text editor (with super user privileges). Insert a line as explained on http://guide.macports.org, e.g., file:///Applications/MacPorts/ports&lt;br /&gt;
# Create the Portfile in a text editor, e.g., file:///Applications/MacPorts/ports/lang/eiffelstudio71/Portfile&lt;br /&gt;
#* Copy the contents of the most recently available EiffelStudio Portfile (e.g., from http://trac.macports.org/browser/trunk/dports/lang/eiffelstudio68/Portfile) into your Portfile.&lt;br /&gt;
#* Correct the '''name''', '''minor_version''' and '''version'''.&lt;br /&gt;
#* Make sure that the '''distname''' will resolve to the current PorterPackage file name that you see on https://sourceforge.net/projects/eiffelstudio/files&lt;br /&gt;
#* Set the first '''checksums''' to the value that you got earlier from running openssl.&lt;br /&gt;
#* You've finished writing your Portfile. Save it!&lt;br /&gt;
# Go to the ports directory, e.g., cd /Applications/MacPorts/ports&lt;br /&gt;
# sudo portindex&lt;br /&gt;
# You should now be able to install in the usual way, e.g., sudo port install eiffelstudio71&lt;br /&gt;
&lt;br /&gt;
==Hints==&lt;br /&gt;
* Pick and Drop works with Apple-key + mouse click.&lt;br /&gt;
* To set up the correct (default) browsers use &amp;quot;open&amp;quot; as your command-line browser in Tools&amp;gt;Preferences...&lt;br /&gt;
* The F10 and F11 debugging shortcuts conflict with the standard Exposé keys. Here are some workarounds:&lt;br /&gt;
** Use the toolbar instead.&lt;br /&gt;
** Reassign these shortcuts in EiffelStudio (Tools&amp;gt;Preferences).&lt;br /&gt;
** Reassign the Exposé keys in System Preferences.&lt;br /&gt;
* The version of '''X11 installed with Mac OS X Leopard 10.5.0 and 10.5.1 does not work'''. The 10.5.2 and later updates are probably ok, however, but if you're having problems have a look at http://trac.macosforge.org/projects/xquartz. For more details, see http://www.eiffelroom.com/blog/paulbates/a_little_help_for_mac_users which pre-dates the release of 10.5.2.&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=EiffelOnMac&amp;diff=14543</id>
		<title>EiffelOnMac</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=EiffelOnMac&amp;diff=14543"/>
				<updated>2012-09-19T04:49:11Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:EiffelStudio]]&lt;br /&gt;
[[Category:Macintosh]]&lt;br /&gt;
&lt;br /&gt;
This page gives you an overview about how to get EiffelStudio running on your Mac (Leopard, Snow Leopard, Lion or Mountain Lion).&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
&lt;br /&gt;
*You will need to install '''Xcode''' from the App Store. (On old versions of OS X, Xcode was on your OSX-Installation disk, or you downloaded it from Apple's developer web site.)&lt;br /&gt;
&lt;br /&gt;
*Make sure that you install the '''development tools''' with Xcode. (In theory, with current versions of the development tools, you may not need to install Xcode. You could save yourself a huge amount of time by not downloading Xcode; but on the other hand, you might waste a lot of time trying to fix missing dependencies if things go wrong. Unless you're feeling adventurous, do install Xcode.)&lt;br /&gt;
&lt;br /&gt;
*On OS X 10.5 and later, you don't need to install '''X11'''. (On older versions of OS X, install it from your OS X installation disk.)&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Using MacPorts ===&lt;br /&gt;
The following should work on Mac OS X 10.4 and later.&lt;br /&gt;
&lt;br /&gt;
MacPorts is a tool that allows you to use many Unix applications on the Mac. We have created a package in the MacPorts repository that allows you to to install Eiffel Studio with all dependencies in a convenient way. First, install [http://trac.macosforge.org/projects/macports/wiki/InstallingMacPorts MacPorts].&lt;br /&gt;
&lt;br /&gt;
Now simply type (from a bash terminal):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port install eiffelstudioXX&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
where 'XX' stands for the EiffelStudio version you want to install (for example eiffelstudio71) and after some time (compiling on a 2.4 GHz Intel Mac takes about an hour) you're ready to go. &lt;br /&gt;
&lt;br /&gt;
Older development packages are available under the name eiffelstudio65, etc. All packages can be installed simultaneously because they are located in different directories.&lt;br /&gt;
&lt;br /&gt;
When a new release of the same version EiffelStudio becomes available, you can upgrade like so:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port selfupdate&lt;br /&gt;
sudo port upgrade outdated&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Warning|EiffelStudio 7.1 has a bug that prevents Vision2 applications from compiling out of the box. You can work around this by editing /Applications/MacPorts/Eiffel71/library/vision2/vision2.ecf and removing line 147:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;custom name=&amp;quot;vision_implementation&amp;quot; excluded_value=&amp;quot;gtk34&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|gtk2 version 2_24_5_0+x11 breaks EiffelStudio 6.8 (that depends on it). A fix is to install gtk2 2_24_4_0+x11 (the previous minor version), or to deactivate the former and activate the latter if you already have both installed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port deactivate gtk2 @2_24_5_0+x11&lt;br /&gt;
sudo port activate gtk2 @2_24_4_0+x11&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Using binary packages ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|This method does not work at the moment. Please install EiffelStudio using MacPorts.&amp;lt;br/&amp;gt;See [[Talk:EiffelOnMac|Discussion]] for more information.}}&lt;br /&gt;
&lt;br /&gt;
# Install the latest version of [http://xquartz.macosforge.org/trac/wiki/WikiStart XQuartz]: [http://xquartz.macosforge.org/downloads/X11-2.4.0.dmg download]&lt;br /&gt;
# Install the EiffelStudio 6.4 Mac package: [http://dfurrer.com/files/eiffelstudio64.dmg download]&lt;br /&gt;
&lt;br /&gt;
This installer was created using MacPorts as well as using the mpkg command. For more information take a look at the [http://guide.macports.org MacPorts Guide]&lt;br /&gt;
&lt;br /&gt;
== Starting EiffelStudio ==&lt;br /&gt;
&lt;br /&gt;
Simply navigate to /Applications/MacPorts/Eiffel&amp;lt;nn&amp;gt; and double click the EiffelStudio icon.&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can also start EiffelStudio from the command line by entering the command 'estudio' or use the command-line eiffel compiler 'ec'.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
===I get a crash with a Permission denied: Operating system error, how do I fix it?===&lt;br /&gt;
&lt;br /&gt;
Delete the .ec directory in your home directory.&lt;br /&gt;
&lt;br /&gt;
===I get an error with precompiles, why is that ?===&lt;br /&gt;
&lt;br /&gt;
Precompiles did not work on the Mac before EiffelStudio 6.4 due to a limitation of the linker. To work around this issue you have to disable the precompiles with those versions or upgrade to a recent version of EiffelStudio.&lt;br /&gt;
&lt;br /&gt;
{{Note|When you create a project, EiffelStudio will ask if you want to perform precompiles – say no. Then disable the precompiles for this project through the Project&amp;gt;Project menu. In the 'Groups&amp;gt;Precompile' section, remove all precompiles (eg., base_pre). Select the 'base_pre' precompile and click the red cross delete tool at the top of the window.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Note|Precompiling the Eiffel libraries after installing the Port is possible, there are security policies to take into account. The Port installs EiffelStudio under the system's ''/Application/MacPorts'' directory and '''not''' the user ''~/Application/MacPorts''. Due of this, EiffelStudio must be run as a super user and the precompiles build using the '''Tools''' &amp;gt; '''Precompile Wizard''' option. Alternatively, alter the base installation path when requesting to install the Port.}}&lt;br /&gt;
&lt;br /&gt;
=== How can I make EiffelStudio on the Mac look nicer? ===&lt;br /&gt;
* From macports, install the gtk2 (if not already installed) and gtk-chtheme packets. Then run gtk-chtheme and you get a nice GUI to choose your theme. Additional GTK themes can be put in  /opt/local/share/themes/ (There a thousands of them on the web, for example here : [http://art.gnome.org/themes/gtk2 http://art.gnome.org/themes/gtk2])&lt;br /&gt;
&lt;br /&gt;
=== Typing ec or estudio on the command line doesn't work ===&lt;br /&gt;
To run the '''ec''' compiler from your shell, set up variables similar to these (e.g. in ~/.profile):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Setting variables for EiffelStudio.&lt;br /&gt;
export ISE_EIFFEL=/Applications/MacPorts/Eiffel66&lt;br /&gt;
export ISE_PLATFORM=macosx-ppc (or macosx-x86)&lt;br /&gt;
export ISE_PROJECTS=$HOME&lt;br /&gt;
export ES_PATH=$ISE_EIFFEL/studio/spec/$ISE_PLATFORM/bin&lt;br /&gt;
export PATH=$ES_PATH:$PATH&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The latest release of EiffelStudio isn't available yet via MacPorts===&lt;br /&gt;
&lt;br /&gt;
MacPorts installs a particular version of EiffelStudio by following the rules defined in a '''Portfile'''. For example, http://trac.macports.org/browser/trunk/dports/lang/eiffelstudio68/Portfile is the Portfile for EiffelStudio 6.8. Someone has to write this file and upload it, but they might not have done so yet. You could make enquiries about when it will be available, but if you want to get the latest urgently it isn't hard to write your own Portfile and run it locally. Here's how.&lt;br /&gt;
&lt;br /&gt;
http://guide.macports.org/#development.local-repositories explains how to do it.&lt;br /&gt;
# Go to https://sourceforge.net/projects/eiffelstudio/files and download the relevant PorterPackage file.&lt;br /&gt;
# Run '''openssl''' to find out the '''checksum''' of the PorterPackage file. E.g., for EiffelStudio 7.1 the command is '''openssl rmd160 ~/Downloads/PorterPackage_88986_gpl.tar'''.&lt;br /&gt;
# Open /opt/local/etc/macports/sources.conf in a text editor (with super user privileges). Insert a line as explained on http://guide.macports.org, e.g., file:///Applications/MacPorts/ports&lt;br /&gt;
# Create the Portfile in a text editor, e.g., file:///Applications/MacPorts/ports/lang/eiffelstudio71/Portfile&lt;br /&gt;
#* Copy the contents of the most recently available EiffelStudio Portfile (e.g., from http://trac.macports.org/browser/trunk/dports/lang/eiffelstudio68/Portfile) into your Portfile.&lt;br /&gt;
#* Correct the '''name''', '''minor_version''' and '''version'''.&lt;br /&gt;
#* Make sure that the '''distname''' will resolve to the current PorterPackage file name that you see on https://sourceforge.net/projects/eiffelstudio/files&lt;br /&gt;
#* Set the first '''checksums''' to the value that you got earlier from running openssl.&lt;br /&gt;
#* You've finished writing your Portfile. Save it!&lt;br /&gt;
# Go to the ports directory, e.g., cd /Applications/MacPorts/ports&lt;br /&gt;
# sudo portindex&lt;br /&gt;
# You should now be able to install in the usual way, e.g., sudo port install eiffelstudio71&lt;br /&gt;
&lt;br /&gt;
==Hints==&lt;br /&gt;
* Pick and Drop works with Apple-key + mouse click.&lt;br /&gt;
* To set up the correct (default) browsers use &amp;quot;open&amp;quot; as your command-line browser in Tools&amp;gt;Preferences...&lt;br /&gt;
* The F10 and F11 debugging shortcuts conflict with the standard Exposé keys. Here are some workarounds:&lt;br /&gt;
** Use the toolbar instead.&lt;br /&gt;
** Reassign these shortcuts in EiffelStudio (Tools&amp;gt;Preferences).&lt;br /&gt;
** Reassign the Exposé keys in System Preferences.&lt;br /&gt;
* The version of '''X11 installed with Mac OS X Leopard 10.5.0 and 10.5.1 does not work'''. The 10.5.2 and later updates are probably ok, however, but if you're having problems have a look at http://trac.macosforge.org/projects/xquartz. For more details, see http://www.eiffelroom.com/blog/paulbates/a_little_help_for_mac_users which pre-dates the release of 10.5.2.&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=EiffelOnMac&amp;diff=14542</id>
		<title>EiffelOnMac</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=EiffelOnMac&amp;diff=14542"/>
				<updated>2012-09-19T04:48:32Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: /* Requirements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:EiffelStudio]]&lt;br /&gt;
[[Category:Macintosh]]&lt;br /&gt;
&lt;br /&gt;
This page gives you an overview about how to get EiffelStudio running on your Mac (Leopard, Snow Leopard or Lion).&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
&lt;br /&gt;
*You will need to install '''Xcode''' from the App Store. (On old versions of OS X, Xcode was on your OSX-Installation disk, or you downloaded it from Apple's developer web site.)&lt;br /&gt;
&lt;br /&gt;
*Make sure that you install the '''development tools''' with Xcode. (In theory, with current versions of the development tools, you may not need to install Xcode. You could save yourself a huge amount of time by not downloading Xcode; but on the other hand, you might waste a lot of time trying to fix missing dependencies if things go wrong. Unless you're feeling adventurous, do install Xcode.)&lt;br /&gt;
&lt;br /&gt;
*On OS X 10.5 and later, you don't need to install '''X11'''. (On older versions of OS X, install it from your OS X installation disk.)&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Using MacPorts ===&lt;br /&gt;
The following should work on Mac OS X 10.4 and later.&lt;br /&gt;
&lt;br /&gt;
MacPorts is a tool that allows you to use many Unix applications on the Mac. We have created a package in the MacPorts repository that allows you to to install Eiffel Studio with all dependencies in a convenient way. First, install [http://trac.macosforge.org/projects/macports/wiki/InstallingMacPorts MacPorts].&lt;br /&gt;
&lt;br /&gt;
Now simply type (from a bash terminal):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port install eiffelstudioXX&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
where 'XX' stands for the EiffelStudio version you want to install (for example eiffelstudio71) and after some time (compiling on a 2.4 GHz Intel Mac takes about an hour) you're ready to go. &lt;br /&gt;
&lt;br /&gt;
Older development packages are available under the name eiffelstudio65, etc. All packages can be installed simultaneously because they are located in different directories.&lt;br /&gt;
&lt;br /&gt;
When a new release of the same version EiffelStudio becomes available, you can upgrade like so:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port selfupdate&lt;br /&gt;
sudo port upgrade outdated&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Warning|EiffelStudio 7.1 has a bug that prevents Vision2 applications from compiling out of the box. You can work around this by editing /Applications/MacPorts/Eiffel71/library/vision2/vision2.ecf and removing line 147:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;custom name=&amp;quot;vision_implementation&amp;quot; excluded_value=&amp;quot;gtk34&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|gtk2 version 2_24_5_0+x11 breaks EiffelStudio 6.8 (that depends on it). A fix is to install gtk2 2_24_4_0+x11 (the previous minor version), or to deactivate the former and activate the latter if you already have both installed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port deactivate gtk2 @2_24_5_0+x11&lt;br /&gt;
sudo port activate gtk2 @2_24_4_0+x11&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Using binary packages ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|This method does not work at the moment. Please install EiffelStudio using MacPorts.&amp;lt;br/&amp;gt;See [[Talk:EiffelOnMac|Discussion]] for more information.}}&lt;br /&gt;
&lt;br /&gt;
# Install the latest version of [http://xquartz.macosforge.org/trac/wiki/WikiStart XQuartz]: [http://xquartz.macosforge.org/downloads/X11-2.4.0.dmg download]&lt;br /&gt;
# Install the EiffelStudio 6.4 Mac package: [http://dfurrer.com/files/eiffelstudio64.dmg download]&lt;br /&gt;
&lt;br /&gt;
This installer was created using MacPorts as well as using the mpkg command. For more information take a look at the [http://guide.macports.org MacPorts Guide]&lt;br /&gt;
&lt;br /&gt;
== Starting EiffelStudio ==&lt;br /&gt;
&lt;br /&gt;
Simply navigate to /Applications/MacPorts/Eiffel&amp;lt;nn&amp;gt; and double click the EiffelStudio icon.&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can also start EiffelStudio from the command line by entering the command 'estudio' or use the command-line eiffel compiler 'ec'.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
===I get a crash with a Permission denied: Operating system error, how do I fix it?===&lt;br /&gt;
&lt;br /&gt;
Delete the .ec directory in your home directory.&lt;br /&gt;
&lt;br /&gt;
===I get an error with precompiles, why is that ?===&lt;br /&gt;
&lt;br /&gt;
Precompiles did not work on the Mac before EiffelStudio 6.4 due to a limitation of the linker. To work around this issue you have to disable the precompiles with those versions or upgrade to a recent version of EiffelStudio.&lt;br /&gt;
&lt;br /&gt;
{{Note|When you create a project, EiffelStudio will ask if you want to perform precompiles – say no. Then disable the precompiles for this project through the Project&amp;gt;Project menu. In the 'Groups&amp;gt;Precompile' section, remove all precompiles (eg., base_pre). Select the 'base_pre' precompile and click the red cross delete tool at the top of the window.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Note|Precompiling the Eiffel libraries after installing the Port is possible, there are security policies to take into account. The Port installs EiffelStudio under the system's ''/Application/MacPorts'' directory and '''not''' the user ''~/Application/MacPorts''. Due of this, EiffelStudio must be run as a super user and the precompiles build using the '''Tools''' &amp;gt; '''Precompile Wizard''' option. Alternatively, alter the base installation path when requesting to install the Port.}}&lt;br /&gt;
&lt;br /&gt;
=== How can I make EiffelStudio on the Mac look nicer? ===&lt;br /&gt;
* From macports, install the gtk2 (if not already installed) and gtk-chtheme packets. Then run gtk-chtheme and you get a nice GUI to choose your theme. Additional GTK themes can be put in  /opt/local/share/themes/ (There a thousands of them on the web, for example here : [http://art.gnome.org/themes/gtk2 http://art.gnome.org/themes/gtk2])&lt;br /&gt;
&lt;br /&gt;
=== Typing ec or estudio on the command line doesn't work ===&lt;br /&gt;
To run the '''ec''' compiler from your shell, set up variables similar to these (e.g. in ~/.profile):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Setting variables for EiffelStudio.&lt;br /&gt;
export ISE_EIFFEL=/Applications/MacPorts/Eiffel66&lt;br /&gt;
export ISE_PLATFORM=macosx-ppc (or macosx-x86)&lt;br /&gt;
export ISE_PROJECTS=$HOME&lt;br /&gt;
export ES_PATH=$ISE_EIFFEL/studio/spec/$ISE_PLATFORM/bin&lt;br /&gt;
export PATH=$ES_PATH:$PATH&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The latest release of EiffelStudio isn't available yet via MacPorts===&lt;br /&gt;
&lt;br /&gt;
MacPorts installs a particular version of EiffelStudio by following the rules defined in a '''Portfile'''. For example, http://trac.macports.org/browser/trunk/dports/lang/eiffelstudio68/Portfile is the Portfile for EiffelStudio 6.8. Someone has to write this file and upload it, but they might not have done so yet. You could make enquiries about when it will be available, but if you want to get the latest urgently it isn't hard to write your own Portfile and run it locally. Here's how.&lt;br /&gt;
&lt;br /&gt;
http://guide.macports.org/#development.local-repositories explains how to do it.&lt;br /&gt;
# Go to https://sourceforge.net/projects/eiffelstudio/files and download the relevant PorterPackage file.&lt;br /&gt;
# Run '''openssl''' to find out the '''checksum''' of the PorterPackage file. E.g., for EiffelStudio 7.1 the command is '''openssl rmd160 ~/Downloads/PorterPackage_88986_gpl.tar'''.&lt;br /&gt;
# Open /opt/local/etc/macports/sources.conf in a text editor (with super user privileges). Insert a line as explained on http://guide.macports.org, e.g., file:///Applications/MacPorts/ports&lt;br /&gt;
# Create the Portfile in a text editor, e.g., file:///Applications/MacPorts/ports/lang/eiffelstudio71/Portfile&lt;br /&gt;
#* Copy the contents of the most recently available EiffelStudio Portfile (e.g., from http://trac.macports.org/browser/trunk/dports/lang/eiffelstudio68/Portfile) into your Portfile.&lt;br /&gt;
#* Correct the '''name''', '''minor_version''' and '''version'''.&lt;br /&gt;
#* Make sure that the '''distname''' will resolve to the current PorterPackage file name that you see on https://sourceforge.net/projects/eiffelstudio/files&lt;br /&gt;
#* Set the first '''checksums''' to the value that you got earlier from running openssl.&lt;br /&gt;
#* You've finished writing your Portfile. Save it!&lt;br /&gt;
# Go to the ports directory, e.g., cd /Applications/MacPorts/ports&lt;br /&gt;
# sudo portindex&lt;br /&gt;
# You should now be able to install in the usual way, e.g., sudo port install eiffelstudio71&lt;br /&gt;
&lt;br /&gt;
==Hints==&lt;br /&gt;
* Pick and Drop works with Apple-key + mouse click.&lt;br /&gt;
* To set up the correct (default) browsers use &amp;quot;open&amp;quot; as your command-line browser in Tools&amp;gt;Preferences...&lt;br /&gt;
* The F10 and F11 debugging shortcuts conflict with the standard Exposé keys. Here are some workarounds:&lt;br /&gt;
** Use the toolbar instead.&lt;br /&gt;
** Reassign these shortcuts in EiffelStudio (Tools&amp;gt;Preferences).&lt;br /&gt;
** Reassign the Exposé keys in System Preferences.&lt;br /&gt;
* The version of '''X11 installed with Mac OS X Leopard 10.5.0 and 10.5.1 does not work'''. The 10.5.2 and later updates are probably ok, however, but if you're having problems have a look at http://trac.macosforge.org/projects/xquartz. For more details, see http://www.eiffelroom.com/blog/paulbates/a_little_help_for_mac_users which pre-dates the release of 10.5.2.&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=EiffelOnMac&amp;diff=14541</id>
		<title>EiffelOnMac</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=EiffelOnMac&amp;diff=14541"/>
				<updated>2012-09-19T04:47:39Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: Clarify the requirements for installing Xcode&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:EiffelStudio]]&lt;br /&gt;
[[Category:Macintosh]]&lt;br /&gt;
&lt;br /&gt;
This page gives you an overview about how to get EiffelStudio running on your Mac (Leopard, Snow Leopard or Lion).&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
&lt;br /&gt;
*You will need to install '''Xcode''' from the App Store. (On old versions of OS X, Xcode was on your OSX-Installation disk, or you downloaded it from Apple's developer web site.)&lt;br /&gt;
&lt;br /&gt;
*Make sure that you install the '''development tools''' with Xcode. (In theory, with current versions of the development tools, you may not need to install Xcode. You could save yourself a huge amount of time by not downloading Xcode; but on the other hand, you might waste a lot of time trying to fix missing dependencies if things go wrong. Unless you're feeling adventurous, do install Xcode.)&lt;br /&gt;
&lt;br /&gt;
*On OS X 10.5 and later, you don't need to install '''X11'''. (On older versions of OS X, install it from your OSX-Installation disk.)&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Using MacPorts ===&lt;br /&gt;
The following should work on Mac OS X 10.4 and later.&lt;br /&gt;
&lt;br /&gt;
MacPorts is a tool that allows you to use many Unix applications on the Mac. We have created a package in the MacPorts repository that allows you to to install Eiffel Studio with all dependencies in a convenient way. First, install [http://trac.macosforge.org/projects/macports/wiki/InstallingMacPorts MacPorts].&lt;br /&gt;
&lt;br /&gt;
Now simply type (from a bash terminal):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port install eiffelstudioXX&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
where 'XX' stands for the EiffelStudio version you want to install (for example eiffelstudio71) and after some time (compiling on a 2.4 GHz Intel Mac takes about an hour) you're ready to go. &lt;br /&gt;
&lt;br /&gt;
Older development packages are available under the name eiffelstudio65, etc. All packages can be installed simultaneously because they are located in different directories.&lt;br /&gt;
&lt;br /&gt;
When a new release of the same version EiffelStudio becomes available, you can upgrade like so:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port selfupdate&lt;br /&gt;
sudo port upgrade outdated&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Warning|EiffelStudio 7.1 has a bug that prevents Vision2 applications from compiling out of the box. You can work around this by editing /Applications/MacPorts/Eiffel71/library/vision2/vision2.ecf and removing line 147:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;custom name=&amp;quot;vision_implementation&amp;quot; excluded_value=&amp;quot;gtk34&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|gtk2 version 2_24_5_0+x11 breaks EiffelStudio 6.8 (that depends on it). A fix is to install gtk2 2_24_4_0+x11 (the previous minor version), or to deactivate the former and activate the latter if you already have both installed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port deactivate gtk2 @2_24_5_0+x11&lt;br /&gt;
sudo port activate gtk2 @2_24_4_0+x11&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Using binary packages ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|This method does not work at the moment. Please install EiffelStudio using MacPorts.&amp;lt;br/&amp;gt;See [[Talk:EiffelOnMac|Discussion]] for more information.}}&lt;br /&gt;
&lt;br /&gt;
# Install the latest version of [http://xquartz.macosforge.org/trac/wiki/WikiStart XQuartz]: [http://xquartz.macosforge.org/downloads/X11-2.4.0.dmg download]&lt;br /&gt;
# Install the EiffelStudio 6.4 Mac package: [http://dfurrer.com/files/eiffelstudio64.dmg download]&lt;br /&gt;
&lt;br /&gt;
This installer was created using MacPorts as well as using the mpkg command. For more information take a look at the [http://guide.macports.org MacPorts Guide]&lt;br /&gt;
&lt;br /&gt;
== Starting EiffelStudio ==&lt;br /&gt;
&lt;br /&gt;
Simply navigate to /Applications/MacPorts/Eiffel&amp;lt;nn&amp;gt; and double click the EiffelStudio icon.&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can also start EiffelStudio from the command line by entering the command 'estudio' or use the command-line eiffel compiler 'ec'.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
===I get a crash with a Permission denied: Operating system error, how do I fix it?===&lt;br /&gt;
&lt;br /&gt;
Delete the .ec directory in your home directory.&lt;br /&gt;
&lt;br /&gt;
===I get an error with precompiles, why is that ?===&lt;br /&gt;
&lt;br /&gt;
Precompiles did not work on the Mac before EiffelStudio 6.4 due to a limitation of the linker. To work around this issue you have to disable the precompiles with those versions or upgrade to a recent version of EiffelStudio.&lt;br /&gt;
&lt;br /&gt;
{{Note|When you create a project, EiffelStudio will ask if you want to perform precompiles – say no. Then disable the precompiles for this project through the Project&amp;gt;Project menu. In the 'Groups&amp;gt;Precompile' section, remove all precompiles (eg., base_pre). Select the 'base_pre' precompile and click the red cross delete tool at the top of the window.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Note|Precompiling the Eiffel libraries after installing the Port is possible, there are security policies to take into account. The Port installs EiffelStudio under the system's ''/Application/MacPorts'' directory and '''not''' the user ''~/Application/MacPorts''. Due of this, EiffelStudio must be run as a super user and the precompiles build using the '''Tools''' &amp;gt; '''Precompile Wizard''' option. Alternatively, alter the base installation path when requesting to install the Port.}}&lt;br /&gt;
&lt;br /&gt;
=== How can I make EiffelStudio on the Mac look nicer? ===&lt;br /&gt;
* From macports, install the gtk2 (if not already installed) and gtk-chtheme packets. Then run gtk-chtheme and you get a nice GUI to choose your theme. Additional GTK themes can be put in  /opt/local/share/themes/ (There a thousands of them on the web, for example here : [http://art.gnome.org/themes/gtk2 http://art.gnome.org/themes/gtk2])&lt;br /&gt;
&lt;br /&gt;
=== Typing ec or estudio on the command line doesn't work ===&lt;br /&gt;
To run the '''ec''' compiler from your shell, set up variables similar to these (e.g. in ~/.profile):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Setting variables for EiffelStudio.&lt;br /&gt;
export ISE_EIFFEL=/Applications/MacPorts/Eiffel66&lt;br /&gt;
export ISE_PLATFORM=macosx-ppc (or macosx-x86)&lt;br /&gt;
export ISE_PROJECTS=$HOME&lt;br /&gt;
export ES_PATH=$ISE_EIFFEL/studio/spec/$ISE_PLATFORM/bin&lt;br /&gt;
export PATH=$ES_PATH:$PATH&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The latest release of EiffelStudio isn't available yet via MacPorts===&lt;br /&gt;
&lt;br /&gt;
MacPorts installs a particular version of EiffelStudio by following the rules defined in a '''Portfile'''. For example, http://trac.macports.org/browser/trunk/dports/lang/eiffelstudio68/Portfile is the Portfile for EiffelStudio 6.8. Someone has to write this file and upload it, but they might not have done so yet. You could make enquiries about when it will be available, but if you want to get the latest urgently it isn't hard to write your own Portfile and run it locally. Here's how.&lt;br /&gt;
&lt;br /&gt;
http://guide.macports.org/#development.local-repositories explains how to do it.&lt;br /&gt;
# Go to https://sourceforge.net/projects/eiffelstudio/files and download the relevant PorterPackage file.&lt;br /&gt;
# Run '''openssl''' to find out the '''checksum''' of the PorterPackage file. E.g., for EiffelStudio 7.1 the command is '''openssl rmd160 ~/Downloads/PorterPackage_88986_gpl.tar'''.&lt;br /&gt;
# Open /opt/local/etc/macports/sources.conf in a text editor (with super user privileges). Insert a line as explained on http://guide.macports.org, e.g., file:///Applications/MacPorts/ports&lt;br /&gt;
# Create the Portfile in a text editor, e.g., file:///Applications/MacPorts/ports/lang/eiffelstudio71/Portfile&lt;br /&gt;
#* Copy the contents of the most recently available EiffelStudio Portfile (e.g., from http://trac.macports.org/browser/trunk/dports/lang/eiffelstudio68/Portfile) into your Portfile.&lt;br /&gt;
#* Correct the '''name''', '''minor_version''' and '''version'''.&lt;br /&gt;
#* Make sure that the '''distname''' will resolve to the current PorterPackage file name that you see on https://sourceforge.net/projects/eiffelstudio/files&lt;br /&gt;
#* Set the first '''checksums''' to the value that you got earlier from running openssl.&lt;br /&gt;
#* You've finished writing your Portfile. Save it!&lt;br /&gt;
# Go to the ports directory, e.g., cd /Applications/MacPorts/ports&lt;br /&gt;
# sudo portindex&lt;br /&gt;
# You should now be able to install in the usual way, e.g., sudo port install eiffelstudio71&lt;br /&gt;
&lt;br /&gt;
==Hints==&lt;br /&gt;
* Pick and Drop works with Apple-key + mouse click.&lt;br /&gt;
* To set up the correct (default) browsers use &amp;quot;open&amp;quot; as your command-line browser in Tools&amp;gt;Preferences...&lt;br /&gt;
* The F10 and F11 debugging shortcuts conflict with the standard Exposé keys. Here are some workarounds:&lt;br /&gt;
** Use the toolbar instead.&lt;br /&gt;
** Reassign these shortcuts in EiffelStudio (Tools&amp;gt;Preferences).&lt;br /&gt;
** Reassign the Exposé keys in System Preferences.&lt;br /&gt;
* The version of '''X11 installed with Mac OS X Leopard 10.5.0 and 10.5.1 does not work'''. The 10.5.2 and later updates are probably ok, however, but if you're having problems have a look at http://trac.macosforge.org/projects/xquartz. For more details, see http://www.eiffelroom.com/blog/paulbates/a_little_help_for_mac_users which pre-dates the release of 10.5.2.&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=EiffelOnMac&amp;diff=14540</id>
		<title>EiffelOnMac</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=EiffelOnMac&amp;diff=14540"/>
				<updated>2012-09-19T04:33:47Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: Add warning about Vision2 not compiling on the Mac in EiffelStudio 7.1&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:EiffelStudio]]&lt;br /&gt;
[[Category:Macintosh]]&lt;br /&gt;
&lt;br /&gt;
This page gives you an overview about how to get EiffelStudio running on your Mac (Leopard, Snow Leopard or Lion).&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
&lt;br /&gt;
*You will need to install '''XCode''' from the App Store. (On old version of OS X, XCode was on your OSX-Installation disk, or you downloaded it from Apple's developer web site.) Make sure that you install the development tools with Xcode. You don't need to install '''X11''' if you are using OSX &amp;gt;=10.5, otherwise just install it from your OSX-Installation disk.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Using MacPorts ===&lt;br /&gt;
The following should work on Mac OS X 10.4 and later.&lt;br /&gt;
&lt;br /&gt;
MacPorts is a tool that allows you to use many Unix applications on the Mac. We have created a package in the MacPorts repository that allows you to to install Eiffel Studio with all dependencies in a convenient way. First, install [http://trac.macosforge.org/projects/macports/wiki/InstallingMacPorts MacPorts].&lt;br /&gt;
&lt;br /&gt;
Now simply type (from a bash terminal):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port install eiffelstudioXX&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
where 'XX' stands for the EiffelStudio version you want to install (for example eiffelstudio71) and after some time (compiling on a 2.4 GHz Intel Mac takes about an hour) you're ready to go. &lt;br /&gt;
&lt;br /&gt;
Older development packages are available under the name eiffelstudio65, etc. All packages can be installed simultaneously because they are located in different directories.&lt;br /&gt;
&lt;br /&gt;
When a new release of the same version EiffelStudio becomes available, you can upgrade like so:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port selfupdate&lt;br /&gt;
sudo port upgrade outdated&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Warning|EiffelStudio 7.1 has a bug that prevents Vision2 applications from compiling out of the box. You can work around this by editing /Applications/MacPorts/Eiffel71/library/vision2/vision2.ecf and removing line 147:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;custom name=&amp;quot;vision_implementation&amp;quot; excluded_value=&amp;quot;gtk34&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|gtk2 version 2_24_5_0+x11 breaks EiffelStudio 6.8 (that depends on it). A fix is to install gtk2 2_24_4_0+x11 (the previous minor version), or to deactivate the former and activate the latter if you already have both installed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port deactivate gtk2 @2_24_5_0+x11&lt;br /&gt;
sudo port activate gtk2 @2_24_4_0+x11&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Using binary packages ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|This method does not work at the moment. Please install EiffelStudio using MacPorts.&amp;lt;br/&amp;gt;See [[Talk:EiffelOnMac|Discussion]] for more information.}}&lt;br /&gt;
&lt;br /&gt;
# Install the latest version of [http://xquartz.macosforge.org/trac/wiki/WikiStart XQuartz]: [http://xquartz.macosforge.org/downloads/X11-2.4.0.dmg download]&lt;br /&gt;
# Install the EiffelStudio 6.4 Mac package: [http://dfurrer.com/files/eiffelstudio64.dmg download]&lt;br /&gt;
&lt;br /&gt;
This installer was created using MacPorts as well as using the mpkg command. For more information take a look at the [http://guide.macports.org MacPorts Guide]&lt;br /&gt;
&lt;br /&gt;
== Starting EiffelStudio ==&lt;br /&gt;
&lt;br /&gt;
Simply navigate to /Applications/MacPorts/Eiffel&amp;lt;nn&amp;gt; and double click the EiffelStudio icon.&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can also start EiffelStudio from the command line by entering the command 'estudio' or use the command-line eiffel compiler 'ec'.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
===I get a crash with a Permission denied: Operating system error, how do I fix it?===&lt;br /&gt;
&lt;br /&gt;
Delete the .ec directory in your home directory.&lt;br /&gt;
&lt;br /&gt;
===I get an error with precompiles, why is that ?===&lt;br /&gt;
&lt;br /&gt;
Precompiles did not work on the Mac before EiffelStudio 6.4 due to a limitation of the linker. To work around this issue you have to disable the precompiles with those versions or upgrade to a recent version of EiffelStudio.&lt;br /&gt;
&lt;br /&gt;
{{Note|When you create a project, EiffelStudio will ask if you want to perform precompiles – say no. Then disable the precompiles for this project through the Project&amp;gt;Project menu. In the 'Groups&amp;gt;Precompile' section, remove all precompiles (eg., base_pre). Select the 'base_pre' precompile and click the red cross delete tool at the top of the window.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Note|Precompiling the Eiffel libraries after installing the Port is possible, there are security policies to take into account. The Port installs EiffelStudio under the system's ''/Application/MacPorts'' directory and '''not''' the user ''~/Application/MacPorts''. Due of this, EiffelStudio must be run as a super user and the precompiles build using the '''Tools''' &amp;gt; '''Precompile Wizard''' option. Alternatively, alter the base installation path when requesting to install the Port.}}&lt;br /&gt;
&lt;br /&gt;
=== How can I make EiffelStudio on the Mac look nicer? ===&lt;br /&gt;
* From macports, install the gtk2 (if not already installed) and gtk-chtheme packets. Then run gtk-chtheme and you get a nice GUI to choose your theme. Additional GTK themes can be put in  /opt/local/share/themes/ (There a thousands of them on the web, for example here : [http://art.gnome.org/themes/gtk2 http://art.gnome.org/themes/gtk2])&lt;br /&gt;
&lt;br /&gt;
=== Typing ec or estudio on the command line doesn't work ===&lt;br /&gt;
To run the '''ec''' compiler from your shell, set up variables similar to these (e.g. in ~/.profile):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Setting variables for EiffelStudio.&lt;br /&gt;
export ISE_EIFFEL=/Applications/MacPorts/Eiffel66&lt;br /&gt;
export ISE_PLATFORM=macosx-ppc (or macosx-x86)&lt;br /&gt;
export ISE_PROJECTS=$HOME&lt;br /&gt;
export ES_PATH=$ISE_EIFFEL/studio/spec/$ISE_PLATFORM/bin&lt;br /&gt;
export PATH=$ES_PATH:$PATH&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The latest release of EiffelStudio isn't available yet via MacPorts===&lt;br /&gt;
&lt;br /&gt;
MacPorts installs a particular version of EiffelStudio by following the rules defined in a '''Portfile'''. For example, http://trac.macports.org/browser/trunk/dports/lang/eiffelstudio68/Portfile is the Portfile for EiffelStudio 6.8. Someone has to write this file and upload it, but they might not have done so yet. You could make enquiries about when it will be available, but if you want to get the latest urgently it isn't hard to write your own Portfile and run it locally. Here's how.&lt;br /&gt;
&lt;br /&gt;
http://guide.macports.org/#development.local-repositories explains how to do it.&lt;br /&gt;
# Go to https://sourceforge.net/projects/eiffelstudio/files and download the relevant PorterPackage file.&lt;br /&gt;
# Run '''openssl''' to find out the '''checksum''' of the PorterPackage file. E.g., for EiffelStudio 7.1 the command is '''openssl rmd160 ~/Downloads/PorterPackage_88986_gpl.tar'''.&lt;br /&gt;
# Open /opt/local/etc/macports/sources.conf in a text editor (with super user privileges). Insert a line as explained on http://guide.macports.org, e.g., file:///Applications/MacPorts/ports&lt;br /&gt;
# Create the Portfile in a text editor, e.g., file:///Applications/MacPorts/ports/lang/eiffelstudio71/Portfile&lt;br /&gt;
#* Copy the contents of the most recently available EiffelStudio Portfile (e.g., from http://trac.macports.org/browser/trunk/dports/lang/eiffelstudio68/Portfile) into your Portfile.&lt;br /&gt;
#* Correct the '''name''', '''minor_version''' and '''version'''.&lt;br /&gt;
#* Make sure that the '''distname''' will resolve to the current PorterPackage file name that you see on https://sourceforge.net/projects/eiffelstudio/files&lt;br /&gt;
#* Set the first '''checksums''' to the value that you got earlier from running openssl.&lt;br /&gt;
#* You've finished writing your Portfile. Save it!&lt;br /&gt;
# Go to the ports directory, e.g., cd /Applications/MacPorts/ports&lt;br /&gt;
# sudo portindex&lt;br /&gt;
# You should now be able to install in the usual way, e.g., sudo port install eiffelstudio71&lt;br /&gt;
&lt;br /&gt;
==Hints==&lt;br /&gt;
* Pick and Drop works with Apple-key + mouse click.&lt;br /&gt;
* To set up the correct (default) browsers use &amp;quot;open&amp;quot; as your command-line browser in Tools&amp;gt;Preferences...&lt;br /&gt;
* The F10 and F11 debugging shortcuts conflict with the standard Exposé keys. Here are some workarounds:&lt;br /&gt;
** Use the toolbar instead.&lt;br /&gt;
** Reassign these shortcuts in EiffelStudio (Tools&amp;gt;Preferences).&lt;br /&gt;
** Reassign the Exposé keys in System Preferences.&lt;br /&gt;
* The version of '''X11 installed with Mac OS X Leopard 10.5.0 and 10.5.1 does not work'''. The 10.5.2 and later updates are probably ok, however, but if you're having problems have a look at http://trac.macosforge.org/projects/xquartz. For more details, see http://www.eiffelroom.com/blog/paulbates/a_little_help_for_mac_users which pre-dates the release of 10.5.2.&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=EiffelOnMac&amp;diff=14539</id>
		<title>EiffelOnMac</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=EiffelOnMac&amp;diff=14539"/>
				<updated>2012-09-16T12:20:52Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:EiffelStudio]]&lt;br /&gt;
[[Category:Macintosh]]&lt;br /&gt;
&lt;br /&gt;
This page gives you an overview about how to get EiffelStudio running on your Mac (Leopard, Snow Leopard or Lion).&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
&lt;br /&gt;
*You will need to install '''XCode''' from the App Store. (On old version of OS X, XCode was on your OSX-Installation disk, or you downloaded it from Apple's developer web site.) Make sure that you install the development tools with Xcode. You don't need to install '''X11''' if you are using OSX &amp;gt;=10.5, otherwise just install it from your OSX-Installation disk.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Using MacPorts ===&lt;br /&gt;
The following should work on Mac OS X 10.4 and later.&lt;br /&gt;
&lt;br /&gt;
MacPorts is a tool that allows you to use many Unix applications on the Mac. We have created a package in the MacPorts repository that allows you to to install Eiffel Studio with all dependencies in a convenient way. First, install [http://trac.macosforge.org/projects/macports/wiki/InstallingMacPorts MacPorts].&lt;br /&gt;
&lt;br /&gt;
Now simply type (from a bash terminal):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port install eiffelstudioXX&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
where 'XX' stands for the EiffelStudio version you want to install (for example eiffelstudio70) and after some time (compiling on a 2.4 GHz Intel Mac takes about an hour) you're ready to go. &lt;br /&gt;
&lt;br /&gt;
Older development packages are available under the name eiffelstudio65, etc. All packages can be installed simultaneously because they are located in different directories.&lt;br /&gt;
&lt;br /&gt;
When a new release of the same version EiffelStudio becomes available, you can upgrade like so:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port selfupdate&lt;br /&gt;
sudo port upgrade outdated&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Warning|gtk2 version 2_24_5_0+x11 breaks EiffelStudio68 (that depends on it). A fix is to install gtk2 2_24_4_0+x11 (the previous minor version), or to deactivate the former and activate the latter if you already have both installed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port deactivate gtk2 @2_24_5_0+x11&lt;br /&gt;
sudo port activate gtk2 @2_24_4_0+x11&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Using binary packages ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|This method does not work at the moment. Please install EiffelStudio using MacPorts.&amp;lt;br/&amp;gt;See [[Talk:EiffelOnMac|Discussion]] for more information.}}&lt;br /&gt;
&lt;br /&gt;
# Install the latest version of [http://xquartz.macosforge.org/trac/wiki/WikiStart XQuartz]: [http://xquartz.macosforge.org/downloads/X11-2.4.0.dmg download]&lt;br /&gt;
# Install the EiffelStudio 6.4 Mac package: [http://dfurrer.com/files/eiffelstudio64.dmg download]&lt;br /&gt;
&lt;br /&gt;
This installer was created using MacPorts as well as using the mpkg command. For more information take a look at the [http://guide.macports.org MacPorts Guide]&lt;br /&gt;
&lt;br /&gt;
== Starting EiffelStudio ==&lt;br /&gt;
&lt;br /&gt;
Simply navigate to /Applications/MacPorts/Eiffel&amp;lt;nn&amp;gt; and double click the EiffelStudio icon.&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can also start EiffelStudio from the command line by entering the command 'estudio' or use the command-line eiffel compiler 'ec'.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
===I get a crash with a Permission denied: Operating system error, how do I fix it?===&lt;br /&gt;
&lt;br /&gt;
Delete the .ec directory in your home directory.&lt;br /&gt;
&lt;br /&gt;
===I get an error with precompiles, why is that ?===&lt;br /&gt;
&lt;br /&gt;
Precompiles did not work on the Mac before EiffelStudio 6.4 due to a limitation of the linker. To work around this issue you have to disable the precompiles with those versions or upgrade to a recent version of EiffelStudio.&lt;br /&gt;
&lt;br /&gt;
{{Note|When you create a project, EiffelStudio will ask if you want to perform precompiles – say no. Then disable the precompiles for this project through the Project&amp;gt;Project menu. In the 'Groups&amp;gt;Precompile' section, remove all precompiles (eg., base_pre). Select the 'base_pre' precompile and click the red cross delete tool at the top of the window.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Note|Precompiling the Eiffel libraries after installing the Port is possible, there are security policies to take into account. The Port installs EiffelStudio under the system's ''/Application/MacPorts'' directory and '''not''' the user ''~/Application/MacPorts''. Due of this, EiffelStudio must be run as a super user and the precompiles build using the '''Tools''' &amp;gt; '''Precompile Wizard''' option. Alternatively, alter the base installation path when requesting to install the Port.}}&lt;br /&gt;
&lt;br /&gt;
=== How can I make EiffelStudio on the Mac look nicer? ===&lt;br /&gt;
* From macports, install the gtk2 (if not already installed) and gtk-chtheme packets. Then run gtk-chtheme and you get a nice GUI to choose your theme. Additional GTK themes can be put in  /opt/local/share/themes/ (There a thousands of them on the web, for example here : [http://art.gnome.org/themes/gtk2 http://art.gnome.org/themes/gtk2])&lt;br /&gt;
&lt;br /&gt;
=== Typing ec or estudio on the command line doesn't work ===&lt;br /&gt;
To run the '''ec''' compiler from your shell, set up variables similar to these (e.g. in ~/.profile):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Setting variables for EiffelStudio.&lt;br /&gt;
export ISE_EIFFEL=/Applications/MacPorts/Eiffel66&lt;br /&gt;
export ISE_PLATFORM=macosx-ppc (or macosx-x86)&lt;br /&gt;
export ISE_PROJECTS=$HOME&lt;br /&gt;
export ES_PATH=$ISE_EIFFEL/studio/spec/$ISE_PLATFORM/bin&lt;br /&gt;
export PATH=$ES_PATH:$PATH&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The latest release of EiffelStudio isn't available yet via MacPorts===&lt;br /&gt;
&lt;br /&gt;
MacPorts installs a particular version of EiffelStudio by following the rules defined in a '''Portfile'''. For example, http://trac.macports.org/browser/trunk/dports/lang/eiffelstudio68/Portfile is the Portfile for EiffelStudio 6.8. Someone has to write this file and upload it, but they might not have done so yet. You could make enquiries about when it will be available, but if you want to get the latest urgently it isn't hard to write your own Portfile and run it locally. Here's how.&lt;br /&gt;
&lt;br /&gt;
http://guide.macports.org/#development.local-repositories explains how to do it.&lt;br /&gt;
# Go to https://sourceforge.net/projects/eiffelstudio/files and download the relevant PorterPackage file.&lt;br /&gt;
# Run '''openssl''' to find out the '''checksum''' of the PorterPackage file. E.g., for EiffelStudio 7.1 the command is '''openssl rmd160 ~/Downloads/PorterPackage_88986_gpl.tar'''.&lt;br /&gt;
# Open /opt/local/etc/macports/sources.conf in a text editor (with super user privileges). Insert a line as explained on http://guide.macports.org, e.g., file:///Applications/MacPorts/ports&lt;br /&gt;
# Create the Portfile in a text editor, e.g., file:///Applications/MacPorts/ports/lang/eiffelstudio71/Portfile&lt;br /&gt;
#* Copy the contents of the most recently available EiffelStudio Portfile (e.g., from http://trac.macports.org/browser/trunk/dports/lang/eiffelstudio68/Portfile) into your Portfile.&lt;br /&gt;
#* Correct the '''name''', '''minor_version''' and '''version'''.&lt;br /&gt;
#* Make sure that the '''distname''' will resolve to the current PorterPackage file name that you see on https://sourceforge.net/projects/eiffelstudio/files&lt;br /&gt;
#* Set the first '''checksums''' to the value that you got earlier from running openssl.&lt;br /&gt;
#* You've finished writing your Portfile. Save it!&lt;br /&gt;
# Go to the ports directory, e.g., cd /Applications/MacPorts/ports&lt;br /&gt;
# sudo portindex&lt;br /&gt;
# You should now be able to install in the usual way, e.g., sudo port install eiffelstudio71&lt;br /&gt;
&lt;br /&gt;
==Hints==&lt;br /&gt;
* Pick and Drop works with Apple-key + mouse click.&lt;br /&gt;
* To set up the correct (default) browsers use &amp;quot;open&amp;quot; as your command-line browser in Tools&amp;gt;Preferences...&lt;br /&gt;
* The F10 and F11 debugging shortcuts conflict with the standard Exposé keys. Here are some workarounds:&lt;br /&gt;
** Use the toolbar instead.&lt;br /&gt;
** Reassign these shortcuts in EiffelStudio (Tools&amp;gt;Preferences).&lt;br /&gt;
** Reassign the Exposé keys in System Preferences.&lt;br /&gt;
* The version of '''X11 installed with Mac OS X Leopard 10.5.0 and 10.5.1 does not work'''. The 10.5.2 and later updates are probably ok, however, but if you're having problems have a look at http://trac.macosforge.org/projects/xquartz. For more details, see http://www.eiffelroom.com/blog/paulbates/a_little_help_for_mac_users which pre-dates the release of 10.5.2.&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=RosettaCode_Monty_Hall&amp;diff=14536</id>
		<title>RosettaCode Monty Hall</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=RosettaCode_Monty_Hall&amp;diff=14536"/>
				<updated>2012-08-12T02:40:09Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: /* Eiffel code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Rosetta Code]]&lt;br /&gt;
[[Category:Flash Code ]]&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
Statement of the Monty Hall problem on RosettaCode: [http://rosettacode.org/wiki/Monty_Hall_problem here].&lt;br /&gt;
&amp;lt;br&amp;gt;Deadline for adding to RosettaCode page: 31 Aug 2012; submitter:&lt;br /&gt;
&lt;br /&gt;
==Eiffel code==&lt;br /&gt;
&lt;br /&gt;
Here's a candidate implementation. This compiles and runs, producing output similar to this:&lt;br /&gt;
&lt;br /&gt;
Staying wins 333504 times.&lt;br /&gt;
&lt;br /&gt;
Switching wins 666496 times.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;e&amp;gt;&lt;br /&gt;
class&lt;br /&gt;
	MONTY_HALL&lt;br /&gt;
&lt;br /&gt;
create&lt;br /&gt;
	make&lt;br /&gt;
&lt;br /&gt;
feature {NONE} -- Initialization&lt;br /&gt;
&lt;br /&gt;
	make&lt;br /&gt;
		local&lt;br /&gt;
			games_count: INTEGER&lt;br /&gt;
		do&lt;br /&gt;
			create random_generator.make&lt;br /&gt;
			games_count := 1000000&lt;br /&gt;
&lt;br /&gt;
			across 1 |..| games_count as game loop&lt;br /&gt;
				play&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			print (&amp;quot;Staying wins &amp;quot; + staying_wins.out + &amp;quot; times.%N&amp;quot;)&lt;br /&gt;
			print (&amp;quot;Switching wins &amp;quot; + (games_count - staying_wins).out + &amp;quot; times.%N&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
feature -- Commands&lt;br /&gt;
&lt;br /&gt;
	play&lt;br /&gt;
		local&lt;br /&gt;
			doors: ARRAYED_LIST [BOOLEAN]&lt;br /&gt;
			chosen, shown: INTEGER&lt;br /&gt;
		do&lt;br /&gt;
			create doors.make_filled (Door_count)	-- False is a goat, True is a car&lt;br /&gt;
			doors [next_random_door] := True	-- Put a car behind a random door&lt;br /&gt;
 			chosen := next_random_door	-- Pick a door, any door&lt;br /&gt;
&lt;br /&gt;
			-- Monty selects a door which is neither the winner nor the choice&lt;br /&gt;
			from&lt;br /&gt;
				shown := next_random_door&lt;br /&gt;
			until&lt;br /&gt;
				shown /= chosen and not doors [shown]&lt;br /&gt;
			loop&lt;br /&gt;
				shown := next_random_door&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if doors [chosen] then	-- If you would have won by staying, count it&lt;br /&gt;
				staying_wins := staying_wins + 1&lt;br /&gt;
			end&lt;br /&gt;
		ensure&lt;br /&gt;
			staying_wins_valid: staying_wins = old staying_wins or staying_wins = old staying_wins + 1&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
feature {NONE} -- Implementation&lt;br /&gt;
&lt;br /&gt;
	Door_count: INTEGER = 3&lt;br /&gt;
			-- The total number of doors.&lt;br /&gt;
&lt;br /&gt;
	staying_wins: INTEGER&lt;br /&gt;
			-- The number of times that the strategy of staying would win.&lt;br /&gt;
&lt;br /&gt;
	random_generator: RANDOM&lt;br /&gt;
			-- A random number generator for selecting doors.&lt;br /&gt;
&lt;br /&gt;
	next_random_door: INTEGER&lt;br /&gt;
			-- A door chosen at random.&lt;br /&gt;
		do&lt;br /&gt;
			random_generator.forth&lt;br /&gt;
			Result := random_generator.item \\ Door_count + 1&lt;br /&gt;
		ensure&lt;br /&gt;
			valid_door: Result &amp;gt;= 1 and Result &amp;lt;= Door_count&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/e&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Comments==&lt;br /&gt;
&lt;br /&gt;
Note that the implementations in many other languages maintain a separate variable to count the number of switch wins. They calculate whether switching wins at each step via some funky logic that relies on zero-based array indexing, which would be inconvenient in Eiffel. But we don't need to do that at all anyway, because calculating it at each step is completely redundant: we can just do a final subtraction at the end, right?&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=RosettaCode_Monty_Hall&amp;diff=14535</id>
		<title>RosettaCode Monty Hall</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=RosettaCode_Monty_Hall&amp;diff=14535"/>
				<updated>2012-08-12T02:38:06Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: Monty Hall implementation that compiles and runs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Rosetta Code]]&lt;br /&gt;
[[Category:Flash Code ]]&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
Statement of the Monty Hall problem on RosettaCode: [http://rosettacode.org/wiki/Monty_Hall_problem here].&lt;br /&gt;
&amp;lt;br&amp;gt;Deadline for adding to RosettaCode page: 31 Aug 2012; submitter:&lt;br /&gt;
&lt;br /&gt;
==Eiffel code==&lt;br /&gt;
&lt;br /&gt;
Here's a candidate implementation. This compiles and runs, producing output similar to this:&lt;br /&gt;
&lt;br /&gt;
Staying wins 333504 times.&lt;br /&gt;
Switching wins 666496 times.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;e&amp;gt;&lt;br /&gt;
class&lt;br /&gt;
	MONTY_HALL&lt;br /&gt;
&lt;br /&gt;
create&lt;br /&gt;
	make&lt;br /&gt;
&lt;br /&gt;
feature {NONE} -- Initialization&lt;br /&gt;
&lt;br /&gt;
	make&lt;br /&gt;
		local&lt;br /&gt;
			games_count: INTEGER&lt;br /&gt;
		do&lt;br /&gt;
			create random_generator.make&lt;br /&gt;
			games_count := 1000000&lt;br /&gt;
&lt;br /&gt;
			across 1 |..| games_count as game loop&lt;br /&gt;
				play&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			print (&amp;quot;Staying wins &amp;quot; + staying_wins.out + &amp;quot; times.%N&amp;quot;)&lt;br /&gt;
			print (&amp;quot;Switching wins &amp;quot; + (games_count - staying_wins).out + &amp;quot; times.%N&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
feature -- Commands&lt;br /&gt;
&lt;br /&gt;
	play&lt;br /&gt;
		local&lt;br /&gt;
			doors: ARRAYED_LIST [BOOLEAN]&lt;br /&gt;
			chosen, shown: INTEGER&lt;br /&gt;
		do&lt;br /&gt;
			create doors.make_filled (Door_count)	-- False is a goat, True is a car&lt;br /&gt;
			doors [next_random_door] := True	-- Put a car behind a random door&lt;br /&gt;
 			chosen := next_random_door	-- Pick a door, any door&lt;br /&gt;
&lt;br /&gt;
			-- Monty selects a door which is neither the winner nor the choice&lt;br /&gt;
			from&lt;br /&gt;
				shown := next_random_door&lt;br /&gt;
			until&lt;br /&gt;
				shown /= chosen and not doors [shown]&lt;br /&gt;
			loop&lt;br /&gt;
				shown := next_random_door&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if doors [chosen] then	-- If you would have won by staying, count it&lt;br /&gt;
				staying_wins := staying_wins + 1&lt;br /&gt;
			end&lt;br /&gt;
		ensure&lt;br /&gt;
			staying_wins_valid: staying_wins = old staying_wins or staying_wins = old staying_wins + 1&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
feature {NONE} -- Implementation&lt;br /&gt;
&lt;br /&gt;
	Door_count: INTEGER = 3&lt;br /&gt;
			-- The total number of doors.&lt;br /&gt;
&lt;br /&gt;
	staying_wins: INTEGER&lt;br /&gt;
			-- The number of times that the strategy of staying would win.&lt;br /&gt;
&lt;br /&gt;
	random_generator: RANDOM&lt;br /&gt;
			-- A random number generator for selecting doors.&lt;br /&gt;
&lt;br /&gt;
	next_random_door: INTEGER&lt;br /&gt;
			-- A door chosen at random.&lt;br /&gt;
		do&lt;br /&gt;
			random_generator.forth&lt;br /&gt;
			Result := random_generator.item \\ Door_count + 1&lt;br /&gt;
		ensure&lt;br /&gt;
			valid_door: Result &amp;gt;= 1 and Result &amp;lt;= Door_count&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/e&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Comments==&lt;br /&gt;
&lt;br /&gt;
Note that the implementations in many other languages maintain a separate variable to count the number of switch wins. They calculate whether switching wins at each step via some funky logic that relies on zero-based array indexing, which would be inconvenient in Eiffel. But we don't need to do that at all anyway, because calculating it at each step is completely redundant: we can just do a final subtraction at the end, right?&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=RosettaCode_Monty_Hall&amp;diff=14534</id>
		<title>RosettaCode Monty Hall</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=RosettaCode_Monty_Hall&amp;diff=14534"/>
				<updated>2012-08-10T00:15:42Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Rosetta Code]]&lt;br /&gt;
[[Category:Flash Code ]]&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
Statement of the Monty Hall problem on RosettaCode: [http://rosettacode.org/wiki/Monty_Hall_problem here].&lt;br /&gt;
&amp;lt;br&amp;gt;Deadline for adding to RosettaCode page: 31 Aug 2012; submitter:&lt;br /&gt;
&lt;br /&gt;
==Eiffel code==&lt;br /&gt;
&lt;br /&gt;
Here's an initial implementation, just to get things started. I just typed this straight into the wiki, so it might not even compile.&lt;br /&gt;
&lt;br /&gt;
Please feel free to edit this in place, I won't be offended.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;e&amp;gt;&lt;br /&gt;
class MONTY_HALL&lt;br /&gt;
&lt;br /&gt;
feature&lt;br /&gt;
&lt;br /&gt;
	play&lt;br /&gt;
		local&lt;br /&gt;
			games: INTEGER&lt;br /&gt;
			random: RANDOM&lt;br /&gt;
			doors: ARRAYED_LIST [BOOLEAN]&lt;br /&gt;
			chosen, shown: INTEGER&lt;br /&gt;
			stayWins: INTEGER&lt;br /&gt;
		do&lt;br /&gt;
			games := 1000000&lt;br /&gt;
			create random.make&lt;br /&gt;
&lt;br /&gt;
			across 1 |..| games as plays loop&lt;br /&gt;
				create doors.make_filled (3)	-- False is a goat, True is a car&lt;br /&gt;
				random.forth&lt;br /&gt;
				doors [random.item \\ 3 + 1] := True	-- Put a car behind a random door&lt;br /&gt;
 &lt;br /&gt;
				random.forth&lt;br /&gt;
				chosen := random.item \\ 3 + 1	-- Pick a door, any door&lt;br /&gt;
 &lt;br /&gt;
				from shown := chosen until shown /= chosen and not doors [shown] loop&lt;br /&gt;
					random.forth&lt;br /&gt;
					shown := random.item \\ 3 + 1&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				if doors [chosen] then	-- If you would have won by staying, count it&lt;br /&gt;
					stay_wins := stay_wins + 1&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			out (&amp;quot;Staying wins &amp;quot; + stay_wins + &amp;quot; times.%N&amp;quot;)&lt;br /&gt;
			out (&amp;quot;Switching wins &amp;quot; + games - stay_wins + &amp;quot; times.%N&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/e&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Comments==&lt;br /&gt;
&lt;br /&gt;
Note that the implementations in many other languages maintain a separate variable to count the number of switch wins. They calculate whether switching wins at each step via some funky logic that relies on zero-based array indexing, which would be inconvenient in Eiffel. But we don't need to do that at all anyway, because calculating it at each step is completely redundant: we can just do a final subtraction at the end, right?&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=RosettaCode_Monty_Hall&amp;diff=14533</id>
		<title>RosettaCode Monty Hall</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=RosettaCode_Monty_Hall&amp;diff=14533"/>
				<updated>2012-08-10T00:14:33Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: /* Eiffel code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Rosetta Code]]&lt;br /&gt;
[[Category:Flash Code ]]&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
Statement of the Monty Hall problem on RosettaCode: [http://rosettacode.org/wiki/Monty_Hall_problem here].&lt;br /&gt;
&amp;lt;br&amp;gt;Deadline for adding to RosettaCode page: 31 Aug 2012; submitter:&lt;br /&gt;
&lt;br /&gt;
==Eiffel code==&lt;br /&gt;
&lt;br /&gt;
Here's an initial implementation, just to get things started. I just typed this straight into the wiki, so it might not even compile.&lt;br /&gt;
&lt;br /&gt;
Please feel free to edit this in place, I won't be offended.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;e&amp;gt;&lt;br /&gt;
class MONTY_HALL&lt;br /&gt;
&lt;br /&gt;
feature&lt;br /&gt;
&lt;br /&gt;
	play&lt;br /&gt;
		local&lt;br /&gt;
			games: INTEGER&lt;br /&gt;
			random: RANDOM&lt;br /&gt;
			doors: ARRAYED_LIST [BOOLEAN]&lt;br /&gt;
			chosen, shown: INTEGER&lt;br /&gt;
			stayWins: INTEGER&lt;br /&gt;
		do&lt;br /&gt;
			games := 1000000&lt;br /&gt;
			create random.make&lt;br /&gt;
&lt;br /&gt;
			across 1 |..| games as plays loop&lt;br /&gt;
				create doors.make_filled (3)	-- False is a goat, True is a car&lt;br /&gt;
				random.forth&lt;br /&gt;
				doors [random.item \\ 3 + 1] := True	-- Put a car behind a random door&lt;br /&gt;
 &lt;br /&gt;
				random.forth&lt;br /&gt;
				chosen := random.item \\ 3 + 1	-- Pick a door, any door&lt;br /&gt;
 &lt;br /&gt;
				from shown := chosen until shown /= chosen and not doors [shown] loop&lt;br /&gt;
					random.forth&lt;br /&gt;
					shown := random.item \\ 3 + 1&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				if doors [chosen] then	-- If you would have won by staying, count it&lt;br /&gt;
					stay_wins := stay_wins + 1&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			out (&amp;quot;Staying wins &amp;quot; + stay_wins + &amp;quot; times.%N&amp;quot;)&lt;br /&gt;
			out (&amp;quot;Switching wins &amp;quot; + games - stay_wins + &amp;quot; times.%N&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/e&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the implementations in many other languages maintain a separate variable to count the number of switch wins. They calculate whether switching wins at each step via some funky logic that relies on zero-based array indexing, which would be inconvenient in Eiffel. But we don't need to do that at all anyway, because calculating it at each step is completely redundant: we can just do a final subtraction at the end, right?&lt;br /&gt;
&lt;br /&gt;
==Comments==&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=EiffelOnMac&amp;diff=14516</id>
		<title>EiffelOnMac</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=EiffelOnMac&amp;diff=14516"/>
				<updated>2012-07-16T12:53:00Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: /* The latest release of EiffelStudio isn't available yet via MacPorts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:EiffelStudio]]&lt;br /&gt;
[[Category:Macintosh]]&lt;br /&gt;
&lt;br /&gt;
This page gives you an overview about how to get EiffelStudio running on your Mac (Leopard, Snow Leopard or Lion).&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
&lt;br /&gt;
*You will need to install '''XCode''' from your OSX-Installation disk, or download it from Apple's developer web site. Make sure that you install the development tools with Xcode. You don't need to install '''X11''' if you are using OSX &amp;gt;=10.5, otherwise just install it from your OSX-Installation disk.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Using MacPorts ===&lt;br /&gt;
The following should work on Mac OS X 10.4 and later.&lt;br /&gt;
&lt;br /&gt;
MacPorts is a tool that allows you to use many Unix applications on the Mac. We have created a package in the MacPorts repository that allows you to to install Eiffel Studio with all dependencies in a convenient way. First, install [http://trac.macosforge.org/projects/macports/wiki/InstallingMacPorts MacPorts].&lt;br /&gt;
&lt;br /&gt;
Now simply type (from a bash terminal):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port install eiffelstudioXX&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
where 'XX' stands for the EiffelStudio version you want to install (for example eiffelstudio70) and after some time (compiling on a 2.4 GHz Intel Mac takes about an hour) you're ready to go. &lt;br /&gt;
&lt;br /&gt;
Older development packages are available under the name eiffelstudio65, etc. All packages can be installed simultaneously because they are located in different directories.&lt;br /&gt;
&lt;br /&gt;
When a new release of the same version EiffelStudio becomes available, you can upgrade like so:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port selfupdate&lt;br /&gt;
sudo port upgrade outdated&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Warning|gtk2 version 2_24_5_0+x11 breaks EiffelStudio68 (that depends on it). A fix is to install gtk2 2_24_4_0+x11 (the previous minor version), or to deactivate the former and activate the latter if you already have both installed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port deactivate gtk2 @2_24_5_0+x11&lt;br /&gt;
sudo port activate gtk2 @2_24_4_0+x11&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Using binary packages ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|This method does not work at the moment. Please install EiffelStudio using MacPorts.&amp;lt;br/&amp;gt;See [[Talk:EiffelOnMac|Discussion]] for more information.}}&lt;br /&gt;
&lt;br /&gt;
# Install the latest version of [http://xquartz.macosforge.org/trac/wiki/WikiStart XQuartz]: [http://xquartz.macosforge.org/downloads/X11-2.4.0.dmg download]&lt;br /&gt;
# Install the EiffelStudio 6.4 Mac package: [http://dfurrer.com/files/eiffelstudio64.dmg download]&lt;br /&gt;
&lt;br /&gt;
This installer was created using MacPorts as well as using the mpkg command. For more information take a look at the [http://guide.macports.org MacPorts Guide]&lt;br /&gt;
&lt;br /&gt;
== Starting EiffelStudio ==&lt;br /&gt;
&lt;br /&gt;
Simply navigate to /Applications/MacPorts/Eiffel&amp;lt;nn&amp;gt; and double click the EiffelStudio icon.&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can also start EiffelStudio from the command line by entering the command 'estudio' or use the command-line eiffel compiler 'ec'.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
===I get a crash with a Permission denied: Operating system error, how do I fix it?===&lt;br /&gt;
&lt;br /&gt;
Delete the .ec directory in your home directory.&lt;br /&gt;
&lt;br /&gt;
===I get an error with precompiles, why is that ?===&lt;br /&gt;
&lt;br /&gt;
Precompiles did not work on the Mac before EiffelStudio 6.4 due to a limitation of the linker. To work around this issue you have to disable the precompiles with those versions or upgrade to a recent version of EiffelStudio.&lt;br /&gt;
&lt;br /&gt;
{{Note|When you create a project, EiffelStudio will ask if you want to perform precompiles – say no. Then disable the precompiles for this project through the Project&amp;gt;Project menu. In the 'Groups&amp;gt;Precompile' section, remove all precompiles (eg., base_pre). Select the 'base_pre' precompile and click the red cross delete tool at the top of the window.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Note|Precompiling the Eiffel libraries after installing the Port is possible, there are security policies to take into account. The Port installs EiffelStudio under the system's ''/Application/MacPorts'' directory and '''not''' the user ''~/Application/MacPorts''. Due of this, EiffelStudio must be run as a super user and the precompiles build using the '''Tools''' &amp;gt; '''Precompile Wizard''' option. Alternatively, alter the base installation path when requesting to install the Port.}}&lt;br /&gt;
&lt;br /&gt;
=== How can I make EiffelStudio on the Mac look nicer? ===&lt;br /&gt;
* From macports, install the gtk2 (if not already installed) and gtk-chtheme packets. Then run gtk-chtheme and you get a nice GUI to choose your theme. Additional GTK themes can be put in  /opt/local/share/themes/ (There a thousands of them on the web, for example here : [http://art.gnome.org/themes/gtk2 http://art.gnome.org/themes/gtk2])&lt;br /&gt;
&lt;br /&gt;
=== Typing ec or estudio on the command line doesn't work ===&lt;br /&gt;
To run the '''ec''' compiler from your shell, set up variables similar to these (e.g. in ~/.profile):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Setting variables for EiffelStudio.&lt;br /&gt;
export ISE_EIFFEL=/Applications/MacPorts/Eiffel66&lt;br /&gt;
export ISE_PLATFORM=macosx-ppc (or macosx-x86)&lt;br /&gt;
export ISE_PROJECTS=$HOME&lt;br /&gt;
export ES_PATH=$ISE_EIFFEL/studio/spec/$ISE_PLATFORM/bin&lt;br /&gt;
export PATH=$ES_PATH:$PATH&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The latest release of EiffelStudio isn't available yet via MacPorts===&lt;br /&gt;
&lt;br /&gt;
MacPorts installs a particular version of EiffelStudio by following the rules defined in a '''Portfile'''. For example, http://trac.macports.org/browser/trunk/dports/lang/eiffelstudio68/Portfile is the Portfile for EiffelStudio 6.8. Someone has to write this file and upload it, but they might not have done so yet. You could make enquiries about when it will be available, but if you want to get the latest urgently it isn't hard to write your own Portfile and run it locally. Here's how.&lt;br /&gt;
&lt;br /&gt;
http://guide.macports.org/#development.local-repositories explains how to do it.&lt;br /&gt;
# Go to https://sourceforge.net/projects/eiffelstudio/files and download the relevant PorterPackage file.&lt;br /&gt;
# Run '''openssl''' to find out the '''checksum''' of the PorterPackage file. E.g., for EiffelStudio 7.1 the command is '''openssl rmd160 ~/Downloads/PorterPackage_88986_gpl.tar'''.&lt;br /&gt;
# Open /opt/local/etc/macports/sources.conf in a text editor (with super user privileges). Insert a line as explained on http://guide.macports.org, e.g., file:///Applications/MacPorts/ports&lt;br /&gt;
# Create the Portfile in a text editor, e.g., file:///Applications/MacPorts/ports/lang/eiffelstudio71/Portfile&lt;br /&gt;
#* Copy the contents of the most recently available EiffelStudio Portfile (e.g., from http://trac.macports.org/browser/trunk/dports/lang/eiffelstudio68/Portfile) into your Portfile.&lt;br /&gt;
#* Correct the '''name''', '''minor_version''' and '''version'''.&lt;br /&gt;
#* Make sure that the '''distname''' will resolve to the current PorterPackage file name that you see on https://sourceforge.net/projects/eiffelstudio/files&lt;br /&gt;
#* Set the first '''checksums''' to the value that you got earlier from running openssl.&lt;br /&gt;
#* You've finished writing your Portfile. Save it!&lt;br /&gt;
# Go to the ports directory, e.g., cd /Applications/MacPorts/ports&lt;br /&gt;
# sudo portindex&lt;br /&gt;
# You should now be able to install in the usual way, e.g., sudo port install eiffelstudio71&lt;br /&gt;
&lt;br /&gt;
==Hints==&lt;br /&gt;
* Pick and Drop works with Apple-key + mouse click.&lt;br /&gt;
* To set up the correct (default) browsers use &amp;quot;open&amp;quot; as your command-line browser in Tools&amp;gt;Preferences...&lt;br /&gt;
* The F10 and F11 debugging shortcuts conflict with the standard Exposé keys. Here are some workarounds:&lt;br /&gt;
** Use the toolbar instead.&lt;br /&gt;
** Reassign these shortcuts in EiffelStudio (Tools&amp;gt;Preferences).&lt;br /&gt;
** Reassign the Exposé keys in System Preferences.&lt;br /&gt;
* The version of '''X11 installed with Mac OS X Leopard 10.5.0 and 10.5.1 does not work'''. The 10.5.2 and later updates are probably ok, however, but if you're having problems have a look at http://trac.macosforge.org/projects/xquartz. For more details, see http://www.eiffelroom.com/blog/paulbates/a_little_help_for_mac_users which pre-dates the release of 10.5.2.&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=EiffelOnMac&amp;diff=14515</id>
		<title>EiffelOnMac</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=EiffelOnMac&amp;diff=14515"/>
				<updated>2012-07-16T12:45:45Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: FAQ for installing on Mac when the latest port isn't available yet&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:EiffelStudio]]&lt;br /&gt;
[[Category:Macintosh]]&lt;br /&gt;
&lt;br /&gt;
This page gives you an overview about how to get EiffelStudio running on your Mac (Leopard, Snow Leopard or Lion).&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
&lt;br /&gt;
*You will need to install '''XCode''' from your OSX-Installation disk, or download it from Apple's developer web site. Make sure that you install the development tools with Xcode. You don't need to install '''X11''' if you are using OSX &amp;gt;=10.5, otherwise just install it from your OSX-Installation disk.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Using MacPorts ===&lt;br /&gt;
The following should work on Mac OS X 10.4 and later.&lt;br /&gt;
&lt;br /&gt;
MacPorts is a tool that allows you to use many Unix applications on the Mac. We have created a package in the MacPorts repository that allows you to to install Eiffel Studio with all dependencies in a convenient way. First, install [http://trac.macosforge.org/projects/macports/wiki/InstallingMacPorts MacPorts].&lt;br /&gt;
&lt;br /&gt;
Now simply type (from a bash terminal):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port install eiffelstudioXX&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
where 'XX' stands for the EiffelStudio version you want to install (for example eiffelstudio70) and after some time (compiling on a 2.4 GHz Intel Mac takes about an hour) you're ready to go. &lt;br /&gt;
&lt;br /&gt;
Older development packages are available under the name eiffelstudio65, etc. All packages can be installed simultaneously because they are located in different directories.&lt;br /&gt;
&lt;br /&gt;
When a new release of the same version EiffelStudio becomes available, you can upgrade like so:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port selfupdate&lt;br /&gt;
sudo port upgrade outdated&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Warning|gtk2 version 2_24_5_0+x11 breaks EiffelStudio68 (that depends on it). A fix is to install gtk2 2_24_4_0+x11 (the previous minor version), or to deactivate the former and activate the latter if you already have both installed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port deactivate gtk2 @2_24_5_0+x11&lt;br /&gt;
sudo port activate gtk2 @2_24_4_0+x11&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Using binary packages ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|This method does not work at the moment. Please install EiffelStudio using MacPorts.&amp;lt;br/&amp;gt;See [[Talk:EiffelOnMac|Discussion]] for more information.}}&lt;br /&gt;
&lt;br /&gt;
# Install the latest version of [http://xquartz.macosforge.org/trac/wiki/WikiStart XQuartz]: [http://xquartz.macosforge.org/downloads/X11-2.4.0.dmg download]&lt;br /&gt;
# Install the EiffelStudio 6.4 Mac package: [http://dfurrer.com/files/eiffelstudio64.dmg download]&lt;br /&gt;
&lt;br /&gt;
This installer was created using MacPorts as well as using the mpkg command. For more information take a look at the [http://guide.macports.org MacPorts Guide]&lt;br /&gt;
&lt;br /&gt;
== Starting EiffelStudio ==&lt;br /&gt;
&lt;br /&gt;
Simply navigate to /Applications/MacPorts/Eiffel&amp;lt;nn&amp;gt; and double click the EiffelStudio icon.&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can also start EiffelStudio from the command line by entering the command 'estudio' or use the command-line eiffel compiler 'ec'.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
===I get a crash with a Permission denied: Operating system error, how do I fix it?===&lt;br /&gt;
&lt;br /&gt;
Delete the .ec directory in your home directory.&lt;br /&gt;
&lt;br /&gt;
===I get an error with precompiles, why is that ?===&lt;br /&gt;
&lt;br /&gt;
Precompiles did not work on the Mac before EiffelStudio 6.4 due to a limitation of the linker. To work around this issue you have to disable the precompiles with those versions or upgrade to a recent version of EiffelStudio.&lt;br /&gt;
&lt;br /&gt;
{{Note|When you create a project, EiffelStudio will ask if you want to perform precompiles – say no. Then disable the precompiles for this project through the Project&amp;gt;Project menu. In the 'Groups&amp;gt;Precompile' section, remove all precompiles (eg., base_pre). Select the 'base_pre' precompile and click the red cross delete tool at the top of the window.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Note|Precompiling the Eiffel libraries after installing the Port is possible, there are security policies to take into account. The Port installs EiffelStudio under the system's ''/Application/MacPorts'' directory and '''not''' the user ''~/Application/MacPorts''. Due of this, EiffelStudio must be run as a super user and the precompiles build using the '''Tools''' &amp;gt; '''Precompile Wizard''' option. Alternatively, alter the base installation path when requesting to install the Port.}}&lt;br /&gt;
&lt;br /&gt;
=== How can I make EiffelStudio on the Mac look nicer? ===&lt;br /&gt;
* From macports, install the gtk2 (if not already installed) and gtk-chtheme packets. Then run gtk-chtheme and you get a nice GUI to choose your theme. Additional GTK themes can be put in  /opt/local/share/themes/ (There a thousands of them on the web, for example here : [http://art.gnome.org/themes/gtk2 http://art.gnome.org/themes/gtk2])&lt;br /&gt;
&lt;br /&gt;
=== Typing ec or estudio on the command line doesn't work ===&lt;br /&gt;
To run the '''ec''' compiler from your shell, set up variables similar to these (e.g. in ~/.profile):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Setting variables for EiffelStudio.&lt;br /&gt;
export ISE_EIFFEL=/Applications/MacPorts/Eiffel66&lt;br /&gt;
export ISE_PLATFORM=macosx-ppc (or macosx-x86)&lt;br /&gt;
export ISE_PROJECTS=$HOME&lt;br /&gt;
export ES_PATH=$ISE_EIFFEL/studio/spec/$ISE_PLATFORM/bin&lt;br /&gt;
export PATH=$ES_PATH:$PATH&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The latest release of EiffelStudio isn't available yet via MacPorts===&lt;br /&gt;
&lt;br /&gt;
MacPorts installs a particular version of EiffelStudio by following the rules defined in a '''Portfile'''. For example, http://trac.macports.org/browser/trunk/dports/lang/eiffelstudio68/Portfile is the Portfile for EiffelStudio 6.8. Someone has to write this file and upload it, but they might not have done so yet. You could make enquiries about when it will be available, but if you want to get the latest urgently it isn't hard to write your own Portfile and run it locally. Here's how.&lt;br /&gt;
&lt;br /&gt;
http://guide.macports.org/#development.local-repositories explains how to do it.&lt;br /&gt;
# Go to https://sourceforge.net/projects/eiffelstudio/files and download the relevant PorterPackage file.&lt;br /&gt;
# Run '''openssl''' to find out the '''checksum''' of the PorterPackage file. E.g., for EiffelStudio 7.1 the command is '''openssl rmd160 ~/Downloads/PorterPackage_88986_gpl.tar'''.&lt;br /&gt;
# sudo open -e /opt/local/etc/macports/sources.conf&lt;br /&gt;
# Insert a line as explained on that page, e.g., file:///Applications/MacPorts/ports&lt;br /&gt;
# Create the Portfile in a text editor, e.g., file:///Applications/MacPorts/ports/lang/eiffelstudio71/Portfile&lt;br /&gt;
# Copy the contents of the most recently available EiffelStudio Portfile, e.g. from http://trac.macports.org/browser/trunk/dports/lang/eiffelstudio68/Portfile&lt;br /&gt;
# In your Portfile:&lt;br /&gt;
#* Correct the '''name''', '''minor_version''' and '''version'''&lt;br /&gt;
#* Make sure that the '''distname''' will resolve to the current PorterPackage file name that you see on https://sourceforge.net/projects/eiffelstudio/files&lt;br /&gt;
#* Set the first '''checksums''' to the value that you got earlier from running openssl.&lt;br /&gt;
# Go to the ports directory, e.g., cd /Applications/MacPorts/ports&lt;br /&gt;
# sudo portindex&lt;br /&gt;
# You should now be able to install in the usual way, e.g., sudo port install eiffelstudio71&lt;br /&gt;
&lt;br /&gt;
==Hints==&lt;br /&gt;
* Pick and Drop works with Apple-key + mouse click.&lt;br /&gt;
* To set up the correct (default) browsers use &amp;quot;open&amp;quot; as your command-line browser in Tools&amp;gt;Preferences...&lt;br /&gt;
* The F10 and F11 debugging shortcuts conflict with the standard Exposé keys. Here are some workarounds:&lt;br /&gt;
** Use the toolbar instead.&lt;br /&gt;
** Reassign these shortcuts in EiffelStudio (Tools&amp;gt;Preferences).&lt;br /&gt;
** Reassign the Exposé keys in System Preferences.&lt;br /&gt;
* The version of '''X11 installed with Mac OS X Leopard 10.5.0 and 10.5.1 does not work'''. The 10.5.2 and later updates are probably ok, however, but if you're having problems have a look at http://trac.macosforge.org/projects/xquartz. For more details, see http://www.eiffelroom.com/blog/paulbates/a_little_help_for_mac_users which pre-dates the release of 10.5.2.&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=EiffelOnMac&amp;diff=14500</id>
		<title>EiffelOnMac</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=EiffelOnMac&amp;diff=14500"/>
				<updated>2012-06-17T13:20:14Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:EiffelStudio]]&lt;br /&gt;
[[Category:Macintosh]]&lt;br /&gt;
&lt;br /&gt;
This page gives you an overview about how to get EiffelStudio running on your Mac (Leopard, Snow Leopard or Lion).&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
&lt;br /&gt;
*You will need to install '''XCode''' from your OSX-Installation disk, or download it from Apple's developer web site. Make sure that you install the development tools with Xcode. You don't need to install '''X11''' if you are using OSX &amp;gt;=10.5, otherwise just install it from your OSX-Installation disk.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Using MacPorts ===&lt;br /&gt;
The following should work on Mac OS X 10.4 and later.&lt;br /&gt;
&lt;br /&gt;
MacPorts is a tool that allows you to use many Unix applications on the Mac. We have created a package in the MacPorts repository that allows you to to install Eiffel Studio with all dependencies in a convenient way. First, install [http://trac.macosforge.org/projects/macports/wiki/InstallingMacPorts MacPorts].&lt;br /&gt;
&lt;br /&gt;
Now simply type (from a bash terminal):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port install eiffelstudioXX&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
where 'XX' stands for the EiffelStudio version you want to install (for example eiffelstudio70) and after some time (compiling on a 2.4 GHz Intel Mac takes about an hour) you're ready to go. &lt;br /&gt;
&lt;br /&gt;
Older development packages are available under the name eiffelstudio65, etc. All packages can be installed simultaneously because they are located in different directories.&lt;br /&gt;
&lt;br /&gt;
When a new release of the same version EiffelStudio becomes available, you can upgrade like so:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port selfupdate&lt;br /&gt;
sudo port upgrade outdated&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Warning|gtk2 version 2_24_5_0+x11 breaks EiffelStudio68 (that depends on it). A fix is to install gtk2 2_24_4_0+x11 (the previous minor version), or to deactivate the former and activate the latter if you already have both installed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo port deactivate gtk2 @2_24_5_0+x11&lt;br /&gt;
sudo port activate gtk2 @2_24_4_0+x11&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Using binary packages ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|This method does not work at the moment. Please install EiffelStudio using MacPorts.&amp;lt;br/&amp;gt;See [[Talk:EiffelOnMac|Discussion]] for more information.}}&lt;br /&gt;
&lt;br /&gt;
# Install the latest version of [http://xquartz.macosforge.org/trac/wiki/WikiStart XQuartz]: [http://xquartz.macosforge.org/downloads/X11-2.4.0.dmg download]&lt;br /&gt;
# Install the EiffelStudio 6.4 Mac package: [http://dfurrer.com/files/eiffelstudio64.dmg download]&lt;br /&gt;
&lt;br /&gt;
This installer was created using MacPorts as well as using the mpkg command. For more information take a look at the [http://guide.macports.org MacPorts Guide]&lt;br /&gt;
&lt;br /&gt;
== Starting EiffelStudio ==&lt;br /&gt;
&lt;br /&gt;
Simply navigate to /Applications/MacPorts/Eiffel&amp;lt;nn&amp;gt; and double click the EiffelStudio icon.&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can also start EiffelStudio from the command line by entering the command 'estudio' or use the command-line eiffel compiler 'ec'.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
====I get a crash with a Permission denied: Operating system error, how do I fix it?====&lt;br /&gt;
&lt;br /&gt;
Delete the .ec directory in your home directory.&lt;br /&gt;
&lt;br /&gt;
====I get an error with precompiles, why is that ?====&lt;br /&gt;
&lt;br /&gt;
Precompiles did not work on the Mac before EiffelStudio 6.4 due to a limitation of the linker. To work around this issue you have to disable the precompiles with those versions or upgrade to a recent version of EiffelStudio.&lt;br /&gt;
&lt;br /&gt;
{{Note|When you create a project, EiffelStudio will ask if you want to perform precompiles – say no. Then disable the precompiles for this project through the Project&amp;gt;Project menu. In the 'Groups&amp;gt;Precompile' section, remove all precompiles (eg., base_pre). Select the 'base_pre' precompile and click the red cross delete tool at the top of the window.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Note|Precompiling the Eiffel libraries after installing the Port is possible, there are security policies to take into account. The Port installs EiffelStudio under the system's ''/Application/MacPorts'' directory and '''not''' the user ''~/Application/MacPorts''. Due of this, EiffelStudio must be run as a super user and the precompiles build using the '''Tools''' &amp;gt; '''Precompile Wizard''' option. Alternatively, alter the base installation path when requesting to install the Port.}}&lt;br /&gt;
&lt;br /&gt;
=== How can I make EiffelStudio on the Mac look nicer? ===&lt;br /&gt;
* From macports, install the gtk2 (if not already installed) and gtk-chtheme packets. Then run gtk-chtheme and you get a nice GUI to choose your theme. Additional GTK themes can be put in  /opt/local/share/themes/ (There a thousands of them on the web, for example here : [http://art.gnome.org/themes/gtk2 http://art.gnome.org/themes/gtk2])&lt;br /&gt;
&lt;br /&gt;
=== Typing ec or estudio on the command line doesn't work ===&lt;br /&gt;
To run the '''ec''' compiler from your shell, set up variables similar to these (e.g. in ~/.profile):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Setting variables for EiffelStudio.&lt;br /&gt;
export ISE_EIFFEL=/Applications/MacPorts/Eiffel66&lt;br /&gt;
export ISE_PLATFORM=macosx-ppc (or macosx-x86)&lt;br /&gt;
export ISE_PROJECTS=$HOME&lt;br /&gt;
export ES_PATH=$ISE_EIFFEL/studio/spec/$ISE_PLATFORM/bin&lt;br /&gt;
export PATH=$ES_PATH:$PATH&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Hints==&lt;br /&gt;
* Pick and Drop works with Apple-key + mouse click.&lt;br /&gt;
* To set up the correct (default) browsers use &amp;quot;open&amp;quot; as your command-line browser in Tools&amp;gt;Preferences...&lt;br /&gt;
* The F10 and F11 debugging shortcuts conflict with the standard Exposé keys. Here are some workarounds:&lt;br /&gt;
** Use the toolbar instead.&lt;br /&gt;
** Reassign these shortcuts in EiffelStudio (Tools&amp;gt;Preferences).&lt;br /&gt;
** Reassign the Exposé keys in System Preferences.&lt;br /&gt;
* The version of '''X11 installed with Mac OS X Leopard 10.5.0 and 10.5.1 does not work'''. The 10.5.2 and later updates are probably ok, however, but if you're having problems have a look at http://trac.macosforge.org/projects/xquartz. For more details, see http://www.eiffelroom.com/blog/paulbates/a_little_help_for_mac_users which pre-dates the release of 10.5.2.&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Talk:Eiffel_Language_Skins&amp;diff=14416</id>
		<title>Talk:Eiffel Language Skins</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Talk:Eiffel_Language_Skins&amp;diff=14416"/>
				<updated>2012-04-19T14:07:19Z</updated>
		
		<summary type="html">&lt;p&gt;Peter gummer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--[[User:Peter gummer|Peter gummer]] 13:44, 19 April 2012 (UTC) Under '''must-haves''' is listed &amp;quot;inherit keyword replaced by T1 : T2 as used in al C languages that support inheritance&amp;quot;. I disagree. C# (and maybe others) uses a colon like that, but Java does not: Java uses &amp;quot;extends&amp;quot;. I think the colon idea is more likely to confusion. I can't see Eiffel's &amp;quot;inherit&amp;quot; keyword causing any confusion at all. I think we should remove this; it's not a must-have; it's not even a desirable, it's an undesirable ;-)&lt;br /&gt;
&lt;br /&gt;
--[[User:Peter gummer|Peter gummer]] 13:57, 19 April 2012 (UTC) CamelCase is the convention for C# and Java, but there are plenty of popular languages out there that use underscores, similar to Eiffel. So I question whether this is needed.&lt;br /&gt;
&lt;br /&gt;
If we do decide to go for CamelCase, which variant? Java follows the Smalltalk convention that ClassesStartWithUpperCase and everything else starts with lower-case, but in C# public features start with upper-case too.&lt;br /&gt;
&lt;br /&gt;
The Eiffel convention that looks most alien is that CLASSES_SHOUT_AT_YOU. Java and some other languages have stupidly followed the C convention that constants are all upper-case (although C# doesn't do that, thank goodness), so Eiffel class names probably look like constants to a lot of people. But those upper-case class names look very weird even to C# programmers, so I would consider CamelCaseClassNames to be a must-have.&lt;br /&gt;
&lt;br /&gt;
--[[User:Peter gummer|Peter gummer]] 14:06, 19 April 2012 (UTC) I don't think multi-line comment delimiters /* */ are important. Single-line comments // are a trivial transform from Eiffel, easy to do and perfectly sufficient. Let's not aim for bells and whistles here ... we just need the minimum number of changes so that newcomers don't get turned off by their initial impression of what the language looks like. Let's try to keep the number of changes to a minimum.&lt;/div&gt;</summary>
		<author><name>Peter gummer</name></author>	</entry>

	</feed>