<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.liberty-eiffel.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ramack</id>
	<title>Liberty Eiffel Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.liberty-eiffel.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ramack"/>
	<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php/Special:Contributions/Ramack"/>
	<updated>2026-05-24T09:39:09Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.37.0</generator>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Versions_history&amp;diff=2773</id>
		<title>Versions history</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Versions_history&amp;diff=2773"/>
		<updated>2024-11-10T09:17:14Z</updated>

		<summary type="html">&lt;p&gt;Ramack: Ramack moved page Versions history to Release Notes (Versions history): Release Notes seems the more common name for this kind of info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Release Notes (Versions history)]]&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Release_Notes_(Versions_history)&amp;diff=2772</id>
		<title>Release Notes (Versions history)</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Release_Notes_(Versions_history)&amp;diff=2772"/>
		<updated>2024-11-10T09:17:13Z</updated>

		<summary type="html">&lt;p&gt;Ramack: Ramack moved page Versions history to Release Notes (Versions history): Release Notes seems the more common name for this kind of info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Releases]]&lt;br /&gt;
== Liberty Eiffel (latest release first) ==&lt;br /&gt;
For other upcoming releases see the [[upcoming release names|list of names]].&lt;br /&gt;
=== Curtiss (2024.dev, to be named after [https://en.wikipedia.org/wiki/Glenn_Curtiss Glenn Curtiss]) ===&lt;br /&gt;
* not yet released (see next section for current release notes)&lt;br /&gt;
* User-visible changes:&lt;br /&gt;
** added installation script:  [[Installing on Windows using the Tiny-C compiler]]&lt;br /&gt;
** added support for assign (note: it applies to the setter, while ISE version applies to the getter)&lt;br /&gt;
** redesign of eiffeldoc generated HTML to reduce its size dramatically&lt;br /&gt;
** addition of a zsh completer for se&lt;br /&gt;
** updated dependency of BDW GC to version 8.x&lt;br /&gt;
** installation script (install.sh) now supports the latest libgc-dev library (external garbage collector)&lt;br /&gt;
** finally removed the obsolete classes GEN_RAND, MIN_STAND and STD_RAND&lt;br /&gt;
** removed support for some unused legacy platforms (OpenVMS, Amiga, Elate, BeOS, OS/2, Macintosh, HP RISC, IBM370, NS32000, MIPS, Pyramid 9810, SPARC, VAX, Motorola 68000) - in case you have a real use case for those we are happy to readd it&lt;br /&gt;
** removed support for some unused backend C-compilers (i.e. Watcom-C)&lt;br /&gt;
** removed obsolete feature &amp;quot;is_basic_expanded_type&amp;quot; from class ANY&lt;br /&gt;
** obsolete keyword 'creation' now generates an error&lt;br /&gt;
** obsolete class READY_DESCRIPTION removed from sequencer cluster&lt;br /&gt;
** 'is_prime' feature added to class INTEGER_GENERAL&lt;br /&gt;
** 'is_fibonacci' feature added to class INTEGER_GENERAL&lt;br /&gt;
** constants 'Tau', 'Sqr_tau' and 'Inv_tau' added to math_constants.e&lt;br /&gt;
** C-runtime now C99 compliant&lt;br /&gt;
** C-runtime now thread-safe &lt;br /&gt;
** C-code generator does not yet generate C99 compliant C-code, currently being worked on (likely for the Dennis-release).&lt;br /&gt;
** RUN_FEATUREs now have clear names (hopefully)&lt;br /&gt;
** to better support the user access rights model of the current Windows versions, the config file is no longer written to a root directory but rather to %ALLUSERSPROFILE% or %USERPROFILE% &lt;br /&gt;
** support for NetBSD, FreeBSD and OpenBSD added (Thanks to KOIZUMI Satoru)&lt;br /&gt;
* Known bugs:&lt;br /&gt;
** see [https://savannah.gnu.org/bugs/?group=liberty-eiffel] for the full list&lt;br /&gt;
&lt;br /&gt;
=== Bell (2016.05, named after [https://en.wikipedia.org/wiki/Alexander_Graham_Bell Alexander Graham Bell]) ===&lt;br /&gt;
* released in May 2016&lt;br /&gt;
* first release since Liberty Eiffel has become the official GNU Eiffel compiler&lt;br /&gt;
* User-visible changes:&lt;br /&gt;
** changed Environment Variable name from SmartEiffel to LibertyEiffel (anyhow, normally it should not be necessary to set this one)&lt;br /&gt;
** new tool [[Mock]]&lt;br /&gt;
** removed linebreaks in compiler output&lt;br /&gt;
** many bugfixes&lt;br /&gt;
** GC call at exit is optional&lt;br /&gt;
** generic creation&lt;br /&gt;
** agents are now [https://en.wikipedia.org/wiki/Closure_(computer_programming) closures ]&lt;br /&gt;
** finder now finds all classes in the universe with the given name, not only the first one&lt;br /&gt;
** keyword '''is''' at the beginning of a feature is now deprecated&lt;br /&gt;
** Added support for alias &amp;quot;[]&amp;quot; and alias &amp;quot;()&amp;quot;&lt;br /&gt;
** constants are now visible in the eiffeldoc generated documentation&lt;br /&gt;
* Known bugs:&lt;br /&gt;
** there is still an issue in both GC implementations (classical SEGC and BDW), if it shows up, it often yields a &amp;quot;Bad target type&amp;quot; runtime error.&lt;br /&gt;
** for the full list see [https://savannah.gnu.org/bugs/?group=liberty-eiffel]&lt;br /&gt;
&lt;br /&gt;
=== Adler (2013.11, named after [http://en.wikipedia.org/wiki/Charles_Adler,_Jr. Charles Adler, Jr.]) ===&lt;br /&gt;
* First release as Liberty Eiffel&lt;br /&gt;
* User-visible changes:&lt;br /&gt;
** Added [[library_class:NATURAL_8|&amp;lt;tt&amp;gt;NATURAL_8&amp;lt;/tt&amp;gt;]], [[library_class:NATURAL_16|&amp;lt;tt&amp;gt;NATURAL_16&amp;lt;/tt&amp;gt;]], [[library_class:NATURAL_32|&amp;lt;tt&amp;gt;NATURAL_32&amp;lt;/tt&amp;gt;]], and [[library_class:NATURAL_64|&amp;lt;tt&amp;gt;NATURAL_64&amp;lt;/tt&amp;gt;]] classes. See &amp;lt;tt&amp;gt;tutorial/natural.e&amp;lt;/tt&amp;gt; for examples.&lt;br /&gt;
** Even low-level features (i.e. &amp;lt;tt&amp;gt;external &amp;quot;built_in&amp;quot;&amp;lt;/tt&amp;gt;) are now checking their assertions. As an example, division by zero is now checked by assertions.&lt;br /&gt;
** Inlined dynamic dispatch for better performance&lt;br /&gt;
** A missing export clause is deprecated. Use &amp;lt;tt&amp;gt;{ANY}&amp;lt;/tt&amp;gt; instead.&lt;br /&gt;
** New core libraries: cli, json, log, parse (beware, these libraries are not yet tuned to be used without GC)&lt;br /&gt;
** Improved libraries: string (with notably a new [[library_class:FIXED_STRING|&amp;lt;tt&amp;gt;FIXED_STRING&amp;lt;/tt&amp;gt;]] class)&lt;br /&gt;
** Wrapper libraries: gtk, gdk, readline, ffi...&lt;br /&gt;
** A new tool that can generate mocks to help unit testing&lt;br /&gt;
** [http://hboehm.info/gc/ BDW] GC support&lt;br /&gt;
** Collections implementation of is_equal changed to compare the contained objects using their is_equal functions instead of = (which was formerly the functionality of is_equal_map). The old functionality of is_equal is available by fast_is_equal.&lt;br /&gt;
* Developer changes:&lt;br /&gt;
** The web site now belongs to the repository&lt;br /&gt;
** Automatic testing tools (ET on the web, and &amp;lt;tt&amp;gt;watch_eiffeltest.sh&amp;lt;/tt&amp;gt; in the shell)&lt;br /&gt;
** Automatic Debian packages generation&lt;br /&gt;
* Known bugs:&lt;br /&gt;
** BDW GC is not well tested; currently weak references seem not to work properly; and the GC is not run at program exit (it should run all finalizers)&lt;br /&gt;
** Sometimes SmartEiffel's native GC behaves wrongly, analysis is welcome&lt;br /&gt;
** Some of the newer core libraries do not work very well when there is no GC&lt;br /&gt;
** See the [https://savannah.gnu.org/bugs/?group=liberty-eiffel bugs page]&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Release_Notes_(Versions_history)&amp;diff=2771</id>
		<title>Release Notes (Versions history)</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Release_Notes_(Versions_history)&amp;diff=2771"/>
		<updated>2024-11-10T09:16:18Z</updated>

		<summary type="html">&lt;p&gt;Ramack: document added BSD support&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Releases]]&lt;br /&gt;
== Liberty Eiffel (latest release first) ==&lt;br /&gt;
For other upcoming releases see the [[upcoming release names|list of names]].&lt;br /&gt;
=== Curtiss (2024.dev, to be named after [https://en.wikipedia.org/wiki/Glenn_Curtiss Glenn Curtiss]) ===&lt;br /&gt;
* not yet released (see next section for current release notes)&lt;br /&gt;
* User-visible changes:&lt;br /&gt;
** added installation script:  [[Installing on Windows using the Tiny-C compiler]]&lt;br /&gt;
** added support for assign (note: it applies to the setter, while ISE version applies to the getter)&lt;br /&gt;
** redesign of eiffeldoc generated HTML to reduce its size dramatically&lt;br /&gt;
** addition of a zsh completer for se&lt;br /&gt;
** updated dependency of BDW GC to version 8.x&lt;br /&gt;
** installation script (install.sh) now supports the latest libgc-dev library (external garbage collector)&lt;br /&gt;
** finally removed the obsolete classes GEN_RAND, MIN_STAND and STD_RAND&lt;br /&gt;
** removed support for some unused legacy platforms (OpenVMS, Amiga, Elate, BeOS, OS/2, Macintosh, HP RISC, IBM370, NS32000, MIPS, Pyramid 9810, SPARC, VAX, Motorola 68000) - in case you have a real use case for those we are happy to readd it&lt;br /&gt;
** removed support for some unused backend C-compilers (i.e. Watcom-C)&lt;br /&gt;
** removed obsolete feature &amp;quot;is_basic_expanded_type&amp;quot; from class ANY&lt;br /&gt;
** obsolete keyword 'creation' now generates an error&lt;br /&gt;
** obsolete class READY_DESCRIPTION removed from sequencer cluster&lt;br /&gt;
** 'is_prime' feature added to class INTEGER_GENERAL&lt;br /&gt;
** 'is_fibonacci' feature added to class INTEGER_GENERAL&lt;br /&gt;
** constants 'Tau', 'Sqr_tau' and 'Inv_tau' added to math_constants.e&lt;br /&gt;
** C-runtime now C99 compliant&lt;br /&gt;
** C-runtime now thread-safe &lt;br /&gt;
** C-code generator does not yet generate C99 compliant C-code, currently being worked on (likely for the Dennis-release).&lt;br /&gt;
** RUN_FEATUREs now have clear names (hopefully)&lt;br /&gt;
** to better support the user access rights model of the current Windows versions, the config file is no longer written to a root directory but rather to %ALLUSERSPROFILE% or %USERPROFILE% &lt;br /&gt;
** support for NetBSD, FreeBSD and OpenBSD added (Thanks to KOIZUMI Satoru)&lt;br /&gt;
* Known bugs:&lt;br /&gt;
** see [https://savannah.gnu.org/bugs/?group=liberty-eiffel] for the full list&lt;br /&gt;
&lt;br /&gt;
=== Bell (2016.05, named after [https://en.wikipedia.org/wiki/Alexander_Graham_Bell Alexander Graham Bell]) ===&lt;br /&gt;
* released in May 2016&lt;br /&gt;
* first release since Liberty Eiffel has become the official GNU Eiffel compiler&lt;br /&gt;
* User-visible changes:&lt;br /&gt;
** changed Environment Variable name from SmartEiffel to LibertyEiffel (anyhow, normally it should not be necessary to set this one)&lt;br /&gt;
** new tool [[Mock]]&lt;br /&gt;
** removed linebreaks in compiler output&lt;br /&gt;
** many bugfixes&lt;br /&gt;
** GC call at exit is optional&lt;br /&gt;
** generic creation&lt;br /&gt;
** agents are now [https://en.wikipedia.org/wiki/Closure_(computer_programming) closures ]&lt;br /&gt;
** finder now finds all classes in the universe with the given name, not only the first one&lt;br /&gt;
** keyword '''is''' at the beginning of a feature is now deprecated&lt;br /&gt;
** Added support for alias &amp;quot;[]&amp;quot; and alias &amp;quot;()&amp;quot;&lt;br /&gt;
** constants are now visible in the eiffeldoc generated documentation&lt;br /&gt;
* Known bugs:&lt;br /&gt;
** there is still an issue in both GC implementations (classical SEGC and BDW), if it shows up, it often yields a &amp;quot;Bad target type&amp;quot; runtime error.&lt;br /&gt;
** for the full list see [https://savannah.gnu.org/bugs/?group=liberty-eiffel]&lt;br /&gt;
&lt;br /&gt;
=== Adler (2013.11, named after [http://en.wikipedia.org/wiki/Charles_Adler,_Jr. Charles Adler, Jr.]) ===&lt;br /&gt;
* First release as Liberty Eiffel&lt;br /&gt;
* User-visible changes:&lt;br /&gt;
** Added [[library_class:NATURAL_8|&amp;lt;tt&amp;gt;NATURAL_8&amp;lt;/tt&amp;gt;]], [[library_class:NATURAL_16|&amp;lt;tt&amp;gt;NATURAL_16&amp;lt;/tt&amp;gt;]], [[library_class:NATURAL_32|&amp;lt;tt&amp;gt;NATURAL_32&amp;lt;/tt&amp;gt;]], and [[library_class:NATURAL_64|&amp;lt;tt&amp;gt;NATURAL_64&amp;lt;/tt&amp;gt;]] classes. See &amp;lt;tt&amp;gt;tutorial/natural.e&amp;lt;/tt&amp;gt; for examples.&lt;br /&gt;
** Even low-level features (i.e. &amp;lt;tt&amp;gt;external &amp;quot;built_in&amp;quot;&amp;lt;/tt&amp;gt;) are now checking their assertions. As an example, division by zero is now checked by assertions.&lt;br /&gt;
** Inlined dynamic dispatch for better performance&lt;br /&gt;
** A missing export clause is deprecated. Use &amp;lt;tt&amp;gt;{ANY}&amp;lt;/tt&amp;gt; instead.&lt;br /&gt;
** New core libraries: cli, json, log, parse (beware, these libraries are not yet tuned to be used without GC)&lt;br /&gt;
** Improved libraries: string (with notably a new [[library_class:FIXED_STRING|&amp;lt;tt&amp;gt;FIXED_STRING&amp;lt;/tt&amp;gt;]] class)&lt;br /&gt;
** Wrapper libraries: gtk, gdk, readline, ffi...&lt;br /&gt;
** A new tool that can generate mocks to help unit testing&lt;br /&gt;
** [http://hboehm.info/gc/ BDW] GC support&lt;br /&gt;
** Collections implementation of is_equal changed to compare the contained objects using their is_equal functions instead of = (which was formerly the functionality of is_equal_map). The old functionality of is_equal is available by fast_is_equal.&lt;br /&gt;
* Developer changes:&lt;br /&gt;
** The web site now belongs to the repository&lt;br /&gt;
** Automatic testing tools (ET on the web, and &amp;lt;tt&amp;gt;watch_eiffeltest.sh&amp;lt;/tt&amp;gt; in the shell)&lt;br /&gt;
** Automatic Debian packages generation&lt;br /&gt;
* Known bugs:&lt;br /&gt;
** BDW GC is not well tested; currently weak references seem not to work properly; and the GC is not run at program exit (it should run all finalizers)&lt;br /&gt;
** Sometimes SmartEiffel's native GC behaves wrongly, analysis is welcome&lt;br /&gt;
** Some of the newer core libraries do not work very well when there is no GC&lt;br /&gt;
** See the [https://savannah.gnu.org/bugs/?group=liberty-eiffel bugs page]&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Release_Notes_(Versions_history)&amp;diff=2770</id>
		<title>Release Notes (Versions history)</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Release_Notes_(Versions_history)&amp;diff=2770"/>
		<updated>2024-11-10T09:14:33Z</updated>

		<summary type="html">&lt;p&gt;Ramack: /* Liberty Eiffel (latest release first) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Releases]]&lt;br /&gt;
== Liberty Eiffel (latest release first) ==&lt;br /&gt;
For other upcoming releases see the [[upcoming release names|list of names]].&lt;br /&gt;
=== Curtiss (2024.dev, to be named after [https://en.wikipedia.org/wiki/Glenn_Curtiss Glenn Curtiss]) ===&lt;br /&gt;
* not yet released (see next section for current release notes)&lt;br /&gt;
* User-visible changes:&lt;br /&gt;
** added installation script:  [[Installing on Windows using the Tiny-C compiler]]&lt;br /&gt;
** added support for assign (note: it applies to the setter, while ISE version applies to the getter)&lt;br /&gt;
** redesign of eiffeldoc generated HTML to reduce its size dramatically&lt;br /&gt;
** addition of a zsh completer for se&lt;br /&gt;
** updated dependency of BDW GC to version 8.x&lt;br /&gt;
** installation script (install.sh) now supports the latest libgc-dev library (external garbage collector)&lt;br /&gt;
** finally removed the obsolete classes GEN_RAND, MIN_STAND and STD_RAND&lt;br /&gt;
** removed support for some unused legacy platforms (OpenVMS, Amiga, Elate, BeOS, OS/2, Macintosh, HP RISC, IBM370, NS32000, MIPS, Pyramid 9810, SPARC, VAX, Motorola 68000) - in case you have a real use case for those we are happy to readd it&lt;br /&gt;
** removed support for some unused backend C-compilers (i.e. Watcom-C)&lt;br /&gt;
** removed obsolete feature &amp;quot;is_basic_expanded_type&amp;quot; from class ANY&lt;br /&gt;
** obsolete keyword 'creation' now generates an error&lt;br /&gt;
** obsolete class READY_DESCRIPTION removed from sequencer cluster&lt;br /&gt;
** 'is_prime' feature added to class INTEGER_GENERAL&lt;br /&gt;
** 'is_fibonacci' feature added to class INTEGER_GENERAL&lt;br /&gt;
** constants 'Tau', 'Sqr_tau' and 'Inv_tau' added to math_constants.e&lt;br /&gt;
** C-runtime now C99 compliant&lt;br /&gt;
** C-runtime now thread-safe &lt;br /&gt;
** C-code generator does not yet generate C99 compliant C-code, currently being worked on (likely for the Dennis-release).&lt;br /&gt;
** RUN_FEATUREs now have clear names (hopefully)&lt;br /&gt;
** to better support the user access rights model of the current Windows versions, the config file is no longer written to a root directory but rather to %ALLUSERSPROFILE% or %USERPROFILE% &lt;br /&gt;
* Known bugs:&lt;br /&gt;
** see [https://savannah.gnu.org/bugs/?group=liberty-eiffel] for the full list&lt;br /&gt;
&lt;br /&gt;
=== Bell (2016.05, named after [https://en.wikipedia.org/wiki/Alexander_Graham_Bell Alexander Graham Bell]) ===&lt;br /&gt;
* released in May 2016&lt;br /&gt;
* first release since Liberty Eiffel has become the official GNU Eiffel compiler&lt;br /&gt;
* User-visible changes:&lt;br /&gt;
** changed Environment Variable name from SmartEiffel to LibertyEiffel (anyhow, normally it should not be necessary to set this one)&lt;br /&gt;
** new tool [[Mock]]&lt;br /&gt;
** removed linebreaks in compiler output&lt;br /&gt;
** many bugfixes&lt;br /&gt;
** GC call at exit is optional&lt;br /&gt;
** generic creation&lt;br /&gt;
** agents are now [https://en.wikipedia.org/wiki/Closure_(computer_programming) closures ]&lt;br /&gt;
** finder now finds all classes in the universe with the given name, not only the first one&lt;br /&gt;
** keyword '''is''' at the beginning of a feature is now deprecated&lt;br /&gt;
** Added support for alias &amp;quot;[]&amp;quot; and alias &amp;quot;()&amp;quot;&lt;br /&gt;
** constants are now visible in the eiffeldoc generated documentation&lt;br /&gt;
* Known bugs:&lt;br /&gt;
** there is still an issue in both GC implementations (classical SEGC and BDW), if it shows up, it often yields a &amp;quot;Bad target type&amp;quot; runtime error.&lt;br /&gt;
** for the full list see [https://savannah.gnu.org/bugs/?group=liberty-eiffel]&lt;br /&gt;
&lt;br /&gt;
=== Adler (2013.11, named after [http://en.wikipedia.org/wiki/Charles_Adler,_Jr. Charles Adler, Jr.]) ===&lt;br /&gt;
* First release as Liberty Eiffel&lt;br /&gt;
* User-visible changes:&lt;br /&gt;
** Added [[library_class:NATURAL_8|&amp;lt;tt&amp;gt;NATURAL_8&amp;lt;/tt&amp;gt;]], [[library_class:NATURAL_16|&amp;lt;tt&amp;gt;NATURAL_16&amp;lt;/tt&amp;gt;]], [[library_class:NATURAL_32|&amp;lt;tt&amp;gt;NATURAL_32&amp;lt;/tt&amp;gt;]], and [[library_class:NATURAL_64|&amp;lt;tt&amp;gt;NATURAL_64&amp;lt;/tt&amp;gt;]] classes. See &amp;lt;tt&amp;gt;tutorial/natural.e&amp;lt;/tt&amp;gt; for examples.&lt;br /&gt;
** Even low-level features (i.e. &amp;lt;tt&amp;gt;external &amp;quot;built_in&amp;quot;&amp;lt;/tt&amp;gt;) are now checking their assertions. As an example, division by zero is now checked by assertions.&lt;br /&gt;
** Inlined dynamic dispatch for better performance&lt;br /&gt;
** A missing export clause is deprecated. Use &amp;lt;tt&amp;gt;{ANY}&amp;lt;/tt&amp;gt; instead.&lt;br /&gt;
** New core libraries: cli, json, log, parse (beware, these libraries are not yet tuned to be used without GC)&lt;br /&gt;
** Improved libraries: string (with notably a new [[library_class:FIXED_STRING|&amp;lt;tt&amp;gt;FIXED_STRING&amp;lt;/tt&amp;gt;]] class)&lt;br /&gt;
** Wrapper libraries: gtk, gdk, readline, ffi...&lt;br /&gt;
** A new tool that can generate mocks to help unit testing&lt;br /&gt;
** [http://hboehm.info/gc/ BDW] GC support&lt;br /&gt;
** Collections implementation of is_equal changed to compare the contained objects using their is_equal functions instead of = (which was formerly the functionality of is_equal_map). The old functionality of is_equal is available by fast_is_equal.&lt;br /&gt;
* Developer changes:&lt;br /&gt;
** The web site now belongs to the repository&lt;br /&gt;
** Automatic testing tools (ET on the web, and &amp;lt;tt&amp;gt;watch_eiffeltest.sh&amp;lt;/tt&amp;gt; in the shell)&lt;br /&gt;
** Automatic Debian packages generation&lt;br /&gt;
* Known bugs:&lt;br /&gt;
** BDW GC is not well tested; currently weak references seem not to work properly; and the GC is not run at program exit (it should run all finalizers)&lt;br /&gt;
** Sometimes SmartEiffel's native GC behaves wrongly, analysis is welcome&lt;br /&gt;
** Some of the newer core libraries do not work very well when there is no GC&lt;br /&gt;
** See the [https://savannah.gnu.org/bugs/?group=liberty-eiffel bugs page]&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Talk:Upcoming_releases&amp;diff=2769</id>
		<title>Talk:Upcoming releases</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Talk:Upcoming_releases&amp;diff=2769"/>
		<updated>2024-11-10T09:13:44Z</updated>

		<summary type="html">&lt;p&gt;Ramack: Ramack moved page Talk:Upcoming releases to Talk:Upcoming release names&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Talk:Upcoming release names]]&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Talk:Upcoming_release_names&amp;diff=2768</id>
		<title>Talk:Upcoming release names</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Talk:Upcoming_release_names&amp;diff=2768"/>
		<updated>2024-11-10T09:13:44Z</updated>

		<summary type="html">&lt;p&gt;Ramack: Ramack moved page Talk:Upcoming releases to Talk:Upcoming release names&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I think an '''&amp;quot;eiffel&amp;quot;''' release of Liberty Eiffel may, indeed, be just a little too much of a good thing. --[[User:Dkearns|Dkearns]] ([[User talk:Dkearns|talk]]) 14:26, 27 May 2016 (CEST)&lt;br /&gt;
&lt;br /&gt;
Yes, I share this opinion - What about [https://en.wikipedia.org/wiki/Thomas_Edison Thomas Alva Edison]. For G, I favor Dennis Gabor. --[[User:Ramack|Ramack]] ([[User talk:Ramack|talk]]) 18:49, 27 May 2016 (CEST)&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Upcoming_releases&amp;diff=2767</id>
		<title>Upcoming releases</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Upcoming_releases&amp;diff=2767"/>
		<updated>2024-11-10T09:13:44Z</updated>

		<summary type="html">&lt;p&gt;Ramack: Ramack moved page Upcoming releases to Upcoming release names&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Upcoming release names]]&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Upcoming_release_names&amp;diff=2766</id>
		<title>Upcoming release names</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Upcoming_release_names&amp;diff=2766"/>
		<updated>2024-11-10T09:13:43Z</updated>

		<summary type="html">&lt;p&gt;Ramack: Ramack moved page Upcoming releases to Upcoming release names&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Liberty releases are named after famous engineers names starting by A for the first release, B for the second, and so on.&lt;br /&gt;
Here is a list of name suggestions for future releases:&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Glenn_Curtiss Glenn Curtiss] ('''&amp;quot;curtiss&amp;quot;''', currently being worked on)&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Jack_Dennis Jack Dennis] ('''&amp;quot;dennis&amp;quot;''')&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Thomas_Edison Thomas Edison] ('''&amp;quot;edison&amp;quot;''')&lt;br /&gt;
* [https://en.wikipedia.org/wiki/John_Ambrose_Fleming John Ambrose Fleming] ('''&amp;quot;fleming&amp;quot;''') &lt;br /&gt;
* [https://en.wikipedia.org/wiki/Dennis_Gabor Dennis Gabor] ('''&amp;quot;gabor&amp;quot;'''), [https://en.wikipedia.org/wiki/Robert_H._Goddard Robert Goddard] ('''&amp;quot;goddard&amp;quot;''') or [https://en.wikipedia.org/wiki/Gustave_Eiffel Gustave Eiffel]('''&amp;quot;gustave&amp;quot;''') (@ramacks preference is Gabor)&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Grace_Hopper Grace Hopper] ('''&amp;quot;hopper&amp;quot;''')&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Heinz_Isler Heinz Isler] ('''&amp;quot;isler&amp;quot;''')&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Robert_Thomas_Jones_(engineer) Robert Thomas Jones] ('''&amp;quot;jones&amp;quot;''')&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Jack_Kilby Jack Kilby] ('''&amp;quot;kilby&amp;quot;''')&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Cornelis_Lely Cornelis Lely] ('''&amp;quot;lely&amp;quot;''')&lt;br /&gt;
* [https://en.wikipedia.org/wiki/James_Clerk_Maxwell James Clerk Maxwell] ('''&amp;quot;maxwell&amp;quot;''')&lt;br /&gt;
&lt;br /&gt;
Feel free to suggest any further names. You may read the lists of engineers on WikiPedia:&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Lists_of_engineers Lists of engineers]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/List_of_civil_engineers List of civil engineers]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/List_of_structural_engineers List of structural engineers]&lt;br /&gt;
&lt;br /&gt;
Each published final release will also have a numeric tag in the form of &amp;quot;year.month&amp;quot; which is more simple to remember.&lt;br /&gt;
&lt;br /&gt;
Already released versions are listed in [[Versions history]].&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Release_Notes_(Versions_history)&amp;diff=2690</id>
		<title>Release Notes (Versions history)</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Release_Notes_(Versions_history)&amp;diff=2690"/>
		<updated>2022-04-16T20:06:44Z</updated>

		<summary type="html">&lt;p&gt;Ramack: /* Curtiss (2018.dev, to be named after Glenn Curtiss) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Releases]]&lt;br /&gt;
== Liberty Eiffel (latest release first) ==&lt;br /&gt;
For other upcoming releases see the [[upcoming releases|list of names]].&lt;br /&gt;
=== Curtiss (2022.dev, to be named after [https://en.wikipedia.org/wiki/Glenn_Curtiss Glenn Curtiss]) ===&lt;br /&gt;
* not yet released (see next section for current release notes)&lt;br /&gt;
* User-visible changes:&lt;br /&gt;
** redesign of eiffeldoc generated HTML to reduce its size dramatically&lt;br /&gt;
** addition of a zsh completer for se&lt;br /&gt;
** updated dependency of BDW GC to version 8.x&lt;br /&gt;
** installation script (install.sh) now supports the latest libgc-dev library (external garbage collector)&lt;br /&gt;
** finally removed the obsolete classes GEN_RAND, MIN_STAND and STD_RAND&lt;br /&gt;
** removed support for some unused legacy platforms (OpenVMS, Amiga, Elate, BeOS, OS/2, Macintosh, HP RISC, IBM370, NS32000, MIPS, Pyramid 9810, SPARC, VAX, Motorola 68000) - in case you have a real use case for those we are happy to readd it&lt;br /&gt;
** removed support for some unused backend C-compilers (i.e. Watcom-C)&lt;br /&gt;
** removed obsolete feature &amp;quot;is_basic_expanded_type&amp;quot; from class ANY&lt;br /&gt;
** obsolete keyword 'creation' now generates an error&lt;br /&gt;
** obsolete class READY_DESCRIPTION removed from sequencer cluster&lt;br /&gt;
** 'is_prime' feature added to class INTEGER_GENERAL&lt;br /&gt;
** 'is_fibonacci' feature added to class INTEGER_GENERAL&lt;br /&gt;
** constants 'Tau', 'Sqr_tau' and 'Inv_tau' added to math_constants.e&lt;br /&gt;
** C99 conforming C code generation (hopefully)&lt;br /&gt;
* Developer changes:&lt;br /&gt;
** RUN_FEATUREs now have clear names (hopefully)&lt;br /&gt;
** to better support the user access rights model of the current Windows versions, the config file is no longer written to a root directory but rather to %ALLUSERSPROFILE% or %USERPROFILE% &lt;br /&gt;
* Known bugs:&lt;br /&gt;
** see [https://savannah.gnu.org/bugs/?group=liberty-eiffel] for the full list&lt;br /&gt;
&lt;br /&gt;
=== Bell (2016.05, named after [https://en.wikipedia.org/wiki/Alexander_Graham_Bell Alexander Graham Bell]) ===&lt;br /&gt;
* released in May 2016&lt;br /&gt;
* first release since Liberty Eiffel has become the official GNU Eiffel compiler&lt;br /&gt;
* User-visible changes:&lt;br /&gt;
** changed Environment Variable name from SmartEiffel to LibertyEiffel (anyhow, normally it should not be necessary to set this one)&lt;br /&gt;
** new tool [[Mock]]&lt;br /&gt;
** removed linebreaks in compiler output&lt;br /&gt;
** many bugfixes&lt;br /&gt;
** GC call at exit is optional&lt;br /&gt;
** generic creation&lt;br /&gt;
** agents are now [https://en.wikipedia.org/wiki/Closure_(computer_programming) closures ]&lt;br /&gt;
** finder now finds all classes in the universe with the given name, not only the first one&lt;br /&gt;
** keyword '''is''' at the beginning of a feature is now deprecated&lt;br /&gt;
** Added support for alias &amp;quot;[]&amp;quot; and alias &amp;quot;()&amp;quot;&lt;br /&gt;
** constants are now visible in the eiffeldoc generated documentation&lt;br /&gt;
* Known bugs:&lt;br /&gt;
** there is still an issue in both GC implementations (classical SEGC and BDW), if it shows up, it often yields a &amp;quot;Bad target type&amp;quot; runtime error.&lt;br /&gt;
** for the full list see [https://savannah.gnu.org/bugs/?group=liberty-eiffel]&lt;br /&gt;
&lt;br /&gt;
=== Adler (2013.11, named after [http://en.wikipedia.org/wiki/Charles_Adler,_Jr. Charles Adler, Jr.]) ===&lt;br /&gt;
* First release as Liberty Eiffel&lt;br /&gt;
* User-visible changes:&lt;br /&gt;
** Added [[library_class:NATURAL_8|&amp;lt;tt&amp;gt;NATURAL_8&amp;lt;/tt&amp;gt;]], [[library_class:NATURAL_16|&amp;lt;tt&amp;gt;NATURAL_16&amp;lt;/tt&amp;gt;]], [[library_class:NATURAL_32|&amp;lt;tt&amp;gt;NATURAL_32&amp;lt;/tt&amp;gt;]], and [[library_class:NATURAL_64|&amp;lt;tt&amp;gt;NATURAL_64&amp;lt;/tt&amp;gt;]] classes. See &amp;lt;tt&amp;gt;tutorial/natural.e&amp;lt;/tt&amp;gt; for examples.&lt;br /&gt;
** Even low-level features (i.e. &amp;lt;tt&amp;gt;external &amp;quot;built_in&amp;quot;&amp;lt;/tt&amp;gt;) are now checking their assertions. As an example, division by zero is now checked by assertions.&lt;br /&gt;
** Inlined dynamic dispatch for better performance&lt;br /&gt;
** A missing export clause is deprecated. Use &amp;lt;tt&amp;gt;{ANY}&amp;lt;/tt&amp;gt; instead.&lt;br /&gt;
** New core libraries: cli, json, log, parse (beware, these libraries are not yet tuned to be used without GC)&lt;br /&gt;
** Improved libraries: string (with notably a new [[library_class:FIXED_STRING|&amp;lt;tt&amp;gt;FIXED_STRING&amp;lt;/tt&amp;gt;]] class)&lt;br /&gt;
** Wrapper libraries: gtk, gdk, readline, ffi...&lt;br /&gt;
** A new tool that can generate mocks to help unit testing&lt;br /&gt;
** [http://hboehm.info/gc/ BDW] GC support&lt;br /&gt;
** Collections implementation of is_equal changed to compare the contained objects using their is_equal functions instead of = (which was formerly the functionality of is_equal_map). The old functionality of is_equal is available by fast_is_equal.&lt;br /&gt;
* Developer changes:&lt;br /&gt;
** The web site now belongs to the repository&lt;br /&gt;
** Automatic testing tools (ET on the web, and &amp;lt;tt&amp;gt;watch_eiffeltest.sh&amp;lt;/tt&amp;gt; in the shell)&lt;br /&gt;
** Automatic Debian packages generation&lt;br /&gt;
* Known bugs:&lt;br /&gt;
** BDW GC is not well tested; currently weak references seem not to work properly; and the GC is not run at program exit (it should run all finalizers)&lt;br /&gt;
** Sometimes SmartEiffel's native GC behaves wrongly, analysis is welcome&lt;br /&gt;
** Some of the newer core libraries do not work very well when there is no GC&lt;br /&gt;
** See the [https://savannah.gnu.org/bugs/?group=liberty-eiffel bugs page]&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Release_Notes_(Versions_history)&amp;diff=2679</id>
		<title>Release Notes (Versions history)</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Release_Notes_(Versions_history)&amp;diff=2679"/>
		<updated>2022-02-18T21:24:10Z</updated>

		<summary type="html">&lt;p&gt;Ramack: /* Curtiss (2018.dev, to be named after Glenn Curtiss) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Releases]]&lt;br /&gt;
== Liberty Eiffel (latest release first) ==&lt;br /&gt;
For other upcoming releases see the [[upcoming releases|list of names]].&lt;br /&gt;
=== Curtiss (2018.dev, to be named after [https://en.wikipedia.org/wiki/Glenn_Curtiss Glenn Curtiss]) ===&lt;br /&gt;
* not yet released (see next section for current release notes)&lt;br /&gt;
* User-visible changes:&lt;br /&gt;
** redesign of eiffeldoc generated HTML to reduce its size dramatically&lt;br /&gt;
** addition of a zsh completer for se&lt;br /&gt;
** installation script (install.sh) now supports the latest libgc-dev library (external garbage collector)&lt;br /&gt;
** finally got rid of obsolete classes GEN_RAND, MIN_STAND and STD_RAND&lt;br /&gt;
** removed support for some unused legacy platforms (Amiga, Elate, BeOS, OS/2, Macintosh, HP RISC, IBM370, NS32000, MIPS, Pyramid 9810, SPARC, VAX) - in case you have a real use case for those we are happy to readd it&lt;br /&gt;
** removed obsolete feature &amp;quot;is_basic_expanded_type&amp;quot; from class ANY&lt;br /&gt;
** obsolete keyword 'creation' now generates an error&lt;br /&gt;
** obsolete class READY_DESCRIPTION removed from sequencer cluster&lt;br /&gt;
** 'is_prime' feature added to class INTEGER_GENERAL&lt;br /&gt;
** 'is_fibonacci' feature added to class INTEGER_GENERAL&lt;br /&gt;
** constants 'Tau', 'Sqr_tau' and 'Inv_tau' added to math_constants.e&lt;br /&gt;
** C99 conforming C code generation (hopefully)&lt;br /&gt;
* Developer changes:&lt;br /&gt;
** RUN_FEATUREs now have clear names (hopefully)&lt;br /&gt;
** to better support the user access rights model of the more recent Windows versions, the config file is no longer written to a root directory but rather to %ALLUSERSPROFILE% or %USERPROFILE% &lt;br /&gt;
* Known bugs:&lt;br /&gt;
** see [https://savannah.gnu.org/bugs/?group=liberty-eiffel] for the full list&lt;br /&gt;
&lt;br /&gt;
=== Bell (2016.05, named after [https://en.wikipedia.org/wiki/Alexander_Graham_Bell Alexander Graham Bell]) ===&lt;br /&gt;
* released in May 2016&lt;br /&gt;
* first release since Liberty Eiffel has become the official GNU Eiffel compiler&lt;br /&gt;
* User-visible changes:&lt;br /&gt;
** changed Environment Variable name from SmartEiffel to LibertyEiffel (anyhow, normally it should not be necessary to set this one)&lt;br /&gt;
** new tool [[Mock]]&lt;br /&gt;
** removed linebreaks in compiler output&lt;br /&gt;
** many bugfixes&lt;br /&gt;
** GC call at exit is optional&lt;br /&gt;
** generic creation&lt;br /&gt;
** agents are now [https://en.wikipedia.org/wiki/Closure_(computer_programming) closures ]&lt;br /&gt;
** finder now finds all classes in the universe with the given name, not only the first one&lt;br /&gt;
** keyword '''is''' at the beginning of a feature is now deprecated&lt;br /&gt;
** Added support for alias &amp;quot;[]&amp;quot; and alias &amp;quot;()&amp;quot;&lt;br /&gt;
** constants are now visible in the eiffeldoc generated documentation&lt;br /&gt;
* Known bugs:&lt;br /&gt;
** there is still an issue in both GC implementations (classical SEGC and BDW), if it shows up, it often yields a &amp;quot;Bad target type&amp;quot; runtime error.&lt;br /&gt;
** for the full list see [https://savannah.gnu.org/bugs/?group=liberty-eiffel]&lt;br /&gt;
&lt;br /&gt;
=== Adler (2013.11, named after [http://en.wikipedia.org/wiki/Charles_Adler,_Jr. Charles Adler, Jr.]) ===&lt;br /&gt;
* First release as Liberty Eiffel&lt;br /&gt;
* User-visible changes:&lt;br /&gt;
** Added [[library_class:NATURAL_8|&amp;lt;tt&amp;gt;NATURAL_8&amp;lt;/tt&amp;gt;]], [[library_class:NATURAL_16|&amp;lt;tt&amp;gt;NATURAL_16&amp;lt;/tt&amp;gt;]], [[library_class:NATURAL_32|&amp;lt;tt&amp;gt;NATURAL_32&amp;lt;/tt&amp;gt;]], and [[library_class:NATURAL_64|&amp;lt;tt&amp;gt;NATURAL_64&amp;lt;/tt&amp;gt;]] classes. See &amp;lt;tt&amp;gt;tutorial/natural.e&amp;lt;/tt&amp;gt; for examples.&lt;br /&gt;
** Even low-level features (i.e. &amp;lt;tt&amp;gt;external &amp;quot;built_in&amp;quot;&amp;lt;/tt&amp;gt;) are now checking their assertions. As an example, division by zero is now checked by assertions.&lt;br /&gt;
** Inlined dynamic dispatch for better performance&lt;br /&gt;
** A missing export clause is deprecated. Use &amp;lt;tt&amp;gt;{ANY}&amp;lt;/tt&amp;gt; instead.&lt;br /&gt;
** New core libraries: cli, json, log, parse (beware, these libraries are not yet tuned to be used without GC)&lt;br /&gt;
** Improved libraries: string (with notably a new [[library_class:FIXED_STRING|&amp;lt;tt&amp;gt;FIXED_STRING&amp;lt;/tt&amp;gt;]] class)&lt;br /&gt;
** Wrapper libraries: gtk, gdk, readline, ffi...&lt;br /&gt;
** A new tool that can generate mocks to help unit testing&lt;br /&gt;
** [http://hboehm.info/gc/ BDW] GC support&lt;br /&gt;
** Collections implementation of is_equal changed to compare the contained objects using their is_equal functions instead of = (which was formerly the functionality of is_equal_map). The old functionality of is_equal is available by fast_is_equal.&lt;br /&gt;
* Developer changes:&lt;br /&gt;
** The web site now belongs to the repository&lt;br /&gt;
** Automatic testing tools (ET on the web, and &amp;lt;tt&amp;gt;watch_eiffeltest.sh&amp;lt;/tt&amp;gt; in the shell)&lt;br /&gt;
** Automatic Debian packages generation&lt;br /&gt;
* Known bugs:&lt;br /&gt;
** BDW GC is not well tested; currently weak references seem not to work properly; and the GC is not run at program exit (it should run all finalizers)&lt;br /&gt;
** Sometimes SmartEiffel's native GC behaves wrongly, analysis is welcome&lt;br /&gt;
** Some of the newer core libraries do not work very well when there is no GC&lt;br /&gt;
** See the [https://savannah.gnu.org/bugs/?group=liberty-eiffel bugs page]&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Wrapping_C_libraries&amp;diff=2613</id>
		<title>Wrapping C libraries</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Wrapping_C_libraries&amp;diff=2613"/>
		<updated>2018-09-15T18:08:54Z</updated>

		<summary type="html">&lt;p&gt;Ramack: /* Low-level access to functions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Interfacing]]&lt;br /&gt;
== Developer's guidelines ==&lt;br /&gt;
=== or how to write GNU-Eiffel wrappers for a C library ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;&lt;br /&gt;
&amp;quot;longum iter est per praecepta, breve et efficax per exempla&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;quot;The path of precept is long, that of example short and effectual.&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
Seneca the Elder&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/cite&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So instead of giving rules I guide you on my path of wrapping the ZLib library, one of the most widespread compression libraries.&lt;br /&gt;
&lt;br /&gt;
I deliberately chose a &amp;quot;low-level&amp;quot; library with very precise and narrow aims which lets me show basic wrapping techniques: a wider, properly designed library has infrastructures and details that requires to know some tricks from the beginning of the work, otherwise the resulting wrapper should be heavily re-worked many times.&lt;br /&gt;
&lt;br /&gt;
I usually work with Debian and Ubuntu GNU/Linux, so all the system commands and the package names listed in this tutorial/how-to should apply without changes on Debian and Debian-derived machines. Other distributions, like Fedora, RedHat, Suse, Mandriva shall have similarly named packages. People using BSD OSes could have those libraries available in their package manager. As a last resort you can always download the sources, compile and install them manually. I hope you know how to do it, otherwise the rest of this document would be quite useless for you.&lt;br /&gt;
&lt;br /&gt;
==== Prerequites ====&lt;br /&gt;
&lt;br /&gt;
You should be proficient with:&lt;br /&gt;
&lt;br /&gt;
* the C language,&lt;br /&gt;
* the Eiffel language, &lt;br /&gt;
* the C library you want to wrap; you should known how to use it in a C program; take some time to read the library documentation and to study the example provided in order to make yourself familiar with the style required to use the library. You will need them to provide extensive, readable documentation of your classes.&lt;br /&gt;
&lt;br /&gt;
==== Software prerequisites ====&lt;br /&gt;
&lt;br /&gt;
Make sure you have access on your machine to:&lt;br /&gt;
&lt;br /&gt;
* Liberty Eiffel, you may download the Debian packages from &lt;br /&gt;
* The C headers of the library to wrap; you should be able to compile the examples of the library you're wrapping; so I issued&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install zlib1g-dev&lt;br /&gt;
&lt;br /&gt;
* Documentation of the library. Even if it is not absolutely necessary to make working wrappers they are indeed necessary to provide properly documented, therefore usable classes; (GNU) Eiffel has standard rules on how to document code and we shall abide to that; adapting the original C documentation while we wrap various features is a good style to handle documentation. Please do not leave any part of your code undocumented. Spend some time reading the documentation. It is always worth the effort.&lt;br /&gt;
&lt;br /&gt;
I would like to repeat the concept: even if source-code in general is intented to be read by a compiler to produce binary modules, its readability and understandability for people is of the utmost importance. Code is not meant to be written-once and never re-read. It actually happens that good code will be read again and again by many people. The fact that programs are covered and protected by copyright laws is not incidental. It means that source code is the expression of an author, like a novel or poetry; I like to think that this fact includes in itself, in-nuce that source text will be read by people several times. And this reading does occour when the source-code text is well-written, well-documentated, useful for study and reuse if its license does allow it.&lt;br /&gt;
&lt;br /&gt;
This approach does resemble Knuth's Literate Programming and indeed many design choices made by Bertrand Meyer during the conception of Eiffel regarding readability and understandability of source-code, expecially those exposed in Object-Oriented Software Construction are strikingly similar to Knut's ideas.&lt;br /&gt;
&lt;br /&gt;
Let's return to our wrapping/binding work after a due phylosophical digression&lt;br /&gt;
&lt;br /&gt;
=== Preliminares ===&lt;br /&gt;
&lt;br /&gt;
Most data structure in C are usually handled by reference, i.e. using pointers. &lt;br /&gt;
&lt;br /&gt;
Passing objects by value is currently requires &amp;quot;expanded external classes&amp;quot; and will no be covered in this guide. Therefore if your library extensively pass structures around by value and not by reference (with a pointer), for example (TODO: put links to online example of passing structure by value) in function calls or contained in other structures our life will be quite hard. Fortunately enought most libraries handles most of its data structures by reference and zlib is no exception: in fact its basic functions takes pointers as first argument.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
== Identifying types and classes == &lt;br /&gt;
 &lt;br /&gt;
Now you will wonder how to identify the types used in Zlib. This is quite an extensive argument that people smarter than me already handled in great details here.&lt;br /&gt;
&lt;br /&gt;
A simplicistic rule-of-thumb specifically fitted to wrap libraries written in C is that when we have several functions that takes a pointer to a struct this struct is a good candidate for a class and those functions are good candidates to be wrapped as features usable by an Eiffel program.&lt;br /&gt;
&lt;br /&gt;
Zlib has many functions taking a z_streamp which is nothing more than a typedef-fed pointer to structure z_stream_s. We will wrap those facilities in the Eiffel's (non-expanded) class ZLIB_STREAM.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Code organization and class hierarchy. === &lt;br /&gt;
&lt;br /&gt;
Before diving into code writing let's spend some words on how to cleanly organize our work. We want to provide the user of our library a pretty object-oriented API; since he/she will look at the sources directly soon-or-later it is useful to separate the high-level features and classes, those that will be used directly in other Eiffel projects from the low-level details, like external features or plugins.&lt;br /&gt;
&lt;br /&gt;
We usually place each wrapper library in its own directory following this organization:&lt;br /&gt;
&lt;br /&gt;
* zlib/ &lt;br /&gt;
** examples -- Examples on how to use the Zlib wrappers &lt;br /&gt;
** library -- Contains the high-level classes, those used directly in Eiffel programs &lt;br /&gt;
*** externals -- Contains the low-level classes to interface with C (externals, macros, enumeration and so on) &lt;br /&gt;
**** generated -- Contains the low-level classes automatically generated with a tool such as wrappers_generator&lt;br /&gt;
*** loadpath.se -- Lists the clusters of the library itself, i.e. which directories contains its classes &lt;br /&gt;
** loadpath.se -- Lists the clusters used by the library, i.e. its dependencies &lt;br /&gt;
** tests -- Contains the tests to be used with eiffeltest tool&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the library is conceptually separated into different areas, subsystems or if it is simple too wide to put cleanly every public class into a single directory we can split the content of the directory library into several sub-directory, like GLib wrapper. See its directory layout:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* eiffel-glib/library/ &lt;br /&gt;
** core &lt;br /&gt;
** data_types &lt;br /&gt;
** externals &lt;br /&gt;
*** generated&lt;br /&gt;
** fundamentals&lt;br /&gt;
** utilities&lt;br /&gt;
&lt;br /&gt;
Let's fill &amp;lt;code&amp;gt;zlib/library/loadpath.se&amp;lt;/code&amp;gt;. It lists two directories: those containing the high-level classes, the same of the loadpath.se file itself, i.e. the current directory (.) and the ./externals directory which will contain deferred classes that provide access to external features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 ./&lt;br /&gt;
./externals/ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
zlib/loadpath.se will list the clusters used by the library itself, i.e. its dependencies. Like the previous it is a plain text file containing directories or other loadpaths file (Ok... I'm not assuming proficiency with GNU-Eiffel here). Zlib is quite a &amp;quot;plain&amp;quot; library and does not have dependencies - here we are speaking of dependencies of the Eiffel wrappers - so he only shall list only the base cluster of a wrapper library, ../common/loadpath.se and the soad-path of the library itself &amp;lt;./library/loadpath.se/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 ../common/loadpath.se&lt;br /&gt;
./library/loadpath.se &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Low-level access to functions ===&lt;br /&gt;
&lt;br /&gt;
Writing the Eiffel source code to access external C code is an extremely long, tedious and verbose process so a tool named '''wrappers_generator''' has been created.&lt;br /&gt;
&lt;br /&gt;
It was not included in binary form in the adler release since it was not ready for prime time. &lt;br /&gt;
Now it isn't robust as I would like but at least it processes sources like Gtk3, Glib, &amp;amp;slasho;mq and other libraries without crashing. &lt;br /&gt;
&lt;br /&gt;
It will be included into bell and later releases; before it's relase I would suggest to rebuild the compiler and work from the Git repository.&lt;br /&gt;
&lt;br /&gt;
You can get the sources from https://savannah.gnu.org/projects/liberty-eiffel/ or from https://github.com/LibertyEiffel/Liberty and build it with install.sh script which also build wrappers_generator. &lt;br /&gt;
&lt;br /&gt;
wrappers_generator does not parses C code directly but reads the output of gccxml or its successor, castxml. Those tools provides an XML description of the source code analyzed that greatly ease the task of generating glue code. In fact they were created for that purpose.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;gccxml&amp;lt;/pre&amp;gt; is available in Debian oldstable while &amp;lt;pre&amp;gt;castxml&amp;lt;/pre&amp;gt; is available in Debian stable. Both are also available for Ubuntu, Redhat et cetera.&lt;br /&gt;
&lt;br /&gt;
Given an XML file and a list of C files (headers or sources) to wrap wrappers_generator:&lt;br /&gt;
&lt;br /&gt;
* for each source file create a deferred class containing all the wrappable functions found in that file; functions in foo.h are wrapped into FOO_EXTERNALS&lt;br /&gt;
* for each struct creates a deferred class containing queries and setters feature to manipulate all members which have an Eiffel wrapper type;&lt;br /&gt;
* the same is made for unions&lt;br /&gt;
* creates a deferred Eiffel class named like the xml file containing wrappers for all typedefs, so when you have to refer to C &amp;quot;long&amp;quot; which is notorious for change size on various platform you can use &amp;quot;like long&amp;quot; in Eiffel&lt;br /&gt;
* each enumeration is wrapped into expanded classes with proper queries and setters. That way they are as efficient as plain integers values but they can't assume arbitrary values; enum foobar is wrapped into FOOBAR_ENUM&lt;br /&gt;
* when the values of an enumeration are actually flags, i.e. they all are diffent powers of 2, it's wrapped as a &amp;quot;flag&amp;quot; enumeration with commands to set and unset each flag of the enum.&lt;br /&gt;
* C++ classes, namespaces and all its fineries are currently ignored&lt;br /&gt;
* macros, #defines and all cannot be handled since they are &amp;quot;preprocessed away&amp;quot; and their text is not preseted to gccxml or castxml&lt;br /&gt;
* variadic functions can't be wrapped in Eiffel &lt;br /&gt;
* it transform CamelCase into CAMEL_CASE for classes, camel_case for features (queries, commands and so on)&lt;br /&gt;
* if it doesn't exist it creates a directory plugin/c that will contain all the C code that will be compiled by liberty eiffel when using the library&lt;br /&gt;
&lt;br /&gt;
It does not try to give high-level, directly usable wrappers but it writes fairly verbose low-level wrappers that hopefully will save you quite a lot of typing.&lt;br /&gt;
&lt;br /&gt;
=== The rest of this document still needs to be adapted.  ===&lt;br /&gt;
&lt;br /&gt;
Let's write some low-level classes. We will put the functions found in the include file /usr/include/zlib.h in the class ZLIB_EXTERNALS and the low-level getters and setters features for the structure z_stream structure in the class Z_STREAM_STRUCT (this scheme is also used by eiffel-gcc-xml tool; I know it is simplicistic and that it could produce name-clashes but it has worked fine until now. ). Here's some examples&lt;br /&gt;
C function	Eiffel feature&lt;br /&gt;
const char * zlibVersion (void);	zlib_version: POINTER&lt;br /&gt;
int deflateInit (z_streamp strm, int level);	deflate_init (a_stream: POINTER; a_level: INTEGER_32): INTEGER_32&lt;br /&gt;
int deflate (z_streamp strm, int flush);	deflate (a_stream: POINTER;a_flush: INTEGER_32): INTEGER&lt;br /&gt;
int deflateEnd (z_streamp strm);	deflate_end (a_stream: POINTER): INTEGER&lt;br /&gt;
int inflateInit (z_streamp strm);	inflate_init (a_stream: POINTER): INTEGER&lt;br /&gt;
int inflate (z_streamp strm, int flush);	inflate (a_stream: POINTER; a_flush: INTEGER): INTEGER&lt;br /&gt;
int inflateEnd (z_streamp strm);	inflate_end (a_stream: POINTER): INTEGER&lt;br /&gt;
&lt;br /&gt;
As you can see I have turned camelCaseFunction into camel_case_function which is far more in tune with Eiffel style. Int is actually an INTEGER_32 or only INTEGER (it still don't matter, even if I suspect that it will do soon: world is already filled with 64-bit machines and literally billion of devices with 4,8,16 bit CPU are in use today, not counting GPGPU)&lt;br /&gt;
&lt;br /&gt;
Let's take a look at ZLIB_EXTERNALS. You'll see many entries like&lt;br /&gt;
&lt;br /&gt;
 inflate_init (a_stream: POINTER): INTEGER is -- int inflateInit (z_streamp strm); &lt;br /&gt;
	external &amp;quot;plug_in&amp;quot; &lt;br /&gt;
	alias &amp;quot;{&lt;br /&gt;
		location: &amp;quot;${eiffel_libraries}/plugins&amp;quot; &lt;br /&gt;
		module_name: &amp;quot;zlib&amp;quot;&lt;br /&gt;
		feature_name: &amp;quot;inflateInit&amp;quot;&lt;br /&gt;
	}&amp;quot;&lt;br /&gt;
	end &lt;br /&gt;
&lt;br /&gt;
this entry tells us that the Eiffel feature &amp;quot;inflate_init&amp;quot; refers to the symbol &amp;quot;inflateInit&amp;quot; in the module &amp;quot;zlib&amp;quot; of the plugins found in the directory.&lt;br /&gt;
&lt;br /&gt;
Entries like this are the only &amp;quot;esoteric&amp;quot; Eiffel code you will see. All the details required to interface to C, to link to the actualy library and how to compile the code written in other languages is handled by the plugin part.&lt;br /&gt;
&lt;br /&gt;
Without using plugins every Eiffel program should know all the details required to compile a C application with zlib. It would require to always use ACE files - even for simple examples - because you need to provide proper &amp;quot;c_compiler_options&amp;quot; and &amp;quot;linker_options&amp;quot;; for a single, simple library like Zlib it looks a tame task, only requiring to add -lzlib to the &amp;quot;linker_options&amp;quot; but when you start building real-world application things will get complicated really fast.&lt;br /&gt;
&lt;br /&gt;
See SmartEiffel documentation on plugins.&lt;br /&gt;
&lt;br /&gt;
All those functions returns an integer with standardized values #defined in the C header. We will wrap them in the deferred class ZLIB_CONSTANTS.&lt;br /&gt;
&lt;br /&gt;
Deferred? Why deferred? We want to avoid the Eiffel programmer the burden to deal with all the details that C requires - otherwise we would have used plain C - so we do not want him/her to directly use that libraries. Deferred classes cannot have creation clauses so we are sure that no objects of type ZLIB_EXTERNALS and ZLIB_CONSTANTS will be created. They are helper classes that will be either inherited from or - more properly - inserted into ZLIB_STREAM and its effective heirs, ZLIB_INPUT_STREAM and ZLIB_OUTPUT_STREAM.&lt;br /&gt;
&lt;br /&gt;
Making sure that the Eiffel developer will not use low-level features directly is the main reason why all the external features are not exported to anyone else, using the syntax feature {} -- External calls. This way only heirs - conforming or not - of that class can use them; for people coming from C++ it's like having private functions members.&lt;br /&gt;
C types&lt;br /&gt;
&lt;br /&gt;
Here's a quick conversion table for various C types&lt;br /&gt;
C type	Eiffel type&lt;br /&gt;
int	INTEGER;&lt;br /&gt;
short int	INTEGER_16&lt;br /&gt;
long int	INTEGER_32 or 64&lt;br /&gt;
long long int	INTEGER_64&lt;br /&gt;
int8_t (defined at stdint.h, ISO C 99)	INTEGER_8&lt;br /&gt;
int16_t 	INTEGER_16&lt;br /&gt;
int32_t	INTEGER_32&lt;br /&gt;
int64_t	INTEGER_64&lt;br /&gt;
unsigned int	NATURAL&lt;br /&gt;
unsigned short int	NATURAL_16&lt;br /&gt;
unsigned long int	NATURAL_32 on 32-bit, NATURAL_64 on 64.bit. See long int&lt;br /&gt;
unsigned long long int	NATURAL_64&lt;br /&gt;
signed/unsigned char	CHARACTER&lt;br /&gt;
float	REAL_32&lt;br /&gt;
double	REAL_64&lt;br /&gt;
long double	REAL_EXTENDED&lt;br /&gt;
char	BOOLEAN&lt;br /&gt;
void* or any other pointer	POINTER&lt;br /&gt;
&lt;br /&gt;
Some notes:&lt;br /&gt;
&lt;br /&gt;
    intXX_t are defined in GNU systems (Linux Glibc, CygWin and similar).&lt;br /&gt;
    Currently INTEGER is mere alias for INTEGER_32 but this is bound to change in future version of SmartEiffel. Personally I think that it should be &amp;quot;the integer type with the same bit-lenght of C int&amp;quot;.&lt;br /&gt;
    A nice feature of long int is that is could be longer that int. So we can't really be sure whenever it is 32 or 64 bit. Usually it is an INTEGER_32 on 32-bit machines and INTEGER_64 on 64-bit machines. See this post on the SmartEiffel mailing list.&lt;br /&gt;
    The same problem applies for long unsigned int: NATURAL_32 on 32-bits and NATURAL_64 on 64-bit. This mismatch can be quite problematic and it will be discussed-addressed later.&lt;br /&gt;
    At the time of writing of this document SmartEiffel has some know issues regarding NATURALs types. If they actually do cause bugs there is an (unsatisfactory) workaround: use a bigger INTEGER. This implies a hidden conversion at C level and bargains correctness with a little waste of space and worse performance. Do not use an INTEGER of same size: it &amp;quot;usually&amp;quot; works nicely but this is a known source of nasty bugs since you will soon or later it will silently overflow.&lt;br /&gt;
&lt;br /&gt;
An enlighting explanation about C variable types and declarations can be read on Wikipedia (I find particurarly confusing - expecially for the novice - that char is at the same time an 8-bit integer and an encoding for ASCII characters. Most programmers could always end up thinking about it only as a character. After more than 30 years they could have called it &amp;quot;byte&amp;quot;. Yet this behaviour is fit the spirit of C very well. ).&lt;br /&gt;
&lt;br /&gt;
The resulting ZLIB_CONSTANTS class is almost boring and undocumented. I maintained the documentation level found in the original documentation, since those are values that will be handled only by the implementation of the wrapper.&lt;br /&gt;
&lt;br /&gt;
Have a look at WRAPPER_HANDLER. Eiffel has the ability to selectively export Any class that needs to access some of the&lt;br /&gt;
Access to structure field&lt;br /&gt;
&lt;br /&gt;
Let's wrap the z_stream structure (the structure name is actually struct z_stream_s typedeffed to z_stream during its definition); the wrapper will have a similar two layer design: the low-level Z_STREAM_STRUCT will be a deferred class, with feature {} -- Hidden, low-level getters and setters. This class will also have a feature struct_size: INTEGER that will be the value of sizeof(z_stream)&lt;br /&gt;
&lt;br /&gt;
Field named FooBar in the struct my_struct will be read with the Eiffel query my_struct_get_foo_bar and set with the command my_struct_set_foo_bar. Remember that those are low-level features; references to other objects will be pointers and its signature will be one of an external function: the first argument will be always the address of - a POINTER to - the wrapped struct.&lt;br /&gt;
Naming of placeholder arguments&lt;br /&gt;
&lt;br /&gt;
Placeholder names should be chosen in a way that makes the documentation of the feature in English as smooth as possible for a proper argument placeholder for the Gnu-Eiffel language. &amp;quot;CamelCase&amp;quot; will be translated into &amp;quot;a_camel_case&amp;quot;, &amp;quot;ENOO&amp;quot; is translated into &amp;quot;an_enoo&amp;quot;. Eventual underscores in front of `a_name' are removed: &amp;quot;__foo&amp;quot; becomes &amp;quot;a_foo&amp;quot;. The prefixed preposition is added to make clearer that the name refers to a generic value, not to a particular one. Always tries to use a placeholder that can be directly put in the feature's documentation without paraphrase.&lt;br /&gt;
ZLIB_STREAM, at last.&lt;br /&gt;
&lt;br /&gt;
So let's write something that will be used in an actual Eiffel program! We start writing ZLIB_STREAM from file common/skeleton that provides us the usual LGPL-2.1-or-later headers. It inserts ZLIB_EXTERNALS and Z_STREAM_STRUCT.&lt;br /&gt;
&lt;br /&gt;
TODO: finish this&lt;br /&gt;
The &amp;quot;common&amp;quot; cluster&lt;br /&gt;
&lt;br /&gt;
The basic building blocks of a wrapper library have been put in the common cluster.&lt;br /&gt;
&lt;br /&gt;
The WRAPPER class it the &amp;quot;fundamental&amp;quot; one even if embarassingly simple. Its only effective field (i.e.: stored, non-computed) is the handle POINTER. It shall handle the allocation and deallocation of the memory referred by handle so it is an heir of DISPOSABLE but it doesn't define dispose because there is no such a thing like a default memory handling in C.&lt;br /&gt;
&lt;br /&gt;
C_STRUCT inherits from WRAPPER and provides default implementations for copy, is_equal and from_external_pointer features; it introduces the deferred &amp;quot;struct_size&amp;quot; query which should give the same result of C operator sizeof(MyStruct).&lt;br /&gt;
&lt;br /&gt;
Note that there are - at least conceptually - other potentially heirs of WRAPPER, like pointers to functions&lt;br /&gt;
&lt;br /&gt;
Many C libraries often return const char* strings. Those strings shall not be modified and their memory will be handled by the library; by all other means they actually are plain strings. A correct behaviour is to write foo: STRING is do create Result.from_external_copy(a_function_returning_a_const_char_pointer(handle)) end; a STRING is meant to be manipulated and changed and has control on the memory of its content. Here we are instead given a piece of memory holding some text that is &amp;quot;mostly read-only&amp;quot; whose control is held by the library. To provide correct behaviour STRING must copy the buffer, from_external can't be used. CONST_STRING is an effective heir of STRING that provides efficient wrapping of &amp;quot;const strings&amp;quot;. It is usable like any other STRING but all the changes are made to a separe buffer preserving the original content - we are actually not allowed to change it. No further memory is allocated when a CONST_STRING is created: the buffer returned by the C library is used directly. For example, GTK+ has many calls like const gchar* gtk_entry_get_text (GtkEntry *entry); Memory efficiency is achieved making changing features slower. If you need to change its content consider using its feature string to get a new (non-const) STRING with the same content.&lt;br /&gt;
&lt;br /&gt;
TODO: add proper description about:&lt;br /&gt;
CACHING_FACTORY&lt;br /&gt;
C_ARRAY&lt;br /&gt;
COMPARABLE_C_STRUCT&lt;br /&gt;
COMPARABLE_WRAPPER&lt;br /&gt;
CONST_STRING&lt;br /&gt;
C_OWNED&lt;br /&gt;
C_STRUCT&lt;br /&gt;
EIFFEL_OWNED&lt;br /&gt;
ENUM&lt;br /&gt;
EXPANDED_WRAPPER&lt;br /&gt;
GLOBAL_CACHE&lt;br /&gt;
GLOBALLY_CACHED&lt;br /&gt;
HASHABLE_WRAPPER&lt;br /&gt;
ITERATOR_ON_C_ARRAY&lt;br /&gt;
LINKED_STRING&lt;br /&gt;
MIXED_MEMORY_HANDLING&lt;br /&gt;
NULL_TERMINATED_C_ARRAY&lt;br /&gt;
NULL_TERMINATED_STRING_ARRAY&lt;br /&gt;
POINTER_HANDLING&lt;br /&gt;
REFERENCE_COUNTED&lt;br /&gt;
SHARED&lt;br /&gt;
STRING_ARRAY&lt;br /&gt;
STRING_ARRAY_ITERATOR&lt;br /&gt;
WRAPPER_COLLECTION&lt;br /&gt;
WRAPPER_DICTIONARY&lt;br /&gt;
WRAPPER&lt;br /&gt;
WRAPPER_FACTORY&lt;br /&gt;
WRAPPER_HANDLER&lt;br /&gt;
WRAPPERS_CACHE&lt;br /&gt;
Enumerations&lt;br /&gt;
&lt;br /&gt;
There are two general tecnique to wrap an enum.&lt;br /&gt;
&lt;br /&gt;
    Put all the possible values of enumerations into a class as INTEGER constants accessibile to the user of your library. This is mostly similar to the actual usage of an enumeration. Each and every feature that accept an enum value as argument will need a precondition like is_valid_foo (a_foo_value)&lt;br /&gt;
    Create a new type. In fact an enumeration is an INTEGER that can assume only precise and prestabilited values, so that its value is correct and consistent all the times. Class ENUM provides some facilities to achieve this. It shall be used in classes like this:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    -- This file have been created by eiffel-gcc-xml.&lt;br /&gt;
    -- Any change will be lost by the next execution of the tool.&lt;br /&gt;
&lt;br /&gt;
    expanded class PANGO_WEIGHT&lt;br /&gt;
&lt;br /&gt;
    insert ENUM&lt;br /&gt;
&lt;br /&gt;
    creation default_create&lt;br /&gt;
    feature -- Validity&lt;br /&gt;
    	is_valid_value (a_value: INTEGER): BOOLEAN is&lt;br /&gt;
    		do&lt;br /&gt;
    			Result := ((a_value = pango_weight_ultralight) or else&lt;br /&gt;
    				(a_value = pango_weight_light) or else&lt;br /&gt;
    				(a_value = pango_weight_normal) or else&lt;br /&gt;
    				(a_value = pango_weight_semibold) or else&lt;br /&gt;
    				(a_value = pango_weight_bold) or else&lt;br /&gt;
    				(a_value = pango_weight_ultrabold) or else&lt;br /&gt;
    				(a_value = pango_weight_heavy))&lt;br /&gt;
    		end&lt;br /&gt;
&lt;br /&gt;
    feature -- Setters&lt;br /&gt;
    	default_create,  set_ultralight is&lt;br /&gt;
    		do&lt;br /&gt;
    			value := pango_weight_ultralight&lt;br /&gt;
    		end&lt;br /&gt;
&lt;br /&gt;
    	 set_light is&lt;br /&gt;
    		do&lt;br /&gt;
    			value := pango_weight_light&lt;br /&gt;
    		end&lt;br /&gt;
&lt;br /&gt;
    	 set_normal is&lt;br /&gt;
    		do&lt;br /&gt;
    			value := pango_weight_normal&lt;br /&gt;
    		end&lt;br /&gt;
&lt;br /&gt;
    	 set_semibold is&lt;br /&gt;
    		do&lt;br /&gt;
    			value := pango_weight_semibold&lt;br /&gt;
    		end&lt;br /&gt;
&lt;br /&gt;
    	 set_bold is&lt;br /&gt;
    		do&lt;br /&gt;
    			value := pango_weight_bold&lt;br /&gt;
    		end&lt;br /&gt;
&lt;br /&gt;
    	 set_ultrabold is&lt;br /&gt;
    		do&lt;br /&gt;
    			value := pango_weight_ultrabold&lt;br /&gt;
    		end&lt;br /&gt;
&lt;br /&gt;
    	 set_heavy is&lt;br /&gt;
    		do&lt;br /&gt;
    			value := pango_weight_heavy&lt;br /&gt;
    		end&lt;br /&gt;
&lt;br /&gt;
    feature -- Queries&lt;br /&gt;
    	is_ultralight: BOOLEAN is&lt;br /&gt;
    		do&lt;br /&gt;
    			Result := (value=pango_weight_ultralight)&lt;br /&gt;
    		end&lt;br /&gt;
&lt;br /&gt;
    	is_light: BOOLEAN is&lt;br /&gt;
    		do&lt;br /&gt;
    			Result := (value=pango_weight_light)&lt;br /&gt;
    		end&lt;br /&gt;
&lt;br /&gt;
    	is_normal: BOOLEAN is&lt;br /&gt;
    		do&lt;br /&gt;
    			Result := (value=pango_weight_normal)&lt;br /&gt;
    		end&lt;br /&gt;
&lt;br /&gt;
    	is_semibold: BOOLEAN is&lt;br /&gt;
    		do&lt;br /&gt;
    			Result := (value=pango_weight_semibold)&lt;br /&gt;
    		end&lt;br /&gt;
&lt;br /&gt;
    	is_bold: BOOLEAN is&lt;br /&gt;
    		do&lt;br /&gt;
    			Result := (value=pango_weight_bold)&lt;br /&gt;
    		end&lt;br /&gt;
&lt;br /&gt;
    	is_ultrabold: BOOLEAN is&lt;br /&gt;
    		do&lt;br /&gt;
    			Result := (value=pango_weight_ultrabold)&lt;br /&gt;
    		end&lt;br /&gt;
&lt;br /&gt;
    	is_heavy: BOOLEAN is&lt;br /&gt;
    		do&lt;br /&gt;
    			Result := (value=pango_weight_heavy)&lt;br /&gt;
    		end&lt;br /&gt;
&lt;br /&gt;
    feature {WRAPPER, WRAPPER_HANDLER} -- Low level values&lt;br /&gt;
    	pango_weight_ultralight: INTEGER is&lt;br /&gt;
    		external &amp;quot;plug_in&amp;quot;&lt;br /&gt;
     		alias &amp;quot;{&lt;br /&gt;
     			location: &amp;quot;foo&amp;quot;&lt;br /&gt;
     			module: &amp;quot;bar&amp;quot;&lt;br /&gt;
     			feature_name: &amp;quot;PANGO_WEIGHT_ULTRALIGHT&amp;quot;&lt;br /&gt;
     			}&amp;quot;&lt;br /&gt;
     		end&lt;br /&gt;
&lt;br /&gt;
    	pango_weight_light: INTEGER is&lt;br /&gt;
    		external &amp;quot;plug_in&amp;quot;&lt;br /&gt;
     		alias &amp;quot;{&lt;br /&gt;
     			location: &amp;quot;foo&amp;quot;&lt;br /&gt;
     			module: &amp;quot;bar&amp;quot;&lt;br /&gt;
     			feature_name: &amp;quot;PANGO_WEIGHT_LIGHT&amp;quot;&lt;br /&gt;
     			}&amp;quot;&lt;br /&gt;
     		end&lt;br /&gt;
&lt;br /&gt;
    	pango_weight_normal: INTEGER is&lt;br /&gt;
    		external &amp;quot;plug_in&amp;quot;&lt;br /&gt;
     		alias &amp;quot;{&lt;br /&gt;
     			location: &amp;quot;foo&amp;quot;&lt;br /&gt;
     			module: &amp;quot;bar&amp;quot;&lt;br /&gt;
     			feature_name: &amp;quot;PANGO_WEIGHT_NORMAL&amp;quot;&lt;br /&gt;
     			}&amp;quot;&lt;br /&gt;
     		end&lt;br /&gt;
&lt;br /&gt;
    	pango_weight_semibold: INTEGER is&lt;br /&gt;
    		external &amp;quot;plug_in&amp;quot;&lt;br /&gt;
     		alias &amp;quot;{&lt;br /&gt;
     			location: &amp;quot;foo&amp;quot;&lt;br /&gt;
     			module: &amp;quot;bar&amp;quot;&lt;br /&gt;
     			feature_name: &amp;quot;PANGO_WEIGHT_SEMIBOLD&amp;quot;&lt;br /&gt;
     			}&amp;quot;&lt;br /&gt;
     		end&lt;br /&gt;
&lt;br /&gt;
    	pango_weight_bold: INTEGER is&lt;br /&gt;
    		external &amp;quot;plug_in&amp;quot;&lt;br /&gt;
     		alias &amp;quot;{&lt;br /&gt;
     			location: &amp;quot;foo&amp;quot;&lt;br /&gt;
     			module: &amp;quot;bar&amp;quot;&lt;br /&gt;
     			feature_name: &amp;quot;PANGO_WEIGHT_BOLD&amp;quot;&lt;br /&gt;
     			}&amp;quot;&lt;br /&gt;
     		end&lt;br /&gt;
&lt;br /&gt;
    	pango_weight_ultrabold: INTEGER is&lt;br /&gt;
    		external &amp;quot;plug_in&amp;quot;&lt;br /&gt;
     		alias &amp;quot;{&lt;br /&gt;
     			location: &amp;quot;foo&amp;quot;&lt;br /&gt;
     			module: &amp;quot;bar&amp;quot;&lt;br /&gt;
     			feature_name: &amp;quot;PANGO_WEIGHT_ULTRABOLD&amp;quot;&lt;br /&gt;
     			}&amp;quot;&lt;br /&gt;
     		end&lt;br /&gt;
&lt;br /&gt;
    	pango_weight_heavy: INTEGER is&lt;br /&gt;
    		external &amp;quot;plug_in&amp;quot;&lt;br /&gt;
     		alias &amp;quot;{&lt;br /&gt;
     			location: &amp;quot;foo&amp;quot;&lt;br /&gt;
     			module: &amp;quot;bar&amp;quot;&lt;br /&gt;
     			feature_name: &amp;quot;PANGO_WEIGHT_HEAVY&amp;quot;&lt;br /&gt;
     			}&amp;quot;&lt;br /&gt;
     		end&lt;br /&gt;
&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    As you can see each possible value has a setter command&amp;lt;br&amp;gt;(set_light, set_normal and so on) and a boolean&amp;lt;br&amp;gt;query (is_light, is_normal). As usual low-level values are accessible&amp;lt;br&amp;gt;only by a WRAPPER or a WRAPPER_HANDLER.&lt;br /&gt;
&lt;br /&gt;
Using eiffel-gcc-xml&lt;br /&gt;
&lt;br /&gt;
Have a look at the manually written ZLIB_EXTERNALS. Eiffel is a language that is meant to be easy to the reader at the cost of being verbose. All that text of source to access a bunch of C functions. Think about serious libraries that have literally thousands of functions, structures, and enumeration! Writing the low level side of those wrappers is a really long, tedious task, the kind of task that people usually would leave to an unfaticable, astonishgly fast yet quite dumb worker, a computer. Andreas Leitner - who is surely quite smarter than myself - wrote a C parser for his Eiffel Wrapper Generator. I do not have neither the time neither the abilities of Andreas but it seems that I'm more lucky than him. In fact by the time I got serious with this project, people with the same problem, requiring tons of wrappers for Python, produced gcc-xml. These days parsing XML is a considered a common task, a task to be left to standard libraries, so SmartEiffel have an XML parser. So I wrote a little tool name &amp;quot;eiffel-gcc-xml&amp;quot; that takes the output of gcc-xml as input to produce the low-level &amp;quot;external&amp;quot; classes that we need to access functions, structures and enumerations.&lt;br /&gt;
&lt;br /&gt;
Well, it actually requires a little more work since it breaks very often.&lt;br /&gt;
Memory handling&lt;br /&gt;
C_STRUCT is a wrapper for a data structure implemented in C programming language using a structure.&lt;br /&gt;
It does not make any assumption about memory handling; the developer of a SmartEiffel wrapper of a C library has to inherit to create a proper wrapper for it the developer shall inherit both from this class and from classes providing memory handling behavior, depending on how structure's memory shall be handled. This is decided  case-by-case by C library.&lt;br /&gt;
Currently available memory handling classes are:&lt;br /&gt;
&lt;br /&gt;
    C_OWNED: memory is always handled by the underlying C library.&lt;br /&gt;
    EIFFEL_OWNED: once created memory is fully handled by Eiffel runtime, usually with the Garbage Collector.&lt;br /&gt;
    GLOBALLY_CACHED: Until disposed by Eiffel the wrapper registered in wrappers dictionary will be the unique wrapper used on the Eiffel side.&lt;br /&gt;
    MIXED_MEMORY_HANDLING: whose memory can either by handled by the Eiffel library or by the underlying C code. Who handles memory is decided on a per-object based on the value of the flag `is_shared': handle will not be freed on dispose of the Eiffel wrapper object, when `is_shared' is true.&lt;br /&gt;
    REFERENCE_COUNTED: memory is handled thought reference counting, i.e.GObject&lt;br /&gt;
&lt;br /&gt;
Add proper examples of the various memory handling classes.&lt;br /&gt;
Implementing collections&lt;br /&gt;
Quite often objects are stored into containers or collections like arrays, linked lists, dictionaries, hashed-tables and so on. Many C libraries provides their own implementation of the classic containers, for example the GLib library provides GList, GSList, GHashTable and many others.&lt;br /&gt;
A WRAPPER_COLLECTION is a COLLECTION implemented wrapping some facilities offered by the wrapped C library, like GLib's linked list GList.&lt;br /&gt;
When you wrap those data structures you will encounter two kinds of problems:&lt;br /&gt;
&lt;br /&gt;
    Pointer returned by C containers could be newly allocated, not already wrapped by the Eiffel wrapper or already wrapper by the Eiffel wrapper. You can't naively create a new WRAPPER every time. Beside the obvious waste of memory and the stress you put on the garbage collector you will break most postconditions and invariant of a COLLECTION, since things that seems obvious like&lt;br /&gt;
&lt;br /&gt;
 do_stuff (my_collection: WRAPPER_COLLECTION[ITEM]) is require&lt;br /&gt;
my_collection/=Void not my_collection.is_empty local a,b: ITEM do a :=&lt;br /&gt;
my_collection.first b := my_collection.first check will_fail: a = b end end&lt;br /&gt;
&lt;br /&gt;
In fact a and b will be different wrappers referring to the same underlying C structure. A WRAPPER_COLLECTION shall  avoid this repeated, unnecessary and wrong creation of WRAPPERs, that will breaks invariants and post-conditions of a COLLECTION.&lt;br /&gt;
A solution is to inherit from WRAPPERS_CACHE, initializing cache at creation time and keeping it updated during usage. Cache's key is the address (pointer) to the wrapped C structure, value is the corresponding Eiffel wrapper. This way you can get back an already-created Eiffel wrapper.&lt;br /&gt;
Classes can implement different scheme; for example G_OBJECT_LIST retrieve the reference to the eventual WRAPPER directly from underlying GObject.&lt;br /&gt;
&lt;br /&gt;
    The container has no means to know how it shall create the wrapper for it, since C does not have the notion of generic, strongly typed container. The effective type of the containee is either not know by WRAPPER_COLLECTION or worse its conteinees  could actually belong to different classes, sharing a common ancestor.&lt;br /&gt;
    Since each library has its own idea on how the programmer shall handle �memory when dealing with containers an effective, non-deferred heir of WRAPPER_COLLECTION shall implement `wrapper' feature that given a pointer creates or retrieve a WRAPPER of the fittest class. Usually &amp;quot;plain&amp;quot; usage could return a fixed type; more elaborate type systems like GObject could provide the facilities necessary to pick a useful Eiffel type.&lt;br /&gt;
&lt;br /&gt;
TODO: finish it.&lt;br /&gt;
Comparability and hashability&lt;br /&gt;
Some collections does not require anything in particular to their containee, like arrays or linked lists. Other collections needs either to compare their containee or to obtain an hash value from it. Therefore wrapper classes that are conceptually comparable or hashable shall inherit from COMPARABLE_WRAPPER and HASHABLE_WRAPPER respectively so they could be stored into collections that requires such abilities.&lt;br /&gt;
How to adapt old wrappers&lt;br /&gt;
(This is almost obsolete) Previous design was a black-or-white design: a class was either Eiffel-owned or not; C_STRUCT's are &amp;quot;owned&amp;quot; by the Eiffel code, and the Eiffel side should keep then longest lived reference to this struct; SHARED_C_STRUCT modelled the non-Eiffel-owned.&lt;br /&gt;
This approach is overly simplicistic since real-life libraries implement a wide spectrum of memory handling policies. One solutions does not fit all needs. Study the documentation of the library and pick the right memory handling Eiffel class.&lt;br /&gt;
The long int problem&lt;br /&gt;
&lt;br /&gt;
Shortly it could be solved having two separate clusters one for 32bit, one for 64 bit where a deferred class defines a parameterless query for anchored declaration like&lt;br /&gt;
&lt;br /&gt;
long_int: INTEGER_32 is do end&lt;br /&gt;
&lt;br /&gt;
long_int: INTEGER_64 is do end&lt;br /&gt;
&lt;br /&gt;
but this looks like an unfeasible hack to me, at least now. Currently it is the only available answer; a &amp;quot;proper&amp;quot; solution would require changes in both the compiler and the standard library. I would like to know how ISE solved this.&lt;br /&gt;
&lt;br /&gt;
GObject-based libraries&lt;br /&gt;
&lt;br /&gt;
Nowadays many libraries are based on the GLib Object System also known as Gobject. This library &amp;quot;provides a portable object system and transparent cross-language interoperability&amp;quot;. It is used as the basic building block for literally hundeds of libraries and applications; in fact the command apt-cache rdepends libglib2.0-0 |wc -l told me that more than 2200 applications and libraries depend on either GLib or GObject.&lt;br /&gt;
&lt;br /&gt;
GObject implement its own classed type system. With the exception of basic types (and some other subtleties I will write later) all objects are structures referred by pointer, i.e. non-expanded classes in Eiffellese; the type of each object is identified by a number, a GType which has an associated structure to describe the class - the type - itself. During startup of the Eiffel application the wrapper library will register for each type name (i.e. GtkWindow, GtkButton....) it wraps an agent that given a pointer creates an Eiffel wrapper object for the creation_agents dictionary, with a call similar to creation_agents.put (agent create_gtk_window, &amp;quot;GtkWindow&amp;quot;), given the feature create_gtk_window (p: POINTER): GTK_WINDOW is do create Result.from_external_pointer(p) end.&lt;br /&gt;
&lt;br /&gt;
A Gobject can store arbitrary properties into itself. We use this to store a reference pointer to its Eiffel wrapper.&lt;br /&gt;
&lt;br /&gt;
When we receive a pointer to a Gobject the G_OBJECT_FACTORY first looks if this Gobject already has an attacked wrapper (an effective heir of G_OBJECT). Otherwise it ask the Gobject its GType and the associated class-name. It this class-name has a creation agent the wrapper is created invoking the retrieved creation agent; otherwise we recursively look at its parent class until we find a type that has a corresponding creation agent.&lt;br /&gt;
&lt;br /&gt;
When an effective G_OBJECT heir is actually created either explicitly because we know for sure its type or throught a creation agent the address of the wrapper is stored in the property &amp;quot;eiffel-wrapper&amp;quot; using the C function g_object_set_qdata (see store_eiffel_wrapper in G_OBJECT).&lt;br /&gt;
&lt;br /&gt;
As usual this approach is both correct, memory efficient and collection-friendly (see &amp;quot;Implementing collections&amp;quot; earlier) at the cost of being computing intensive. There are times when the wrapper library has to create transient wrappers for shortly lived objects. Here enters secondary wrappers, or G_OBJECTs that are not referred-by the GOBject they refer to. Letting code speak: having a_gtk_window_ptr: POINTER; my_window: GTK_WINDOW; factory: G_OBJECT_EXPANDED_FACTORY check create my_window.secondary_wrapper_from(a_gtk_window_ptr) /= factory.wrapper(a_gtk_window_ptr) end will hold and also create my_window.main_wrapper_from(a_gtk_window_ptr); check my_window = factory.wrapper(a_gtk_window_ptr) end will be successfully passed. The difference is that the first is only an allocation of a smallish object (few bytes) while the latter could potentially require several looks-up into a dictionary plus an O(n) search into the GObject properties (during g_object_get_qdata used to see if a wrapper does actually exist)&lt;br /&gt;
&lt;br /&gt;
TODO: show how to wrap a typical GObject-using library, like Gnome's GConf configuration system.&lt;br /&gt;
Commit's policy&lt;br /&gt;
&lt;br /&gt;
    There is no strict rule...&lt;br /&gt;
    Ideally each commit should provide compilable code and working examples.&lt;br /&gt;
    Provided examples and classes can be unfinished and uncomplete, can contain warnings, empty features and so on. My motto is &amp;quot;something is better than nothing&amp;quot;.&lt;br /&gt;
    it is nice to tell other developers what are you working on; anemail on eiffel-libraries-devel@gna.org suffice.&lt;br /&gt;
    I promise I won't track you with a 9-tail cat to bash you if you commit uncompilable code.&lt;br /&gt;
    Code that compiles is a good thing. Wisely designed code that compiles is better, since it has better performances; but I prefer published, working code even if has no state-of-the-art performances instead of&lt;br /&gt;
&lt;br /&gt;
Various very old notes&lt;br /&gt;
Those notes are left here to be worked on.&lt;br /&gt;
&lt;br /&gt;
Suggested&lt;br /&gt;
Start copying original documentation into an Eiffel class and comment it out entirely.&lt;br /&gt;
Add proper indexing clauses, then progressively convert it into Eiffel from top to bottom.&lt;br /&gt;
Sketch difficult features into comments.&lt;br /&gt;
This behaviour is not meant to pile rubbish, but to quickly know how much work we still have to do.&lt;br /&gt;
This means that the resulting Eiffel classes will be a derivative work of the original documentation of the library. This is usally not a problem these days because documentation is often automatically extracted from sources, so the Eiffel wrapper will end up having the same license of the wrapper library; for example our GTK+ wrapper being a derivative work of the actual GTK+ C library must abide its LGPL license.&lt;br /&gt;
All the infrastructure of GTK+, including GObject are - in my humble opinion - explicitly designed to make the life easy for people writing wrappers for loosely-typed languages such as Python, Perl and other scriptiong languages. This (sadly) means that life for heavily/strongly-typed languages such as Eiffel are made annoying.&lt;br /&gt;
Objects like closures and other amenities like that won't be wrapped until the rest is done and working.&lt;br /&gt;
&lt;br /&gt;
=== Incoming tools ===&lt;br /&gt;
&lt;br /&gt;
Libraries using gobject-introspection and typelib provides much more information to write wrappers and binding for other languages.&lt;br /&gt;
&lt;br /&gt;
The metadata of a typelib file allows to directly produce high-level wrappers. &lt;br /&gt;
&lt;br /&gt;
This will give us support for Gtk3, Glib, Cairo and many many other libraries in a much faster way that manually wrapping each one. &lt;br /&gt;
&lt;br /&gt;
The tool that will generate such binding  will be named '''leggow''', acronym for '''Liberty Eiffel Generator of GObject Wrappers''' and it currently lies in the leggow branch in repository https://github.com/tybor/Liberty but it is currently only an idea.&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Getting_Started&amp;diff=2612</id>
		<title>Getting Started</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Getting_Started&amp;diff=2612"/>
		<updated>2018-09-15T18:08:03Z</updated>

		<summary type="html">&lt;p&gt;Ramack: /* Bootstrap from git source */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Prepared Debian/Ubuntu packages ==&lt;br /&gt;
On http://apt.liberty-eiffel.org/ we have prepared some Debian/Ubuntu packages. For the quick start using the last stable release do:&lt;br /&gt;
&lt;br /&gt;
* add the following repository (note: it is currently unsigned)&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;deb http://apt.liberty-eiffel.org/ release main&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* then install (as root or with sudo)&lt;br /&gt;
 apt-get install liberty-eiffel-all&lt;br /&gt;
&lt;br /&gt;
That's it, you now can run &amp;quot;se c&amp;quot; to [[Tutorial_tour|compile your first program.]]&lt;br /&gt;
&lt;br /&gt;
== Windows Installer ==&lt;br /&gt;
So far we don't have an installer for windows, but a [[GSoC_-_Windows_Support|current GSoC project]] is working on that. In case of interest get in touch with us, maybe you can provide some input or help with testing.&lt;br /&gt;
&lt;br /&gt;
== Bootstrap from tarball ==&lt;br /&gt;
Download the &amp;lt;release&amp;gt;.tar.gz from http://download.savannah.gnu.org/releases/liberty-eiffel&lt;br /&gt;
unpack it with&lt;br /&gt;
 tar -zxvf &amp;lt;release&amp;gt;.tar.gz&lt;br /&gt;
&lt;br /&gt;
bootstrap Liberty with&lt;br /&gt;
 cd &amp;lt;release&amp;gt;&lt;br /&gt;
 ./install.sh -bootstrap&lt;br /&gt;
&lt;br /&gt;
This will create a default liberty configuration in ~/.config/liberty-eiffel/, bootstrap the compiler and compile all the tools. Afterwards you just need to add &amp;lt;LibertyHome&amp;gt;/target/bin to your path, e. g. in .bashrc:&lt;br /&gt;
 PATH=$PATH:~/&amp;lt;release&amp;gt;/target/bin&lt;br /&gt;
 export PATH&lt;br /&gt;
&lt;br /&gt;
== Bootstrap from git source ==&lt;br /&gt;
On Linux (and most other Unix-like systems) installation of Liberty from source is simple:&lt;br /&gt;
&lt;br /&gt;
Check that the following Pre-requisites are available on your system:&lt;br /&gt;
* git&lt;br /&gt;
* GCC compiler&lt;br /&gt;
* castxml (or GCC-XML)&lt;br /&gt;
* Boehm-Demers-Weiser garbage collector dev-packages&lt;br /&gt;
&lt;br /&gt;
On debian-like systems you may install them with:&lt;br /&gt;
 sudo apt-get install git build-essential castxml libgc-dev&lt;br /&gt;
&lt;br /&gt;
On Fedora you'll need gc-devel, rather than libgc-dev, castxml and of course the basic packages for compiling like gcc, git etc.&lt;br /&gt;
&lt;br /&gt;
Now clone the repository:&lt;br /&gt;
 git clone git://git.sv.gnu.org/liberty-eiffel.git&lt;br /&gt;
&lt;br /&gt;
Change into the directory you created by this:&lt;br /&gt;
 cd liberty-eiffel&lt;br /&gt;
&lt;br /&gt;
and execute&lt;br /&gt;
 ./install.sh -bootstrap&lt;br /&gt;
&lt;br /&gt;
This will create a default liberty configuration in ~/.config/liberty-eiffel/, bootstrap the compiler and compile all the tools. Afterwards you just need to add &amp;lt;LibertyHome&amp;gt;/target/bin to your path, e. g. in .bashrc:&lt;br /&gt;
 PATH=$PATH:~/liberty-eiffel/target/bin&lt;br /&gt;
 export PATH&lt;br /&gt;
&lt;br /&gt;
'''Please note that no legacy SmartEiffel system should be installed on your system. Particularily, any /etc/serc file will prevent you from installing Liberty Eiffel correctly.&lt;br /&gt;
'''&lt;br /&gt;
Now you can call [[Se|se]] as interface for all tools. For examples go to&lt;br /&gt;
 cd &amp;lt;LibertyHome&amp;gt;/tutorial&lt;br /&gt;
and compile with&lt;br /&gt;
 se compile hello_world.e -o hello_world&lt;br /&gt;
your first Liberty Eiffel program.&lt;br /&gt;
&lt;br /&gt;
After this great success, play with the [[Table of contents#Eiffel|language]], [[Tools|tools]] and [[Table of contents#Library|libraries]]. Develop cool applications and for any question, suggestion or complaint [[Get in touch|get in touch]] with us. We are also happy to receive pull requests and provide accounts to this wiki if you want to contribute code or documentation. Be welcome to [[Get involved| get involved]].&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=ECMA&amp;diff=2596</id>
		<title>ECMA</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=ECMA&amp;diff=2596"/>
		<updated>2018-09-07T18:50:24Z</updated>

		<summary type="html">&lt;p&gt;Ramack: add is_equal comment&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In [http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-367.pdf ECMA-367] the ECMA committee TC39-TG4 defines an Eiffel standard. Liberty is not committed to fully implement this standard, but it will adopt many more of the improvements than SmartEiffel did at the time. Liberty will implement those parts of ECMA that match the effective, efficient and simple design of previous versions of Eiffel. The parts requiring an extensive run-time model will not be currently implemented; those that needlessly complicate the language to comply to widespread programming conventions will be evaluated case-by-case.&lt;br /&gt;
&lt;br /&gt;
==Liberty Eiffel offers these ECMA features already:==&lt;br /&gt;
* '''attribute''' keyword may be used to define an attribute including self-initialization with contracts checking.&lt;br /&gt;
&lt;br /&gt;
With small deviations:&lt;br /&gt;
* Non-conforming inheritance (but using '''insert''' instead of '''inherit {NONE}'''); see [[Typing policy]]&lt;br /&gt;
* [https://github.com/LibertyEiffel/Liberty/issues/78 Assigners] with the following deviations:&lt;br /&gt;
** VFAC (ECMA §8.5.22) is not enforced (let the standard rules of the replacing procedure call play instead)&lt;br /&gt;
** assigners are inherited with proper renames (ECMA does not explicitly specify the rules either way)&lt;br /&gt;
* [[task:12666|Cosmetic syntax changes]]:&lt;br /&gt;
** '''is''' is now optional&lt;br /&gt;
** '''alias''' is implemented, including '''alias &amp;quot;[]&amp;quot;'''&lt;br /&gt;
** '''note''' replaces '''indexing''' and can be placed at the start and end of a class, and at the start of a feature&lt;br /&gt;
** '''create''' replaces '''creation'''&lt;br /&gt;
* [[task:12661|generic creation]]&lt;br /&gt;
&lt;br /&gt;
==These ISE features are also implemented:==&lt;br /&gt;
&lt;br /&gt;
[[task:13103|These features]] are not (yet) in the ECMA standard:&lt;br /&gt;
* the newer '''alias &amp;quot;()&amp;quot;'''&lt;br /&gt;
* its companion implicit tuples&lt;br /&gt;
* '''if-then-else''' expressions&lt;br /&gt;
&lt;br /&gt;
==These features are planned:==&lt;br /&gt;
* [[task:12662|generic inheritance]]&lt;br /&gt;
* [[task:12660|conversions]] - maybe with a slightly stricter interpretation&lt;br /&gt;
* [[task:12653|named TUPLE elements]]&lt;br /&gt;
* [[task:12664|void-safety]] (Liberty implementation will probably differ from ECMA)&lt;br /&gt;
* '''attached''' vs '''detached'''&lt;br /&gt;
* '''across'''&lt;br /&gt;
&lt;br /&gt;
==These ECMA features are not planned in Liberty:==&lt;br /&gt;
* No-variant agent arguments.&lt;br /&gt;
&lt;br /&gt;
==These features are not in ECMA but implemented in Liberty:==&lt;br /&gt;
* [[task:12671|inline agents are closures]]&lt;br /&gt;
* explicit agent conformance rules (see [http://www.jot.fm/issues/issue_2004_04/article7/ this JOT paper])&lt;br /&gt;
&lt;br /&gt;
==Not yet decided:==&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;TYPE[G]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; and explicit conversion&lt;br /&gt;
* postcondition of is_equal: same_type: Result implies same_type(other)&lt;br /&gt;
** this essentially forbids any equal objects with different types and is inconsistent to the current implementation in Liberty. It has some nice background (e. g. symmetry is not easy to guarantee without that), but we also do not want to brake existing code&lt;br /&gt;
&lt;br /&gt;
See also [[Compatibility]].&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Upcoming_release_names&amp;diff=2592</id>
		<title>Upcoming release names</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Upcoming_release_names&amp;diff=2592"/>
		<updated>2018-09-04T21:07:38Z</updated>

		<summary type="html">&lt;p&gt;Ramack: resort future names&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Liberty releases are named after famous engineers names starting by A for the first release, B for the second, and so on.&lt;br /&gt;
Here is a list of name suggestions for future releases:&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Glenn_Curtiss Glenn Curtiss] ('''&amp;quot;curtiss&amp;quot;''', currently being worked on)&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Jack_Dennis Jack Dennis] ('''&amp;quot;dennis&amp;quot;''')&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Thomas_Edison Thomas Edison] ('''&amp;quot;edison&amp;quot;''')&lt;br /&gt;
* [https://en.wikipedia.org/wiki/John_Ambrose_Fleming John Ambrose Fleming] ('''&amp;quot;fleming&amp;quot;''') &lt;br /&gt;
* [https://en.wikipedia.org/wiki/Dennis_Gabor Dennis Gabor] ('''&amp;quot;gabor&amp;quot;'''), [https://en.wikipedia.org/wiki/Robert_H._Goddard Robert Goddard] ('''&amp;quot;goddard&amp;quot;''') or [https://en.wikipedia.org/wiki/Gustave_Eiffel Gustave Eiffel]('''&amp;quot;gustave&amp;quot;''') (@ramacks preference is Gabor)&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Grace_Hopper Grace Hopper] ('''&amp;quot;hopper&amp;quot;''')&lt;br /&gt;
* I?&lt;br /&gt;
* J?&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Jack_Kilby Jack Kilby] ('''&amp;quot;kilby&amp;quot;''')&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Cornelis_Lely Cornelis Lely] ('''&amp;quot;lely&amp;quot;''')&lt;br /&gt;
* [https://en.wikipedia.org/wiki/James_Clerk_Maxwell James Clerk Maxwell] ('''&amp;quot;maxwell&amp;quot;''')&lt;br /&gt;
&lt;br /&gt;
Feel free to suggest any further names. You may read the lists of engineers on WikiPedia:&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Lists_of_engineers Lists of engineers]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/List_of_civil_engineers List of civil engineers]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/List_of_structural_engineers List of structural engineers]&lt;br /&gt;
&lt;br /&gt;
Each published final release will also have a numeric tag in the form of &amp;quot;year.month&amp;quot; which is more simple to remember.&lt;br /&gt;
&lt;br /&gt;
Already released versions are listed in [[Versions history]].&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Configuration_file&amp;diff=2555</id>
		<title>Configuration file</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Configuration_file&amp;diff=2555"/>
		<updated>2017-02-17T19:34:26Z</updated>

		<summary type="html">&lt;p&gt;Ramack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Most Liberty Eiffel tools need some kind of configuration which is stored in a unique file to allow the user not too have over-long command lines. This is named '''liberty.cfg''' on windows systems and '''liberty.se''' on unix-like systems.&lt;br /&gt;
&lt;br /&gt;
In particular it contains&lt;br /&gt;
* general settings like system type, number of processes to start during compilation&lt;br /&gt;
* paths to find tools, environment variables, [[short]] templates...&lt;br /&gt;
* paths of the clusters that define all the classes available by default (the universe).&lt;br /&gt;
* '''se''' shortcuts for the available tools&lt;br /&gt;
* C-compiler options for each c_mode&lt;br /&gt;
&lt;br /&gt;
An initial version of this configuration is generated by [[install|the installation tool]] of Liberty Eiffel.&lt;br /&gt;
&lt;br /&gt;
== Where is this configuration ==&lt;br /&gt;
It is possible to have several configuration files, which are treated by priority and more specific files can override the settings from the general ones. The lowest priority is attributed to system-wide files, while user-specific (e.g. &amp;lt;tt&amp;gt;~/.serc&amp;lt;/tt&amp;gt;) and session-specific (the &amp;lt;tt&amp;gt;Liberty&amp;lt;/tt&amp;gt; environment variable) get higher priority. In case a configuration location is a directory, all the entries of the directory are merged (or to be accurate: all entries are handled with priority defined via alphabetical sort of the names). All that because of some distributions like to add/remove files instead of grep'ing and sed'ing huge configuration file.&lt;br /&gt;
Default configuration file locations:&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Windows and DOS:&lt;br /&gt;
| '''&amp;lt;TT&amp;gt;%ALLUSERSPROFILE%\Liberty-Eiffel&amp;lt;/TT&amp;gt;''', &amp;lt;TT&amp;gt;%USERPROFILE%\SE.CFG&amp;lt;/TT&amp;gt;, &amp;lt;TT&amp;gt;%USERPROFILE%\LIBERTY.CFG&amp;lt;/TT&amp;gt;, '''&amp;lt;TT&amp;gt;%USERPROFILE%\Liberty-Eiffel&amp;lt;/TT&amp;gt;''' (lookup in this order)&lt;br /&gt;
|-&lt;br /&gt;
| Unix and Cygwin:&lt;br /&gt;
| &amp;lt;TT&amp;gt;/etc/serc&amp;lt;/TT&amp;gt;, &amp;lt;TT&amp;gt;/etc/xdg/liberty-eiffel&amp;lt;/TT&amp;gt;, '''&amp;lt;TT&amp;gt;/etc/liberty-eiffel&amp;lt;/TT&amp;gt;''', &amp;lt;TT&amp;gt;/usr/local/etc/liberty-eiffel&amp;lt;/TT&amp;gt;, '''&amp;lt;TT&amp;gt;~/.config/liberty-eiffel&amp;lt;/TT&amp;gt;''', &amp;lt;TT&amp;gt;~/.serc&amp;lt;/TT&amp;gt;  &amp;lt;TT&amp;gt;~/.liberty-eiffel&amp;lt;/TT&amp;gt; (look-up in this order, XDG_CONFIG_HOME is taken into account to adjust the paths)&lt;br /&gt;
|-&lt;br /&gt;
| Elate:&lt;br /&gt;
| &amp;lt;TT&amp;gt;/lang/eiffel/serc&amp;lt;/TT&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
The suggested directories are '''bold'''.&lt;br /&gt;
&lt;br /&gt;
The other operating systems don't have a default value, the &amp;lt;tt&amp;gt;Liberty&amp;lt;/tt&amp;gt; environment variable must be used. If you have such an operating system and you think there is a reasonable default value, '''thanks for telling us'''.&lt;br /&gt;
&lt;br /&gt;
== File syntax ==&lt;br /&gt;
&lt;br /&gt;
The file is written using a simple text format. It is split in sections that each begin with a word between square brackets on a single line. Each section is comprised of key-value pairs separated by a colon.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 [General]&lt;br /&gt;
 bin: /home/cyril/Liberty/bin/&lt;br /&gt;
 sys: /home/cyril/Liberty/sys/&lt;br /&gt;
 short: /home/cyril/Liberty/short/&lt;br /&gt;
 os: UNIX&lt;br /&gt;
 flavor: Linux&lt;br /&gt;
 tag: 3&lt;br /&gt;
 jobs: 4&lt;br /&gt;
&lt;br /&gt;
=== The General section ===&lt;br /&gt;
&lt;br /&gt;
This section is named &amp;lt;TT&amp;gt;[General]&amp;lt;/TT&amp;gt;. It must provide the following keys:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;10%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;TT&amp;gt;bin&amp;lt;/TT&amp;gt;&lt;br /&gt;
| the path to the compiler executables. This path is used in particular by the [[se]] tool (see below the Tools section) and [[compile]].&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &amp;lt;TT&amp;gt;sys&amp;lt;/TT&amp;gt;&lt;br /&gt;
| the path to the Liberty Eiffel system files. This path is used by [[compile_to_c]]. It contains all the basic files included by those compilers. They define the &amp;quot;basic bricks&amp;quot; of the generated Eiffel system.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &amp;lt;TT&amp;gt;short&amp;lt;/TT&amp;gt;&lt;br /&gt;
| the path to the [[short]] templates (modes &amp;lt;TT&amp;gt;-html&amp;lt;/TT&amp;gt;, &amp;lt;TT&amp;gt;-tex&amp;lt;/TT&amp;gt;, etc.)&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &amp;lt;TT&amp;gt;os&amp;lt;/TT&amp;gt;&lt;br /&gt;
| the type of the operating system Liberty Eiffel is installed on. The recognized types are: UNIX, Windows, Cygwin, BeOS, Macintosh, Amiga, DOS, OS2, OpenVMS, Elate.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &amp;lt;TT&amp;gt;flavor&amp;lt;/TT&amp;gt;&lt;br /&gt;
| allows a more accurate specification of the operating system type, useful for some plugins. For instance, if the &amp;lt;TT&amp;gt;os&amp;lt;/TT&amp;gt; is UNIX, the &amp;lt;TT&amp;gt;flavor&amp;lt;/TT&amp;gt; can be Linux. There is no predefined list of values; plugins must tell which are the supported &amp;lt;TT&amp;gt;flavor&amp;lt;/TT&amp;gt;s.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &amp;lt;TT&amp;gt;tag&amp;lt;/TT&amp;gt;&lt;br /&gt;
| normally only used by the [[install|installation tool]] to define the version of the configuration file. There should be ascending compatibility between versions but '''currently, if the tag is not the one of the installation tool, no data is kept'''. This behavior was changed in SmartEiffel 2.3, to keep as much data as possible.&lt;br /&gt;
&lt;br /&gt;
The tag value was '''3''' for SmartEiffel 2.2 and 2.3.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &amp;lt;TT&amp;gt;jobs&amp;lt;/TT&amp;gt;&lt;br /&gt;
| if a tool has some tasks which may be done in parallel (e. g. calling the C compiler for generated C files) it creates at most the configured amount of processes. Performance-wise, it's likely best not to use hyperthreading, especially when compiling big systems.  An example: if your system reports a quadcore processor, it might actually be equipped with a dualcore with hyperthreading activated. In that case it's likely best to set &amp;lt;TT&amp;gt;jobs&amp;lt;/TT&amp;gt; to 2 and not to 4.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== The Environment section ===&lt;br /&gt;
&lt;br /&gt;
The environment section allows you to define ''environment variables'' specific to Liberty Eiffel. In particular these variables are available in the remaining of the configuration file, in the &amp;lt;tt&amp;gt;loadpath.se&amp;lt;/tt&amp;gt; files, ACE files and some command line arguments.&lt;br /&gt;
&lt;br /&gt;
The [[install|installation tool]] installs the following default variables:&lt;br /&gt;
&lt;br /&gt;
 [Environment]&lt;br /&gt;
 path_liberty: /home/cyril/Liberty/&lt;br /&gt;
 path_liberty_core: /home/cyril/Liberty/src/lib/&lt;br /&gt;
 path_liberty_extra: /home/cyril/Liberty/src/wrappers/&lt;br /&gt;
 path_smarteiffel: /home/cyril/Liberty/src/smarteiffel/&lt;br /&gt;
 path_tools: /home/cyril/Liberty/src/tools/&lt;br /&gt;
 path_tutorial: /home/cyril/Liberty/tutorial/&lt;br /&gt;
&lt;br /&gt;
Note that anyone can add their own variables.&lt;br /&gt;
&lt;br /&gt;
=== The universe ===&lt;br /&gt;
&lt;br /&gt;
The universe is the set of all known clusters. It is defined in the &amp;lt;TT&amp;gt;[Loadpath]&amp;lt;/TT&amp;gt; section.&lt;br /&gt;
&lt;br /&gt;
The [[install|installation tool]] installs the following default universe:&lt;br /&gt;
&lt;br /&gt;
 [Loadpath]&lt;br /&gt;
 liberty_core: ${path_liberty_core}loadpath.se&lt;br /&gt;
 liberty_extra: ${path_liberty_extra}loadpath.se&lt;br /&gt;
 test: ${path_liberty}test/loadpath.se&lt;br /&gt;
 smarteiffel: ${path_smarteiffel}loadpath.se&lt;br /&gt;
 tools: ${path_tools}loadpath.se&lt;br /&gt;
 tutorial: ${path_tutorial}loadpath.se&lt;br /&gt;
&lt;br /&gt;
Note that anyone can add their own tools to the libraries they use most.&lt;br /&gt;
&lt;br /&gt;
'''Caveat''': the universe is ''not'' used by the tools if an ACE file is given. In this case, the ACE file must describe the whole universe. On the other hand it is very simple to do so since just adding a single line or two to your ACE file will produce the desired effect:&lt;br /&gt;
&lt;br /&gt;
 cluster&lt;br /&gt;
    standard: &amp;quot;${path_liberty_core}loadpath.se&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Tools ===&lt;br /&gt;
&lt;br /&gt;
All the tools used by the [[se]] command are set here. These tools must be in the directory pointed to by the &amp;lt;tt&amp;gt;bin&amp;lt;/tt&amp;gt; key of the &amp;lt;tt&amp;gt;[General]&amp;lt;/tt&amp;gt; section. The key is used as first argument of [[se]].&lt;br /&gt;
&lt;br /&gt;
The [[install|installation tool]] installs the following default commands:&lt;br /&gt;
&lt;br /&gt;
 [Tools]&lt;br /&gt;
 ace_check: ace_check&lt;br /&gt;
 c2c: compile_to_c&lt;br /&gt;
 c: compile&lt;br /&gt;
 class_check: class_check&lt;br /&gt;
 clean: clean&lt;br /&gt;
 doc: eiffeldoc&lt;br /&gt;
 find: finder&lt;br /&gt;
 make: se_make.sh&lt;br /&gt;
 mock: mocker&lt;br /&gt;
 pretty: pretty&lt;br /&gt;
 short: short&lt;br /&gt;
 test: eiffeltest&lt;br /&gt;
 test_ng: eiffeltest_ng&lt;br /&gt;
 test_server: eiffeltest_server&lt;br /&gt;
 wrap: wrappers_generator&lt;br /&gt;
 x_int: extract_internals&lt;br /&gt;
&lt;br /&gt;
Note that anyone can add their own tools, as long as the executable is in the directory pointed to by the &amp;lt;tt&amp;gt;bin&amp;lt;/tt&amp;gt; key of the &amp;lt;tt&amp;gt;[General]&amp;lt;/tt&amp;gt; section and an entry is added to the &amp;lt;tt&amp;gt;[Tools]&amp;lt;/tt&amp;gt; section.&lt;br /&gt;
&lt;br /&gt;
=== C modes ===&lt;br /&gt;
&lt;br /&gt;
These modes are used by the C back-end: used C compiler, options... E. g.&lt;br /&gt;
 [boost]&lt;br /&gt;
 c_compiler_type: gcc&lt;br /&gt;
 c_compiler_path: gcc&lt;br /&gt;
 c_compiler_options: -pipe -O2 -fno-gcse&lt;br /&gt;
 c_linker_path: gcc&lt;br /&gt;
 c_linker_options: -Xlinker -no-as-needed&lt;br /&gt;
 cpp_compiler_type: g++&lt;br /&gt;
 cpp_compiler_path: g++&lt;br /&gt;
 cpp_compiler_options: -pipe -O2 -fno-gcse&lt;br /&gt;
 cpp_linker_path: gcc&lt;br /&gt;
 cpp_linker_options: -Xlinker -no-as-needed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
By default some C modes are automatically associated to the Eiffel compilation levels (&amp;lt;TT&amp;gt;-boost&amp;lt;/TT&amp;gt;, &amp;lt;TT&amp;gt;-require_check&amp;lt;/TT&amp;gt;, etc.). The C mode can also be explicitely set in the command line of [[compile_to_c|compile_to_c]] or [[compile|compile]] thanks to the &amp;lt;TT&amp;gt;-c_mode&amp;lt;/TT&amp;gt; option.&lt;br /&gt;
&lt;br /&gt;
The following C modes are default for a standard installation: &amp;lt;TT&amp;gt;boost&amp;lt;/TT&amp;gt;, &amp;lt;TT&amp;gt;no_check&amp;lt;/TT&amp;gt;, &amp;lt;TT&amp;gt;require_check&amp;lt;/TT&amp;gt;, &amp;lt;TT&amp;gt;ensure_check&amp;lt;/TT&amp;gt;, &amp;lt;TT&amp;gt;invariant_check&amp;lt;/TT&amp;gt;, &amp;lt;TT&amp;gt;loop_check&amp;lt;/TT&amp;gt;, &amp;lt;TT&amp;gt;all_check&amp;lt;/TT&amp;gt;, &amp;lt;TT&amp;gt;debug_check&amp;lt;/TT&amp;gt; and &amp;lt;TT&amp;gt;release&amp;lt;/TT&amp;gt;. Only the last one must be explicitely set; it is usually used to finalize a program (&amp;lt;TT&amp;gt;se c -boost -c_mode release ...&amp;lt;/TT&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Usually the default C modes depend on the chosen C compiler and needs adaption if GCC is not used.&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Configuration_file_-_liberty.cfg&amp;diff=2554</id>
		<title>Configuration file - liberty.cfg</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Configuration_file_-_liberty.cfg&amp;diff=2554"/>
		<updated>2017-02-17T19:34:05Z</updated>

		<summary type="html">&lt;p&gt;Ramack: Ramack moved page Configuration file - liberty.cfg to Configuration file&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Configuration file]]&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Configuration_file&amp;diff=2553</id>
		<title>Configuration file</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Configuration_file&amp;diff=2553"/>
		<updated>2017-02-17T19:34:05Z</updated>

		<summary type="html">&lt;p&gt;Ramack: Ramack moved page Configuration file - liberty.cfg to Configuration file&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Most Liberty Eiffel tools need some kind of configuration which is stored in a unique file to allow the user not too have over-long command lines. This is named liberty.cfg on windows systems and liberty.se on unix-like systems.&lt;br /&gt;
&lt;br /&gt;
In particular it contains&lt;br /&gt;
* general settings like system type, number of processes to start during compilation&lt;br /&gt;
* paths to find tools, environment variables, [[short]] templates...&lt;br /&gt;
* paths of the clusters that define all the classes available by default (the universe).&lt;br /&gt;
* '''se''' shortcuts for the available tools&lt;br /&gt;
* C-compiler options for each c_mode&lt;br /&gt;
&lt;br /&gt;
An initial version of this configuration is generated by [[install|the installation tool]] of Liberty Eiffel.&lt;br /&gt;
&lt;br /&gt;
== Where is this configuration ==&lt;br /&gt;
It is possible to have several configuration files, which are treated by priority and more specific files can override the settings from the general ones. The lowest priority is attributed to system-wide files, while user-specific (e.g. &amp;lt;tt&amp;gt;~/.serc&amp;lt;/tt&amp;gt;) and session-specific (the &amp;lt;tt&amp;gt;Liberty&amp;lt;/tt&amp;gt; environment variable) get higher priority. In case a configuration location is a directory, all the entries of the directory are merged (or to be accurate: all entries are handled with priority defined via alphabetical sort of the names). All that because of some distributions like to add/remove files instead of grep'ing and sed'ing huge configuration file.&lt;br /&gt;
Default configuration file locations:&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Windows and DOS:&lt;br /&gt;
| '''&amp;lt;TT&amp;gt;%ALLUSERSPROFILE%\Liberty-Eiffel&amp;lt;/TT&amp;gt;''', &amp;lt;TT&amp;gt;%USERPROFILE%\SE.CFG&amp;lt;/TT&amp;gt;, &amp;lt;TT&amp;gt;%USERPROFILE%\LIBERTY.CFG&amp;lt;/TT&amp;gt;, '''&amp;lt;TT&amp;gt;%USERPROFILE%\Liberty-Eiffel&amp;lt;/TT&amp;gt;''' (lookup in this order)&lt;br /&gt;
|-&lt;br /&gt;
| Unix and Cygwin:&lt;br /&gt;
| &amp;lt;TT&amp;gt;/etc/serc&amp;lt;/TT&amp;gt;, &amp;lt;TT&amp;gt;/etc/xdg/liberty-eiffel&amp;lt;/TT&amp;gt;, '''&amp;lt;TT&amp;gt;/etc/liberty-eiffel&amp;lt;/TT&amp;gt;''', &amp;lt;TT&amp;gt;/usr/local/etc/liberty-eiffel&amp;lt;/TT&amp;gt;, '''&amp;lt;TT&amp;gt;~/.config/liberty-eiffel&amp;lt;/TT&amp;gt;''', &amp;lt;TT&amp;gt;~/.serc&amp;lt;/TT&amp;gt;  &amp;lt;TT&amp;gt;~/.liberty-eiffel&amp;lt;/TT&amp;gt; (look-up in this order, XDG_CONFIG_HOME is taken into account to adjust the paths)&lt;br /&gt;
|-&lt;br /&gt;
| Elate:&lt;br /&gt;
| &amp;lt;TT&amp;gt;/lang/eiffel/serc&amp;lt;/TT&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
The suggested directories are '''bold'''.&lt;br /&gt;
&lt;br /&gt;
The other operating systems don't have a default value, the &amp;lt;tt&amp;gt;Liberty&amp;lt;/tt&amp;gt; environment variable must be used. If you have such an operating system and you think there is a reasonable default value, '''thanks for telling us'''.&lt;br /&gt;
&lt;br /&gt;
== File syntax ==&lt;br /&gt;
&lt;br /&gt;
The file is written using a simple text format. It is split in sections that each begin with a word between square brackets on a single line. Each section is comprised of key-value pairs separated by a colon.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 [General]&lt;br /&gt;
 bin: /home/cyril/Liberty/bin/&lt;br /&gt;
 sys: /home/cyril/Liberty/sys/&lt;br /&gt;
 short: /home/cyril/Liberty/short/&lt;br /&gt;
 os: UNIX&lt;br /&gt;
 flavor: Linux&lt;br /&gt;
 tag: 3&lt;br /&gt;
 jobs: 4&lt;br /&gt;
&lt;br /&gt;
=== The General section ===&lt;br /&gt;
&lt;br /&gt;
This section is named &amp;lt;TT&amp;gt;[General]&amp;lt;/TT&amp;gt;. It must provide the following keys:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;10%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;TT&amp;gt;bin&amp;lt;/TT&amp;gt;&lt;br /&gt;
| the path to the compiler executables. This path is used in particular by the [[se]] tool (see below the Tools section) and [[compile]].&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &amp;lt;TT&amp;gt;sys&amp;lt;/TT&amp;gt;&lt;br /&gt;
| the path to the Liberty Eiffel system files. This path is used by [[compile_to_c]]. It contains all the basic files included by those compilers. They define the &amp;quot;basic bricks&amp;quot; of the generated Eiffel system.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &amp;lt;TT&amp;gt;short&amp;lt;/TT&amp;gt;&lt;br /&gt;
| the path to the [[short]] templates (modes &amp;lt;TT&amp;gt;-html&amp;lt;/TT&amp;gt;, &amp;lt;TT&amp;gt;-tex&amp;lt;/TT&amp;gt;, etc.)&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &amp;lt;TT&amp;gt;os&amp;lt;/TT&amp;gt;&lt;br /&gt;
| the type of the operating system Liberty Eiffel is installed on. The recognized types are: UNIX, Windows, Cygwin, BeOS, Macintosh, Amiga, DOS, OS2, OpenVMS, Elate.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &amp;lt;TT&amp;gt;flavor&amp;lt;/TT&amp;gt;&lt;br /&gt;
| allows a more accurate specification of the operating system type, useful for some plugins. For instance, if the &amp;lt;TT&amp;gt;os&amp;lt;/TT&amp;gt; is UNIX, the &amp;lt;TT&amp;gt;flavor&amp;lt;/TT&amp;gt; can be Linux. There is no predefined list of values; plugins must tell which are the supported &amp;lt;TT&amp;gt;flavor&amp;lt;/TT&amp;gt;s.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &amp;lt;TT&amp;gt;tag&amp;lt;/TT&amp;gt;&lt;br /&gt;
| normally only used by the [[install|installation tool]] to define the version of the configuration file. There should be ascending compatibility between versions but '''currently, if the tag is not the one of the installation tool, no data is kept'''. This behavior was changed in SmartEiffel 2.3, to keep as much data as possible.&lt;br /&gt;
&lt;br /&gt;
The tag value was '''3''' for SmartEiffel 2.2 and 2.3.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &amp;lt;TT&amp;gt;jobs&amp;lt;/TT&amp;gt;&lt;br /&gt;
| if a tool has some tasks which may be done in parallel (e. g. calling the C compiler for generated C files) it creates at most the configured amount of processes. Performance-wise, it's likely best not to use hyperthreading, especially when compiling big systems.  An example: if your system reports a quadcore processor, it might actually be equipped with a dualcore with hyperthreading activated. In that case it's likely best to set &amp;lt;TT&amp;gt;jobs&amp;lt;/TT&amp;gt; to 2 and not to 4.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== The Environment section ===&lt;br /&gt;
&lt;br /&gt;
The environment section allows you to define ''environment variables'' specific to Liberty Eiffel. In particular these variables are available in the remaining of the configuration file, in the &amp;lt;tt&amp;gt;loadpath.se&amp;lt;/tt&amp;gt; files, ACE files and some command line arguments.&lt;br /&gt;
&lt;br /&gt;
The [[install|installation tool]] installs the following default variables:&lt;br /&gt;
&lt;br /&gt;
 [Environment]&lt;br /&gt;
 path_liberty: /home/cyril/Liberty/&lt;br /&gt;
 path_liberty_core: /home/cyril/Liberty/src/lib/&lt;br /&gt;
 path_liberty_extra: /home/cyril/Liberty/src/wrappers/&lt;br /&gt;
 path_smarteiffel: /home/cyril/Liberty/src/smarteiffel/&lt;br /&gt;
 path_tools: /home/cyril/Liberty/src/tools/&lt;br /&gt;
 path_tutorial: /home/cyril/Liberty/tutorial/&lt;br /&gt;
&lt;br /&gt;
Note that anyone can add their own variables.&lt;br /&gt;
&lt;br /&gt;
=== The universe ===&lt;br /&gt;
&lt;br /&gt;
The universe is the set of all known clusters. It is defined in the &amp;lt;TT&amp;gt;[Loadpath]&amp;lt;/TT&amp;gt; section.&lt;br /&gt;
&lt;br /&gt;
The [[install|installation tool]] installs the following default universe:&lt;br /&gt;
&lt;br /&gt;
 [Loadpath]&lt;br /&gt;
 liberty_core: ${path_liberty_core}loadpath.se&lt;br /&gt;
 liberty_extra: ${path_liberty_extra}loadpath.se&lt;br /&gt;
 test: ${path_liberty}test/loadpath.se&lt;br /&gt;
 smarteiffel: ${path_smarteiffel}loadpath.se&lt;br /&gt;
 tools: ${path_tools}loadpath.se&lt;br /&gt;
 tutorial: ${path_tutorial}loadpath.se&lt;br /&gt;
&lt;br /&gt;
Note that anyone can add their own tools to the libraries they use most.&lt;br /&gt;
&lt;br /&gt;
'''Caveat''': the universe is ''not'' used by the tools if an ACE file is given. In this case, the ACE file must describe the whole universe. On the other hand it is very simple to do so since just adding a single line or two to your ACE file will produce the desired effect:&lt;br /&gt;
&lt;br /&gt;
 cluster&lt;br /&gt;
    standard: &amp;quot;${path_liberty_core}loadpath.se&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Tools ===&lt;br /&gt;
&lt;br /&gt;
All the tools used by the [[se]] command are set here. These tools must be in the directory pointed to by the &amp;lt;tt&amp;gt;bin&amp;lt;/tt&amp;gt; key of the &amp;lt;tt&amp;gt;[General]&amp;lt;/tt&amp;gt; section. The key is used as first argument of [[se]].&lt;br /&gt;
&lt;br /&gt;
The [[install|installation tool]] installs the following default commands:&lt;br /&gt;
&lt;br /&gt;
 [Tools]&lt;br /&gt;
 ace_check: ace_check&lt;br /&gt;
 c2c: compile_to_c&lt;br /&gt;
 c: compile&lt;br /&gt;
 class_check: class_check&lt;br /&gt;
 clean: clean&lt;br /&gt;
 doc: eiffeldoc&lt;br /&gt;
 find: finder&lt;br /&gt;
 make: se_make.sh&lt;br /&gt;
 mock: mocker&lt;br /&gt;
 pretty: pretty&lt;br /&gt;
 short: short&lt;br /&gt;
 test: eiffeltest&lt;br /&gt;
 test_ng: eiffeltest_ng&lt;br /&gt;
 test_server: eiffeltest_server&lt;br /&gt;
 wrap: wrappers_generator&lt;br /&gt;
 x_int: extract_internals&lt;br /&gt;
&lt;br /&gt;
Note that anyone can add their own tools, as long as the executable is in the directory pointed to by the &amp;lt;tt&amp;gt;bin&amp;lt;/tt&amp;gt; key of the &amp;lt;tt&amp;gt;[General]&amp;lt;/tt&amp;gt; section and an entry is added to the &amp;lt;tt&amp;gt;[Tools]&amp;lt;/tt&amp;gt; section.&lt;br /&gt;
&lt;br /&gt;
=== C modes ===&lt;br /&gt;
&lt;br /&gt;
These modes are used by the C back-end: used C compiler, options... E. g.&lt;br /&gt;
 [boost]&lt;br /&gt;
 c_compiler_type: gcc&lt;br /&gt;
 c_compiler_path: gcc&lt;br /&gt;
 c_compiler_options: -pipe -O2 -fno-gcse&lt;br /&gt;
 c_linker_path: gcc&lt;br /&gt;
 c_linker_options: -Xlinker -no-as-needed&lt;br /&gt;
 cpp_compiler_type: g++&lt;br /&gt;
 cpp_compiler_path: g++&lt;br /&gt;
 cpp_compiler_options: -pipe -O2 -fno-gcse&lt;br /&gt;
 cpp_linker_path: gcc&lt;br /&gt;
 cpp_linker_options: -Xlinker -no-as-needed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
By default some C modes are automatically associated to the Eiffel compilation levels (&amp;lt;TT&amp;gt;-boost&amp;lt;/TT&amp;gt;, &amp;lt;TT&amp;gt;-require_check&amp;lt;/TT&amp;gt;, etc.). The C mode can also be explicitely set in the command line of [[compile_to_c|compile_to_c]] or [[compile|compile]] thanks to the &amp;lt;TT&amp;gt;-c_mode&amp;lt;/TT&amp;gt; option.&lt;br /&gt;
&lt;br /&gt;
The following C modes are default for a standard installation: &amp;lt;TT&amp;gt;boost&amp;lt;/TT&amp;gt;, &amp;lt;TT&amp;gt;no_check&amp;lt;/TT&amp;gt;, &amp;lt;TT&amp;gt;require_check&amp;lt;/TT&amp;gt;, &amp;lt;TT&amp;gt;ensure_check&amp;lt;/TT&amp;gt;, &amp;lt;TT&amp;gt;invariant_check&amp;lt;/TT&amp;gt;, &amp;lt;TT&amp;gt;loop_check&amp;lt;/TT&amp;gt;, &amp;lt;TT&amp;gt;all_check&amp;lt;/TT&amp;gt;, &amp;lt;TT&amp;gt;debug_check&amp;lt;/TT&amp;gt; and &amp;lt;TT&amp;gt;release&amp;lt;/TT&amp;gt;. Only the last one must be explicitely set; it is usually used to finalize a program (&amp;lt;TT&amp;gt;se c -boost -c_mode release ...&amp;lt;/TT&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Usually the default C modes depend on the chosen C compiler and needs adaption if GCC is not used.&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Configuration_file&amp;diff=2552</id>
		<title>Configuration file</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Configuration_file&amp;diff=2552"/>
		<updated>2017-02-17T19:33:10Z</updated>

		<summary type="html">&lt;p&gt;Ramack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Most Liberty Eiffel tools need some kind of configuration which is stored in a unique file to allow the user not too have over-long command lines. This is named liberty.cfg on windows systems and liberty.se on unix-like systems.&lt;br /&gt;
&lt;br /&gt;
In particular it contains&lt;br /&gt;
* general settings like system type, number of processes to start during compilation&lt;br /&gt;
* paths to find tools, environment variables, [[short]] templates...&lt;br /&gt;
* paths of the clusters that define all the classes available by default (the universe).&lt;br /&gt;
* '''se''' shortcuts for the available tools&lt;br /&gt;
* C-compiler options for each c_mode&lt;br /&gt;
&lt;br /&gt;
An initial version of this configuration is generated by [[install|the installation tool]] of Liberty Eiffel.&lt;br /&gt;
&lt;br /&gt;
== Where is this configuration ==&lt;br /&gt;
It is possible to have several configuration files, which are treated by priority and more specific files can override the settings from the general ones. The lowest priority is attributed to system-wide files, while user-specific (e.g. &amp;lt;tt&amp;gt;~/.serc&amp;lt;/tt&amp;gt;) and session-specific (the &amp;lt;tt&amp;gt;Liberty&amp;lt;/tt&amp;gt; environment variable) get higher priority. In case a configuration location is a directory, all the entries of the directory are merged (or to be accurate: all entries are handled with priority defined via alphabetical sort of the names). All that because of some distributions like to add/remove files instead of grep'ing and sed'ing huge configuration file.&lt;br /&gt;
Default configuration file locations:&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Windows and DOS:&lt;br /&gt;
| '''&amp;lt;TT&amp;gt;%ALLUSERSPROFILE%\Liberty-Eiffel&amp;lt;/TT&amp;gt;''', &amp;lt;TT&amp;gt;%USERPROFILE%\SE.CFG&amp;lt;/TT&amp;gt;, &amp;lt;TT&amp;gt;%USERPROFILE%\LIBERTY.CFG&amp;lt;/TT&amp;gt;, '''&amp;lt;TT&amp;gt;%USERPROFILE%\Liberty-Eiffel&amp;lt;/TT&amp;gt;''' (lookup in this order)&lt;br /&gt;
|-&lt;br /&gt;
| Unix and Cygwin:&lt;br /&gt;
| &amp;lt;TT&amp;gt;/etc/serc&amp;lt;/TT&amp;gt;, &amp;lt;TT&amp;gt;/etc/xdg/liberty-eiffel&amp;lt;/TT&amp;gt;, '''&amp;lt;TT&amp;gt;/etc/liberty-eiffel&amp;lt;/TT&amp;gt;''', &amp;lt;TT&amp;gt;/usr/local/etc/liberty-eiffel&amp;lt;/TT&amp;gt;, '''&amp;lt;TT&amp;gt;~/.config/liberty-eiffel&amp;lt;/TT&amp;gt;''', &amp;lt;TT&amp;gt;~/.serc&amp;lt;/TT&amp;gt;  &amp;lt;TT&amp;gt;~/.liberty-eiffel&amp;lt;/TT&amp;gt; (look-up in this order, XDG_CONFIG_HOME is taken into account to adjust the paths)&lt;br /&gt;
|-&lt;br /&gt;
| Elate:&lt;br /&gt;
| &amp;lt;TT&amp;gt;/lang/eiffel/serc&amp;lt;/TT&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
The suggested directories are '''bold'''.&lt;br /&gt;
&lt;br /&gt;
The other operating systems don't have a default value, the &amp;lt;tt&amp;gt;Liberty&amp;lt;/tt&amp;gt; environment variable must be used. If you have such an operating system and you think there is a reasonable default value, '''thanks for telling us'''.&lt;br /&gt;
&lt;br /&gt;
== File syntax ==&lt;br /&gt;
&lt;br /&gt;
The file is written using a simple text format. It is split in sections that each begin with a word between square brackets on a single line. Each section is comprised of key-value pairs separated by a colon.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 [General]&lt;br /&gt;
 bin: /home/cyril/Liberty/bin/&lt;br /&gt;
 sys: /home/cyril/Liberty/sys/&lt;br /&gt;
 short: /home/cyril/Liberty/short/&lt;br /&gt;
 os: UNIX&lt;br /&gt;
 flavor: Linux&lt;br /&gt;
 tag: 3&lt;br /&gt;
 jobs: 4&lt;br /&gt;
&lt;br /&gt;
=== The General section ===&lt;br /&gt;
&lt;br /&gt;
This section is named &amp;lt;TT&amp;gt;[General]&amp;lt;/TT&amp;gt;. It must provide the following keys:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;10%&amp;quot; valign=&amp;quot;top&amp;quot; | &amp;lt;TT&amp;gt;bin&amp;lt;/TT&amp;gt;&lt;br /&gt;
| the path to the compiler executables. This path is used in particular by the [[se]] tool (see below the Tools section) and [[compile]].&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &amp;lt;TT&amp;gt;sys&amp;lt;/TT&amp;gt;&lt;br /&gt;
| the path to the Liberty Eiffel system files. This path is used by [[compile_to_c]]. It contains all the basic files included by those compilers. They define the &amp;quot;basic bricks&amp;quot; of the generated Eiffel system.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &amp;lt;TT&amp;gt;short&amp;lt;/TT&amp;gt;&lt;br /&gt;
| the path to the [[short]] templates (modes &amp;lt;TT&amp;gt;-html&amp;lt;/TT&amp;gt;, &amp;lt;TT&amp;gt;-tex&amp;lt;/TT&amp;gt;, etc.)&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &amp;lt;TT&amp;gt;os&amp;lt;/TT&amp;gt;&lt;br /&gt;
| the type of the operating system Liberty Eiffel is installed on. The recognized types are: UNIX, Windows, Cygwin, BeOS, Macintosh, Amiga, DOS, OS2, OpenVMS, Elate.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &amp;lt;TT&amp;gt;flavor&amp;lt;/TT&amp;gt;&lt;br /&gt;
| allows a more accurate specification of the operating system type, useful for some plugins. For instance, if the &amp;lt;TT&amp;gt;os&amp;lt;/TT&amp;gt; is UNIX, the &amp;lt;TT&amp;gt;flavor&amp;lt;/TT&amp;gt; can be Linux. There is no predefined list of values; plugins must tell which are the supported &amp;lt;TT&amp;gt;flavor&amp;lt;/TT&amp;gt;s.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &amp;lt;TT&amp;gt;tag&amp;lt;/TT&amp;gt;&lt;br /&gt;
| normally only used by the [[install|installation tool]] to define the version of the configuration file. There should be ascending compatibility between versions but '''currently, if the tag is not the one of the installation tool, no data is kept'''. This behavior was changed in SmartEiffel 2.3, to keep as much data as possible.&lt;br /&gt;
&lt;br /&gt;
The tag value was '''3''' for SmartEiffel 2.2 and 2.3.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &amp;lt;TT&amp;gt;jobs&amp;lt;/TT&amp;gt;&lt;br /&gt;
| if a tool has some tasks which may be done in parallel (e. g. calling the C compiler for generated C files) it creates at most the configured amount of processes. Performance-wise, it's likely best not to use hyperthreading, especially when compiling big systems.  An example: if your system reports a quadcore processor, it might actually be equipped with a dualcore with hyperthreading activated. In that case it's likely best to set &amp;lt;TT&amp;gt;jobs&amp;lt;/TT&amp;gt; to 2 and not to 4.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== The Environment section ===&lt;br /&gt;
&lt;br /&gt;
The environment section allows you to define ''environment variables'' specific to Liberty Eiffel. In particular these variables are available in the remaining of the configuration file, in the &amp;lt;tt&amp;gt;loadpath.se&amp;lt;/tt&amp;gt; files, ACE files and some command line arguments.&lt;br /&gt;
&lt;br /&gt;
The [[install|installation tool]] installs the following default variables:&lt;br /&gt;
&lt;br /&gt;
 [Environment]&lt;br /&gt;
 path_liberty: /home/cyril/Liberty/&lt;br /&gt;
 path_liberty_core: /home/cyril/Liberty/src/lib/&lt;br /&gt;
 path_liberty_extra: /home/cyril/Liberty/src/wrappers/&lt;br /&gt;
 path_smarteiffel: /home/cyril/Liberty/src/smarteiffel/&lt;br /&gt;
 path_tools: /home/cyril/Liberty/src/tools/&lt;br /&gt;
 path_tutorial: /home/cyril/Liberty/tutorial/&lt;br /&gt;
&lt;br /&gt;
Note that anyone can add their own variables.&lt;br /&gt;
&lt;br /&gt;
=== The universe ===&lt;br /&gt;
&lt;br /&gt;
The universe is the set of all known clusters. It is defined in the &amp;lt;TT&amp;gt;[Loadpath]&amp;lt;/TT&amp;gt; section.&lt;br /&gt;
&lt;br /&gt;
The [[install|installation tool]] installs the following default universe:&lt;br /&gt;
&lt;br /&gt;
 [Loadpath]&lt;br /&gt;
 liberty_core: ${path_liberty_core}loadpath.se&lt;br /&gt;
 liberty_extra: ${path_liberty_extra}loadpath.se&lt;br /&gt;
 test: ${path_liberty}test/loadpath.se&lt;br /&gt;
 smarteiffel: ${path_smarteiffel}loadpath.se&lt;br /&gt;
 tools: ${path_tools}loadpath.se&lt;br /&gt;
 tutorial: ${path_tutorial}loadpath.se&lt;br /&gt;
&lt;br /&gt;
Note that anyone can add their own tools to the libraries they use most.&lt;br /&gt;
&lt;br /&gt;
'''Caveat''': the universe is ''not'' used by the tools if an ACE file is given. In this case, the ACE file must describe the whole universe. On the other hand it is very simple to do so since just adding a single line or two to your ACE file will produce the desired effect:&lt;br /&gt;
&lt;br /&gt;
 cluster&lt;br /&gt;
    standard: &amp;quot;${path_liberty_core}loadpath.se&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Tools ===&lt;br /&gt;
&lt;br /&gt;
All the tools used by the [[se]] command are set here. These tools must be in the directory pointed to by the &amp;lt;tt&amp;gt;bin&amp;lt;/tt&amp;gt; key of the &amp;lt;tt&amp;gt;[General]&amp;lt;/tt&amp;gt; section. The key is used as first argument of [[se]].&lt;br /&gt;
&lt;br /&gt;
The [[install|installation tool]] installs the following default commands:&lt;br /&gt;
&lt;br /&gt;
 [Tools]&lt;br /&gt;
 ace_check: ace_check&lt;br /&gt;
 c2c: compile_to_c&lt;br /&gt;
 c: compile&lt;br /&gt;
 class_check: class_check&lt;br /&gt;
 clean: clean&lt;br /&gt;
 doc: eiffeldoc&lt;br /&gt;
 find: finder&lt;br /&gt;
 make: se_make.sh&lt;br /&gt;
 mock: mocker&lt;br /&gt;
 pretty: pretty&lt;br /&gt;
 short: short&lt;br /&gt;
 test: eiffeltest&lt;br /&gt;
 test_ng: eiffeltest_ng&lt;br /&gt;
 test_server: eiffeltest_server&lt;br /&gt;
 wrap: wrappers_generator&lt;br /&gt;
 x_int: extract_internals&lt;br /&gt;
&lt;br /&gt;
Note that anyone can add their own tools, as long as the executable is in the directory pointed to by the &amp;lt;tt&amp;gt;bin&amp;lt;/tt&amp;gt; key of the &amp;lt;tt&amp;gt;[General]&amp;lt;/tt&amp;gt; section and an entry is added to the &amp;lt;tt&amp;gt;[Tools]&amp;lt;/tt&amp;gt; section.&lt;br /&gt;
&lt;br /&gt;
=== C modes ===&lt;br /&gt;
&lt;br /&gt;
These modes are used by the C back-end: used C compiler, options... E. g.&lt;br /&gt;
 [boost]&lt;br /&gt;
 c_compiler_type: gcc&lt;br /&gt;
 c_compiler_path: gcc&lt;br /&gt;
 c_compiler_options: -pipe -O2 -fno-gcse&lt;br /&gt;
 c_linker_path: gcc&lt;br /&gt;
 c_linker_options: -Xlinker -no-as-needed&lt;br /&gt;
 cpp_compiler_type: g++&lt;br /&gt;
 cpp_compiler_path: g++&lt;br /&gt;
 cpp_compiler_options: -pipe -O2 -fno-gcse&lt;br /&gt;
 cpp_linker_path: gcc&lt;br /&gt;
 cpp_linker_options: -Xlinker -no-as-needed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
By default some C modes are automatically associated to the Eiffel compilation levels (&amp;lt;TT&amp;gt;-boost&amp;lt;/TT&amp;gt;, &amp;lt;TT&amp;gt;-require_check&amp;lt;/TT&amp;gt;, etc.). The C mode can also be explicitely set in the command line of [[compile_to_c|compile_to_c]] or [[compile|compile]] thanks to the &amp;lt;TT&amp;gt;-c_mode&amp;lt;/TT&amp;gt; option.&lt;br /&gt;
&lt;br /&gt;
The following C modes are default for a standard installation: &amp;lt;TT&amp;gt;boost&amp;lt;/TT&amp;gt;, &amp;lt;TT&amp;gt;no_check&amp;lt;/TT&amp;gt;, &amp;lt;TT&amp;gt;require_check&amp;lt;/TT&amp;gt;, &amp;lt;TT&amp;gt;ensure_check&amp;lt;/TT&amp;gt;, &amp;lt;TT&amp;gt;invariant_check&amp;lt;/TT&amp;gt;, &amp;lt;TT&amp;gt;loop_check&amp;lt;/TT&amp;gt;, &amp;lt;TT&amp;gt;all_check&amp;lt;/TT&amp;gt;, &amp;lt;TT&amp;gt;debug_check&amp;lt;/TT&amp;gt; and &amp;lt;TT&amp;gt;release&amp;lt;/TT&amp;gt;. Only the last one must be explicitely set; it is usually used to finalize a program (&amp;lt;TT&amp;gt;se c -boost -c_mode release ...&amp;lt;/TT&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Usually the default C modes depend on the chosen C compiler and needs adaption if GCC is not used.&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Release_Notes_(Versions_history)&amp;diff=2551</id>
		<title>Release Notes (Versions history)</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Release_Notes_(Versions_history)&amp;diff=2551"/>
		<updated>2017-01-14T00:15:01Z</updated>

		<summary type="html">&lt;p&gt;Ramack: /* Curtiss (2016.dev, to be named after Glenn Curtiss) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Releases]]&lt;br /&gt;
== Liberty Eiffel (latest release first) ==&lt;br /&gt;
For other upcoming releases see the [[upcoming releases|list of names]].&lt;br /&gt;
=== Curtiss (2017.dev, to be named after [https://en.wikipedia.org/wiki/Glenn_Curtiss Glenn Curtiss]) ===&lt;br /&gt;
* not yet released (see next section for current release notes)&lt;br /&gt;
* User-visible changes:&lt;br /&gt;
** redesign of eiffeldoc generated HTML to reduce its size dramatically&lt;br /&gt;
** addition of a zsh completer for se&lt;br /&gt;
** finally got rid of obsolete classes GEN_RAND, MIN_STAND and STD_RAND&lt;br /&gt;
** removed support for some unused legacy platforms (Amiga, Elate, BeOS, OS/2, Macintosh)&lt;br /&gt;
** obsolete keyword 'creation' now generates an error&lt;br /&gt;
** obsolete class READY_DESCRIPTION removed from sequencer cluster&lt;br /&gt;
** 'is_prime' feature added to class INTEGER_GENERAL&lt;br /&gt;
** 'is_fibonacci' feature added to class INTEGER_GENERAL&lt;br /&gt;
** C99 conforming C code generation (hopefully)&lt;br /&gt;
* Developer changes:&lt;br /&gt;
** RUN_FEATUREs now have clear names (hopefully)&lt;br /&gt;
** to better support the user access rights model of the more recent Windows versions, the config file is no longer written to a root directory but rather to %ALLUSERSPROFILE% or %USERPROFILE% &lt;br /&gt;
* Known bugs:&lt;br /&gt;
** see [https://savannah.gnu.org/bugs/?group=liberty-eiffel] for the full list&lt;br /&gt;
&lt;br /&gt;
=== Bell (2016.05, named after [https://en.wikipedia.org/wiki/Alexander_Graham_Bell Alexander Graham Bell]) ===&lt;br /&gt;
* released in May 2016&lt;br /&gt;
* first release since Liberty Eiffel has become the official GNU Eiffel compiler&lt;br /&gt;
* User-visible changes:&lt;br /&gt;
** changed Environment Variable name from SmartEiffel to LibertyEiffel (anyhow, normally it should not be necessary to set this one)&lt;br /&gt;
** new tool [[Mock]]&lt;br /&gt;
** removed linebreaks in compiler output&lt;br /&gt;
** many bugfixes&lt;br /&gt;
** GC call at exit is optional&lt;br /&gt;
** generic creation&lt;br /&gt;
** agents are now [https://en.wikipedia.org/wiki/Closure_(computer_programming) closures ]&lt;br /&gt;
** finder now finds all classes in the universe with the given name, not only the first one&lt;br /&gt;
** keyword '''is''' at the beginning of a feature is now deprecated&lt;br /&gt;
** Added support for alias &amp;quot;[]&amp;quot; and alias &amp;quot;()&amp;quot;&lt;br /&gt;
** constants are now visible in the eiffeldoc generated documentation&lt;br /&gt;
* Known bugs:&lt;br /&gt;
** there is still an issue in both GC implementations (classical SEGC and BDW), if it shows up, it often yields a &amp;quot;Bad target type&amp;quot; runtime error.&lt;br /&gt;
** for the full list see [https://savannah.gnu.org/bugs/?group=liberty-eiffel]&lt;br /&gt;
&lt;br /&gt;
=== Adler (2013.11, named after [http://en.wikipedia.org/wiki/Charles_Adler,_Jr. Charles Adler, Jr.]) ===&lt;br /&gt;
* First release as Liberty Eiffel&lt;br /&gt;
* User-visible changes:&lt;br /&gt;
** Added [[library_class:NATURAL_8|&amp;lt;tt&amp;gt;NATURAL_8&amp;lt;/tt&amp;gt;]], [[library_class:NATURAL_16|&amp;lt;tt&amp;gt;NATURAL_16&amp;lt;/tt&amp;gt;]], [[library_class:NATURAL_32|&amp;lt;tt&amp;gt;NATURAL_32&amp;lt;/tt&amp;gt;]], and [[library_class:NATURAL_64|&amp;lt;tt&amp;gt;NATURAL_64&amp;lt;/tt&amp;gt;]] classes. See &amp;lt;tt&amp;gt;tutorial/natural.e&amp;lt;/tt&amp;gt; for examples.&lt;br /&gt;
** Even low-level features (i.e. &amp;lt;tt&amp;gt;external &amp;quot;built_in&amp;quot;&amp;lt;/tt&amp;gt;) are now checking their assertions. As an example, division by zero is now checked by assertions.&lt;br /&gt;
** Inlined dynamic dispatch for better performance&lt;br /&gt;
** A missing export clause is deprecated. Use &amp;lt;tt&amp;gt;{ANY}&amp;lt;/tt&amp;gt; instead.&lt;br /&gt;
** New core libraries: cli, json, log, parse (beware, these libraries are not yet tuned to be used without GC)&lt;br /&gt;
** Improved libraries: string (with notably a new [[library_class:FIXED_STRING|&amp;lt;tt&amp;gt;FIXED_STRING&amp;lt;/tt&amp;gt;]] class)&lt;br /&gt;
** Wrapper libraries: gtk, gdk, readline, ffi...&lt;br /&gt;
** A new tool that can generate mocks to help unit testing&lt;br /&gt;
** [http://hboehm.info/gc/ BDW] GC support&lt;br /&gt;
** Collections implementation of is_equal changed to compare the contained objects using their is_equal functions instead of = (which was formerly the functionality of is_equal_map). The old functionality of is_equal is available by fast_is_equal.&lt;br /&gt;
* Developer changes:&lt;br /&gt;
** The web site now belongs to the repository&lt;br /&gt;
** Automatic testing tools (ET on the web, and &amp;lt;tt&amp;gt;watch_eiffeltest.sh&amp;lt;/tt&amp;gt; in the shell)&lt;br /&gt;
** Automatic Debian packages generation&lt;br /&gt;
* Known bugs:&lt;br /&gt;
** BDW GC is not well tested; currently weak references seem not to work properly; and the GC is not run at program exit (it should run all finalizers)&lt;br /&gt;
** Sometimes SmartEiffel's native GC behaves wrongly, analysis is welcome&lt;br /&gt;
** Some of the newer core libraries do not work very well when there is no GC&lt;br /&gt;
** See the [https://savannah.gnu.org/bugs/?group=liberty-eiffel bugs page]&lt;br /&gt;
&lt;br /&gt;
== SmartEiffel (all releases which are predecessors of Liberty) ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Release 2.3 [Antoine-Auguste Parmentier] - Wednesday July 11th 2007 ===&lt;br /&gt;
&lt;br /&gt;
Again, a lot of novelties for this release:&lt;br /&gt;
&lt;br /&gt;
* New [[Typing policy|typing rules]] have been revisited and are now crystal clear. See [[Typing policy|this page]] for details.&lt;br /&gt;
* Implemented a new [[class loading]] algorithm, which takes into account the &amp;quot;distance&amp;quot; between classes, thus reifying the notion of clusters and sub-clusters. Everything is trans&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Release_Notes_(Versions_history)&amp;diff=2550</id>
		<title>Release Notes (Versions history)</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Release_Notes_(Versions_history)&amp;diff=2550"/>
		<updated>2017-01-14T00:14:49Z</updated>

		<summary type="html">&lt;p&gt;Ramack: /* Curtiss (2016.dev, to be named after Glenn Curtiss) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Releases]]&lt;br /&gt;
== Liberty Eiffel (latest release first) ==&lt;br /&gt;
For other upcoming releases see the [[upcoming releases|list of names]].&lt;br /&gt;
=== Curtiss (2016.dev, to be named after [https://en.wikipedia.org/wiki/Glenn_Curtiss Glenn Curtiss]) ===&lt;br /&gt;
* not yet released (see next section for current release notes)&lt;br /&gt;
* User-visible changes:&lt;br /&gt;
** redesign of eiffeldoc generated HTML to reduce its size dramatically&lt;br /&gt;
** addition of a zsh completer for se&lt;br /&gt;
** finally got rid of obsolete classes GEN_RAND, MIN_STAND and STD_RAND&lt;br /&gt;
** removed support for some unused legacy platforms (Amiga, Elate, BeOS, OS/2, Macintosh)&lt;br /&gt;
** obsolete keyword 'creation' now generates an error&lt;br /&gt;
** obsolete class READY_DESCRIPTION removed from sequencer cluster&lt;br /&gt;
** 'is_prime' feature added to class INTEGER_GENERAL&lt;br /&gt;
** 'is_fibonacci' feature added to class INTEGER_GENERAL&lt;br /&gt;
** C99 conforming C code generation (hopefully)&lt;br /&gt;
* Developer changes:&lt;br /&gt;
** RUN_FEATUREs now have clear names (hopefully)&lt;br /&gt;
** to better support the user access rights model of the more recent Windows versions, the config file is no longer written to a root directory but rather to %ALLUSERSPROFILE% or %USERPROFILE% &lt;br /&gt;
* Known bugs:&lt;br /&gt;
** see [https://savannah.gnu.org/bugs/?group=liberty-eiffel] for the full list&lt;br /&gt;
&lt;br /&gt;
=== Bell (2016.05, named after [https://en.wikipedia.org/wiki/Alexander_Graham_Bell Alexander Graham Bell]) ===&lt;br /&gt;
* released in May 2016&lt;br /&gt;
* first release since Liberty Eiffel has become the official GNU Eiffel compiler&lt;br /&gt;
* User-visible changes:&lt;br /&gt;
** changed Environment Variable name from SmartEiffel to LibertyEiffel (anyhow, normally it should not be necessary to set this one)&lt;br /&gt;
** new tool [[Mock]]&lt;br /&gt;
** removed linebreaks in compiler output&lt;br /&gt;
** many bugfixes&lt;br /&gt;
** GC call at exit is optional&lt;br /&gt;
** generic creation&lt;br /&gt;
** agents are now [https://en.wikipedia.org/wiki/Closure_(computer_programming) closures ]&lt;br /&gt;
** finder now finds all classes in the universe with the given name, not only the first one&lt;br /&gt;
** keyword '''is''' at the beginning of a feature is now deprecated&lt;br /&gt;
** Added support for alias &amp;quot;[]&amp;quot; and alias &amp;quot;()&amp;quot;&lt;br /&gt;
** constants are now visible in the eiffeldoc generated documentation&lt;br /&gt;
* Known bugs:&lt;br /&gt;
** there is still an issue in both GC implementations (classical SEGC and BDW), if it shows up, it often yields a &amp;quot;Bad target type&amp;quot; runtime error.&lt;br /&gt;
** for the full list see [https://savannah.gnu.org/bugs/?group=liberty-eiffel]&lt;br /&gt;
&lt;br /&gt;
=== Adler (2013.11, named after [http://en.wikipedia.org/wiki/Charles_Adler,_Jr. Charles Adler, Jr.]) ===&lt;br /&gt;
* First release as Liberty Eiffel&lt;br /&gt;
* User-visible changes:&lt;br /&gt;
** Added [[library_class:NATURAL_8|&amp;lt;tt&amp;gt;NATURAL_8&amp;lt;/tt&amp;gt;]], [[library_class:NATURAL_16|&amp;lt;tt&amp;gt;NATURAL_16&amp;lt;/tt&amp;gt;]], [[library_class:NATURAL_32|&amp;lt;tt&amp;gt;NATURAL_32&amp;lt;/tt&amp;gt;]], and [[library_class:NATURAL_64|&amp;lt;tt&amp;gt;NATURAL_64&amp;lt;/tt&amp;gt;]] classes. See &amp;lt;tt&amp;gt;tutorial/natural.e&amp;lt;/tt&amp;gt; for examples.&lt;br /&gt;
** Even low-level features (i.e. &amp;lt;tt&amp;gt;external &amp;quot;built_in&amp;quot;&amp;lt;/tt&amp;gt;) are now checking their assertions. As an example, division by zero is now checked by assertions.&lt;br /&gt;
** Inlined dynamic dispatch for better performance&lt;br /&gt;
** A missing export clause is deprecated. Use &amp;lt;tt&amp;gt;{ANY}&amp;lt;/tt&amp;gt; instead.&lt;br /&gt;
** New core libraries: cli, json, log, parse (beware, these libraries are not yet tuned to be used without GC)&lt;br /&gt;
** Improved libraries: string (with notably a new [[library_class:FIXED_STRING|&amp;lt;tt&amp;gt;FIXED_STRING&amp;lt;/tt&amp;gt;]] class)&lt;br /&gt;
** Wrapper libraries: gtk, gdk, readline, ffi...&lt;br /&gt;
** A new tool that can generate mocks to help unit testing&lt;br /&gt;
** [http://hboehm.info/gc/ BDW] GC support&lt;br /&gt;
** Collections implementation of is_equal changed to compare the contained objects using their is_equal functions instead of = (which was formerly the functionality of is_equal_map). The old functionality of is_equal is available by fast_is_equal.&lt;br /&gt;
* Developer changes:&lt;br /&gt;
** The web site now belongs to the repository&lt;br /&gt;
** Automatic testing tools (ET on the web, and &amp;lt;tt&amp;gt;watch_eiffeltest.sh&amp;lt;/tt&amp;gt; in the shell)&lt;br /&gt;
** Automatic Debian packages generation&lt;br /&gt;
* Known bugs:&lt;br /&gt;
** BDW GC is not well tested; currently weak references seem not to work properly; and the GC is not run at program exit (it should run all finalizers)&lt;br /&gt;
** Sometimes SmartEiffel's native GC behaves wrongly, analysis is welcome&lt;br /&gt;
** Some of the newer core libraries do not work very well when there is no GC&lt;br /&gt;
** See the [https://savannah.gnu.org/bugs/?group=liberty-eiffel bugs page]&lt;br /&gt;
&lt;br /&gt;
== SmartEiffel (all releases which are predecessors of Liberty) ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Release 2.3 [Antoine-Auguste Parmentier] - Wednesday July 11th 2007 ===&lt;br /&gt;
&lt;br /&gt;
Again, a lot of novelties for this release:&lt;br /&gt;
&lt;br /&gt;
* New [[Typing policy|typing rules]] have been revisited and are now crystal clear. See [[Typing policy|this page]] for details.&lt;br /&gt;
* Implemented a new [[class loading]] algorithm, which takes into account the &amp;quot;distance&amp;quot; between classes, thus reifying the notion of clusters and sub-clusters. Everything is trans&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Release_Checklist&amp;diff=2549</id>
		<title>Release Checklist</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Release_Checklist&amp;diff=2549"/>
		<updated>2017-01-05T19:40:20Z</updated>

		<summary type="html">&lt;p&gt;Ramack: add checkpoint&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is WIP. Please update if you think of any missing detail. The target is to include all necessary command line commands (where applicable)&lt;br /&gt;
&lt;br /&gt;
* cleanup Testsuite&lt;br /&gt;
* update LIBERTY_VERSION&lt;br /&gt;
* create new bootstrap germ code&lt;br /&gt;
 resources/smarteiffel-germ/make_germ.sh&lt;br /&gt;
* create a local branch for the next release&lt;br /&gt;
 git branch bell&lt;br /&gt;
* create a bell branch in the github repo (via web interface?)&lt;br /&gt;
* push it to savannah&lt;br /&gt;
 git checkout bell&lt;br /&gt;
 git push upstream bell&lt;br /&gt;
* remove all tools and libraries which are not sufficiently mature to be included in the release&lt;br /&gt;
** for Bell these are:&lt;br /&gt;
 cluster smarteiffel/generation/run&lt;br /&gt;
 smarteiffel/commands/run.e&lt;br /&gt;
 edc-new, edc&lt;br /&gt;
 lib/mmi&lt;br /&gt;
 effect tool&lt;br /&gt;
 src/staging&lt;br /&gt;
 src/lib/net/ezmq&lt;br /&gt;
 wrappers: cairo, database/postgresql, ewlc, llvm, zmq, xml&lt;br /&gt;
* switch ET to use the new branch&lt;br /&gt;
** echo &amp;quot;bell&amp;quot; &amp;gt; ~/branch on ETs account&lt;br /&gt;
** change website/et/html_templates/head.html to make ET output tell people which branch is being tested...&lt;br /&gt;
* adapt changelog (in work/packaging/debian.skel/debian/) in bell branch (remove ~dev tag)&lt;br /&gt;
* create release candidate&lt;br /&gt;
 git tag &amp;lt;release_name&amp;gt;-rc1&lt;br /&gt;
 git push --tags upstream&lt;br /&gt;
* on ETs account...&lt;br /&gt;
 work/packaging/build_debian.sh -rc1&lt;br /&gt;
 work/packaging/build_debian.sh -rc1 -deploy&lt;br /&gt;
 ssh et32@et32 &amp;quot;cd $LibertyBase &amp;amp;&amp;amp; git fetch origin &amp;amp;&amp;amp; git checkout $gitBranch &amp;amp;&amp;amp; git merge --ff-only FETCH_HEAD &amp;amp;&amp;amp; $LibertyBase/work/packaging/build_debian.sh -rc1&amp;quot;&lt;br /&gt;
 scp -p et32@et32:Liberty/work/packaging/debs/* ~/Liberty/work/packaging/debs_i386/&lt;br /&gt;
 reprepro --basedir ~/Liberty/website/apt includedeb rc liberty-eiffel-tools_2016~dev~rc1_i386.deb&lt;br /&gt;
* create doc tarballs&lt;br /&gt;
 check for next release&lt;br /&gt;
 work/build_doc.sh -plain -zip&lt;br /&gt;
 make doc.liberty-eiffel.org point to the released docs&lt;br /&gt;
* create tarball and put on FTP server&lt;br /&gt;
 download the tag tarball from http://git.savannah.gnu.org/cgit/liberty-eiffel.git&lt;br /&gt;
 work/strip_tgz.sh bell-rc1.tar.gz&lt;br /&gt;
 scp bell-rc1.tar.gz ramack@dl.sv.gnu.org:/srv/download/liberty-eiffel/&lt;br /&gt;
* collect RC feedback on our mailing list&lt;br /&gt;
* adapt changelog (in work/packaging/debian.skel/debian/) in bell branch (fix release version and date, without SNAPSHOT)&lt;br /&gt;
* create the final release tag&lt;br /&gt;
 git tag &amp;lt;release_name&amp;gt;&lt;br /&gt;
* create release debian packages&lt;br /&gt;
 see above, use -release instead of -rc1&lt;br /&gt;
* create tarball and put on FTP server&lt;br /&gt;
 see above for rc&lt;br /&gt;
* write announce email&lt;br /&gt;
** to our mailing list&lt;br /&gt;
** on http://lists.gnu.org/archive/html/info-gnu/&lt;br /&gt;
** as news entry on savannah&lt;br /&gt;
** https://en.wikipedia.org/wiki/LibertyEiffel - stable release docs&lt;br /&gt;
** https://directory.fsf.org/wiki/Liberty-eiffel &lt;br /&gt;
** adapt changelog (in work/packaging/debian.skel/debian/) in master branch (readd ~dev tagged version)&lt;br /&gt;
* switch ET back to use the master branch&lt;br /&gt;
** echo &amp;quot;master&amp;quot; &amp;gt; ~/branch on ETs account&lt;br /&gt;
* prepare changelog for the third release&lt;br /&gt;
* plan the next release (tickets on savannah)&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Manual_index&amp;diff=2548</id>
		<title>Manual index</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Manual_index&amp;diff=2548"/>
		<updated>2016-11-28T20:44:37Z</updated>

		<summary type="html">&lt;p&gt;Ramack: /* I */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Alphabetical order in English and one line per entry.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
[[#A|A]] | [[#B|B]] | [[#C|C]] | [[#D|D]] | &lt;br /&gt;
[[#E|E]] | [[#F|F]] | [[#G|G]] | [[#H|H]] | &lt;br /&gt;
[[#I|I]] | [[#J|J]] | [[#K|K]] | [[#L|L]] | &lt;br /&gt;
[[#M|M]] | [[#N|N]] | [[#O|O]] | [[#P|P]] | &lt;br /&gt;
[[#Q|Q]] | [[#R|R]] | [[#S|S]] | [[#T|T]] | &lt;br /&gt;
[[#U|U]] | [[#V|V]] | [[#W|W]] | [[#X|X]] | &lt;br /&gt;
[[#Y|Y]] | [[#Z|Z]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
== Symbols ==&lt;br /&gt;
*[[Comparison of objects#EqNeq|&amp;lt;tt&amp;gt;=&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Comparison of objects#EqNeq|&amp;lt;tt&amp;gt;/=&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#OpenTargetOrOperand|&amp;lt;tt&amp;gt;?&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Dynamic type testing#AssignmentAttempt|&amp;lt;tt&amp;gt;?=&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Dynamic type testing#AssignmentTest|&amp;lt;tt&amp;gt;?:=&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#Assignment|&amp;lt;tt&amp;gt;:=&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
*[[Dynamic type testing#ForcedAssignment|&amp;lt;tt&amp;gt;::=&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#UnqualifiedCall|&amp;lt;tt&amp;gt;$&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
== A ==&lt;br /&gt;
*[[ACE|ACE files]]&lt;br /&gt;
*[[Syntax diagrams#AgentCreation|&amp;lt;tt&amp;gt;agent&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#AgentCreation|Agent_creation (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#Type|anchored type]]&lt;br /&gt;
*[[library_class:ARRAY|&amp;lt;tt&amp;gt;ARRAY&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#Assertion|Assertion (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#Assignment|Assignment (syntax)]]&lt;br /&gt;
*[[Glossary#Attribute|attribute]]&lt;br /&gt;
*[[Expanded or reference#AutomaticInitialization|attribute (initialization)]]&lt;br /&gt;
&lt;br /&gt;
== B ==&lt;br /&gt;
*[[Syntax diagrams#BinaryOperator|Binary_operator (syntax)]]&lt;br /&gt;
*[[library_class:BOOLEAN|&amp;lt;tt&amp;gt;BOOLEAN&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
== C ==&lt;br /&gt;
*[[Syntax diagrams#Call|Call (syntax)]]&lt;br /&gt;
*[[library_class:CHARACTER|&amp;lt;tt&amp;gt;CHARACTER&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#Check|Check (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#ClassDeclaration|Class_declaration (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#ClassName|Class_name (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#ClassType|Class_type (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#Clients|Clients (syntax)]]&lt;br /&gt;
*[[library_class:COLLECTION|&amp;lt;tt&amp;gt;COLLECTION&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#Comment|Comment (syntax)]]&lt;br /&gt;
*[[library_class:COMPARABLE|&amp;lt;tt&amp;gt;COMPARABLE&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Comparison of objects|comparison of objects]]&lt;br /&gt;
*[[Syntax diagrams#Compound|Compound (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#CreateExpression|Create_expression (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#CreateInstruction|Create_instruction (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#CreationClause|Creation_clause (syntax)]]&lt;br /&gt;
*[[Current|&amp;lt;TT&amp;gt;Current&amp;lt;/TT&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#Current|&amp;lt;TT&amp;gt;Current&amp;lt;/TT&amp;gt; (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== D ==&lt;br /&gt;
*[[Syntax diagrams#Debug|&amp;lt;tt&amp;gt;debug&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#ClassDeclaration|&amp;lt;tt&amp;gt;deferred&amp;lt;/tt&amp;gt; class (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#RoutineBody|&amp;lt;tt&amp;gt;deferred&amp;lt;/tt&amp;gt; routine (syntax)]]&lt;br /&gt;
*[[Syntax diagrams|syntax diagrams]]&lt;br /&gt;
*[[Syntax diagrams#RoutineBody|&amp;lt;tt&amp;gt;do&amp;lt;/tt&amp;gt; routine (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== E ==&lt;br /&gt;
*[[ECMA|Ecma Eiffel]]&lt;br /&gt;
*[[Syntax diagrams#EntityDeclarationList|Entity_declaration_list (syntax)]]&lt;br /&gt;
*[[Expanded or reference|&amp;lt;tt&amp;gt;expanded&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Glossary#Expression|expression]]&lt;br /&gt;
*[[Syntax diagrams#Expression|Expression (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#RoutineBody|&amp;lt;tt&amp;gt;external&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== F ==&lt;br /&gt;
*[[library_class:FAST_ARRAY|&amp;lt;tt&amp;gt;FAST_ARRAY&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#FeatureClause|Feature_clause (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#FeatureDeclaration|Feature_declaration (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#FeatureName|Feature_name (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#FormalGenericList|Formal_generic_list (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#FeatureDeclaration|&amp;lt;tt&amp;gt;frozen&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== G ==&lt;br /&gt;
&lt;br /&gt;
== H ==&lt;br /&gt;
*[[library_class:HASHABLE|&amp;lt;tt&amp;gt;HASHABLE&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
== I ==&lt;br /&gt;
*[[Syntax diagrams#IfThenElse|If_then_else (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#FeatureName|&amp;lt;TT&amp;gt;infix&amp;lt;/TT&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#InfixOperator|Infix_operator (syntax)]]&lt;br /&gt;
*[[Expanded or reference#AutomaticInitialization|initialization of variables]]&lt;br /&gt;
*[[Syntax diagrams#Inspect|&amp;lt;TT&amp;gt;inspect&amp;lt;/TT&amp;gt; (syntax)]]&lt;br /&gt;
*[[Glossary#Instruction|instruction]]&lt;br /&gt;
*[[Syntax diagrams#Instruction|Instruction (syntax)]]&lt;br /&gt;
*[[library_class:INTEGER_8|&amp;lt;tt&amp;gt;INTEGER_8&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[library_class:INTEGER_16|&amp;lt;tt&amp;gt;INTEGER_16&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[library_class:INTEGER_32|&amp;lt;tt&amp;gt;INTEGER_32&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Type Aliases|&amp;lt;tt&amp;gt;INTEGER&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[library_class:INTEGER_64|&amp;lt;tt&amp;gt;INTEGER_64&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Comparison of objects#is_equal|&amp;lt;TT&amp;gt;is_equal&amp;lt;/TT&amp;gt;]]&lt;br /&gt;
*[[Comparison of objects#is_deep_equal|&amp;lt;TT&amp;gt;is_deep_equal&amp;lt;/TT&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
== J ==&lt;br /&gt;
&lt;br /&gt;
== K ==&lt;br /&gt;
&lt;br /&gt;
== L ==&lt;br /&gt;
*[[Syntax diagrams#Type|&amp;lt;tt&amp;gt;like&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
*[[library_class:LINKED_LIST|&amp;lt;tt&amp;gt;LINKED_LIST&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#Routine|local variable]]&lt;br /&gt;
*[[Syntax diagrams#Routine|&amp;lt;tt&amp;gt;local&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#Loop|&amp;lt;tt&amp;gt;loop&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== M ==&lt;br /&gt;
*[[Syntax diagrams#ManifestNotation|Manifest_notation (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#ManifestString|Manifest_string (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== N ==&lt;br /&gt;
*[[library_class:NATIVE_ARRAY|&amp;lt;tt&amp;gt;NATIVE_ARRAY&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Type Aliases|&amp;lt;tt&amp;gt;NATURAL&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[library_class:NATURAL_8|&amp;lt;tt&amp;gt;NATURAL_8&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[library_class:NATURAL_16|&amp;lt;tt&amp;gt;NATURAL_16&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[library_class:NATURAL_32|&amp;lt;tt&amp;gt;NATURAL_32&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[library_class:NATURAL_64|&amp;lt;tt&amp;gt;NATURAL_64&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#NewExportItem|New_export_item (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== O ==&lt;br /&gt;
*[[Syntax diagrams#Routine|&amp;lt;tt&amp;gt;obsolete&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#RoutineBody|&amp;lt;tt&amp;gt;once&amp;lt;/tt&amp;gt; (syntaxe)]]&lt;br /&gt;
*[[Syntax diagrams#OpenTargetOrOperand|Open_target_or_operand (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== P ==&lt;br /&gt;
*[[Syntax diagrams#ParentList|Parent_list (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#ParentType|Parent_type (syntax)]]&lt;br /&gt;
*[[library_class:POINTER|&amp;lt;tt&amp;gt;POINTER&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#PrecursorCall|&amp;lt;tt&amp;gt;Precursor&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#PrecursorCall|Precursor_call (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#FeatureName|&amp;lt;TT&amp;gt;prefix&amp;lt;/TT&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#PrefixOperator|Prefix_operator (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== Q ==&lt;br /&gt;
&lt;br /&gt;
== R ==&lt;br /&gt;
*[[library_class:REAL_32|&amp;lt;tt&amp;gt;REAL_32&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[library_class:REAL_64|&amp;lt;tt&amp;gt;REAL_64&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Type Aliases|&amp;lt;tt&amp;gt;REAL&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[library_class:REAL_80|&amp;lt;tt&amp;gt;REAL_80&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[library_class:REAL_128|&amp;lt;tt&amp;gt;REAL_128&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[library_class:REAL_EXTENDED|&amp;lt;tt&amp;gt;REAL_EXTENDED&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Expanded or reference|reference]]&lt;br /&gt;
*[[Syntax diagrams#Result|&amp;lt;tt&amp;gt;Result&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#Rescue|&amp;lt;tt&amp;gt;rescue&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#Retry|&amp;lt;tt&amp;gt;retry&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
*[[library_class:RING_ARRAY|&amp;lt;tt&amp;gt;RING_ARRAY&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#Routine|Routine (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#RoutineBody|Routine_body (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== S ==&lt;br /&gt;
*[[sedb|Sedb runtime debugger]]&lt;br /&gt;
*[[library_class:STRING|&amp;lt;tt&amp;gt;STRING&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
== T ==&lt;br /&gt;
*[[library_class:TRAVERSABLE|&amp;lt;tt&amp;gt;TRAVERSABLE&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Type Aliases]]&lt;br /&gt;
*[[Syntax diagrams#Type|Type (syntax)]]&lt;br /&gt;
*[[FAQ#StaticVsDynamicType|Type (dynamic)]]&lt;br /&gt;
*[[FAQ#StaticVsDynamicType|Type (static)]]&lt;br /&gt;
*[[library_class:TWO_WAY_LINKED_LIST|&amp;lt;tt&amp;gt;TWO_WAY_LINKED_LIST&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
== U ==&lt;br /&gt;
*[[Syntax diagrams#UnaryOperator|Unary_operator (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#UnqualifiedCall|Unqualified_call (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== V ==&lt;br /&gt;
*[[Expanded or reference#AutomaticInitialization|variable (initialization)]]&lt;br /&gt;
*[[Void|&amp;lt;TT&amp;gt;Void&amp;lt;/TT&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#Void|&amp;lt;TT&amp;gt;Void&amp;lt;/TT&amp;gt; (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== W ==&lt;br /&gt;
*[[Syntax diagrams#Writable|Writable (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== X ==&lt;br /&gt;
&lt;br /&gt;
== Y ==&lt;br /&gt;
&lt;br /&gt;
== Z ==&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Manual_index&amp;diff=2547</id>
		<title>Manual index</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Manual_index&amp;diff=2547"/>
		<updated>2016-11-28T20:43:52Z</updated>

		<summary type="html">&lt;p&gt;Ramack: /* N */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Alphabetical order in English and one line per entry.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
[[#A|A]] | [[#B|B]] | [[#C|C]] | [[#D|D]] | &lt;br /&gt;
[[#E|E]] | [[#F|F]] | [[#G|G]] | [[#H|H]] | &lt;br /&gt;
[[#I|I]] | [[#J|J]] | [[#K|K]] | [[#L|L]] | &lt;br /&gt;
[[#M|M]] | [[#N|N]] | [[#O|O]] | [[#P|P]] | &lt;br /&gt;
[[#Q|Q]] | [[#R|R]] | [[#S|S]] | [[#T|T]] | &lt;br /&gt;
[[#U|U]] | [[#V|V]] | [[#W|W]] | [[#X|X]] | &lt;br /&gt;
[[#Y|Y]] | [[#Z|Z]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
== Symbols ==&lt;br /&gt;
*[[Comparison of objects#EqNeq|&amp;lt;tt&amp;gt;=&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Comparison of objects#EqNeq|&amp;lt;tt&amp;gt;/=&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#OpenTargetOrOperand|&amp;lt;tt&amp;gt;?&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Dynamic type testing#AssignmentAttempt|&amp;lt;tt&amp;gt;?=&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Dynamic type testing#AssignmentTest|&amp;lt;tt&amp;gt;?:=&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#Assignment|&amp;lt;tt&amp;gt;:=&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
*[[Dynamic type testing#ForcedAssignment|&amp;lt;tt&amp;gt;::=&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#UnqualifiedCall|&amp;lt;tt&amp;gt;$&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
== A ==&lt;br /&gt;
*[[ACE|ACE files]]&lt;br /&gt;
*[[Syntax diagrams#AgentCreation|&amp;lt;tt&amp;gt;agent&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#AgentCreation|Agent_creation (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#Type|anchored type]]&lt;br /&gt;
*[[library_class:ARRAY|&amp;lt;tt&amp;gt;ARRAY&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#Assertion|Assertion (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#Assignment|Assignment (syntax)]]&lt;br /&gt;
*[[Glossary#Attribute|attribute]]&lt;br /&gt;
*[[Expanded or reference#AutomaticInitialization|attribute (initialization)]]&lt;br /&gt;
&lt;br /&gt;
== B ==&lt;br /&gt;
*[[Syntax diagrams#BinaryOperator|Binary_operator (syntax)]]&lt;br /&gt;
*[[library_class:BOOLEAN|&amp;lt;tt&amp;gt;BOOLEAN&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
== C ==&lt;br /&gt;
*[[Syntax diagrams#Call|Call (syntax)]]&lt;br /&gt;
*[[library_class:CHARACTER|&amp;lt;tt&amp;gt;CHARACTER&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#Check|Check (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#ClassDeclaration|Class_declaration (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#ClassName|Class_name (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#ClassType|Class_type (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#Clients|Clients (syntax)]]&lt;br /&gt;
*[[library_class:COLLECTION|&amp;lt;tt&amp;gt;COLLECTION&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#Comment|Comment (syntax)]]&lt;br /&gt;
*[[library_class:COMPARABLE|&amp;lt;tt&amp;gt;COMPARABLE&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Comparison of objects|comparison of objects]]&lt;br /&gt;
*[[Syntax diagrams#Compound|Compound (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#CreateExpression|Create_expression (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#CreateInstruction|Create_instruction (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#CreationClause|Creation_clause (syntax)]]&lt;br /&gt;
*[[Current|&amp;lt;TT&amp;gt;Current&amp;lt;/TT&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#Current|&amp;lt;TT&amp;gt;Current&amp;lt;/TT&amp;gt; (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== D ==&lt;br /&gt;
*[[Syntax diagrams#Debug|&amp;lt;tt&amp;gt;debug&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#ClassDeclaration|&amp;lt;tt&amp;gt;deferred&amp;lt;/tt&amp;gt; class (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#RoutineBody|&amp;lt;tt&amp;gt;deferred&amp;lt;/tt&amp;gt; routine (syntax)]]&lt;br /&gt;
*[[Syntax diagrams|syntax diagrams]]&lt;br /&gt;
*[[Syntax diagrams#RoutineBody|&amp;lt;tt&amp;gt;do&amp;lt;/tt&amp;gt; routine (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== E ==&lt;br /&gt;
*[[ECMA|Ecma Eiffel]]&lt;br /&gt;
*[[Syntax diagrams#EntityDeclarationList|Entity_declaration_list (syntax)]]&lt;br /&gt;
*[[Expanded or reference|&amp;lt;tt&amp;gt;expanded&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Glossary#Expression|expression]]&lt;br /&gt;
*[[Syntax diagrams#Expression|Expression (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#RoutineBody|&amp;lt;tt&amp;gt;external&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== F ==&lt;br /&gt;
*[[library_class:FAST_ARRAY|&amp;lt;tt&amp;gt;FAST_ARRAY&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#FeatureClause|Feature_clause (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#FeatureDeclaration|Feature_declaration (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#FeatureName|Feature_name (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#FormalGenericList|Formal_generic_list (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#FeatureDeclaration|&amp;lt;tt&amp;gt;frozen&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== G ==&lt;br /&gt;
&lt;br /&gt;
== H ==&lt;br /&gt;
*[[library_class:HASHABLE|&amp;lt;tt&amp;gt;HASHABLE&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
== I ==&lt;br /&gt;
*[[Syntax diagrams#IfThenElse|If_then_else (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#FeatureName|&amp;lt;TT&amp;gt;infix&amp;lt;/TT&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#InfixOperator|Infix_operator (syntax)]]&lt;br /&gt;
*[[Expanded or reference#AutomaticInitialization|initialization of variables]]&lt;br /&gt;
*[[Syntax diagrams#Inspect|&amp;lt;TT&amp;gt;inspect&amp;lt;/TT&amp;gt; (syntax)]]&lt;br /&gt;
*[[Glossary#Instruction|instruction]]&lt;br /&gt;
*[[Syntax diagrams#Instruction|Instruction (syntax)]]&lt;br /&gt;
*[[library_class:INTEGER_8|&amp;lt;tt&amp;gt;INTEGER_8&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[library_class:INTEGER_16|&amp;lt;tt&amp;gt;INTEGER_16&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[library_class:INTEGER_32|&amp;lt;tt&amp;gt;INTEGER_32&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[library_class:INTEGER|&amp;lt;tt&amp;gt;INTEGER&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[library_class:INTEGER_64|&amp;lt;tt&amp;gt;INTEGER_64&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Comparison of objects#is_equal|&amp;lt;TT&amp;gt;is_equal&amp;lt;/TT&amp;gt;]]&lt;br /&gt;
*[[Comparison of objects#is_deep_equal|&amp;lt;TT&amp;gt;is_deep_equal&amp;lt;/TT&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
== J ==&lt;br /&gt;
&lt;br /&gt;
== K ==&lt;br /&gt;
&lt;br /&gt;
== L ==&lt;br /&gt;
*[[Syntax diagrams#Type|&amp;lt;tt&amp;gt;like&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
*[[library_class:LINKED_LIST|&amp;lt;tt&amp;gt;LINKED_LIST&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#Routine|local variable]]&lt;br /&gt;
*[[Syntax diagrams#Routine|&amp;lt;tt&amp;gt;local&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#Loop|&amp;lt;tt&amp;gt;loop&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== M ==&lt;br /&gt;
*[[Syntax diagrams#ManifestNotation|Manifest_notation (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#ManifestString|Manifest_string (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== N ==&lt;br /&gt;
*[[library_class:NATIVE_ARRAY|&amp;lt;tt&amp;gt;NATIVE_ARRAY&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Type Aliases|&amp;lt;tt&amp;gt;NATURAL&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[library_class:NATURAL_8|&amp;lt;tt&amp;gt;NATURAL_8&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[library_class:NATURAL_16|&amp;lt;tt&amp;gt;NATURAL_16&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[library_class:NATURAL_32|&amp;lt;tt&amp;gt;NATURAL_32&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[library_class:NATURAL_64|&amp;lt;tt&amp;gt;NATURAL_64&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#NewExportItem|New_export_item (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== O ==&lt;br /&gt;
*[[Syntax diagrams#Routine|&amp;lt;tt&amp;gt;obsolete&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#RoutineBody|&amp;lt;tt&amp;gt;once&amp;lt;/tt&amp;gt; (syntaxe)]]&lt;br /&gt;
*[[Syntax diagrams#OpenTargetOrOperand|Open_target_or_operand (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== P ==&lt;br /&gt;
*[[Syntax diagrams#ParentList|Parent_list (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#ParentType|Parent_type (syntax)]]&lt;br /&gt;
*[[library_class:POINTER|&amp;lt;tt&amp;gt;POINTER&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#PrecursorCall|&amp;lt;tt&amp;gt;Precursor&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#PrecursorCall|Precursor_call (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#FeatureName|&amp;lt;TT&amp;gt;prefix&amp;lt;/TT&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#PrefixOperator|Prefix_operator (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== Q ==&lt;br /&gt;
&lt;br /&gt;
== R ==&lt;br /&gt;
*[[library_class:REAL_32|&amp;lt;tt&amp;gt;REAL_32&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[library_class:REAL_64|&amp;lt;tt&amp;gt;REAL_64&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Type Aliases|&amp;lt;tt&amp;gt;REAL&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[library_class:REAL_80|&amp;lt;tt&amp;gt;REAL_80&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[library_class:REAL_128|&amp;lt;tt&amp;gt;REAL_128&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[library_class:REAL_EXTENDED|&amp;lt;tt&amp;gt;REAL_EXTENDED&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Expanded or reference|reference]]&lt;br /&gt;
*[[Syntax diagrams#Result|&amp;lt;tt&amp;gt;Result&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#Rescue|&amp;lt;tt&amp;gt;rescue&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#Retry|&amp;lt;tt&amp;gt;retry&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
*[[library_class:RING_ARRAY|&amp;lt;tt&amp;gt;RING_ARRAY&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#Routine|Routine (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#RoutineBody|Routine_body (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== S ==&lt;br /&gt;
*[[sedb|Sedb runtime debugger]]&lt;br /&gt;
*[[library_class:STRING|&amp;lt;tt&amp;gt;STRING&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
== T ==&lt;br /&gt;
*[[library_class:TRAVERSABLE|&amp;lt;tt&amp;gt;TRAVERSABLE&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Type Aliases]]&lt;br /&gt;
*[[Syntax diagrams#Type|Type (syntax)]]&lt;br /&gt;
*[[FAQ#StaticVsDynamicType|Type (dynamic)]]&lt;br /&gt;
*[[FAQ#StaticVsDynamicType|Type (static)]]&lt;br /&gt;
*[[library_class:TWO_WAY_LINKED_LIST|&amp;lt;tt&amp;gt;TWO_WAY_LINKED_LIST&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
== U ==&lt;br /&gt;
*[[Syntax diagrams#UnaryOperator|Unary_operator (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#UnqualifiedCall|Unqualified_call (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== V ==&lt;br /&gt;
*[[Expanded or reference#AutomaticInitialization|variable (initialization)]]&lt;br /&gt;
*[[Void|&amp;lt;TT&amp;gt;Void&amp;lt;/TT&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#Void|&amp;lt;TT&amp;gt;Void&amp;lt;/TT&amp;gt; (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== W ==&lt;br /&gt;
*[[Syntax diagrams#Writable|Writable (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== X ==&lt;br /&gt;
&lt;br /&gt;
== Y ==&lt;br /&gt;
&lt;br /&gt;
== Z ==&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Manual_index&amp;diff=2546</id>
		<title>Manual index</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Manual_index&amp;diff=2546"/>
		<updated>2016-11-28T20:42:44Z</updated>

		<summary type="html">&lt;p&gt;Ramack: /* R */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Alphabetical order in English and one line per entry.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
[[#A|A]] | [[#B|B]] | [[#C|C]] | [[#D|D]] | &lt;br /&gt;
[[#E|E]] | [[#F|F]] | [[#G|G]] | [[#H|H]] | &lt;br /&gt;
[[#I|I]] | [[#J|J]] | [[#K|K]] | [[#L|L]] | &lt;br /&gt;
[[#M|M]] | [[#N|N]] | [[#O|O]] | [[#P|P]] | &lt;br /&gt;
[[#Q|Q]] | [[#R|R]] | [[#S|S]] | [[#T|T]] | &lt;br /&gt;
[[#U|U]] | [[#V|V]] | [[#W|W]] | [[#X|X]] | &lt;br /&gt;
[[#Y|Y]] | [[#Z|Z]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
== Symbols ==&lt;br /&gt;
*[[Comparison of objects#EqNeq|&amp;lt;tt&amp;gt;=&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Comparison of objects#EqNeq|&amp;lt;tt&amp;gt;/=&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#OpenTargetOrOperand|&amp;lt;tt&amp;gt;?&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Dynamic type testing#AssignmentAttempt|&amp;lt;tt&amp;gt;?=&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Dynamic type testing#AssignmentTest|&amp;lt;tt&amp;gt;?:=&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#Assignment|&amp;lt;tt&amp;gt;:=&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
*[[Dynamic type testing#ForcedAssignment|&amp;lt;tt&amp;gt;::=&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#UnqualifiedCall|&amp;lt;tt&amp;gt;$&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
== A ==&lt;br /&gt;
*[[ACE|ACE files]]&lt;br /&gt;
*[[Syntax diagrams#AgentCreation|&amp;lt;tt&amp;gt;agent&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#AgentCreation|Agent_creation (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#Type|anchored type]]&lt;br /&gt;
*[[library_class:ARRAY|&amp;lt;tt&amp;gt;ARRAY&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#Assertion|Assertion (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#Assignment|Assignment (syntax)]]&lt;br /&gt;
*[[Glossary#Attribute|attribute]]&lt;br /&gt;
*[[Expanded or reference#AutomaticInitialization|attribute (initialization)]]&lt;br /&gt;
&lt;br /&gt;
== B ==&lt;br /&gt;
*[[Syntax diagrams#BinaryOperator|Binary_operator (syntax)]]&lt;br /&gt;
*[[library_class:BOOLEAN|&amp;lt;tt&amp;gt;BOOLEAN&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
== C ==&lt;br /&gt;
*[[Syntax diagrams#Call|Call (syntax)]]&lt;br /&gt;
*[[library_class:CHARACTER|&amp;lt;tt&amp;gt;CHARACTER&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#Check|Check (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#ClassDeclaration|Class_declaration (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#ClassName|Class_name (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#ClassType|Class_type (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#Clients|Clients (syntax)]]&lt;br /&gt;
*[[library_class:COLLECTION|&amp;lt;tt&amp;gt;COLLECTION&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#Comment|Comment (syntax)]]&lt;br /&gt;
*[[library_class:COMPARABLE|&amp;lt;tt&amp;gt;COMPARABLE&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Comparison of objects|comparison of objects]]&lt;br /&gt;
*[[Syntax diagrams#Compound|Compound (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#CreateExpression|Create_expression (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#CreateInstruction|Create_instruction (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#CreationClause|Creation_clause (syntax)]]&lt;br /&gt;
*[[Current|&amp;lt;TT&amp;gt;Current&amp;lt;/TT&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#Current|&amp;lt;TT&amp;gt;Current&amp;lt;/TT&amp;gt; (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== D ==&lt;br /&gt;
*[[Syntax diagrams#Debug|&amp;lt;tt&amp;gt;debug&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#ClassDeclaration|&amp;lt;tt&amp;gt;deferred&amp;lt;/tt&amp;gt; class (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#RoutineBody|&amp;lt;tt&amp;gt;deferred&amp;lt;/tt&amp;gt; routine (syntax)]]&lt;br /&gt;
*[[Syntax diagrams|syntax diagrams]]&lt;br /&gt;
*[[Syntax diagrams#RoutineBody|&amp;lt;tt&amp;gt;do&amp;lt;/tt&amp;gt; routine (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== E ==&lt;br /&gt;
*[[ECMA|Ecma Eiffel]]&lt;br /&gt;
*[[Syntax diagrams#EntityDeclarationList|Entity_declaration_list (syntax)]]&lt;br /&gt;
*[[Expanded or reference|&amp;lt;tt&amp;gt;expanded&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Glossary#Expression|expression]]&lt;br /&gt;
*[[Syntax diagrams#Expression|Expression (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#RoutineBody|&amp;lt;tt&amp;gt;external&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== F ==&lt;br /&gt;
*[[library_class:FAST_ARRAY|&amp;lt;tt&amp;gt;FAST_ARRAY&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#FeatureClause|Feature_clause (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#FeatureDeclaration|Feature_declaration (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#FeatureName|Feature_name (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#FormalGenericList|Formal_generic_list (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#FeatureDeclaration|&amp;lt;tt&amp;gt;frozen&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== G ==&lt;br /&gt;
&lt;br /&gt;
== H ==&lt;br /&gt;
*[[library_class:HASHABLE|&amp;lt;tt&amp;gt;HASHABLE&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
== I ==&lt;br /&gt;
*[[Syntax diagrams#IfThenElse|If_then_else (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#FeatureName|&amp;lt;TT&amp;gt;infix&amp;lt;/TT&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#InfixOperator|Infix_operator (syntax)]]&lt;br /&gt;
*[[Expanded or reference#AutomaticInitialization|initialization of variables]]&lt;br /&gt;
*[[Syntax diagrams#Inspect|&amp;lt;TT&amp;gt;inspect&amp;lt;/TT&amp;gt; (syntax)]]&lt;br /&gt;
*[[Glossary#Instruction|instruction]]&lt;br /&gt;
*[[Syntax diagrams#Instruction|Instruction (syntax)]]&lt;br /&gt;
*[[library_class:INTEGER_8|&amp;lt;tt&amp;gt;INTEGER_8&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[library_class:INTEGER_16|&amp;lt;tt&amp;gt;INTEGER_16&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[library_class:INTEGER_32|&amp;lt;tt&amp;gt;INTEGER_32&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[library_class:INTEGER|&amp;lt;tt&amp;gt;INTEGER&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[library_class:INTEGER_64|&amp;lt;tt&amp;gt;INTEGER_64&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Comparison of objects#is_equal|&amp;lt;TT&amp;gt;is_equal&amp;lt;/TT&amp;gt;]]&lt;br /&gt;
*[[Comparison of objects#is_deep_equal|&amp;lt;TT&amp;gt;is_deep_equal&amp;lt;/TT&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
== J ==&lt;br /&gt;
&lt;br /&gt;
== K ==&lt;br /&gt;
&lt;br /&gt;
== L ==&lt;br /&gt;
*[[Syntax diagrams#Type|&amp;lt;tt&amp;gt;like&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
*[[library_class:LINKED_LIST|&amp;lt;tt&amp;gt;LINKED_LIST&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#Routine|local variable]]&lt;br /&gt;
*[[Syntax diagrams#Routine|&amp;lt;tt&amp;gt;local&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#Loop|&amp;lt;tt&amp;gt;loop&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== M ==&lt;br /&gt;
*[[Syntax diagrams#ManifestNotation|Manifest_notation (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#ManifestString|Manifest_string (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== N ==&lt;br /&gt;
*[[library_class:NATIVE_ARRAY|&amp;lt;tt&amp;gt;NATIVE_ARRAY&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#NewExportItem|New_export_item (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== O ==&lt;br /&gt;
*[[Syntax diagrams#Routine|&amp;lt;tt&amp;gt;obsolete&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#RoutineBody|&amp;lt;tt&amp;gt;once&amp;lt;/tt&amp;gt; (syntaxe)]]&lt;br /&gt;
*[[Syntax diagrams#OpenTargetOrOperand|Open_target_or_operand (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== P ==&lt;br /&gt;
*[[Syntax diagrams#ParentList|Parent_list (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#ParentType|Parent_type (syntax)]]&lt;br /&gt;
*[[library_class:POINTER|&amp;lt;tt&amp;gt;POINTER&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#PrecursorCall|&amp;lt;tt&amp;gt;Precursor&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#PrecursorCall|Precursor_call (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#FeatureName|&amp;lt;TT&amp;gt;prefix&amp;lt;/TT&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#PrefixOperator|Prefix_operator (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== Q ==&lt;br /&gt;
&lt;br /&gt;
== R ==&lt;br /&gt;
*[[library_class:REAL_32|&amp;lt;tt&amp;gt;REAL_32&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[library_class:REAL_64|&amp;lt;tt&amp;gt;REAL_64&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Type Aliases|&amp;lt;tt&amp;gt;REAL&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[library_class:REAL_80|&amp;lt;tt&amp;gt;REAL_80&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[library_class:REAL_128|&amp;lt;tt&amp;gt;REAL_128&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[library_class:REAL_EXTENDED|&amp;lt;tt&amp;gt;REAL_EXTENDED&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Expanded or reference|reference]]&lt;br /&gt;
*[[Syntax diagrams#Result|&amp;lt;tt&amp;gt;Result&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#Rescue|&amp;lt;tt&amp;gt;rescue&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#Retry|&amp;lt;tt&amp;gt;retry&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
*[[library_class:RING_ARRAY|&amp;lt;tt&amp;gt;RING_ARRAY&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#Routine|Routine (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#RoutineBody|Routine_body (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== S ==&lt;br /&gt;
*[[sedb|Sedb runtime debugger]]&lt;br /&gt;
*[[library_class:STRING|&amp;lt;tt&amp;gt;STRING&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
== T ==&lt;br /&gt;
*[[library_class:TRAVERSABLE|&amp;lt;tt&amp;gt;TRAVERSABLE&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Type Aliases]]&lt;br /&gt;
*[[Syntax diagrams#Type|Type (syntax)]]&lt;br /&gt;
*[[FAQ#StaticVsDynamicType|Type (dynamic)]]&lt;br /&gt;
*[[FAQ#StaticVsDynamicType|Type (static)]]&lt;br /&gt;
*[[library_class:TWO_WAY_LINKED_LIST|&amp;lt;tt&amp;gt;TWO_WAY_LINKED_LIST&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
== U ==&lt;br /&gt;
*[[Syntax diagrams#UnaryOperator|Unary_operator (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#UnqualifiedCall|Unqualified_call (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== V ==&lt;br /&gt;
*[[Expanded or reference#AutomaticInitialization|variable (initialization)]]&lt;br /&gt;
*[[Void|&amp;lt;TT&amp;gt;Void&amp;lt;/TT&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#Void|&amp;lt;TT&amp;gt;Void&amp;lt;/TT&amp;gt; (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== W ==&lt;br /&gt;
*[[Syntax diagrams#Writable|Writable (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== X ==&lt;br /&gt;
&lt;br /&gt;
== Y ==&lt;br /&gt;
&lt;br /&gt;
== Z ==&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Type_Aliases&amp;diff=2545</id>
		<title>Type Aliases</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Type_Aliases&amp;diff=2545"/>
		<updated>2016-11-28T20:41:52Z</updated>

		<summary type="html">&lt;p&gt;Ramack: creation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Some types have an alias for convenience and backward compatibility. Even though it is wise to use explicitly sized numeric types the following &amp;quot;shortcuts&amp;quot; exist:&lt;br /&gt;
* REAL maps to [[library_class:REAL_64|REAL_64]]&lt;br /&gt;
* INTEGER maps to [[library_class:INTEGER_32|INTEGER_32]]&lt;br /&gt;
* NATURAL maps to [[library_class:NATURAL_32|NATURAL_32]]&lt;br /&gt;
&lt;br /&gt;
all this is internally handled in the compilers class [[tool_class:TYPE_ALIASING|TYPE_ALIASING]].&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Manual_index&amp;diff=2544</id>
		<title>Manual index</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Manual_index&amp;diff=2544"/>
		<updated>2016-11-28T20:37:18Z</updated>

		<summary type="html">&lt;p&gt;Ramack: /* T */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Alphabetical order in English and one line per entry.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
[[#A|A]] | [[#B|B]] | [[#C|C]] | [[#D|D]] | &lt;br /&gt;
[[#E|E]] | [[#F|F]] | [[#G|G]] | [[#H|H]] | &lt;br /&gt;
[[#I|I]] | [[#J|J]] | [[#K|K]] | [[#L|L]] | &lt;br /&gt;
[[#M|M]] | [[#N|N]] | [[#O|O]] | [[#P|P]] | &lt;br /&gt;
[[#Q|Q]] | [[#R|R]] | [[#S|S]] | [[#T|T]] | &lt;br /&gt;
[[#U|U]] | [[#V|V]] | [[#W|W]] | [[#X|X]] | &lt;br /&gt;
[[#Y|Y]] | [[#Z|Z]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
== Symbols ==&lt;br /&gt;
*[[Comparison of objects#EqNeq|&amp;lt;tt&amp;gt;=&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Comparison of objects#EqNeq|&amp;lt;tt&amp;gt;/=&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#OpenTargetOrOperand|&amp;lt;tt&amp;gt;?&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Dynamic type testing#AssignmentAttempt|&amp;lt;tt&amp;gt;?=&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Dynamic type testing#AssignmentTest|&amp;lt;tt&amp;gt;?:=&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#Assignment|&amp;lt;tt&amp;gt;:=&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
*[[Dynamic type testing#ForcedAssignment|&amp;lt;tt&amp;gt;::=&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#UnqualifiedCall|&amp;lt;tt&amp;gt;$&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
== A ==&lt;br /&gt;
*[[ACE|ACE files]]&lt;br /&gt;
*[[Syntax diagrams#AgentCreation|&amp;lt;tt&amp;gt;agent&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#AgentCreation|Agent_creation (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#Type|anchored type]]&lt;br /&gt;
*[[library_class:ARRAY|&amp;lt;tt&amp;gt;ARRAY&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#Assertion|Assertion (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#Assignment|Assignment (syntax)]]&lt;br /&gt;
*[[Glossary#Attribute|attribute]]&lt;br /&gt;
*[[Expanded or reference#AutomaticInitialization|attribute (initialization)]]&lt;br /&gt;
&lt;br /&gt;
== B ==&lt;br /&gt;
*[[Syntax diagrams#BinaryOperator|Binary_operator (syntax)]]&lt;br /&gt;
*[[library_class:BOOLEAN|&amp;lt;tt&amp;gt;BOOLEAN&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
== C ==&lt;br /&gt;
*[[Syntax diagrams#Call|Call (syntax)]]&lt;br /&gt;
*[[library_class:CHARACTER|&amp;lt;tt&amp;gt;CHARACTER&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#Check|Check (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#ClassDeclaration|Class_declaration (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#ClassName|Class_name (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#ClassType|Class_type (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#Clients|Clients (syntax)]]&lt;br /&gt;
*[[library_class:COLLECTION|&amp;lt;tt&amp;gt;COLLECTION&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#Comment|Comment (syntax)]]&lt;br /&gt;
*[[library_class:COMPARABLE|&amp;lt;tt&amp;gt;COMPARABLE&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Comparison of objects|comparison of objects]]&lt;br /&gt;
*[[Syntax diagrams#Compound|Compound (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#CreateExpression|Create_expression (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#CreateInstruction|Create_instruction (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#CreationClause|Creation_clause (syntax)]]&lt;br /&gt;
*[[Current|&amp;lt;TT&amp;gt;Current&amp;lt;/TT&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#Current|&amp;lt;TT&amp;gt;Current&amp;lt;/TT&amp;gt; (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== D ==&lt;br /&gt;
*[[Syntax diagrams#Debug|&amp;lt;tt&amp;gt;debug&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#ClassDeclaration|&amp;lt;tt&amp;gt;deferred&amp;lt;/tt&amp;gt; class (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#RoutineBody|&amp;lt;tt&amp;gt;deferred&amp;lt;/tt&amp;gt; routine (syntax)]]&lt;br /&gt;
*[[Syntax diagrams|syntax diagrams]]&lt;br /&gt;
*[[Syntax diagrams#RoutineBody|&amp;lt;tt&amp;gt;do&amp;lt;/tt&amp;gt; routine (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== E ==&lt;br /&gt;
*[[ECMA|Ecma Eiffel]]&lt;br /&gt;
*[[Syntax diagrams#EntityDeclarationList|Entity_declaration_list (syntax)]]&lt;br /&gt;
*[[Expanded or reference|&amp;lt;tt&amp;gt;expanded&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Glossary#Expression|expression]]&lt;br /&gt;
*[[Syntax diagrams#Expression|Expression (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#RoutineBody|&amp;lt;tt&amp;gt;external&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== F ==&lt;br /&gt;
*[[library_class:FAST_ARRAY|&amp;lt;tt&amp;gt;FAST_ARRAY&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#FeatureClause|Feature_clause (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#FeatureDeclaration|Feature_declaration (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#FeatureName|Feature_name (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#FormalGenericList|Formal_generic_list (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#FeatureDeclaration|&amp;lt;tt&amp;gt;frozen&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== G ==&lt;br /&gt;
&lt;br /&gt;
== H ==&lt;br /&gt;
*[[library_class:HASHABLE|&amp;lt;tt&amp;gt;HASHABLE&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
== I ==&lt;br /&gt;
*[[Syntax diagrams#IfThenElse|If_then_else (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#FeatureName|&amp;lt;TT&amp;gt;infix&amp;lt;/TT&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#InfixOperator|Infix_operator (syntax)]]&lt;br /&gt;
*[[Expanded or reference#AutomaticInitialization|initialization of variables]]&lt;br /&gt;
*[[Syntax diagrams#Inspect|&amp;lt;TT&amp;gt;inspect&amp;lt;/TT&amp;gt; (syntax)]]&lt;br /&gt;
*[[Glossary#Instruction|instruction]]&lt;br /&gt;
*[[Syntax diagrams#Instruction|Instruction (syntax)]]&lt;br /&gt;
*[[library_class:INTEGER_8|&amp;lt;tt&amp;gt;INTEGER_8&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[library_class:INTEGER_16|&amp;lt;tt&amp;gt;INTEGER_16&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[library_class:INTEGER_32|&amp;lt;tt&amp;gt;INTEGER_32&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[library_class:INTEGER|&amp;lt;tt&amp;gt;INTEGER&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[library_class:INTEGER_64|&amp;lt;tt&amp;gt;INTEGER_64&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Comparison of objects#is_equal|&amp;lt;TT&amp;gt;is_equal&amp;lt;/TT&amp;gt;]]&lt;br /&gt;
*[[Comparison of objects#is_deep_equal|&amp;lt;TT&amp;gt;is_deep_equal&amp;lt;/TT&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
== J ==&lt;br /&gt;
&lt;br /&gt;
== K ==&lt;br /&gt;
&lt;br /&gt;
== L ==&lt;br /&gt;
*[[Syntax diagrams#Type|&amp;lt;tt&amp;gt;like&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
*[[library_class:LINKED_LIST|&amp;lt;tt&amp;gt;LINKED_LIST&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#Routine|local variable]]&lt;br /&gt;
*[[Syntax diagrams#Routine|&amp;lt;tt&amp;gt;local&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#Loop|&amp;lt;tt&amp;gt;loop&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== M ==&lt;br /&gt;
*[[Syntax diagrams#ManifestNotation|Manifest_notation (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#ManifestString|Manifest_string (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== N ==&lt;br /&gt;
*[[library_class:NATIVE_ARRAY|&amp;lt;tt&amp;gt;NATIVE_ARRAY&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#NewExportItem|New_export_item (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== O ==&lt;br /&gt;
*[[Syntax diagrams#Routine|&amp;lt;tt&amp;gt;obsolete&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#RoutineBody|&amp;lt;tt&amp;gt;once&amp;lt;/tt&amp;gt; (syntaxe)]]&lt;br /&gt;
*[[Syntax diagrams#OpenTargetOrOperand|Open_target_or_operand (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== P ==&lt;br /&gt;
*[[Syntax diagrams#ParentList|Parent_list (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#ParentType|Parent_type (syntax)]]&lt;br /&gt;
*[[library_class:POINTER|&amp;lt;tt&amp;gt;POINTER&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#PrecursorCall|&amp;lt;tt&amp;gt;Precursor&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#PrecursorCall|Precursor_call (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#FeatureName|&amp;lt;TT&amp;gt;prefix&amp;lt;/TT&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#PrefixOperator|Prefix_operator (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== Q ==&lt;br /&gt;
&lt;br /&gt;
== R ==&lt;br /&gt;
*[[library_class:REAL_32|&amp;lt;tt&amp;gt;REAL_32&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[library_class:REAL_64|&amp;lt;tt&amp;gt;REAL_64&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[library_class:REAL|&amp;lt;tt&amp;gt;REAL&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[library_class:REAL_80|&amp;lt;tt&amp;gt;REAL_80&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[library_class:REAL_128|&amp;lt;tt&amp;gt;REAL_128&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[library_class:REAL_EXTENDED|&amp;lt;tt&amp;gt;REAL_EXTENDED&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Expanded or reference|reference]]&lt;br /&gt;
*[[Syntax diagrams#Result|&amp;lt;tt&amp;gt;Result&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#Rescue|&amp;lt;tt&amp;gt;rescue&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#Retry|&amp;lt;tt&amp;gt;retry&amp;lt;/tt&amp;gt; (syntax)]]&lt;br /&gt;
*[[library_class:RING_ARRAY|&amp;lt;tt&amp;gt;RING_ARRAY&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#Routine|Routine (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#RoutineBody|Routine_body (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== S ==&lt;br /&gt;
*[[sedb|Sedb runtime debugger]]&lt;br /&gt;
*[[library_class:STRING|&amp;lt;tt&amp;gt;STRING&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
== T ==&lt;br /&gt;
*[[library_class:TRAVERSABLE|&amp;lt;tt&amp;gt;TRAVERSABLE&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
*[[Type Aliases]]&lt;br /&gt;
*[[Syntax diagrams#Type|Type (syntax)]]&lt;br /&gt;
*[[FAQ#StaticVsDynamicType|Type (dynamic)]]&lt;br /&gt;
*[[FAQ#StaticVsDynamicType|Type (static)]]&lt;br /&gt;
*[[library_class:TWO_WAY_LINKED_LIST|&amp;lt;tt&amp;gt;TWO_WAY_LINKED_LIST&amp;lt;/tt&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
== U ==&lt;br /&gt;
*[[Syntax diagrams#UnaryOperator|Unary_operator (syntax)]]&lt;br /&gt;
*[[Syntax diagrams#UnqualifiedCall|Unqualified_call (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== V ==&lt;br /&gt;
*[[Expanded or reference#AutomaticInitialization|variable (initialization)]]&lt;br /&gt;
*[[Void|&amp;lt;TT&amp;gt;Void&amp;lt;/TT&amp;gt;]]&lt;br /&gt;
*[[Syntax diagrams#Void|&amp;lt;TT&amp;gt;Void&amp;lt;/TT&amp;gt; (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== W ==&lt;br /&gt;
*[[Syntax diagrams#Writable|Writable (syntax)]]&lt;br /&gt;
&lt;br /&gt;
== X ==&lt;br /&gt;
&lt;br /&gt;
== Y ==&lt;br /&gt;
&lt;br /&gt;
== Z ==&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Release_Checklist&amp;diff=2529</id>
		<title>Release Checklist</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Release_Checklist&amp;diff=2529"/>
		<updated>2016-07-23T18:36:36Z</updated>

		<summary type="html">&lt;p&gt;Ramack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is WIP. Please update if you think of any missing detail. The target is to include all necessary command line commands (where applicable)&lt;br /&gt;
&lt;br /&gt;
* cleanup Testsuite&lt;br /&gt;
* update LIBERTY_VERSION&lt;br /&gt;
* create new bootstrap germ code&lt;br /&gt;
 resources/smarteiffel-germ/make_germ.sh&lt;br /&gt;
* create a local branch for the next release&lt;br /&gt;
 git branch bell&lt;br /&gt;
* create a bell branch in the github repo (via web interface?)&lt;br /&gt;
* push it to savannah&lt;br /&gt;
 git checkout bell&lt;br /&gt;
 git push upstream bell&lt;br /&gt;
* remove all tools and libraries which are not sufficiently mature to be included in the release&lt;br /&gt;
** for Bell these are:&lt;br /&gt;
 cluster smarteiffel/generation/run&lt;br /&gt;
 smarteiffel/commands/run.e&lt;br /&gt;
 edc-new, edc&lt;br /&gt;
 lib/mmi&lt;br /&gt;
 effect tool&lt;br /&gt;
 src/staging&lt;br /&gt;
 src/lib/net/ezmq&lt;br /&gt;
 wrappers: cairo, database/postgresql, ewlc, llvm, zmq, xml&lt;br /&gt;
* switch ET to use the new branch&lt;br /&gt;
** echo &amp;quot;bell&amp;quot; &amp;gt; ~/branch on ETs account&lt;br /&gt;
** change website/et/html_templates/head.html to make ET output tell people which branch is being tested...&lt;br /&gt;
* adapt changelog (in work/packaging/debian.skel/debian/) in bell branch (remove ~dev tag)&lt;br /&gt;
* create release candidate&lt;br /&gt;
 git tag &amp;lt;release_name&amp;gt;-rc1&lt;br /&gt;
 git push --tags upstream&lt;br /&gt;
* on ETs account...&lt;br /&gt;
 work/packaging/build_debian.sh -rc1&lt;br /&gt;
 work/packaging/build_debian.sh -rc1 -deploy&lt;br /&gt;
 ssh et32@et32 &amp;quot;cd $LibertyBase &amp;amp;&amp;amp; git fetch origin &amp;amp;&amp;amp; git checkout $gitBranch &amp;amp;&amp;amp; git merge --ff-only FETCH_HEAD &amp;amp;&amp;amp; $LibertyBase/work/packaging/build_debian.sh -rc1&amp;quot;&lt;br /&gt;
 scp -p et32@et32:Liberty/work/packaging/debs/* ~/Liberty/work/packaging/debs_i386/&lt;br /&gt;
 reprepro --basedir ~/Liberty/website/apt includedeb rc liberty-eiffel-tools_2016~dev~rc1_i386.deb&lt;br /&gt;
* create doc tarballs&lt;br /&gt;
 check for next release&lt;br /&gt;
 work/build_doc.sh -plain -zip&lt;br /&gt;
 make doc.liberty-eiffel.org point to the released docs&lt;br /&gt;
* create tarball and put on FTP server&lt;br /&gt;
 download the tag tarball from http://git.savannah.gnu.org/cgit/liberty-eiffel.git&lt;br /&gt;
 work/strip_tgz.sh bell-rc1.tar.gz&lt;br /&gt;
 scp bell-rc1.tar.gz ramack@dl.sv.gnu.org:/srv/download/liberty-eiffel/&lt;br /&gt;
* collect RC feedback on our mailing list&lt;br /&gt;
* adapt changelog (in work/packaging/debian.skel/debian/) in bell branch (fix release version and date, without SNAPSHOT)&lt;br /&gt;
* create the final release tag&lt;br /&gt;
 git tag &amp;lt;release_name&amp;gt;&lt;br /&gt;
* create release debian packages&lt;br /&gt;
 see above, use -release instead of -rc1&lt;br /&gt;
* create tarball and put on FTP server&lt;br /&gt;
 see above for rc&lt;br /&gt;
* write announce email&lt;br /&gt;
** to our mailing list&lt;br /&gt;
** on http://lists.gnu.org/archive/html/info-gnu/&lt;br /&gt;
** as news entry on savannah&lt;br /&gt;
** https://en.wikipedia.org/wiki/LibertyEiffel - stable release docs&lt;br /&gt;
** adapt changelog (in work/packaging/debian.skel/debian/) in master branch (readd ~dev tagged version)&lt;br /&gt;
* switch ET back to use the master branch&lt;br /&gt;
** echo &amp;quot;master&amp;quot; &amp;gt; ~/branch on ETs account&lt;br /&gt;
* prepare changelog for the third release&lt;br /&gt;
* plan the next release (tickets on savannah)&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Release_Notes_(Versions_history)&amp;diff=2455</id>
		<title>Release Notes (Versions history)</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Release_Notes_(Versions_history)&amp;diff=2455"/>
		<updated>2016-06-16T19:36:29Z</updated>

		<summary type="html">&lt;p&gt;Ramack: /* Adler (2013.11, named after Charles Adler, Jr.) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Releases]]&lt;br /&gt;
== Liberty Eiffel (latest release first) ==&lt;br /&gt;
For other upcoming releases see the [[upcoming releases|list of names]].&lt;br /&gt;
=== Curtiss (2016.dev, to be named after [https://en.wikipedia.org/wiki/Glenn_Curtiss Glenn Curtiss]) ===&lt;br /&gt;
* not yet released (see next section for current release notes)&lt;br /&gt;
* User-visible changes:&lt;br /&gt;
** addition of a zsh completer for se&lt;br /&gt;
** finally got rid of obsolete classes GEN_RAND, MIN_STAND and STD_RAND&lt;br /&gt;
** removed support for some unused platforms (Amiga, Elate, BeOS, OS/2 ...)&lt;br /&gt;
** creation keyword now generates an error&lt;br /&gt;
** C99 conforming C code generation (hopefully)&lt;br /&gt;
* Developer changes:&lt;br /&gt;
** RUN_FEATUREs now have clear names (hopefully)&lt;br /&gt;
** to better support the user access rights model of the more recent Windows versions, the config file is no longer written to a root directory but rather to %ALLUSERSPROFILE% or %USERPROFILE% &lt;br /&gt;
* Known bugs:&lt;br /&gt;
** see [https://savannah.gnu.org/bugs/?group=liberty-eiffel] for the full list&lt;br /&gt;
&lt;br /&gt;
=== Bell (2016.05, named after [https://en.wikipedia.org/wiki/Alexander_Graham_Bell Alexander Graham Bell]) ===&lt;br /&gt;
* released in May 2016&lt;br /&gt;
* first release since Liberty Eiffel has become the official GNU Eiffel compiler&lt;br /&gt;
* User-visible changes:&lt;br /&gt;
** changed Environment Variable name from SmartEiffel to LibertyEiffel (anyhow, normally it should not be necessary to set this one)&lt;br /&gt;
** new tool [[Mock]]&lt;br /&gt;
** removed linebreaks in compiler output&lt;br /&gt;
** many bugfixes&lt;br /&gt;
** GC call at exit is optional&lt;br /&gt;
** generic creation&lt;br /&gt;
** agents are now [https://en.wikipedia.org/wiki/Closure_(computer_programming) closures ]&lt;br /&gt;
** finder now finds all classes in the universe with the given name, not only the first one&lt;br /&gt;
** keyword '''is''' at the beginning of a feature is now deprecated&lt;br /&gt;
** Added support for alias &amp;quot;[]&amp;quot; and alias &amp;quot;()&amp;quot;&lt;br /&gt;
** constants are now visible in the eiffeldoc generated documentation&lt;br /&gt;
* Known bugs:&lt;br /&gt;
** there is still an issue in both GC implementations (classical SEGC and BDW), if it shows up, it often yields a &amp;quot;Bad target type&amp;quot; runtime error.&lt;br /&gt;
** for the full list see [https://savannah.gnu.org/bugs/?group=liberty-eiffel]&lt;br /&gt;
&lt;br /&gt;
=== Adler (2013.11, named after [http://en.wikipedia.org/wiki/Charles_Adler,_Jr. Charles Adler, Jr.]) ===&lt;br /&gt;
* First release as Liberty Eiffel&lt;br /&gt;
* User-visible changes:&lt;br /&gt;
** Added [[library_class:NATURAL_8|&amp;lt;tt&amp;gt;NATURAL_8&amp;lt;/tt&amp;gt;]], [[library_class:NATURAL_16|&amp;lt;tt&amp;gt;NATURAL_16&amp;lt;/tt&amp;gt;]], [[library_class:NATURAL_32|&amp;lt;tt&amp;gt;NATURAL_32&amp;lt;/tt&amp;gt;]], and [[library_class:NATURAL_64|&amp;lt;tt&amp;gt;NATURAL_64&amp;lt;/tt&amp;gt;]] classes. See &amp;lt;tt&amp;gt;tutorial/natural.e&amp;lt;/tt&amp;gt; for examples.&lt;br /&gt;
** Even low-level features (i.e. &amp;lt;tt&amp;gt;external &amp;quot;built_in&amp;quot;&amp;lt;/tt&amp;gt;) are now checking their assertions. As an example, division by zero is now checked by assertions.&lt;br /&gt;
** Inlined dynamic dispatch for better performance&lt;br /&gt;
** A missing export clause is deprecated. Use &amp;lt;tt&amp;gt;{ANY}&amp;lt;/tt&amp;gt; instead.&lt;br /&gt;
** New core libraries: cli, json, log, parse (beware, these libraries are not yet tuned to be used without GC)&lt;br /&gt;
** Improved libraries: string (with notably a new [[library_class:FIXED_STRING|&amp;lt;tt&amp;gt;FIXED_STRING&amp;lt;/tt&amp;gt;]] class)&lt;br /&gt;
** Wrapper libraries: gtk, gdk, readline, ffi...&lt;br /&gt;
** A new tool that can generate mocks to help unit testing&lt;br /&gt;
** [http://hboehm.info/gc/ BDW] GC support&lt;br /&gt;
** Collections implementation of is_equal changed to compare the contained objects using their is_equal functions instead of = (which was formerly the functionality of is_equal_map). The old functionality of is_equal is available by fast_is_equal.&lt;br /&gt;
* Developer changes:&lt;br /&gt;
** The web site now belongs to the repository&lt;br /&gt;
** Automatic testing tools (ET on the web, and &amp;lt;tt&amp;gt;watch_eiffeltest.sh&amp;lt;/tt&amp;gt; in the shell)&lt;br /&gt;
** Automatic Debian packages generation&lt;br /&gt;
* Known bugs:&lt;br /&gt;
** BDW GC is not well tested; currently weak references seem not to work properly; and the GC is not run at program exit (it should run all finalizers)&lt;br /&gt;
** Sometimes SmartEiffel's native GC behaves wrongly, analysis is welcome&lt;br /&gt;
** Some of the newer core libraries do not work very well when there is no GC&lt;br /&gt;
** See the [https://savannah.gnu.org/bugs/?group=liberty-eiffel bugs page]&lt;br /&gt;
&lt;br /&gt;
== SmartEiffel (all releases which are predecessors of Liberty) ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Release 2.3 [Antoine-Auguste Parmentier] - Wednesday July 11th 2007 ===&lt;br /&gt;
&lt;br /&gt;
Again, a lot of novelties for this release:&lt;br /&gt;
&lt;br /&gt;
* New [[Typing policy|typing rules]] have been revisited and are now crystal clear. See [[Typing policy|this page]] for details.&lt;br /&gt;
* Implemented a new [[class loading]] algorithm, which takes into account the &amp;quot;distance&amp;quot; between classes, thus reifying the notion of clusters and sub-clusters. Everything is trans&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Get_involved&amp;diff=2454</id>
		<title>Get involved</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Get_involved&amp;diff=2454"/>
		<updated>2016-06-16T18:01:07Z</updated>

		<summary type="html">&lt;p&gt;Ramack: added repository details&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Community]]&lt;br /&gt;
=Interested in the Eiffel language and the Liberty compiler?=&lt;br /&gt;
&lt;br /&gt;
First of all you are invited to use Liberty for developing your own applications. If you encounter any problem, just raise your voice and [[Get in touch|get in touch]] with us. We are here to fix your issues and support you in using the Liberty Eiffel compiler and its libraries. Our primary goal is to provide a working Eiffel compiler and a bunch of libraries for real life applications. Now you face the opportunity to come up with a nice little program (or a new office suite), written with Liberty.&lt;br /&gt;
&lt;br /&gt;
Liberty is an open project, where anyone can clone the public repository from git://git.savannah.gnu.org/liberty-eiffel.git and dig into the code, improve it and get the changes into the master branch. You are welcome to provide patches, issue pull requests and to become a project member on Savannah.&lt;br /&gt;
&lt;br /&gt;
We are open to any bug fix or new feature in the libraries or tools. And if you don't want to get your hands dirty we are happy for you to create feature requests or bug reports in the [https://savannah.gnu.org/bugs/?func=additem&amp;amp;group=liberty-eiffel issue tracker on GNU Savannah].&lt;br /&gt;
&lt;br /&gt;
Please also feel free to improve the pages in this Wiki. - Although we disabled the anonymous account creation due to spamming it is simple to get an account by asking via [[Get in touch|email]].&lt;br /&gt;
&lt;br /&gt;
=Technical Details of our repository setup=&lt;br /&gt;
The main development repository is on Savannah: http://git.savannah.gnu.org/r/liberty-eiffel.git&lt;br /&gt;
Pushes to this repo are replicated (every two minutes) to [https://github.com/LibertyEiffel/Liberty Github/LibertyEiffel/Liberty] by ET. Many of us have an account and a private clone of the GitHub repo to be able to publish something, that is not yet pushable to the master repository, but others might want to take a look, comment and/or try. The main trick now is, that the local clones we work with on our development machines have the savannah repo also as remote and we do not directly commit to the Liberty repo master on github, but only to our personal github clones or to savannah.&lt;br /&gt;
&lt;br /&gt;
One easy way to handle patches from not-yet-savannah-project members is probably a pull-request on github. We then just have to remember that we have to manually pull those into our repositories first before pushing them to savannah (using the &amp;quot;manual mergin tipps&amp;quot; on github).&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Release_Notes_(Versions_history)&amp;diff=2366</id>
		<title>Release Notes (Versions history)</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Release_Notes_(Versions_history)&amp;diff=2366"/>
		<updated>2016-06-12T20:15:44Z</updated>

		<summary type="html">&lt;p&gt;Ramack: /* Curtiss (2016.09, named after Glenn Curtiss) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Releases]]&lt;br /&gt;
== LibertyEiffel (latest release first) ==&lt;br /&gt;
For upcoming releases see the [[upcoming releases|list of names]].&lt;br /&gt;
=== Curtiss (2016.09, named after [https://en.wikipedia.org/wiki/Glenn_Curtiss Glenn Curtiss]) ===&lt;br /&gt;
* not yet released (see next section for current release notes)&lt;br /&gt;
* User-visible changes:&lt;br /&gt;
** addition of a zsh completer for se&lt;br /&gt;
** finally get rid of obsolete classes GEN_RAND, MIN_STAND and STD_RAND&lt;br /&gt;
** removed support for some unused platforms (Amiga, elate, ...)&lt;br /&gt;
** creation keyword generates now an error&lt;br /&gt;
&lt;br /&gt;
** C99 conforming C code generation (hopefully)&lt;br /&gt;
* Developer changes:&lt;br /&gt;
** RUN_FEATUREs now have clear names (hopefully)&lt;br /&gt;
* Known bugs:&lt;br /&gt;
** see [https://savannah.gnu.org/bugs/?group=liberty-eiffel] for the full list&lt;br /&gt;
&lt;br /&gt;
=== Bell (2016.05, named after [https://en.wikipedia.org/wiki/Alexander_Graham_Bell Alexander Graham Bell]) ===&lt;br /&gt;
* released in May 2016&lt;br /&gt;
* first release since LibertyEiffel has become the official GNU Eiffel compiler&lt;br /&gt;
* User-visible changes:&lt;br /&gt;
** changed Environment Variable name from SmartEiffel to LibertyEiffel (anyhow, normally it should not be necessary to set this one)&lt;br /&gt;
** new tool [[Mock]]&lt;br /&gt;
** removed linebreaks in compiler output&lt;br /&gt;
** many bugfixes&lt;br /&gt;
** GC call at exit is optional&lt;br /&gt;
** generic creation&lt;br /&gt;
** agents are now [https://en.wikipedia.org/wiki/Closure_(computer_programming) closures ]&lt;br /&gt;
** finder now finds all classes in the universe with the given name, not only the first one&lt;br /&gt;
** keyword '''is''' at the beginning of a feature is now deprecated&lt;br /&gt;
** Added support for alias &amp;quot;[]&amp;quot; and alias &amp;quot;()&amp;quot;&lt;br /&gt;
** constants are now visible in the eiffeldoc generated documentation&lt;br /&gt;
* Known bugs:&lt;br /&gt;
** there is still an issue in both GC implementations (classical SEGC and BDW), if it shows up, it often yields a &amp;quot;Bad target type&amp;quot; runtime error.&lt;br /&gt;
** for the full list see [https://savannah.gnu.org/bugs/?group=liberty-eiffel]&lt;br /&gt;
&lt;br /&gt;
=== Adler (2013.11, named after [http://en.wikipedia.org/wiki/Charles_Adler,_Jr. Charles Adler, Jr.]) ===&lt;br /&gt;
* First release as LibertyEiffel&lt;br /&gt;
* User-visible changes:&lt;br /&gt;
** Added [[library_class:NATURAL_8|&amp;lt;tt&amp;gt;NATURAL_8&amp;lt;/tt&amp;gt;]], [[library_class:NATURAL_16|&amp;lt;tt&amp;gt;NATURAL_16&amp;lt;/tt&amp;gt;]], [[library_class:NATURAL_32|&amp;lt;tt&amp;gt;NATURAL_32&amp;lt;/tt&amp;gt;]], and [[library_class:NATURAL_64|&amp;lt;tt&amp;gt;NATURAL_64&amp;lt;/tt&amp;gt;]] classes. See &amp;lt;tt&amp;gt;tutorial/natural.e&amp;lt;/tt&amp;gt; for examples.&lt;br /&gt;
** Even low-level features (i.e. &amp;lt;tt&amp;gt;external &amp;quot;built_in&amp;quot;&amp;lt;/tt&amp;gt;) are now checking their assertions. As an example, division by zero is now checked by assertions.&lt;br /&gt;
** Inlined dynamic dispatch for better performance&lt;br /&gt;
** A missing export clause is deprecated. Use &amp;lt;tt&amp;gt;{ANY}&amp;lt;/tt&amp;gt; instead.&lt;br /&gt;
** New core libraries: cli, json, log, parse (beware, these libraries are not yet tuned to be used without GC)&lt;br /&gt;
** Improved libraries: string (with notably a new [[library_class:FIXED_STRING|&amp;lt;tt&amp;gt;FIXED_STRING&amp;lt;/tt&amp;gt;]] class)&lt;br /&gt;
** Wrapper libraries: gtk, gdk, readline, ffi...&lt;br /&gt;
** A new tool that can generate mocks to help unit testing&lt;br /&gt;
** [http://hboehm.info/gc/ BDW] GC support&lt;br /&gt;
* Developer changes:&lt;br /&gt;
** The web site now belongs to the repository&lt;br /&gt;
** Automatic testing tools (ET on the web, and &amp;lt;tt&amp;gt;watch_eiffeltest.sh&amp;lt;/tt&amp;gt; in the shell)&lt;br /&gt;
** Automatic Debian packages generation&lt;br /&gt;
* Known bugs:&lt;br /&gt;
** BDW GC is not well tested; currently weak references seem not to work properly; and the GC is not run at program exit (it should run all finalizers)&lt;br /&gt;
** Sometimes SmartEiffel's native GC behaves wrongly, analysis is welcome&lt;br /&gt;
** Some of the newer core libraries do not work very well when there is no GC&lt;br /&gt;
** See the [https://savannah.gnu.org/bugs/?group=liberty-eiffel bugs page]&lt;br /&gt;
&lt;br /&gt;
== SmartEiffel (all releases which are predecessors of Liberty) ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Release 2.3 [Antoine-Auguste Parmentier] - Wednesday July 11th 2007 ===&lt;br /&gt;
&lt;br /&gt;
Again, a lot of novelties for this release:&lt;br /&gt;
&lt;br /&gt;
* New [[Typing policy|typing rules]] have been revisited and are now crystal clear. See [[Typing policy|this page]] for details.&lt;br /&gt;
* Implemented a new [[class loading]] algorithm, which takes into account the &amp;quot;distance&amp;quot; between classes, thus reifying the notion of clusters and sub-clusters. Everything is trans&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Release_Notes_(Versions_history)&amp;diff=2351</id>
		<title>Release Notes (Versions history)</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Release_Notes_(Versions_history)&amp;diff=2351"/>
		<updated>2016-06-09T18:50:00Z</updated>

		<summary type="html">&lt;p&gt;Ramack: /* Curtiss (2016.09, named after Glenn Curtiss) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Releases]]&lt;br /&gt;
== LibertyEiffel (latest release first) ==&lt;br /&gt;
For upcoming releases see the [[upcoming releases|list of names]].&lt;br /&gt;
=== Curtiss (2016.09, named after [https://en.wikipedia.org/wiki/Glenn_Curtiss Glenn Curtiss]) ===&lt;br /&gt;
* not yet released (see next section for current release notes)&lt;br /&gt;
* User-visible changes:&lt;br /&gt;
** addition of a zsh completer for se&lt;br /&gt;
** finally get rid of obsolete classes GEN_RAND, MIN_STAND and STD_RAND&lt;br /&gt;
** C99 conforming C code generation&lt;br /&gt;
* Developer changes:&lt;br /&gt;
** RUN_FEATUREs now have clear names&lt;br /&gt;
* Known bugs:&lt;br /&gt;
** see [https://savannah.gnu.org/bugs/?group=liberty-eiffel] for the full list&lt;br /&gt;
&lt;br /&gt;
=== Bell (2016.05, named after [https://en.wikipedia.org/wiki/Alexander_Graham_Bell Alexander Graham Bell]) ===&lt;br /&gt;
* released in May 2016&lt;br /&gt;
* first release since LibertyEiffel has become the official GNU Eiffel compiler&lt;br /&gt;
* User-visible changes:&lt;br /&gt;
** changed Environment Variable name from SmartEiffel to LibertyEiffel (anyhow, normally it should not be necessary to set this one)&lt;br /&gt;
** new tool [[Mock]]&lt;br /&gt;
** removed linebreaks in compiler output&lt;br /&gt;
** many bugfixes&lt;br /&gt;
** GC call at exit is optional&lt;br /&gt;
** generic creation&lt;br /&gt;
** agents are now [https://en.wikipedia.org/wiki/Closure_(computer_programming) closures ]&lt;br /&gt;
** finder now finds all classes in the universe with the given name, not only the first one&lt;br /&gt;
** keyword '''is''' at the beginning of a feature is now deprecated&lt;br /&gt;
** Added support for alias &amp;quot;[]&amp;quot; and alias &amp;quot;()&amp;quot;&lt;br /&gt;
** constants are now visible in the eiffeldoc generated documentation&lt;br /&gt;
* Known bugs:&lt;br /&gt;
** there is still an issue in both GC implementations (classical SEGC and BDW), if it shows up, it often yields a &amp;quot;Bad target type&amp;quot; runtime error.&lt;br /&gt;
** for the full list see [https://savannah.gnu.org/bugs/?group=liberty-eiffel]&lt;br /&gt;
&lt;br /&gt;
=== Adler (2013.11, named after [http://en.wikipedia.org/wiki/Charles_Adler,_Jr. Charles Adler, Jr.]) ===&lt;br /&gt;
* First release as LibertyEiffel&lt;br /&gt;
* User-visible changes:&lt;br /&gt;
** Added [[library_class:NATURAL_8|&amp;lt;tt&amp;gt;NATURAL_8&amp;lt;/tt&amp;gt;]], [[library_class:NATURAL_16|&amp;lt;tt&amp;gt;NATURAL_16&amp;lt;/tt&amp;gt;]], [[library_class:NATURAL_32|&amp;lt;tt&amp;gt;NATURAL_32&amp;lt;/tt&amp;gt;]], and [[library_class:NATURAL_64|&amp;lt;tt&amp;gt;NATURAL_64&amp;lt;/tt&amp;gt;]] classes. See &amp;lt;tt&amp;gt;tutorial/natural.e&amp;lt;/tt&amp;gt; for examples.&lt;br /&gt;
** Even low-level features (i.e. &amp;lt;tt&amp;gt;external &amp;quot;built_in&amp;quot;&amp;lt;/tt&amp;gt;) are now checking their assertions. As an example, division by zero is now checked by assertions.&lt;br /&gt;
** Inlined dynamic dispatch for better performance&lt;br /&gt;
** A missing export clause is deprecated. Use &amp;lt;tt&amp;gt;{ANY}&amp;lt;/tt&amp;gt; instead.&lt;br /&gt;
** New core libraries: cli, json, log, parse (beware, these libraries are not yet tuned to be used without GC)&lt;br /&gt;
** Improved libraries: string (with notably a new [[library_class:FIXED_STRING|&amp;lt;tt&amp;gt;FIXED_STRING&amp;lt;/tt&amp;gt;]] class)&lt;br /&gt;
** Wrapper libraries: gtk, gdk, readline, ffi...&lt;br /&gt;
** A new tool that can generate mocks to help unit testing&lt;br /&gt;
** [http://hboehm.info/gc/ BDW] GC support&lt;br /&gt;
* Developer changes:&lt;br /&gt;
** The web site now belongs to the repository&lt;br /&gt;
** Automatic testing tools (ET on the web, and &amp;lt;tt&amp;gt;watch_eiffeltest.sh&amp;lt;/tt&amp;gt; in the shell)&lt;br /&gt;
** Automatic Debian packages generation&lt;br /&gt;
* Known bugs:&lt;br /&gt;
** BDW GC is not well tested; currently weak references seem not to work properly; and the GC is not run at program exit (it should run all finalizers)&lt;br /&gt;
** Sometimes SmartEiffel's native GC behaves wrongly, analysis is welcome&lt;br /&gt;
** Some of the newer core libraries do not work very well when there is no GC&lt;br /&gt;
** See the [https://savannah.gnu.org/bugs/?group=liberty-eiffel bugs page]&lt;br /&gt;
&lt;br /&gt;
== SmartEiffel (all releases which are predecessors of Liberty) ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Release 2.3 [Antoine-Auguste Parmentier] - Wednesday July 11th 2007 ===&lt;br /&gt;
&lt;br /&gt;
Again, a lot of novelties for this release:&lt;br /&gt;
&lt;br /&gt;
* New [[Typing policy|typing rules]] have been revisited and are now crystal clear. See [[Typing policy|this page]] for details.&lt;br /&gt;
* Implemented a new [[class loading]] algorithm, which takes into account the &amp;quot;distance&amp;quot; between classes, thus reifying the notion of clusters and sub-clusters. Everything is trans&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Getting_Started&amp;diff=2331</id>
		<title>Getting Started</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Getting_Started&amp;diff=2331"/>
		<updated>2016-05-31T18:11:17Z</updated>

		<summary type="html">&lt;p&gt;Ramack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Prepared Debian/Ubuntu packages ==&lt;br /&gt;
On http://apt.liberty-eiffel.org/ we have prepared some Debian/Ubuntu packages. For the quick start using the last stable release do:&lt;br /&gt;
&lt;br /&gt;
* add the following repository (note: it is currently unsigned)&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;deb http://apt.liberty-eiffel.org/ release main&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* then install (as root or with sudo)&lt;br /&gt;
 apt-get install liberty-eiffel-all&lt;br /&gt;
&lt;br /&gt;
That's it, you now can run &amp;quot;se c&amp;quot; to [[Tutorial_tour|compile your first program.]]&lt;br /&gt;
&lt;br /&gt;
== Windows Installer ==&lt;br /&gt;
So far we don't have an installer for windows, but a [[GSoC_-_Windows_Support|current GSoC project]] is working on that. In case of interest get in touch with us, maybe you can provide some input or help with testing.&lt;br /&gt;
&lt;br /&gt;
== Bootstrap from tarball ==&lt;br /&gt;
Download the &amp;lt;release&amp;gt;.tar.gz from http://download.savannah.gnu.org/releases/liberty-eiffel&lt;br /&gt;
unpack it with&lt;br /&gt;
 tar -zxvf &amp;lt;release&amp;gt;.tar.gz&lt;br /&gt;
&lt;br /&gt;
bootstrap Liberty with&lt;br /&gt;
 cd &amp;lt;release&amp;gt;&lt;br /&gt;
 ./install.sh -bootstrap&lt;br /&gt;
&lt;br /&gt;
This will create a default liberty configuration in ~/.config/liberty-eiffel/, bootstrap the compiler and compile all the tools. Afterwards you just need to add &amp;lt;LibertyHome&amp;gt;/target/bin to your path, e. g. in .bashrc:&lt;br /&gt;
 PATH=$PATH:~/&amp;lt;release&amp;gt;/target/bin&lt;br /&gt;
 export PATH&lt;br /&gt;
&lt;br /&gt;
== Bootstrap from git source ==&lt;br /&gt;
On Linux (and most other Unix-like systems) installation of Liberty from source is simple:&lt;br /&gt;
&lt;br /&gt;
Check that the following Pre-requisites are available on your system:&lt;br /&gt;
* git&lt;br /&gt;
* GCC compiler&lt;br /&gt;
* GCC-XML extension&lt;br /&gt;
* Boehm-Demers-Weiser garbage collector dev-packages&lt;br /&gt;
&lt;br /&gt;
On debian-like systems you may install them with:&lt;br /&gt;
 sudo apt-get install git build-essential gccxml libgc-dev&lt;br /&gt;
&lt;br /&gt;
On Fedora you'll need gc-devel, rather than libgc-dev, gccxml and of course the basic packages for compiling like gcc, git etc.&lt;br /&gt;
&lt;br /&gt;
Now clone the repository:&lt;br /&gt;
 git clone git://git.sv.gnu.org/liberty-eiffel.git&lt;br /&gt;
&lt;br /&gt;
Change into the directory you created by this:&lt;br /&gt;
 cd liberty-eiffel&lt;br /&gt;
&lt;br /&gt;
and execute&lt;br /&gt;
 ./install.sh -bootstrap&lt;br /&gt;
&lt;br /&gt;
This will create a default liberty configuration in ~/.config/liberty-eiffel/, bootstrap the compiler and compile all the tools. Afterwards you just need to add &amp;lt;LibertyHome&amp;gt;/target/bin to your path, e. g. in .bashrc:&lt;br /&gt;
 PATH=$PATH:~/liberty-eiffel/target/bin&lt;br /&gt;
 export PATH&lt;br /&gt;
&lt;br /&gt;
'''Please note that SmartEiffel should not be already installed on your system. Particularily, any /etc/serc file will prevent you from installing Liberty correctly.&lt;br /&gt;
'''&lt;br /&gt;
Now you can call [[Se|se]] as interface for all tools. For examples go to&lt;br /&gt;
 cd &amp;lt;LibertyHome&amp;gt;/tutorial&lt;br /&gt;
and compile with&lt;br /&gt;
 se compile hello_world.e -o hello_world&lt;br /&gt;
your first LibertyEiffel program.&lt;br /&gt;
&lt;br /&gt;
After this great success, play with the [[Table of contents#Eiffel|language]], [[Tools|tools]] and [[Table of contents#Library|libraries]]. Develop cool applications and for any question, suggestion or complaint [[Get in touch|get in touch]] with us. We are also happy to receive pull requests and provide accounts to this wiki if you want to contribute code or documentation. Be welcome to [[Get involved| get involved]].&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=ToDo&amp;diff=2300</id>
		<title>ToDo</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=ToDo&amp;diff=2300"/>
		<updated>2016-05-27T21:13:16Z</updated>

		<summary type="html">&lt;p&gt;Ramack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* describe polymorphism&lt;br /&gt;
* [[Cloning_objects]]&lt;br /&gt;
* describe difference between variable and object (should be already there, so make it easier to find, maybe add aliasing as effect)&lt;br /&gt;
* restructure to simplify the entry into LibertyEiffel for newcomers (remove the separation between &amp;quot;The Grand Book&amp;quot; and Community pages)&lt;br /&gt;
* clean up syntax diagrams&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=ToDo&amp;diff=2299</id>
		<title>ToDo</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=ToDo&amp;diff=2299"/>
		<updated>2016-05-27T21:12:47Z</updated>

		<summary type="html">&lt;p&gt;Ramack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* describe polymorphism&lt;br /&gt;
* [[Cloning_objects]]&lt;br /&gt;
* describe difference between variable and object (should be already there, so make it easier to find, maybe add aliasing as effect)&lt;br /&gt;
* restructure to simplify the entry into LibertyEiffel for newcomers (remove the separation between &amp;quot;The Grand Book&amp;quot; and Community pages)&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Talk:Upcoming_release_names&amp;diff=2298</id>
		<title>Talk:Upcoming release names</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Talk:Upcoming_release_names&amp;diff=2298"/>
		<updated>2016-05-27T16:49:51Z</updated>

		<summary type="html">&lt;p&gt;Ramack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I think an '''&amp;quot;eiffel&amp;quot;''' release of Liberty Eiffel may, indeed, be just a little too much of a good thing. --[[User:Dkearns|Dkearns]] ([[User talk:Dkearns|talk]]) 14:26, 27 May 2016 (CEST)&lt;br /&gt;
&lt;br /&gt;
Yes, I share this opinion - What about [https://en.wikipedia.org/wiki/Thomas_Edison Thomas Alva Edison]. For G, I favor Dennis Gabor. --[[User:Ramack|Ramack]] ([[User talk:Ramack|talk]]) 18:49, 27 May 2016 (CEST)&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Release_Notes_(Versions_history)&amp;diff=2286</id>
		<title>Release Notes (Versions history)</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Release_Notes_(Versions_history)&amp;diff=2286"/>
		<updated>2016-05-26T20:19:44Z</updated>

		<summary type="html">&lt;p&gt;Ramack: /* Bell (2016.05, named after Alexander Graham Bell) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Releases]]&lt;br /&gt;
== LibertyEiffel (latest release first) ==&lt;br /&gt;
For upcoming releases see the [[upcoming releases|list of names]].&lt;br /&gt;
=== Curtiss (2016.09, named after [https://en.wikipedia.org/wiki/Glenn_Curtiss Glenn Curtiss]) ===&lt;br /&gt;
* not yet released (see next section for current release notes)&lt;br /&gt;
* User-visible changes:&lt;br /&gt;
** C99 conforming C code generation&lt;br /&gt;
* Developer changes:&lt;br /&gt;
** RUN_FEATUREs now have clear names&lt;br /&gt;
* Known bugs:&lt;br /&gt;
** see [https://savannah.gnu.org/bugs/?group=liberty-eiffel] for the full list&lt;br /&gt;
&lt;br /&gt;
=== Bell (2016.05, named after [https://en.wikipedia.org/wiki/Alexander_Graham_Bell Alexander Graham Bell]) ===&lt;br /&gt;
* released in May 2016&lt;br /&gt;
* first release since LibertyEiffel is the official GNU Eiffel compiler&lt;br /&gt;
* User-visible changes:&lt;br /&gt;
** changed Environment Variable name from SmartEiffel to LibertyEiffel (anyhow, normally it should not be necessary to set this one)&lt;br /&gt;
** new tool [[Mock]]&lt;br /&gt;
** removed linebreaks in compiler output&lt;br /&gt;
** many bugfixes&lt;br /&gt;
** GC call at exit is optional&lt;br /&gt;
** generic creation&lt;br /&gt;
** finder now finds all classes in the universe with the given name, not only the first one&lt;br /&gt;
** keyword '''is''' at the beginning of a feature is now deprecated&lt;br /&gt;
** Added support for alias &amp;quot;[]&amp;quot; and alias &amp;quot;()&amp;quot;&lt;br /&gt;
** constants are now visible in the eiffeldoc generated documentation&lt;br /&gt;
* Known bugs:&lt;br /&gt;
** there is still an issue in both GC implementations (classical SEGC and BDW), if it shows up, it often yields a &amp;quot;Bad target type&amp;quot; runtime error.&lt;br /&gt;
** for the full list see [https://savannah.gnu.org/bugs/?group=liberty-eiffel]&lt;br /&gt;
&lt;br /&gt;
=== Adler (2013.11, named after [http://en.wikipedia.org/wiki/Charles_Adler,_Jr. Charles Adler, Jr.]) ===&lt;br /&gt;
* First release as LibertyEiffel&lt;br /&gt;
* User-visible changes:&lt;br /&gt;
** Added [[library_class:NATURAL_8|&amp;lt;tt&amp;gt;NATURAL_8&amp;lt;/tt&amp;gt;]], [[library_class:NATURAL_16|&amp;lt;tt&amp;gt;NATURAL_16&amp;lt;/tt&amp;gt;]], [[library_class:NATURAL_32|&amp;lt;tt&amp;gt;NATURAL_32&amp;lt;/tt&amp;gt;]], and [[library_class:NATURAL_64|&amp;lt;tt&amp;gt;NATURAL_64&amp;lt;/tt&amp;gt;]] classes. See &amp;lt;tt&amp;gt;tutorial/natural.e&amp;lt;/tt&amp;gt; for examples.&lt;br /&gt;
** Even low-level features (i.e. &amp;lt;tt&amp;gt;external &amp;quot;built_in&amp;quot;&amp;lt;/tt&amp;gt;) are now checking their assertions. As an example, division by zero is now checked by assertions.&lt;br /&gt;
** Inlined dynamic dispatch for better performance&lt;br /&gt;
** A missing export clause is deprecated. Use &amp;lt;tt&amp;gt;{ANY}&amp;lt;/tt&amp;gt; instead.&lt;br /&gt;
** New core libraries: cli, json, log, parse (beware, these libraries are not yet tuned to be used without GC)&lt;br /&gt;
** Improved libraries: string (with notably a new [[library_class:FIXED_STRING|&amp;lt;tt&amp;gt;FIXED_STRING&amp;lt;/tt&amp;gt;]] class)&lt;br /&gt;
** Wrapper libraries: gtk, gdk, readline, ffi...&lt;br /&gt;
** A new tool that can generate mocks to help unit testing&lt;br /&gt;
** [http://hboehm.info/gc/ BDW] GC support&lt;br /&gt;
* Developer changes:&lt;br /&gt;
** The web site now belongs to the repository&lt;br /&gt;
** Automatic testing tools (ET on the web, and &amp;lt;tt&amp;gt;watch_eiffeltest.sh&amp;lt;/tt&amp;gt; in the shell)&lt;br /&gt;
** Automatic Debian packages generation&lt;br /&gt;
* Known bugs:&lt;br /&gt;
** BDW GC is not well tested; currently weak references seem not to work properly; and the GC is not run at program exit (it should run all finalizers)&lt;br /&gt;
** Sometimes SmartEiffel's native GC behaves wrongly, analysis is welcome&lt;br /&gt;
** Some of the newer core libraries do not work very well when there is no GC&lt;br /&gt;
** See the [https://savannah.gnu.org/bugs/?group=liberty-eiffel bugs page]&lt;br /&gt;
&lt;br /&gt;
== SmartEiffel (all releases which are predecessors of Liberty) ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Release 2.3 [Antoine-Auguste Parmentier] - Wednesday July 11th 2007 ===&lt;br /&gt;
&lt;br /&gt;
Again, a lot of novelties for this release:&lt;br /&gt;
&lt;br /&gt;
* New [[Typing policy|typing rules]] have been revisited and are now crystal clear. See [[Typing policy|this page]] for details.&lt;br /&gt;
* Implemented a new [[class loading]] algorithm, which takes into account the &amp;quot;distance&amp;quot; between classes, thus reifying the notion of clusters and sub-clusters. Everything is trans&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Release_Checklist&amp;diff=2284</id>
		<title>Release Checklist</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Release_Checklist&amp;diff=2284"/>
		<updated>2016-05-23T18:40:16Z</updated>

		<summary type="html">&lt;p&gt;Ramack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is WIP. Please update if you think of any missing detail. The target is to include all necessary command line commands (where applicable)&lt;br /&gt;
&lt;br /&gt;
* cleanup Testsuite&lt;br /&gt;
* update LIBERTY_VERSION&lt;br /&gt;
* create new bootstrap germ code&lt;br /&gt;
 resources/smarteiffel-germ/make_germ.sh&lt;br /&gt;
* create a local branch for the next release&lt;br /&gt;
 git branch bell&lt;br /&gt;
* create a bell branch in the github repo (via web interface?)&lt;br /&gt;
* push it to savannah&lt;br /&gt;
 git checkout bell&lt;br /&gt;
 git push upstream bell&lt;br /&gt;
* remove all tools and libraries which are not sufficiently mature to be included in the release&lt;br /&gt;
** for Bell these are:&lt;br /&gt;
 cluster smarteiffel/generation/run&lt;br /&gt;
 smarteiffel/commands/run.e&lt;br /&gt;
 edc-new, edc&lt;br /&gt;
 lib/mmi?&lt;br /&gt;
 effect tool&lt;br /&gt;
 src/staging&lt;br /&gt;
 src/lib/net/ezmq&lt;br /&gt;
 wrappers: cairo, database/postgresql, ewlc, llvm, zmq, xml&lt;br /&gt;
* switch ET to use the new branch&lt;br /&gt;
** echo &amp;quot;bell&amp;quot; &amp;gt; ~/branch on ETs account&lt;br /&gt;
** change website/et/html_templates/head.html to make ET output tell people which branch is being tested...&lt;br /&gt;
* adapt changelog (in work/packaging/debian.skel/debian/) in bell branch (remove ~dev tag)&lt;br /&gt;
* create release candidate&lt;br /&gt;
 git tag &amp;lt;release_name&amp;gt;-rc1&lt;br /&gt;
 git push --tags upstream&lt;br /&gt;
* on ETs account...&lt;br /&gt;
 work/packaging/build_debian.sh -rc1&lt;br /&gt;
 work/packaging/build_debian.sh -rc1 -deploy&lt;br /&gt;
 ssh et32@et32 &amp;quot;cd $LibertyBase &amp;amp;&amp;amp; git fetch origin &amp;amp;&amp;amp; git checkout $gitBranch &amp;amp;&amp;amp; git merge --ff-only FETCH_HEAD &amp;amp;&amp;amp; $LibertyBase/work/packaging/build_debian.sh -rc1&amp;quot;&lt;br /&gt;
 scp -p et32@et32:Liberty/work/packaging/debs/* ~/Liberty/work/packaging/debs_i386/&lt;br /&gt;
 reprepro --basedir ~/Liberty/website/apt includedeb rc liberty-eiffel-tools_2016~dev~rc1_i386.deb&lt;br /&gt;
* create tarball and put on FTP server&lt;br /&gt;
 download the tag tarball from http://git.savannah.gnu.org/cgit/liberty-eiffel.git&lt;br /&gt;
 work/strip_tgz.sh bell-rc1.tar.gz&lt;br /&gt;
 scp bell-rc1.tar.gz ramack@dl.sv.gnu.org:/srv/download/liberty-eiffel/&lt;br /&gt;
* collect RC feedback on our mailing list&lt;br /&gt;
* adapt changelog (in work/packaging/debian.skel/debian/) in bell branch (fix release version and date, without SNAPSHOT)&lt;br /&gt;
* create the final release tag&lt;br /&gt;
 git tag &amp;lt;release_name&amp;gt;&lt;br /&gt;
* create release debian packages&lt;br /&gt;
 see above, use -release instead of -rc1&lt;br /&gt;
* create tarball and put on FTP server&lt;br /&gt;
 see above for rc&lt;br /&gt;
* write announce email&lt;br /&gt;
** to our mailing list&lt;br /&gt;
** on http://lists.gnu.org/archive/html/info-gnu/&lt;br /&gt;
** as news entry on savannah&lt;br /&gt;
** https://en.wikipedia.org/wiki/LibertyEiffel - stable release docs&lt;br /&gt;
** adapt changelog (in work/packaging/debian.skel/debian/) in master branch (readd ~dev tagged version)&lt;br /&gt;
* switch ET back to use the master branch&lt;br /&gt;
** echo &amp;quot;master&amp;quot; &amp;gt; ~/branch on ETs account&lt;br /&gt;
* prepare changelog for the third release&lt;br /&gt;
* plan the next release (tickets on savannah)&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Eiffeltest&amp;diff=2283</id>
		<title>Eiffeltest</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Eiffeltest&amp;diff=2283"/>
		<updated>2016-05-22T11:24:56Z</updated>

		<summary type="html">&lt;p&gt;Ramack: /* Synopsis */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Tool]]&lt;br /&gt;
&amp;lt;code&amp;gt;eiffeltest&amp;lt;/code&amp;gt; is a tool that runs a suite of tests.&lt;br /&gt;
&lt;br /&gt;
Users can use it to run a test-suite of their own, which is a useful tool for their project robustness.&lt;br /&gt;
&lt;br /&gt;
It is also used by LibertyEiffel itself to validate, with the provided test-suite, the compiler and the libraries.&lt;br /&gt;
&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;se test directory &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== File handling ==&lt;br /&gt;
&lt;br /&gt;
The tools recursively iterates over the directory given as a command-line parameter, looking for test files or over the given test file names.&lt;br /&gt;
&lt;br /&gt;
Test files are Eiffel source files with special names:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;test_*.e&amp;lt;/code&amp;gt;: valid source file that should be compilable and runnable without causing an error&lt;br /&gt;
* &amp;lt;code&amp;gt;bad_*.e&amp;lt;/code&amp;gt;: invalid source file that should trigger a given compiler error message&lt;br /&gt;
&lt;br /&gt;
For each test file, there can be optional files that have the same name but a different extension. These optional files can be used to provide:&lt;br /&gt;
&lt;br /&gt;
* '''output''' that the compiler is expected to provide when '''compiling''' &amp;lt;tt&amp;gt;bad_*.e&amp;lt;/tt&amp;gt; files. This mandatory file for invalid tests has the extension &amp;lt;tt&amp;gt;.msg&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* '''input''' to be fed to the program. This optional file (allowed only for valid tests) has the extension &amp;lt;tt&amp;gt;.in&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* '''output''' that the program is expected to provide when '''run'''. This optional file (allowed only for valid tests) has the extension &amp;lt;tt&amp;gt;.out&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;glu_*.c&amp;lt;/code&amp;gt;: ***&lt;br /&gt;
* &amp;lt;code&amp;gt;cecil_*.se&amp;lt;/code&amp;gt;: ***&lt;br /&gt;
* &amp;lt;code&amp;gt;extra_options_*.se&amp;lt;/code&amp;gt;: ***&lt;br /&gt;
&lt;br /&gt;
In each test directory a file named loadpath.se may exist, which is passed to the compiler as loadpath.&lt;br /&gt;
&lt;br /&gt;
== Test implementation ==&lt;br /&gt;
A test case in general is a program - defined by an Eiffel class - returning 0 in case of success and 1 if the test failed. To ease writing such classes we recommend to insert [[library_class::EIFFELTEST_TOOLS]] and call label_assert(&amp;quot;some descriptive message&amp;quot;, assertion_condition) for any assertion condition that shall be tested. This class internally counts the assertions and provides an error message in case of failure - even with a sedb_breakpoint if compiled with -sedb. For more advanced, or dynamic labels the feature message_assert can be used, which takes an agent to generate the label. After telling the user about the failed testcase [[library_class::EIFFELTEST_TOOLS]] also ensures to terminate the program with exit code 1. One simple example for a test case is the following:&lt;br /&gt;
&lt;br /&gt;
 class TEST_EXAMPLE&lt;br /&gt;
 &lt;br /&gt;
 insert&lt;br /&gt;
    EIFFELTEST_TOOLS&lt;br /&gt;
 &lt;br /&gt;
 create {}&lt;br /&gt;
    make&lt;br /&gt;
 &lt;br /&gt;
 feature {ANY}&lt;br /&gt;
    make&lt;br /&gt;
       -- the root creation procedure&lt;br /&gt;
       do&lt;br /&gt;
          label_assert(&amp;quot;first test&amp;quot;, 2 + 3 = 5)&lt;br /&gt;
          label_assert(&amp;quot;second test&amp;quot;, False)&lt;br /&gt;
       end&lt;br /&gt;
 end -- class TEST_EXAMPLE&lt;br /&gt;
&lt;br /&gt;
== Modes that are checked ==&lt;br /&gt;
Eiffeltest checks the following modes (presuming they are not disabled by the excluded.lst file)&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* -boost&lt;br /&gt;
* -boost -bdw_gc&lt;br /&gt;
* -boost -debug -bdw_gc&lt;br /&gt;
* -no_check&lt;br /&gt;
* -no_check -bdw_gc&lt;br /&gt;
|&lt;br /&gt;
* -flat_check -all_check -debug&lt;br /&gt;
* -flat_check -require_check&lt;br /&gt;
* -flat_check -ensure_check&lt;br /&gt;
* -flat_check -invariant_check&lt;br /&gt;
* -flat_check -loop_check&lt;br /&gt;
* -flat_check -all_check&lt;br /&gt;
|&lt;br /&gt;
* -flat_check -no_check -bdw_gc&lt;br /&gt;
* -flat_check -require_check -bdw_gc&lt;br /&gt;
* -flat_check -ensure_check -bdw_gc&lt;br /&gt;
* -flat_check -invariant_check -bdw_gc&lt;br /&gt;
* -flat_check -loop_check -bdw_gc&lt;br /&gt;
* -flat_check -all_check -bdw_gc&lt;br /&gt;
|&lt;br /&gt;
* -no_gc -boost &lt;br /&gt;
* -no_gc -boost -debug&lt;br /&gt;
* -no_gc -no_check&lt;br /&gt;
* -no_gc -flat_check -require_check&lt;br /&gt;
* -no_gc -ensure_check&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* -no_gc -flat_check -debug&lt;br /&gt;
* -no_gc -flat_check -invariant_check&lt;br /&gt;
* -no_gc -flat_check -loop_check&lt;br /&gt;
* -no_gc -flat_check -all_check&lt;br /&gt;
|&lt;br /&gt;
* -all_check -debug&lt;br /&gt;
* -require_check&lt;br /&gt;
* -ensure_check&lt;br /&gt;
* -invariant_check&lt;br /&gt;
* -loop_check&lt;br /&gt;
* -all_check&lt;br /&gt;
* -debug&lt;br /&gt;
|&lt;br /&gt;
* -no_gc -all_check -debug&lt;br /&gt;
* -no_gc -require_check&lt;br /&gt;
* -no_gc -ensure_check&lt;br /&gt;
* -no_gc -invariant_check&lt;br /&gt;
* -no_gc -loop_check&lt;br /&gt;
* -no_gc -all_check&lt;br /&gt;
|&lt;br /&gt;
* -all_check -debug -bdw_gc&lt;br /&gt;
* -require_check -bdw_gc&lt;br /&gt;
* -ensure_check -bdw_gc&lt;br /&gt;
* -invariant_check -bdw_gc&lt;br /&gt;
* -loop_check -bdw_gc&lt;br /&gt;
* -all_check -bdw_gc&lt;br /&gt;
* -debug -bdw_gc&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* -profile -boost &lt;br /&gt;
* -profile -all_check -debug&lt;br /&gt;
* -profile -no_check&lt;br /&gt;
* -profile -require_check&lt;br /&gt;
* -profile -ensure_check&lt;br /&gt;
* -profile -invariant_check&lt;br /&gt;
* -profile -loop_check&lt;br /&gt;
* -profile -all_check&lt;br /&gt;
|&lt;br /&gt;
* -profile -no_gc -boost &lt;br /&gt;
* -profile -no_gc -all_check -debug&lt;br /&gt;
* -profile -no_gc -no_check&lt;br /&gt;
* -profile -no_gc -require_check&lt;br /&gt;
* -profile -no_gc -ensure_check&lt;br /&gt;
* -profile -no_gc -invariant_check&lt;br /&gt;
* -profile -no_gc -loop_check&lt;br /&gt;
* -profile -no_gc -all_check&lt;br /&gt;
|&lt;br /&gt;
* -profile -boost -bwd_gc&lt;br /&gt;
* -profile -all_check -debug -bdw_gc&lt;br /&gt;
* -profile -no_check -bdw_gc&lt;br /&gt;
* -profile -require_check -bdw_gc&lt;br /&gt;
* -profile -ensure_check -bdw_gc&lt;br /&gt;
* -profile -invariant_check -bdw_gc&lt;br /&gt;
* -profile -loop_check -bdw_gc&lt;br /&gt;
* -profile -all_check -bdw_gc&lt;br /&gt;
|&lt;br /&gt;
* -profile -flat_check -all_check -debug&lt;br /&gt;
* -profile -flat_check -require_check&lt;br /&gt;
* -profile -flat_check -ensure_check&lt;br /&gt;
* -profile -flat_check -invariant_check&lt;br /&gt;
* -profile -flat_check -loop_check&lt;br /&gt;
* -profile -flat_check -all_check&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* -no_split -boost&lt;br /&gt;
* -no_split -no_gc -boost&lt;br /&gt;
* -no_split -boost -bdw_gc&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Open issues ==&lt;br /&gt;
&lt;br /&gt;
* How can we use  &amp;lt;tt&amp;gt;.in&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;.out&amp;lt;/tt&amp;gt; files on platforms that do not allow redirecting the standard input and output of programs?&lt;br /&gt;
&lt;br /&gt;
''Easy: just finish the &amp;quot;exec&amp;quot; cluster ;-)'' --[[User:Cadrian|Cyril]] 08:16, 10 nov 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
''Sounds good. Can you give a brief listing of what is to be done ?'' --[[User:Pini|pini]] 23:36, 25 nov 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
''The win32 port (at least) is to be written. Ah, and testing ;-)'' --[[User:Cadrian|Cyril]] 15:39, 28 Nov 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
* Which compilation modes are used for testing? There are many options and running all possibilities is probably too much.&lt;br /&gt;
Flags I can remember from: -no_gc, -flat_check, -no_split, (-debug_check | -all_check | -loop_check | -invariant_check | -ensure_check | -require_check | -no_check | -boost)&lt;br /&gt;
This means compiling and running about 64 times (minus incompatibilities between -flat_check and boost/no_check).&lt;br /&gt;
&lt;br /&gt;
* How to test some specific capabilities: options -profile, -no_main, -c_mode, -sedb, -cecil, or testing with c2j?&lt;br /&gt;
&lt;br /&gt;
* What about tests specific to some compiler mode? For example GC tests should not be run without GC, optimizer tests are invalid in modes other than -boost...&lt;br /&gt;
&lt;br /&gt;
''Perhaps we could use indexing/notes clauses with tags indicating which modes/options are relevant for the test?'' --[[User:Dmoisset|Dmoisset]] 22:44, 26 Nov 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
''Nice idea. I would improve it by proposing the opposite: list the modes/options to exclude. This means that all modes will be checked by default. If the test is incompatible with some mode, then it has to be specified. If some new mode is added, this mode will be tested with all tests. If some tests are not compatible with this mode, they have to be excluded. Otherway, you would have to edit about every test to add this mode. -- Philippe Ribet&lt;br /&gt;
&lt;br /&gt;
''Why not remove the 'test_' and 'bad_' substrings from the test names? That reduces clutter and leaves more space for readable, self-documenting filenames.''&lt;br /&gt;
&lt;br /&gt;
''The test harness can look for response files that match the test prefix. You already have two suffixes: *.out (for output) and *.msg (for a compiler error message). Another useful one is *.match (for a regular expression match on the output, because the output might contain things like date/time/version-number that are not relevant to the test).''&lt;br /&gt;
&lt;br /&gt;
''That is how I'm doing testing for the Amber project, and it seems to work well. --Roger Browne 2005-11-26''&lt;br /&gt;
&lt;br /&gt;
That's a good point to raise, if only to mention that the current test suite (pre-eiffeltest) does a &amp;quot;fuzzy&amp;quot; matching of error messages (using SmartEiffel/tools/commands/same_msg.e).--[[User:FM|FM]] 21:42, 19 Dec 2005 (CET)&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Getting_Started&amp;diff=2282</id>
		<title>Getting Started</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Getting_Started&amp;diff=2282"/>
		<updated>2016-05-21T19:18:08Z</updated>

		<summary type="html">&lt;p&gt;Ramack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Prepared Debian/Ubuntu packages ==&lt;br /&gt;
On http://apt.liberty-eiffel.org/ we have prepared some Debian/Ubuntu packages. For the quick start using the last stable release do:&lt;br /&gt;
&lt;br /&gt;
* add the following repository (note: it is currently unsigned)&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;deb http://apt.liberty-eiffel.org/ release main&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* then install (as root or with sudo)&lt;br /&gt;
 apt-get install liberty-eiffel-all&lt;br /&gt;
&lt;br /&gt;
That's it, you now can run &amp;quot;se c&amp;quot; to [[Tutorial_tour|compile your first program.]]&lt;br /&gt;
&lt;br /&gt;
== Windows Installer ==&lt;br /&gt;
So far we don't have an installer for windows, but a [[GSoC_-_Windows_Support|current GSoC project]] is working on that. In case of interest get in touch with us, maybe you can provide some input or help with testing.&lt;br /&gt;
&lt;br /&gt;
== Bootstrap from tarball ==&lt;br /&gt;
Download the &amp;lt;release&amp;gt;.tar.gz from http://download.savannah.gnu.org/releases/liberty-eiffel&lt;br /&gt;
unpack it with&lt;br /&gt;
 tar -zxvf &amp;lt;release&amp;gt;.tar.gz&lt;br /&gt;
&lt;br /&gt;
bootstrap Liberty with&lt;br /&gt;
 cd &amp;lt;release&amp;gt;&lt;br /&gt;
 ./install.sh -bootstrap&lt;br /&gt;
&lt;br /&gt;
== Bootstrap from git source ==&lt;br /&gt;
On Linux (and most other Unix-like systems) installation of Liberty from source is simple:&lt;br /&gt;
&lt;br /&gt;
Check that the following Pre-requisites are available on your system:&lt;br /&gt;
* git&lt;br /&gt;
* GCC compiler&lt;br /&gt;
* GCC-XML extension&lt;br /&gt;
* Boehm-Demers-Weiser garbage collector dev-packages&lt;br /&gt;
&lt;br /&gt;
On debian-like systems you may install them with:&lt;br /&gt;
 sudo apt-get install git build-essential gccxml libgc-dev&lt;br /&gt;
&lt;br /&gt;
On Fedora you'll need gc-devel, rather than libgc-dev, gccxml and of course the basic packages for compiling like gcc, git etc.&lt;br /&gt;
&lt;br /&gt;
Now clone the repository:&lt;br /&gt;
 git clone git://git.sv.gnu.org/liberty-eiffel.git&lt;br /&gt;
&lt;br /&gt;
Change into the directory you created by this:&lt;br /&gt;
 cd liberty-eiffel&lt;br /&gt;
&lt;br /&gt;
and execute&lt;br /&gt;
 ./install.sh -bootstrap&lt;br /&gt;
&lt;br /&gt;
This will create a default liberty configuration in ~/.config/liberty-eiffel/, bootstrap the compiler and compile all the tools. Afterwards you just need to add &amp;lt;LibertyHome&amp;gt;/target/bin to your path, e. g. in .bashrc:&lt;br /&gt;
 PATH=$PATH:~/liberty-eiffel/target/bin&lt;br /&gt;
 export PATH&lt;br /&gt;
&lt;br /&gt;
'''Please note that SmartEiffel should not be already installed on your system. Particularily, any /etc/serc file will prevent you from installing Liberty correctly.&lt;br /&gt;
'''&lt;br /&gt;
Now you can call [[Se|se]] as interface for all tools. For examples go to&lt;br /&gt;
 cd &amp;lt;LibertyHome&amp;gt;/tutorial&lt;br /&gt;
and compile with&lt;br /&gt;
 se compile hello_world.e -o hello_world&lt;br /&gt;
your first LibertyEiffel program.&lt;br /&gt;
&lt;br /&gt;
After this great success, play with the [[Table of contents#Eiffel|language]], [[Tools|tools]] and [[Table of contents#Library|libraries]]. Develop cool applications and for any question, suggestion or complaint [[Get in touch|get in touch]] with us. We are also happy to receive pull requests and provide accounts to this wiki if you want to contribute code or documentation. Be welcome to [[Get involved| get involved]].&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Table_of_contents&amp;diff=2281</id>
		<title>Table of contents</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Table_of_contents&amp;diff=2281"/>
		<updated>2016-05-21T19:09:03Z</updated>

		<summary type="html">&lt;p&gt;Ramack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''LibertyEiffel Wiki'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;History&amp;quot;&amp;gt;&lt;br /&gt;
'''1''' History and goals of the LibertyEiffel project&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''1.1''' [[Introduction]]&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''1.2''' [[Versions history|All LibertyEiffel versions]]&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Tutorial&amp;quot;&amp;gt;&lt;br /&gt;
'''2''' Build with LibertyEiffel&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''2.1''' [[Getting_Started|Setup LibertyEiffel on your computer]]&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''2.2''' [[Tutorial tour|Guided tour of the tutorial]]&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''2.3''' [[Build your library]]&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''2.4''' [[sedb|Debug your programs]]&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''2.5''' [[profile|Profile your programs]]&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Lecture&amp;quot;&amp;gt;&lt;br /&gt;
'''3''' Lecture on object-oriented programming and design by contract in Eiffel&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''3.1''' [[Inheritance]]&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''3.2''' [[Dynamic dispatch]]&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''3.3''' [[Comparison of objects|Comparison of objects]]&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''3.4''' [[Cloning objects]]&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Library&amp;quot;&amp;gt;&lt;br /&gt;
'''4''' The LibertEiffel general purpose library&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''4.1''' [[Library interface|How to use the library]]&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''4.2''' [[Library design|Design of the library]]&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''4.3''' [[Library Wrappers|How to use existing libraries in LibertyEiffel (wrappers)]]&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''4.4''' [[Wrapping_C_libraries|How to create a wrapper for existing libraries]]&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Tools&amp;quot;&amp;gt;&lt;br /&gt;
'''5''' [[Tools|LibertyEiffel's tools documentation]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Eiffel&amp;quot;&amp;gt;&lt;br /&gt;
'''6''' The Eiffel language of LibertyEiffel&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''6.1''' [[System defintion]] of Eiffel&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''6.2''' [[Syntax diagrams]] of Eiffel&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''6.3''' [[Expanded or reference|Expanded object or reference object]]&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''6.4''' [[Typing policy|Validity of assignments and feature redefinitions]]&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''6.5''' [[Current|What you need to know about &amp;lt;TT&amp;gt;Current&amp;lt;/TT&amp;gt;]]&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''6.6''' [[Void|A definition of &amp;lt;TT&amp;gt;Void&amp;lt;/TT&amp;gt;]]&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''6.7''' [[Once]]&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''6.8''' [[Tuple]]s&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''6.9''' [[Agent]]s&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''6.10''' [[Precursor]]&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''6.11''' [[Manifest storage notation]]&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''6.12''' [[Dynamic type testing]]&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''6.13''' [[Type of integer constants]]&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''6.14''' [[SCOOP]] - Concurrency in LibertyEiffel&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''6.15''' [[ECMA]] - The ECMA standard andLiberty&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''7''' [[FAQ|The LibertyEiffel FAQ]]&lt;br /&gt;
&lt;br /&gt;
'''8''' [[Glossary]]&lt;br /&gt;
&lt;br /&gt;
'''9''' [[Papers]]&lt;br /&gt;
&lt;br /&gt;
'''10''' [[License]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Appendices&amp;quot;&amp;gt;&lt;br /&gt;
'''11''' Appendices&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''11.1''' [[Author guidelines]] for this wiki&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''11.2''' Why there are [[no threads]]&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''11.3''' [[Gc info|The output of the &amp;lt;tt&amp;gt;-gc_info&amp;lt;/tt&amp;gt; option]].&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''12''' [[Bibliography]]&lt;br /&gt;
&lt;br /&gt;
'''13''' [[Manual index|Index]]&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Getting_Started&amp;diff=2280</id>
		<title>Getting Started</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Getting_Started&amp;diff=2280"/>
		<updated>2016-05-21T19:00:14Z</updated>

		<summary type="html">&lt;p&gt;Ramack: added apt repository example&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Prepared Debian/Ubuntu packages ==&lt;br /&gt;
On http://apt.liberty-eiffel.org/ we have prepared some Debian/Ubuntu packages. For the quick start using the last stable release do:&lt;br /&gt;
&lt;br /&gt;
* add the following repository (note: it is currently unsigned)&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;deb http://apt.liberty-eiffel.org/ release main&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* then install (as root or with sudo)&lt;br /&gt;
 apt-get install liberty-eiffel-all&lt;br /&gt;
&lt;br /&gt;
That's it, you now can run &amp;quot;se c&amp;quot; to [[Tutorial_tour|compile your first program.]]&lt;br /&gt;
&lt;br /&gt;
== Windows Installer ==&lt;br /&gt;
So far we don't have an installer for windows, but a [[GSoC_-_Windows_Support|current GSoC project]] is working on that. In case of interest get in touch with us, maybe you can provide some input or help with testing.&lt;br /&gt;
&lt;br /&gt;
== Bootstrapping from git source ==&lt;br /&gt;
On Linux (and most other Unix-like systems) installation of Liberty from source is simple:&lt;br /&gt;
&lt;br /&gt;
Check that the following Pre-requisites are available on your system:&lt;br /&gt;
* git&lt;br /&gt;
* GCC compiler&lt;br /&gt;
* GCC-XML extension&lt;br /&gt;
* Boehm-Demers-Weiser garbage collector dev-packages&lt;br /&gt;
&lt;br /&gt;
On debian-like systems you may install them with:&lt;br /&gt;
 sudo apt-get install git build-essential gccxml libgc-dev&lt;br /&gt;
&lt;br /&gt;
On Fedora you'll need gc-devel, rather than libgc-dev, gccxml and of course the basic packages for compiling like gcc, git etc.&lt;br /&gt;
&lt;br /&gt;
Now clone the repository:&lt;br /&gt;
 git clone git://git.sv.gnu.org/liberty-eiffel.git&lt;br /&gt;
&lt;br /&gt;
Change into the directory you created by this:&lt;br /&gt;
 cd liberty-eiffel&lt;br /&gt;
&lt;br /&gt;
and execute&lt;br /&gt;
 ./install.sh -bootstrap&lt;br /&gt;
&lt;br /&gt;
This will create a default liberty configuration in ~/.config/liberty-eiffel/, bootstrap the compiler and compile all the tools. Afterwards you just need to add &amp;lt;LibertyHome&amp;gt;/target/bin to your path, e. g. in .bashrc:&lt;br /&gt;
 PATH=$PATH:~/liberty-eiffel/target/bin&lt;br /&gt;
 export PATH&lt;br /&gt;
&lt;br /&gt;
'''Please note that SmartEiffel should not be already installed on your system. Particularily, any /etc/serc file will prevent you from installing Liberty correctly.&lt;br /&gt;
'''&lt;br /&gt;
Now you can call [[Se|se]] as interface for all tools. For examples go to&lt;br /&gt;
 cd &amp;lt;LibertyHome&amp;gt;/tutorial&lt;br /&gt;
and compile with&lt;br /&gt;
 se compile hello_world.e -o hello_world&lt;br /&gt;
your first LibertyEiffel program.&lt;br /&gt;
&lt;br /&gt;
After this great success, play with the [[Table of contents#Eiffel|language]], [[Tools|tools]] and [[Table of contents#Library|libraries]]. Develop cool applications and for any question, suggestion or complaint [[Get in touch|get in touch]] with us. We are also happy to receive pull requests and provide accounts to this wiki if you want to contribute code or documentation. Be welcome to [[Get involved| get involved]].&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Release_Checklist&amp;diff=2279</id>
		<title>Release Checklist</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Release_Checklist&amp;diff=2279"/>
		<updated>2016-05-21T09:32:36Z</updated>

		<summary type="html">&lt;p&gt;Ramack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is WIP. Please update if you think of any missing detail. The target is to include all necessary command line commands (where applicable)&lt;br /&gt;
&lt;br /&gt;
* cleanup Testsuite&lt;br /&gt;
* update LIBERTY_VERSION&lt;br /&gt;
* create new bootstrap germ code&lt;br /&gt;
 resources/smarteiffel-germ/make_germ.sh&lt;br /&gt;
* create a local branch for the next release&lt;br /&gt;
 git branch bell&lt;br /&gt;
* create a bell branch in the github repo (via web interface?)&lt;br /&gt;
* push it to savannah&lt;br /&gt;
 git checkout bell&lt;br /&gt;
 git push upstream bell&lt;br /&gt;
* remove all tools and libraries which are not sufficiently mature to be included in the release&lt;br /&gt;
** for Bell these are:&lt;br /&gt;
 cluster smarteiffel/generation/run&lt;br /&gt;
 smarteiffel/commands/run.e&lt;br /&gt;
 edc-new, edc&lt;br /&gt;
 lib/mmi?&lt;br /&gt;
 effect tool&lt;br /&gt;
 src/staging&lt;br /&gt;
 src/lib/net/ezmq&lt;br /&gt;
 wrappers: cairo, database/postgresql, ewlc, llvm, zmq, xml&lt;br /&gt;
* switch ET to use the new branch&lt;br /&gt;
** echo &amp;quot;bell&amp;quot; &amp;gt; ~/branch on ETs account&lt;br /&gt;
** change website/et/html_templates/head.html to make ET output tell people which branch is being tested...&lt;br /&gt;
* adapt changelog (in work/packaging/debian.skel/debian/) in bell branch (remove ~dev tag)&lt;br /&gt;
* create release candidate&lt;br /&gt;
 git tag &amp;lt;release_name&amp;gt;-rc1&lt;br /&gt;
 git push --tags upstream&lt;br /&gt;
* on ETs account...&lt;br /&gt;
 work/packaging/build_debian.sh -rc1&lt;br /&gt;
 work/packaging/build_debian.sh -rc1 -deploy&lt;br /&gt;
 ssh et32@et32 &amp;quot;cd $LibertyBase &amp;amp;&amp;amp; git fetch origin &amp;amp;&amp;amp; git checkout $gitBranch &amp;amp;&amp;amp; git merge --ff-only FETCH_HEAD &amp;amp;&amp;amp; $LibertyBase/work/packaging/build_debian.sh -rc1&amp;quot;&lt;br /&gt;
 scp -p et32@et32:Liberty/work/packaging/debs/* ~/Liberty/work/packaging/debs_i386/&lt;br /&gt;
 reprepro --basedir ~/Liberty/website/apt includedeb rc liberty-eiffel-tools_2016~dev~rc1_i386.deb&lt;br /&gt;
* create tarball and put on FTP server&lt;br /&gt;
 download the tag tarball from http://git.savannah.gnu.org/cgit/liberty-eiffel.git&lt;br /&gt;
 work/strip_tgz.sh bell-rc1.tar.gz&lt;br /&gt;
 scp bell-rc1.tar.gz ramack@dl.sv.gnu.org:/srv/download/liberty-eiffel/&lt;br /&gt;
* collect RC feedback on our mailing list&lt;br /&gt;
* adapt changelog (in work/packaging/debian.skel/debian/) in bell branch (fix release version and date, without SNAPSHOT)&lt;br /&gt;
* create the final release tag&lt;br /&gt;
 git tag &amp;lt;release_name&amp;gt;&lt;br /&gt;
* create release debian packages&lt;br /&gt;
 see above, use -release instead of -rc1&lt;br /&gt;
* create tarball and put on FTP server&lt;br /&gt;
 see above for rc&lt;br /&gt;
* write announce email&lt;br /&gt;
** to our mailing list&lt;br /&gt;
** on http://lists.gnu.org/archive/html/info-gnu/&lt;br /&gt;
** as news entry on savannah&lt;br /&gt;
** adapt changelog (in work/packaging/debian.skel/debian/) in master branch (readd ~dev tagged version)&lt;br /&gt;
* switch ET back to use the master branch&lt;br /&gt;
** echo &amp;quot;master&amp;quot; &amp;gt; ~/branch on ETs account&lt;br /&gt;
* prepare changelog for the third release&lt;br /&gt;
* plan the next release (tickets on savannah)&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Release_Checklist&amp;diff=2278</id>
		<title>Release Checklist</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Release_Checklist&amp;diff=2278"/>
		<updated>2016-05-19T19:33:21Z</updated>

		<summary type="html">&lt;p&gt;Ramack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is WIP. Please update if you think of any missing detail. The target is to include all necessary command line commands (where applicable)&lt;br /&gt;
&lt;br /&gt;
* cleanup Testsuite&lt;br /&gt;
* update LIBERTY_VERSION&lt;br /&gt;
* create new bootstrap germ code&lt;br /&gt;
 resources/smarteiffel-germ/make_germ.sh&lt;br /&gt;
* create a local branch for the next release&lt;br /&gt;
 git branch bell&lt;br /&gt;
* create a bell branch in the github repo (via web interface?)&lt;br /&gt;
* push it to savannah&lt;br /&gt;
 git checkout bell&lt;br /&gt;
 git push upstream bell&lt;br /&gt;
* remove all tools and libraries which are not sufficiently mature to be included in the release&lt;br /&gt;
** for Bell these are:&lt;br /&gt;
 cluster smarteiffel/generation/run&lt;br /&gt;
 smarteiffel/commands/run.e&lt;br /&gt;
 edc-new, edc&lt;br /&gt;
 lib/mmi?&lt;br /&gt;
 effect tool&lt;br /&gt;
 src/staging&lt;br /&gt;
 src/lib/net/ezmq&lt;br /&gt;
 wrappers: cairo, database/postgresql, ewlc, llvm, zmq, xml&lt;br /&gt;
* switch ET to use the new branch&lt;br /&gt;
** echo &amp;quot;bell&amp;quot; &amp;gt; ~/branch on ETs account&lt;br /&gt;
** change website/et/html_templates/head.html to make ET output tell people which branch is being tested...&lt;br /&gt;
* adapt changelog (in work/packaging/debian.skel/debian/) in bell branch (remove ~dev tag)&lt;br /&gt;
* create release candidate&lt;br /&gt;
 git tag &amp;lt;release_name&amp;gt;-rc1&lt;br /&gt;
 git push --follow-tags upstream&lt;br /&gt;
* on ETs account...&lt;br /&gt;
 work/packaging/build_debian.sh -rc1&lt;br /&gt;
 work/packaging/build_debian.sh -rc1 -deploy&lt;br /&gt;
 ssh et32@et32 &amp;quot;cd $LibertyBase &amp;amp;&amp;amp; git fetch origin &amp;amp;&amp;amp; git checkout $gitBranch &amp;amp;&amp;amp; git merge --ff-only FETCH_HEAD &amp;amp;&amp;amp; $LibertyBase/work/packaging/build_debian.sh -rc1&amp;quot;&lt;br /&gt;
 scp -p et32@et32:Liberty/work/packaging/debs/* ~/Liberty/work/packaging/debs_i386/&lt;br /&gt;
 reprepro --basedir ~/Liberty/website/apt includedeb rc liberty-eiffel-tools_2016~dev~rc1_i386.deb&lt;br /&gt;
* create tarball and put on FTP server&lt;br /&gt;
 download the tag tarball from http://git.savannah.gnu.org/cgit/liberty-eiffel.git&lt;br /&gt;
 work/strip_tgz.sh bell-rc1.tar.gz&lt;br /&gt;
 scp bell-rc1.tar.gz ramack@dl.sv.gnu.org:/srv/download/liberty-eiffel/&lt;br /&gt;
* collect RC feedback on our mailing list&lt;br /&gt;
* adapt changelog (in work/packaging/debian.skel/debian/) in bell branch (fix release version and date, without SNAPSHOT)&lt;br /&gt;
* create the final release tag&lt;br /&gt;
 git tag &amp;lt;release_name&amp;gt;&lt;br /&gt;
* create release debian packages&lt;br /&gt;
 see above, use -release instead of -rc1&lt;br /&gt;
* create tarball and put on FTP server&lt;br /&gt;
 see above for rc&lt;br /&gt;
* write announce email&lt;br /&gt;
** to our mailing list&lt;br /&gt;
** on http://lists.gnu.org/archive/html/info-gnu/&lt;br /&gt;
** as news entry on savannah&lt;br /&gt;
** adapt changelog (in work/packaging/debian.skel/debian/) in master branch (readd ~dev tagged version)&lt;br /&gt;
* switch ET back to use the master branch&lt;br /&gt;
** echo &amp;quot;master&amp;quot; &amp;gt; ~/branch on ETs account&lt;br /&gt;
* prepare changelog for the third release&lt;br /&gt;
* plan the next release (tickets on savannah)&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Release_Checklist&amp;diff=2277</id>
		<title>Release Checklist</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Release_Checklist&amp;diff=2277"/>
		<updated>2016-05-19T17:43:47Z</updated>

		<summary type="html">&lt;p&gt;Ramack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is WIP. Please update if you think of any missing detail. The target is to include all necessary command line commands (where applicable)&lt;br /&gt;
&lt;br /&gt;
* cleanup Testsuite&lt;br /&gt;
* update LIBERTY_VERSION&lt;br /&gt;
* create new bootstrap germ code&lt;br /&gt;
 resources/smarteiffel-germ/make_germ.sh&lt;br /&gt;
* create a local branch for the next release&lt;br /&gt;
 git branch bell&lt;br /&gt;
* create a bell branch in the github repo (via web interface?)&lt;br /&gt;
* push it to savannah&lt;br /&gt;
 git checkout bell&lt;br /&gt;
 git push upstream bell&lt;br /&gt;
* remove all tools and libraries which are not sufficiently mature to be included in the release&lt;br /&gt;
** for Bell these are:&lt;br /&gt;
 cluster smarteiffel/generation/run&lt;br /&gt;
 smarteiffel/commands/run.e&lt;br /&gt;
 edc-new, edc&lt;br /&gt;
 lib/mmi?&lt;br /&gt;
 effect tool&lt;br /&gt;
 src/staging&lt;br /&gt;
 src/lib/net/ezmq&lt;br /&gt;
 wrappers: cairo, database/postgresql, ewlc, llvm, zmq, xml&lt;br /&gt;
* switch ET to use the new branch&lt;br /&gt;
** echo &amp;quot;bell&amp;quot; &amp;gt; ~/branch on ETs account&lt;br /&gt;
** change website/et/html_templates/head.html to make ET output tell people which branch is being tested...&lt;br /&gt;
* create release candidate&lt;br /&gt;
 git tag &amp;lt;release_name&amp;gt;-rc1&lt;br /&gt;
 git push --follow-tags upstream&lt;br /&gt;
* on ETs account...&lt;br /&gt;
 work/packaging/build_debian.sh -rc1&lt;br /&gt;
 work/packaging/build_debian.sh -rc1 -deploy&lt;br /&gt;
 ssh et32@et32 &amp;quot;cd $LibertyBase &amp;amp;&amp;amp; git fetch origin &amp;amp;&amp;amp; git checkout $gitBranch &amp;amp;&amp;amp; git merge --ff-only FETCH_HEAD &amp;amp;&amp;amp; $LibertyBase/work/packaging/build_debian.sh -rc1&amp;quot;&lt;br /&gt;
 scp -p et32@et32:Liberty/work/packaging/debs/* ~/Liberty/work/packaging/debs_i386/&lt;br /&gt;
 reprepro --basedir ~/Liberty/website/apt includedeb rc liberty-eiffel-tools_2016~dev~rc1_i386.deb&lt;br /&gt;
* create tarball and put on FTP server&lt;br /&gt;
 download the tag tarball from http://git.savannah.gnu.org/cgit/liberty-eiffel.git&lt;br /&gt;
 work/strip_tgz.sh bell-rc1.tar.gz&lt;br /&gt;
 scp bell-rc1.tar.gz ramack@dl.sv.gnu.org:/srv/download/liberty-eiffel/&lt;br /&gt;
* collect RC feedback on our mailing list&lt;br /&gt;
* create the final release tag&lt;br /&gt;
 git tag &amp;lt;release_name&amp;gt;&lt;br /&gt;
* create release debian packages&lt;br /&gt;
 see above, use -release instead of -rc1&lt;br /&gt;
* create tarball and put on FTP server&lt;br /&gt;
 see above for rc&lt;br /&gt;
* write announce email&lt;br /&gt;
** to our mailing list&lt;br /&gt;
** on http://lists.gnu.org/archive/html/info-gnu/&lt;br /&gt;
** as news entry on savannah&lt;br /&gt;
* switch ET back to use the master branch&lt;br /&gt;
** echo &amp;quot;master&amp;quot; &amp;gt; ~/branch on ETs account&lt;br /&gt;
* prepare changelog for the third release&lt;br /&gt;
* plan the next release (tickets on savannah)&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Release_Checklist&amp;diff=2276</id>
		<title>Release Checklist</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Release_Checklist&amp;diff=2276"/>
		<updated>2016-05-15T20:56:26Z</updated>

		<summary type="html">&lt;p&gt;Ramack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is WIP. Please update if you think of any missing detail. The target is to include all necessary command line commands (where applicable)&lt;br /&gt;
&lt;br /&gt;
* cleanup Testsuite&lt;br /&gt;
* update LIBERTY_VERSION&lt;br /&gt;
* create new bootstrap germ code&lt;br /&gt;
 resources/smarteiffel-germ/make_germ.sh&lt;br /&gt;
* create a local branch for the next release&lt;br /&gt;
 git branch bell&lt;br /&gt;
* create a bell branch in the github repo (via web interface?)&lt;br /&gt;
* push it to savannah&lt;br /&gt;
 git checkout bell&lt;br /&gt;
 git push upstream bell&lt;br /&gt;
* remove all tools and libraries which are not sufficiently mature to be included in the release&lt;br /&gt;
** for Bell these are:&lt;br /&gt;
 cluster smarteiffel/generation/run&lt;br /&gt;
 smarteiffel/commands/run.e&lt;br /&gt;
 edc-new, edc&lt;br /&gt;
 lib/mmi?&lt;br /&gt;
 effect tool&lt;br /&gt;
 src/staging&lt;br /&gt;
 src/lib/net/ezmq&lt;br /&gt;
 wrappers: cairo, database/postgresql, ewlc, llvm, zmq, xml&lt;br /&gt;
* switch ET to use the new branch&lt;br /&gt;
** echo &amp;quot;bell&amp;quot; &amp;gt; ~/branch on ETs account&lt;br /&gt;
** change website/et/html_templates/head.html to make ET output tell people which branch is being tested...&lt;br /&gt;
* create release candidate&lt;br /&gt;
 git tag &amp;lt;release_name&amp;gt;-rc1&lt;br /&gt;
 git push --follow-tags upstream&lt;br /&gt;
* on ETs account...&lt;br /&gt;
 work/packaging/build_debian.sh -rc1&lt;br /&gt;
 work/packaging/build_debian.sh -rc1 -deploy&lt;br /&gt;
 ssh et32@et32 &amp;quot;cd $LibertyBase &amp;amp;&amp;amp; git fetch origin &amp;amp;&amp;amp; git checkout $gitBranch &amp;amp;&amp;amp; git merge --ff-only FETCH_HEAD &amp;amp;&amp;amp; $LibertyBase/work/packaging/build_debian.sh -rc1&amp;quot;&lt;br /&gt;
 scp -p et32@et32:Liberty/work/packaging/debs/* ~/Liberty/work/packaging/debs_i386/&lt;br /&gt;
 reprepro --basedir ~/Liberty/website/apt includedeb rc liberty-eiffel-tools_2016~dev~rc1_i386.deb&lt;br /&gt;
* create tarball and put on FTP server&lt;br /&gt;
 download the tag tarball from http://git.savannah.gnu.org/cgit/liberty-eiffel.git&lt;br /&gt;
 work/strip_tgz.sh bell-rc1.tar.gz&lt;br /&gt;
 scp bell-rc1.tar.gz ramack@dl.sv.gnu.org:/srv/download/liberty-eiffel/&lt;br /&gt;
* collect RC feedback on our mailing list&lt;br /&gt;
* create the final release tag&lt;br /&gt;
 git tag &amp;lt;release_name&amp;gt;&lt;br /&gt;
* create release debian packages&lt;br /&gt;
 see above, use -release instead of -rc1&lt;br /&gt;
* create tarball and put on FTP server&lt;br /&gt;
 see above for rc&lt;br /&gt;
* write announce email to our mailing list and as news entry on savannah&lt;br /&gt;
* switch ET back to use the master branch&lt;br /&gt;
** echo &amp;quot;master&amp;quot; &amp;gt; ~/branch on ETs account&lt;br /&gt;
* prepare changelog for the third release&lt;br /&gt;
* plan the next release (tickets on savannah)&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Release_Checklist&amp;diff=2275</id>
		<title>Release Checklist</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Release_Checklist&amp;diff=2275"/>
		<updated>2016-05-15T20:55:24Z</updated>

		<summary type="html">&lt;p&gt;Ramack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is WIP. Please update if you think of any missing detail. The target is to include all necessary command line commands (where applicable)&lt;br /&gt;
&lt;br /&gt;
* cleanup Testsuite&lt;br /&gt;
* update LIBERTY_VERSION&lt;br /&gt;
* create new bootstrap germ code&lt;br /&gt;
 resources/smarteiffel-germ/make_germ.sh&lt;br /&gt;
* create a local branch for the next release&lt;br /&gt;
 git branch bell&lt;br /&gt;
* create a bell branch in the github repo (via web interface?)&lt;br /&gt;
* push it to savannah&lt;br /&gt;
 git checkout bell&lt;br /&gt;
 git push upstream bell&lt;br /&gt;
* remove all tools and libraries which are not sufficiently mature to be included in the release&lt;br /&gt;
** for Bell these are:&lt;br /&gt;
 cluster smarteiffel/generation/run&lt;br /&gt;
 smarteiffel/commands/run.e&lt;br /&gt;
 edc-new, edc&lt;br /&gt;
 lib/mmi?&lt;br /&gt;
 effect tool&lt;br /&gt;
 src/staging&lt;br /&gt;
 src/lib/net/ezmq&lt;br /&gt;
 wrappers: cairo, database/postgresql, ewlc, llvm, zmq, xml&lt;br /&gt;
* switch ET to use the new branch&lt;br /&gt;
** echo &amp;quot;bell&amp;quot; &amp;gt; ~/branch on ETs account&lt;br /&gt;
** change website/et/html_templates/head.html to make ET output tell people which branch is being tested...&lt;br /&gt;
* create release candidate&lt;br /&gt;
 git tag &amp;lt;release_name&amp;gt;-rc1&lt;br /&gt;
 git push --follow-tags upstream&lt;br /&gt;
* on ETs account...&lt;br /&gt;
 work/packaging/build_debian.sh -rc1&lt;br /&gt;
 work/packaging/build_debian.sh -rc1 -deploy&lt;br /&gt;
 ssh et32@et32 &amp;quot;cd $LibertyBase &amp;amp;&amp;amp; git fetch origin &amp;amp;&amp;amp; git checkout $gitBranch &amp;amp;&amp;amp; git merge --ff-only FETCH_HEAD &amp;amp;&amp;amp; $LibertyBase/work/packaging/build_debian.sh -rc1&amp;quot;&lt;br /&gt;
 scp -p et32@et32:Liberty/work/packaging/debs/* ~/Liberty/work/packaging/debs_i386/&lt;br /&gt;
 reprepro --basedir ~/Liberty/website/apt includedeb rc liberty-eiffel-tools_2016~dev~rc1_i386.deb&lt;br /&gt;
* create tarball and put on FTP server&lt;br /&gt;
 download the tag tarball from http://git.savannah.gnu.org/cgit/liberty-eiffel.git&lt;br /&gt;
 work/strip_tgz.sh bell-rc1.tar.gz&lt;br /&gt;
 scp bell-rc1.tar.gz ramack@dl.sv.gnu.org:/srv/download/liberty-eiffel/&lt;br /&gt;
* collect RC feedback on our mailing list&lt;br /&gt;
* create the final release tag&lt;br /&gt;
 git tag &amp;lt;release_name&amp;gt;&lt;br /&gt;
* create release debian packages&lt;br /&gt;
 work/packaging/build_debian.sh -release&lt;br /&gt;
* create tarball and put on FTP server&lt;br /&gt;
* write announce email to our mailing list and as news on savannah&lt;br /&gt;
* switch ET back to use the master branch&lt;br /&gt;
** echo &amp;quot;master&amp;quot; &amp;gt; ~/branch on ETs account&lt;br /&gt;
* prepare changelog for the third release&lt;br /&gt;
* plan the next release (tickets on savannah)&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Release_Checklist&amp;diff=2274</id>
		<title>Release Checklist</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Release_Checklist&amp;diff=2274"/>
		<updated>2016-05-15T20:53:34Z</updated>

		<summary type="html">&lt;p&gt;Ramack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is WIP. Please update if you think of any missing detail. The target is to include all necessary command line commands (where applicable)&lt;br /&gt;
&lt;br /&gt;
* cleanup Testsuite&lt;br /&gt;
* update LIBERTY_VERSION&lt;br /&gt;
* create new bootstrap germ code&lt;br /&gt;
 resources/smarteiffel-germ/make_germ.sh&lt;br /&gt;
* create a local branch for the next release&lt;br /&gt;
 git branch bell&lt;br /&gt;
* create a bell branch in the github repo (via web interface?)&lt;br /&gt;
* push it to savannah&lt;br /&gt;
 git checkout bell&lt;br /&gt;
 git push upstream bell&lt;br /&gt;
* remove all tools and libraries which are not sufficiently mature to be included in the release&lt;br /&gt;
** for Bell these are:&lt;br /&gt;
 cluster smarteiffel/generation/run&lt;br /&gt;
 smarteiffel/commands/run.e&lt;br /&gt;
 edc-new, edc&lt;br /&gt;
 lib/mmi?&lt;br /&gt;
 effect tool&lt;br /&gt;
 src/staging&lt;br /&gt;
 src/lib/net/ezmq&lt;br /&gt;
 wrappers: cairo, database/postgresql, ewlc, llvm, zmq, xml&lt;br /&gt;
* switch ET to use the new branch&lt;br /&gt;
** echo &amp;quot;bell&amp;quot; &amp;gt; ~/branch on ETs account&lt;br /&gt;
** change website/et/html_templates/head.html to make ET output tell people which branch is being tested...&lt;br /&gt;
* create release candidate&lt;br /&gt;
 git tag &amp;lt;release_name&amp;gt;-rc1&lt;br /&gt;
 git push --follow-tags upstream&lt;br /&gt;
* on ETs account...&lt;br /&gt;
 work/packaging/build_debian.sh -rc1&lt;br /&gt;
* create tarball and put on FTP server&lt;br /&gt;
 download the tag tarball from http://git.savannah.gnu.org/cgit/liberty-eiffel.git&lt;br /&gt;
 work/strip_tgz.sh bell-rc1.tar.gz&lt;br /&gt;
 scp bell-rc1.tar.gz ramack@dl.sv.gnu.org:/srv/download/liberty-eiffel/&lt;br /&gt;
* collect RC feedback on our mailing list&lt;br /&gt;
* create the final release tag&lt;br /&gt;
 git tag &amp;lt;release_name&amp;gt;&lt;br /&gt;
* create release debian packages&lt;br /&gt;
 work/packaging/build_debian.sh -release&lt;br /&gt;
* create tarball and put on FTP server&lt;br /&gt;
* write announce email to our mailing list and as news on savannah&lt;br /&gt;
* switch ET back to use the master branch&lt;br /&gt;
** echo &amp;quot;master&amp;quot; &amp;gt; ~/branch on ETs account&lt;br /&gt;
* prepare changelog for the third release&lt;br /&gt;
* plan the next release (tickets on savannah)&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Release_Checklist&amp;diff=2273</id>
		<title>Release Checklist</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Release_Checklist&amp;diff=2273"/>
		<updated>2016-05-15T18:24:51Z</updated>

		<summary type="html">&lt;p&gt;Ramack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is WIP. Please update if you think of any missing detail. The target is to include all necessary command line commands (where applicable)&lt;br /&gt;
&lt;br /&gt;
* cleanup Testsuite&lt;br /&gt;
* update LIBERTY_VERSION&lt;br /&gt;
* create new bootstrap germ code&lt;br /&gt;
 resources/smarteiffel-germ/make_germ.sh&lt;br /&gt;
* create a local branch for the next release&lt;br /&gt;
 git branch bell&lt;br /&gt;
* create a bell branch in the github repo (via web interface?)&lt;br /&gt;
* push it to savannah&lt;br /&gt;
 git checkout bell&lt;br /&gt;
 git push upstream bell&lt;br /&gt;
* remove all tools and libraries which are not sufficiently mature to be included in the release&lt;br /&gt;
** for Bell these are:&lt;br /&gt;
 cluster smarteiffel/generation/run&lt;br /&gt;
 smarteiffel/commands/run.e&lt;br /&gt;
 edc-new, edc&lt;br /&gt;
 lib/mmi?&lt;br /&gt;
 effect tool&lt;br /&gt;
 src/staging&lt;br /&gt;
 src/lib/net/ezmq&lt;br /&gt;
 wrappers: cairo, database/postgresql, ewlc, llvm, zmq, xml&lt;br /&gt;
* switch ET to use the new branch&lt;br /&gt;
** echo &amp;quot;bell&amp;quot; &amp;gt; ~/branch on ETs account&lt;br /&gt;
** change website/et/html_templates/head.html to make ET output tell people which branch is being tested...&lt;br /&gt;
* create release candidate&lt;br /&gt;
 git tag &amp;lt;release_name&amp;gt;-rc1&lt;br /&gt;
 git push --follow-tags upstream&lt;br /&gt;
* on ETs account...&lt;br /&gt;
 work/packaging/build_debian.sh -rc1&lt;br /&gt;
* collect RC feedback on our mailing list&lt;br /&gt;
* create the final release tag&lt;br /&gt;
 git tag &amp;lt;release_name&amp;gt;&lt;br /&gt;
* create release debian packages&lt;br /&gt;
 work/packaging/build_debian.sh -release&lt;br /&gt;
* create tarball and put on FTP server&lt;br /&gt;
* write announce email to our mailing list and as news on savannah&lt;br /&gt;
* switch ET back to use the master branch&lt;br /&gt;
** echo &amp;quot;master&amp;quot; &amp;gt; ~/branch on ETs account&lt;br /&gt;
* prepare changelog for the third release&lt;br /&gt;
* plan the next release (tickets on savannah)&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Release_Checklist&amp;diff=2272</id>
		<title>Release Checklist</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Release_Checklist&amp;diff=2272"/>
		<updated>2016-05-05T18:11:57Z</updated>

		<summary type="html">&lt;p&gt;Ramack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is WIP. Please update if you think of any missing detail. The target is to include all necessary command line commands (where applicable)&lt;br /&gt;
&lt;br /&gt;
* cleanup Testsuite&lt;br /&gt;
* update LIBERTY_VERSION&lt;br /&gt;
* create new bootstrap germ code&lt;br /&gt;
 resources/smarteiffel-germ/make_germ.sh&lt;br /&gt;
* create a local branch for the next release&lt;br /&gt;
 git branch bell&lt;br /&gt;
* create a bell branch in the github repo (via web interface?)&lt;br /&gt;
* push it to savannah&lt;br /&gt;
 git checkout bell&lt;br /&gt;
 git push upstream bell&lt;br /&gt;
* remove all tools and libraries which are not sufficiently mature to be included in the release&lt;br /&gt;
** for Bell these are:&lt;br /&gt;
 cluster smarteiffel/generation/run&lt;br /&gt;
 smarteiffel/commands/run.e&lt;br /&gt;
 edc-new, edc&lt;br /&gt;
 lib/mmi?&lt;br /&gt;
 effect tool&lt;br /&gt;
 src/staging&lt;br /&gt;
 src/lib/net/ezmq&lt;br /&gt;
 wrappers: cairo, database/postgresql, ewlc, llvm, zmq, xml&lt;br /&gt;
* switch ET to use the new branch&lt;br /&gt;
** echo &amp;quot;bell&amp;quot; &amp;gt; ~/branch on ETs account&lt;br /&gt;
** change website/et/html_templates/head.html to make ET output tell people which branch is being tested...&lt;br /&gt;
* create release candidate&lt;br /&gt;
 git tag &amp;lt;release_name&amp;gt;-rc1&lt;br /&gt;
 work/packaging/build_debian.sh -rc1&lt;br /&gt;
* collect RC feedback on our mailing list&lt;br /&gt;
* create the final release tag&lt;br /&gt;
 git tag &amp;lt;release_name&amp;gt;&lt;br /&gt;
* create release debian packages&lt;br /&gt;
 work/packaging/build_debian.sh -release&lt;br /&gt;
* create tarball and put on FTP server&lt;br /&gt;
* write announce email to our mailing list and as news on savannah&lt;br /&gt;
* switch ET back to use the master branch&lt;br /&gt;
** echo &amp;quot;master&amp;quot; &amp;gt; ~/branch on ETs account&lt;br /&gt;
* prepare changelog for the third release&lt;br /&gt;
* plan the next release (tickets on savannah)&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Tools&amp;diff=2264</id>
		<title>Tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Tools&amp;diff=2264"/>
		<updated>2016-05-02T19:33:55Z</updated>

		<summary type="html">&lt;p&gt;Ramack: /* Compiling */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Tool]]&lt;br /&gt;
LibertyEiffel provides many tools besides the [[compile|compiler]].&lt;br /&gt;
&lt;br /&gt;
All these tools use the [[configuration file]].&lt;br /&gt;
&lt;br /&gt;
== The tools ==&lt;br /&gt;
&lt;br /&gt;
=== Tool box ===&lt;br /&gt;
&lt;br /&gt;
* [[se]]: a facade to all those tools&lt;br /&gt;
&lt;br /&gt;
=== Compiling ===&lt;br /&gt;
&lt;br /&gt;
* [[clean]]: remove the useless C files&lt;br /&gt;
* [[compile]]: the compiler (calls [[compile_to_c]])&lt;br /&gt;
* [[compile_to_c]]: the C compiler core&lt;br /&gt;
* [[extract_internals]]: the tentative inter-program object sharing tool&lt;br /&gt;
* [[Wrapping_C_libraries|wrappers_generator]]: a tools to generate low-level Eiffel wrappers for C code&lt;br /&gt;
&lt;br /&gt;
=== Searching and documenting ===&lt;br /&gt;
&lt;br /&gt;
* [[eiffeldoc]]: generates the whole documentation of a project&lt;br /&gt;
* [[finder]]: finds a class&lt;br /&gt;
* [[pretty]]: makes your source file pretty&lt;br /&gt;
* [[short]]: generates the interface documentation of a single class&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
&lt;br /&gt;
* [[ace_check]]: checks an [[ACE|ACE file]]&lt;br /&gt;
* [[class_check]]: checks the [[parsing|syntax]] and the [[semantics]] of a source code&lt;br /&gt;
* [[eiffeltest]]: the LibertyEiffel testing tool&lt;br /&gt;
* [[mock]]: the LibertyEiffel mock tool&lt;br /&gt;
&lt;br /&gt;
=== Installing ===&lt;br /&gt;
&lt;br /&gt;
* [[install]]: installs the LibertyEiffel tools&lt;br /&gt;
&lt;br /&gt;
== The system core ==&lt;br /&gt;
&lt;br /&gt;
If you are interested by how the system works, either by sheer curiosity, or because you want to modify it, here are some explanations.&lt;br /&gt;
&lt;br /&gt;
If you want to create a new LibertyEiffel-oriented tool, this information is important too; also look at [[tool_class:EXTERNAL_TOOL|&amp;lt;tt&amp;gt;EXTERNAL_TOOL&amp;lt;/tt&amp;gt;]].&lt;br /&gt;
&lt;br /&gt;
* [[class loading]]&lt;br /&gt;
* [[parsing|syntactic analysis]]&lt;br /&gt;
* [[semantics|semantic analysis]]&lt;br /&gt;
* the [[optimizer]]&lt;br /&gt;
* the [[visitor|visitors]]&lt;br /&gt;
* code generation&lt;br /&gt;
** [[compile_to_c#Generation|compile_to_c]]&lt;br /&gt;
** [[compile_to_jvm#Generation|compile_to_jvm (obsolete)]]&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
</feed>