Difference between revisions of "ECMA"

From Liberty Eiffel Wiki
Jump to navigation Jump to search
(exchanged issue links to github to tasklinks to savannah)
(update for Bell)
Line 1: Line 1:
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 there will be much more of the improvements as in SmartEiffel. 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 complicates the language to comply to widespread programming conventions will be evaluated case-by-case
+
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 there will be much more of the improvements as in SmartEiffel. 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 complicates the language to comply to widespread programming conventions will be evaluated case-by-case.
   
 
==These ECMA features are already implemented:==
 
==These ECMA features are already implemented:==
   
 
With small deviations:
 
With small deviations:
* Non-conforming inheritance ('''insert''' instead of '''inherit {NONE}''') see [[Typing policy]]
+
* Non-conforming inheritance (but using '''insert''' instead of '''inherit {NONE}'''); see [[Typing policy]]
 
* [https://github.com/LibertyEiffel/Liberty/issues/78 Assigners] with the following deviations:
 
* [https://github.com/LibertyEiffel/Liberty/issues/78 Assigners] with the following deviations:
 
** VFAC is not enforced (let the standard rules of the replacing procedure call play instead)
 
** VFAC is not enforced (let the standard rules of the replacing procedure call play instead)
 
** assigners are inherited with proper renames (ECMA does not explicit the rules in either way)
 
** assigners are inherited with proper renames (ECMA does not explicit the rules in either way)
  +
* [[task:12666|Cosmetic syntax changes]:
  +
** '''is''' is now optional
  +
** '''alias''' is implemented, including '''alias "[]"'''
  +
** '''note''' replaces '''indexing''' and can be placed at the start and end of a class, and at the start of a feature
  +
** '''create''' replaces '''creation'''
  +
* [[task:12661|generic creation]]
  +
  +
==These ISE features are also implemented:==
  +
  +
[task:13103|Those features] are not (yet) in the ECMA standard:
  +
* the newer '''alias "()"'''
  +
* its companion implicit tuples
  +
* '''if-then-else''' expressions
   
 
==These features are planned:==
 
==These features are planned:==
 
* [[task:12662|generic inheritance]]
 
* [[task:12662|generic inheritance]]
* [[task:12661|generic creation]]
 
 
* [[task:12660|conversions]] - maybe with a slightly stricter interpretation
 
* [[task:12660|conversions]] - maybe with a slightly stricter interpretation
 
* [[task:12653|named TUPLE elements]]
 
* [[task:12653|named TUPLE elements]]
 
* [[task:12664|void-safety]] (Liberty implementation will probably differ from ECMA)
 
* [[task:12664|void-safety]] (Liberty implementation will probably differ from ECMA)
  +
* '''attached''' vs '''detached'''
* [[task:12666|small syntax changes]] - the old syntax will be kept for compatibility for quite some time.
 
  +
* '''across'''
   
 
==These ECMA features are not planned in Liberty:==
 
==These ECMA features are not planned in Liberty:==
Line 25: Line 38:
   
 
==Not yet decided:==
 
==Not yet decided:==
* Bracket indexing
 
 
* <code><nowiki>TYPE[G]</nowiki></code> and explicit conversion
 
* <code><nowiki>TYPE[G]</nowiki></code> and explicit conversion
   

Revision as of 08:17, 7 July 2014

In ECMA-367 the ECMA committee TC39-TG4 defines an Eiffel standard. Liberty is not committed to fully implement this standard, but there will be much more of the improvements as in SmartEiffel. 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 complicates the language to comply to widespread programming conventions will be evaluated case-by-case.

These ECMA features are already implemented:

With small deviations:

  • Non-conforming inheritance (but using insert instead of inherit {NONE}); see Typing policy
  • Assigners with the following deviations:
    • VFAC is not enforced (let the standard rules of the replacing procedure call play instead)
    • assigners are inherited with proper renames (ECMA does not explicit the rules in either way)
  • [[task:12666|Cosmetic syntax changes]:
    • is is now optional
    • alias is implemented, including alias "[]"
    • note replaces indexing and can be placed at the start and end of a class, and at the start of a feature
    • create replaces creation
  • generic creation

These ISE features are also implemented:

[task:13103|Those features] are not (yet) in the ECMA standard:

  • the newer alias "()"
  • its companion implicit tuples
  • if-then-else expressions

These features are planned:

These ECMA features are not planned in Liberty:

  • No-variant agent arguments.

These features are not in ECMA but implemented in Liberty:

Not yet decided:

  • TYPE[G] and explicit conversion

See also Compatibility.