Major changes between ISE Eiffel 5.0 and ISE Eiffel 5.1

What's new

  • .NET generation now includes:
    • Support for multiple inheritance.
    • Support for generics.
    • Partial implementation of generic conformance (same as what was supported up to and including ISE Eiffel 4.2).
    • Support for tuples and agents.
    • Support for any existing Eiffel code that does not use C externals.
    • Partial support for compiling Eiffel libraries using C externals (e.g. WEL)

And the following limitations:

    • Eiffel classes cannot inherit from non-Eiffel .NET classes (but they can be clients).
    • The compiler performances are rather poor now (both in terms of memory usage and speed)

Those limitations should disappear with 5.2 which will be the official release that fully supports .NET

    • Support for INTEGER_64 constants. Now a manifest integer value that is written in decimal or hexadecimal format that can't fit into an INTEGER_32 will be automatically promoted to an INTEGER_64 constant value.
    • New feature access syntax for accessing constants, C/C++ externals and IL static externals. Check out more here .

Improvements

  • Compiler that is about 20% faster than 5.0.

Bug fixes

  • Fixed VAPE errors that were not previously reported. Now VAPE errors are checked against arguments of a feature used in a precondition and are also checked for a qualified call.
  • Fixed a conformance bug that made a manifest array not conform to ANY.
  • Fixed a generic conformance bug where an assignment attempt would change the behavior of the execution.
  • Fixed a wrongly reported error by the compiler in the following case:

In a system that has a generic class CLIENT with constraint G -> SUPPLIER create make end', where the creation procedure of SUPPLIER is exported to {CLIENT}. If another class has an attribute x: CLIENT [SUPPLIER]' the compiler reports a VTCG error, though it should accept the classes.

  • Fixed a crash when one of the following command lines was used in a directory with no existing project that contains no default configuration file:

ec -flat -all ec -short -all ec -flatshort -all ec -flat -all_and_parents ec -short -all_and_parents ec -flatshort -all_and_parents

  • Fixed a bug in output display between standard output and error output. Doing the following:

io.put_string ("foo%N") io.error.put_string ("bar%N")

you get the following output when simply launched from the command line:foo bar

however if you do:my_program >& RESULT

to redirect both standard and error outputs to RESULT you get in the RESULT file this incorrect content:bar foo

  • Fixed a non reported VTEC or VTCG error when an invalid type used as actual generic parameters in an explicit type in a creation instruction.