Difference between revisions of "Compatibility"

From Liberty Eiffel Wiki
Jump to navigation Jump to search
(Manifest collections. Also links: about agents, and ecma)
m (spelling / removed passive voice)
 
(13 intermediate revisions by 5 users not shown)
Line 1: Line 1:
This page is about language compatibility for SmartEiffel. You can find here the most important differences between SmartEiffel and other similar languages. The list is not intended to be exhaustive, it just intends to highlight the most important differences.
+
This page is about language compatibility for Liberty Eiffel. Here you find the most important differences between Liberty Eiffel and other similar languages. The list is not intended to be exhaustive, it just intends to highlight the most significant differences.
   
  +
See also [[ECMA]].
== Unique peculiarities of SmartEiffel ==
 
   
  +
== Unique peculiarities of Liberty Eiffel ==
SmartEiffel has some features not implemented by any other implementation:
 
  +
  +
Liberty Eiffel has some features not implemented by any other implementation:
   
 
* Case sensitivity: "abc", "Abc" and "ABC" are different identifiers
 
* Case sensitivity: "abc", "Abc" and "ABC" are different identifiers
Line 13: Line 15:
 
* New operators for run-time type checking. See [[Dynamic type testing]]
 
* New operators for run-time type checking. See [[Dynamic type testing]]
 
* Removed the danger of automatic boxing (object allocation on assignment of expanded types to reference entities)
 
* Removed the danger of automatic boxing (object allocation on assignment of expanded types to reference entities)
* Lots of additional tools in the library. See [[Table of contents#Library|The SmartEiffel general purpose library]]
+
* Lots of additional tools in the library. See [[Table of contents#Library|The Liberty Eiffel general purpose library]]
* Notation for manifest collections. The old <code>&lt;&lt;...&gt;&gt;</code> is still supported for simple arrays.
+
* Notation for [[Manifest storage notation|manifest collections]]. The old <code>&lt;&lt;...&gt;&gt;</code> is still supported for simple arrays.
  +
* Unicode strings manifest notation.
* Agents look contravarient. But they are not. Believe us. For details and explanations, see [http://www.jot.fm/issues/issue_2004_04/article7 this article].
 
  +
* Agents look contravariant, but they are not. Believe us. For details and explanations, see [http://www.jot.fm/issues/issue_2004_04/article7 this article].
   
== Differences between ETL2 and SmartEiffel ==
+
== Differences between ETL2 and the former SmartEiffel ==
   
 
SmartEiffel was at some time based on ETL2; as all the members of the Eiffel language family, it has grown and improved on that, adding several features (some of them also implemented by other compilers)
 
SmartEiffel was at some time based on ETL2; as all the members of the Eiffel language family, it has grown and improved on that, adding several features (some of them also implemented by other compilers)
Line 24: Line 27:
 
* Agents and tuples. see [[Agent]] and [[Tuple]]
 
* Agents and tuples. see [[Agent]] and [[Tuple]]
   
== Differences between SmartEiffel and ECMA Eiffel ==
+
== Differences between the former SmartEiffel and ECMA Eiffel ==
   
The [http://www.ecma-international.org/memento/TC39-TG4.htm ECMA Eiffel specification] does not describe any current implementation at the time of writing this (November 2005). Despite being a standard it describes several features that fork away from what has been always called "Eiffel". The following aspects of ECMA Eiffel will not be implemented in SmartEiffel:
+
The [http://www.ecma-international.org/publications/standards/Ecma-367.htm ECMA Eiffel specification] does not describe any current implementation at the time of writing this (November 2005). Despite being a standard it describes several features that fork away from what always has been called "Eiffel". The following aspects of ECMA Eiffel will not be implemented in SmartEiffel:
   
 
* Conversions (implemented in ISE Eiffel)
 
* Conversions (implemented in ISE Eiffel)

Latest revision as of 22:37, 21 December 2021

This page is about language compatibility for Liberty Eiffel. Here you find the most important differences between Liberty Eiffel and other similar languages. The list is not intended to be exhaustive, it just intends to highlight the most significant differences.

See also ECMA.

Unique peculiarities of Liberty Eiffel

Liberty Eiffel has some features not implemented by any other implementation:

  • Case sensitivity: "abc", "Abc" and "ABC" are different identifiers
  • Compiler-enforced casing rules: Class names must be all-uppercase; camelCase is not allowed.
  • ANY is the root of the inheritance tree, but not of the conformance tree.
  • Conformance rules related to expanded types.
  • Non-conforming inheritance. See Conforming and non-conforming inheritance
  • The notation for non-conforming inheritance is "insert <Type_Class>".
  • New operators for run-time type checking. See Dynamic type testing
  • Removed the danger of automatic boxing (object allocation on assignment of expanded types to reference entities)
  • Lots of additional tools in the library. See The Liberty Eiffel general purpose library
  • Notation for manifest collections. The old <<...>> is still supported for simple arrays.
  • Unicode strings manifest notation.
  • Agents look contravariant, but they are not. Believe us. For details and explanations, see this article.

Differences between ETL2 and the former SmartEiffel

SmartEiffel was at some time based on ETL2; as all the members of the Eiffel language family, it has grown and improved on that, adding several features (some of them also implemented by other compilers)

  • The "Precursor" mechanism (proposed at OOSC2). see Precursor
  • Agents and tuples. see Agent and Tuple

Differences between the former SmartEiffel and ECMA Eiffel

The ECMA Eiffel specification does not describe any current implementation at the time of writing this (November 2005). Despite being a standard it describes several features that fork away from what always has been called "Eiffel". The following aspects of ECMA Eiffel will not be implemented in SmartEiffel:

  • Conversions (implemented in ISE Eiffel)
  • Feature aliases (implemented in ISE Eiffel)
  • Bracket indexing (implemented in ISE Eiffel)
  • No-variant agent arguments.

On the other hand, the following features were taken from the ECMA specification process:

  • Non-conforming inheritance (although the notation is different)