Re: Covariance / catcall approach -- RE: standardization of ELKS

Eric Bezault <ericb-D6Qt/9opevxWk0Htik3J/[email protected]> Thu, 14 Aug 2008 19:26:35 +0200
Newsgroups gmane.comp.lang.eiffel.ise,gmane.comp.lang.eiffel.gobo.general
Message-ID <[email protected]>
Helmut Brandl wrote:
> Eric Bezault wrote:
>> Helmut Brandl wrote:
>>   
>>> your proposal in a nutshell: Let the runtime find out, if the call is 
>>> valid or not.
>>>
>>> Actually all compilers I know of (EiffelStudio, SmartEiffel, The Eiffel 
>>> Compiler, probably also the Gobo Eiffel compiler) do it that way.
>>>     
>> The Gobo compiler has two modes: either report CAT-calls at compilation
>> time (using the dynamic type sets as described in ETL2), or at run-time.
>> The former is the default.
>>
>>   
> Great. I would be interested in your experience with the algorithm 
> described in ETL2. I have heard that it is rather pessimistic, i.e. it 
> flags many catcalls even if in reality there is no real danger of a catcall.

Yes, it's pessimistic. But all solutions that I heard of are
pessimistic. The advantage of this one is that it exists, and
it does not require any new Eiffel extension (which is very
important for backward compatibility). Note that the fact that
it is pessimistic did not prevent to have the whole Gobo
package (including a program as complex as an Eiffel compiler)
to be compliant.

> I have sent this message to your gobo mailing list as well, because it 
> might be more appropriate to discuss it there.
> 
> By the way: In your documentation at gobosoft.com (dated march 2006) you 
> described a lot of limitations of your compiler. Have you already 
> overcome these limitations?

You can have garbage collection with the Boehm GC.
`deep_*' features are implemented, Unique constants as well.
Exceptions are only partially implemented.

These limitations may seem a lot, but gec is nevertheless able
to compile applications with several thousand classes that were
initially developed with ISE EiffelStudio, and that without having
to modify a single line of code in the source of the applications.

-- 
Eric Bezault
mailto:ericb-D6Qt/9opevxWk0Htik3J/[email protected]
http://www.gobosoft.com

------------------------------------