standardization of ELKS

54 Messages Forum Options Options
Embed this topic
Permalink
1 2 3
Emmanuel Stapf
RE: Covariance / catcall approach -- RE: standardization of ELKS
Reply Threaded More
Print post
Permalink
> SORTED_SEQUENCE[G->COMPARABLE] is not a minor side issue. If you have
> known that already, why didn't you mention it? In the presentation you
> said "Implemented and currently being experimented". So you must have
> already known the issue.

Under the category http://dev.eiffel.com/Category:ECMA you will find various documents that we used for our discussions about catcalls. It is certainly complete, but does offer something to work on.
 
> I have a simpler solution in mind which tackles the problem at source.

Great. Definitely, feel free to write it somewhere and share it with us.

> I have not yet discovered any mailing list at origo. What is the method
> to get information if somebody posts there? Do I have to poll?

See my previous message, the forums were actually not created. So now we can start discussing this stuff there.

Thanks,
Manu

------------------------------------------------------------------------  
Eiffel Software
805-685-1006
http://www.eiffel.com       
Customer support: http://support.eiffel.com       
User group: http://groups.eiffel.com/join       
------------------------------------------------------------------------  
olivier.ligot
Re: Covariance / catcall approach -- RE: standardization of ELKS
Reply Threaded More
Print post
Permalink
In reply to this post by Emmanuel Stapf
--- In eiffel_software@..., "Emmanuel Stapf [ES]"
<manus@...> wrote:

> In general it makes sense to keep `like Current' but in this
particular case,
> DATE_DURATION, DATE_TIME_DURATION and TIME_DURATION do not have
descendants so
> they should be fine. Or do you have descendants and because you do
not redefine
> `zero' you have some typing issues?

Yes, in our company we have a descendant of DATE_TIME_DURATION. The
problem only appears now as we just switched to EiffelStudio 6.2 and a
catcall is detected at runtime. For the moment, we will redefine
'zero' in our descendant. Are you going to change the signatures in
DATE_DURATION, DATE_TIME_DURATION and TIME_DURATION for the next
release of EiffelStudio ?

Regards,

Olivier


Helmut Brandl
Re: Covariance / catcall approach -- RE: standardization of ELKS
Reply Threaded More
Print post
Permalink
In reply to this post by Emmanuel Stapf
Emmanuel Stapf [ES] wrote:
>> I have a simpler solution in mind which tackles the problem at source.
>>    
> Great. Definitely, feel free to write it somewhere and share it with us.
>  
I have posted my proposal together with the problem description at
http://tecomp.sourceforge.net/index.php?file=doc/tecomp_internals/discussion/catcall_comparable.txt.

I am ready to receive feedback on any channel (direct mail, origo, as
you like ....). If some feedback or discussion is posted somewhere, I
appreciate a short notification. Thanks in advance.

Helmut

The Eiffel Compiler: http://www.sourceforge.net/projects/tecomp
Documentation: http://tecomp.sourceforge.net

Emmanuel Stapf
RE: Covariance / catcall approach -- RE: standardization of ELKS
Reply Threaded More
Print post
Permalink
In reply to this post by olivier.ligot
> Yes, in our company we have a descendant of DATE_TIME_DURATION. The
> problem only appears now as we just switched to EiffelStudio 6.2 and a
> catcall is detected at runtime. For the moment, we will redefine
> 'zero' in our descendant. Are you going to change the signatures in
> DATE_DURATION, DATE_TIME_DURATION and TIME_DURATION for the next
> release of EiffelStudio ?

Makes sense. We will certainly do that, the only drawback is that we will have to
switch from being a once to be a normal routine (otherwise we violate VFFD). It
should not impact performance since it is mostly used in assertions.

Thanks,
Manu

------------------------------------------------------------------------  
Eiffel Software
805-685-1006
http://www.eiffel.com       
Customer support: http://support.eiffel.com       
User group: http://groups.eiffel.com/join       
------------------------------------------------------------------------  
Robert Jurjevic-2
RE: Covariance / catcall approach -- RE: standardization of ELKS
Reply Threaded More
Print post
Permalink
Hello all,
 
I was not following the discussion but I would like to say something in
case it might be of some interest to anybody.
 
Example in OOSC2 on page 626:
 
Let BOY and GIRL inherit from SKIER and let all BOY, GIRL and SKIER,
have `share' feature which takes a single argument `other', in SKIER
conforming to SKIER, in BOY conforming to BOY and in GIRL conforming to
GIRL, and makes `other' a roommate of 'this', that is to say a roommate
of a girl can only be a girl (not a boy) and a roommate of a boy can
only be a boy (not a girl), so if a boy `b' tries to make girl `g' his
roommate the compiler would not let do it...
 
s: SKIER; b: BOY; g: GIRL
!!b; !!g;
b.share(g) -- compile time error as `g' does not conform to BOY
 
but a clever boy can do it with...
 
s: SKIER; b: BOY; g: GIRL
!!b; !!g;
s := b
s.share(g) -- no compile time error
 
It would appear that the main issue here is the fact that the compiler
does type checking in "s.share(g)" as if `s' is of SKIER type rather
than the actual type at runtime (in our example of BOY type).
 
As it would seem that at compile time it is difficult or even impossible
to find out which `share' feature in "s.share(g)" is going to be called
at runtime (say we could have a code which does either "s := b" or "s :=
g" depending on user input), the solution to this problem could be for
the compiler to generate preconditions which would check at runtime
actual types, then the exception would have been risen on call of
"s.share(g)" as at runtime it was BOY's `share' which was called and the
passed argument `g' which was of GIRL type does not conform to BOY.
 
Example in OOSC2 on page 627
 
Let KINGFISHER and OSTRICH inherit from BIRD and let KINGFISHER and BIRD
have `fly' feature (`fly' feature is not exported in OSTRICH), then one
can try make ostrich fly...
 
b: BIRD; k: KINGFISHER; o: OSTRICH
!!k; !!o;
k.fly -- this is OK
b := o
b.fly -- no compile time error
 
Using a similar argument as above the solution to this problem could be
for the compiler to generate assertions which would check at runtime if
actual method is exported, then the exception would have been risen on
call of "b.fly" as at runtime `b' was of OSTRICH type which has no `fly'
method exported (do not know how current Eiffel implementation deals
with it).
 
Regards,
 
Robert Jurjevic
Software Engineer
BridgeHead Software Limited
T: +44 (0)1372 221965 | E: robert.jurjevic@...
       
 

________________________________

From: Emmanuel Stapf [ES] [mailto:manus@...]
Sent: 06 August 2008 18:55
To: eiffel_software@...
Subject: RE: Covariance / catcall approach -- RE: [eiffel_software]
standardization of ELKS



> Yes, in our company we have a descendant of DATE_TIME_DURATION. The
> problem only appears now as we just switched to EiffelStudio 6.2 and a
> catcall is detected at runtime. For the moment, we will redefine
> 'zero' in our descendant. Are you going to change the signatures in
> DATE_DURATION, DATE_TIME_DURATION and TIME_DURATION for the next
> release of EiffelStudio ?

Makes sense. We will certainly do that, the only drawback is that we
will have to
switch from being a once to be a normal routine (otherwise we violate
VFFD). It
should not impact performance since it is mostly used in assertions.

Thanks,
Manu



 

_____________________________________________________________________
BridgeHead Software is pleased to confirm this e-mail has been scanned for viruses by MessageLabs.

[Non-text portions of this message have been removed]

Helmut Brandl
Re: Covariance / catcall approach -- RE: standardization of ELKS
Reply Threaded More
Print post
Permalink
Hello Robert,

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
runtime has access to the actual types, otherwise it would not be able
to do dynamic bind. So a catcall check is straightforward. Is is not
even costly, because it has to be done, only if there is a real danger
of a catcall. So the catcall checking can be compiled in only if necessary.

But the discussion about catcall avoidance has a different focus. The
catcall shall be detected at compile time in order to have safer code in
the binary. So the question is: Can we change the language or the
language rules a little bit (as little as possible, in order not to
break much existing code) to make it possible for the compiler to detect
catcalls. The change shall not restrict the possibilities of the
language (or at least restrict it as little as possible) in order to be
still useful.

But catcall detection is not a make or break for Eiffel. It is an issue,
but an issue which occurs very very seldom in user code. There are other
runtime errors which cannot be detected at compile time either. E.g.
division by zero just to mention the most prominent.

Hope this helps

Helmut

The Eiffel Compiler: http://www.sourceforge.net/projects/tecomp
Documentation: http://tecomp.sourceforge.net


Robert Jurjevic wrote:

> Hello all,
>  
> I was not following the discussion but I would like to say something in
> case it might be of some interest to anybody.
>  
> Example in OOSC2 on page 626:
>  
> Let BOY and GIRL inherit from SKIER and let all BOY, GIRL and SKIER,
> have `share' feature which takes a single argument `other', in SKIER
> conforming to SKIER, in BOY conforming to BOY and in GIRL conforming to
> GIRL, and makes `other' a roommate of 'this', that is to say a roommate
> of a girl can only be a girl (not a boy) and a roommate of a boy can
> only be a boy (not a girl), so if a boy `b' tries to make girl `g' his
> roommate the compiler would not let do it...
>  
> s: SKIER; b: BOY; g: GIRL
> !!b; !!g;
> b.share(g) -- compile time error as `g' does not conform to BOY
>  
> but a clever boy can do it with...
>  
> s: SKIER; b: BOY; g: GIRL
> !!b; !!g;
> s := b
> s.share(g) -- no compile time error
>  
> It would appear that the main issue here is the fact that the compiler
> does type checking in "s.share(g)" as if `s' is of SKIER type rather
> than the actual type at runtime (in our example of BOY type).
>  
> As it would seem that at compile time it is difficult or even impossible
> to find out which `share' feature in "s.share(g)" is going to be called
> at runtime (say we could have a code which does either "s := b" or "s :=
> g" depending on user input), the solution to this problem could be for
> the compiler to generate preconditions which would check at runtime
> actual types, then the exception would have been risen on call of
> "s.share(g)" as at runtime it was BOY's `share' which was called and the
> passed argument `g' which was of GIRL type does not conform to BOY.
>  
> Example in OOSC2 on page 627
>  
> Let KINGFISHER and OSTRICH inherit from BIRD and let KINGFISHER and BIRD
> have `fly' feature (`fly' feature is not exported in OSTRICH), then one
> can try make ostrich fly...
>  
> b: BIRD; k: KINGFISHER; o: OSTRICH
> !!k; !!o;
> k.fly -- this is OK
> b := o
> b.fly -- no compile time error
>  
> Using a similar argument as above the solution to this problem could be
> for the compiler to generate assertions which would check at runtime if
> actual method is exported, then the exception would have been risen on
> call of "b.fly" as at runtime `b' was of OSTRICH type which has no `fly'
> method exported (do not know how current Eiffel implementation deals
> with it).
>  
> Regards,
>  
> Robert Jurjevic
> Software Engineer
> BridgeHead Software Limited
> T: +44 (0)1372 221965 | E: robert.jurjevic@...
>  
Eric Bezault
Re: Covariance / catcall approach -- RE: standardization of ELKS
Reply Threaded More
Print post
Permalink
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.

--
Eric Bezault
mailto:ericb@...
http://www.gobosoft.com
Robert Jurjevic-2
RE: Covariance / catcall approach -- RE: standardization of ELKS
Reply Threaded More
Print post
Permalink
In reply to this post by Helmut Brandl
Hello Helmut,

For the Eiffel system shown at...
 
http://www.jurjevic.org.uk/programming/eiffel/examples/catcall/

Compiled with EiffelStudio 6.2 (x86) I am getting...

D:\Projects\Eiffel\example\skier\EIFGENs\test\W_code>test
Catcall detected in {BOY}.share for arg#1: expected BOY but got GIRL
I am a male and my roommate is a
test: system execution failed.
Following is the set of recorded exceptions:
------------------------------------------------------------------------
-------
Class / Object      Routine                Nature of exception
Effect
------------------------------------------------------------------------
-------
BOY                 share @7               Segmentation violation:
<0000000001B00414>                         Operating system signal.
Exit
------------------------------------------------------------------------
-------
BOY                 share @7
<0000000001B00414>                         Routine failure.
Exit
------------------------------------------------------------------------
-------
EXAMPLE             make @5
<0000000001B003CC>                         Routine failure.
Exit
------------------------------------------------------------------------
-------
EXAMPLE             root's creation
<0000000001B003CC>                         Routine failure.
Exit
------------------------------------------------------------------------
-------

It is interesting that it would seem the catcall was detected at runtime
(compilation went with no errors) regardless if I set the "Catcall
detection (experimental)" flag in the project to true or false.

> But the discussion about catcall avoidance has a different focus. The
> catcall shall be detected at compile time in order to have safer code
in
> the binary. So the question is: Can we change the language or the
> language rules a little bit (as little as possible, in order not to
> break much existing code) to make it possible for the compiler to
detect
> catcalls. The change shall not restrict the possibilities of the
> language (or at least restrict it as little as possible) in order to
be
> still useful.

Right, I see, I am afraid that I can't be of much help in this matter.

Some languages restrict that the signature of re-defined feature must be
the same as that of the feature which was re-defined, but this would be
too much of a restriction for Eiffel, I would assume.

For this simple example it should not be so difficult for the compiler
to detect that the actual call...

s.share (g)

will be (at runtime) done on the object of BOY type and therefore issue
a compilation error, but I understand that in general case this can be
very difficult to detect, sometimes even impossible (if the detection
depends on the runtime environment which is unknown at the compile time,
say a polymorphic assignment may be embedded within an if statement
which depends on user input, etc.)

Regards,
 
Robert Jurjevic
Software Engineer
BridgeHead Software Limited
T: +44 (0)1372 221965 | E: robert.jurjevic@...
       
________________________________

From: Helmut Brandl [mailto:helmut.brandl@...]
Sent: 07 August 2008 14:17
To: eiffel_software@...
Subject: Re: Covariance / catcall approach -- RE: [eiffel_software]
standardization of ELKS



Hello Robert,

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
runtime has access to the actual types, otherwise it would not be able
to do dynamic bind. So a catcall check is straightforward. Is is not
even costly, because it has to be done, only if there is a real danger
of a catcall. So the catcall checking can be compiled in only if
necessary.

But the discussion about catcall avoidance has a different focus. The
catcall shall be detected at compile time in order to have safer code in

the binary. So the question is: Can we change the language or the
language rules a little bit (as little as possible, in order not to
break much existing code) to make it possible for the compiler to detect

catcalls. The change shall not restrict the possibilities of the
language (or at least restrict it as little as possible) in order to be
still useful.

But catcall detection is not a make or break for Eiffel. It is an issue,

but an issue which occurs very very seldom in user code. There are other

runtime errors which cannot be detected at compile time either. E.g.
division by zero just to mention the most prominent.

Hope this helps

Helmut

The Eiffel Compiler: http://www.sourceforge.net/projects/tecomp
<http://www.sourceforge.net/projects/tecomp>
Documentation: http://tecomp.sourceforge.net
<http://tecomp.sourceforge.net>

Robert Jurjevic wrote:
> Hello all,
>
> I was not following the discussion but I would like to say something
in
> case it might be of some interest to anybody.
>
> Example in OOSC2 on page 626:
>
> Let BOY and GIRL inherit from SKIER and let all BOY, GIRL and SKIER,
> have `share' feature which takes a single argument `other', in SKIER
> conforming to SKIER, in BOY conforming to BOY and in GIRL conforming
to
> GIRL, and makes `other' a roommate of 'this', that is to say a
roommate

> of a girl can only be a girl (not a boy) and a roommate of a boy can
> only be a boy (not a girl), so if a boy `b' tries to make girl `g' his
> roommate the compiler would not let do it...
>
> s: SKIER; b: BOY; g: GIRL
> !!b; !!g;
> b.share(g) -- compile time error as `g' does not conform to BOY
>
> but a clever boy can do it with...
>
> s: SKIER; b: BOY; g: GIRL
> !!b; !!g;
> s := b
> s.share(g) -- no compile time error
>
> It would appear that the main issue here is the fact that the compiler
> does type checking in "s.share(g)" as if `s' is of SKIER type rather
> than the actual type at runtime (in our example of BOY type).
>
> As it would seem that at compile time it is difficult or even
impossible
> to find out which `share' feature in "s.share(g)" is going to be
called
> at runtime (say we could have a code which does either "s := b" or "s
:=
> g" depending on user input), the solution to this problem could be for
> the compiler to generate preconditions which would check at runtime
> actual types, then the exception would have been risen on call of
> "s.share(g)" as at runtime it was BOY's `share' which was called and
the
> passed argument `g' which was of GIRL type does not conform to BOY.
>
> Example in OOSC2 on page 627
>
> Let KINGFISHER and OSTRICH inherit from BIRD and let KINGFISHER and
BIRD
> have `fly' feature (`fly' feature is not exported in OSTRICH), then
one
> can try make ostrich fly...
>
> b: BIRD; k: KINGFISHER; o: OSTRICH
> !!k; !!o;
> k.fly -- this is OK
> b := o
> b.fly -- no compile time error
>
> Using a similar argument as above the solution to this problem could
be
> for the compiler to generate assertions which would check at runtime
if
> actual method is exported, then the exception would have been risen on
> call of "b.fly" as at runtime `b' was of OSTRICH type which has no
`fly'
> method exported (do not know how current Eiffel implementation deals
> with it).
>
> Regards,
>
> Robert Jurjevic
> Software Engineer
> BridgeHead Software Limited
> T: +44 (0)1372 221965 | E: robert.jurjevic@...
<mailto:robert.jurjevic%40bridgeheadsoftware.com>
>


 

_____________________________________________________________________
BridgeHead Software is pleased to confirm this e-mail has been scanned for viruses by MessageLabs.
Emmanuel Stapf
RE: Covariance / catcall approach -- RE: standardization of ELKS
Reply Threaded More
Print post
Permalink
> Catcall detected in {BOY}.share for arg#1: expected BOY but got GIRL

The runtime warning about catcall is a new addition in 6.2 and this is what you
see before the failure. We added it while waiting for the complete solution since
it is easy to catch at runtime.

> It is interesting that it would seem the catcall was detected at runtime
> (compilation went with no errors) regardless if I set the "Catcall
> detection (experimental)" flag in the project to true or false.

This flag is actually not operational yet.
 
> will be (at runtime) done on the object of BOY type and therefore issue
> a compilation error, but I understand that in general case this can be
> very difficult to detect, sometimes even impossible (if the detection
> depends on the runtime environment which is unknown at the compile time,
> say a polymorphic assignment may be embedded within an if statement
> which depends on user input, etc.)

The issue is that we need a standardized way of specifying what a compiler should
do in this case and this is on what we are working on.

Regards,
Manu

------------------------------------------------------------------------  
Eiffel Software
805-685-1006
http://www.eiffel.com       
Customer support: http://support.eiffel.com       
User group: http://groups.eiffel.com/join       
------------------------------------------------------------------------  
olivier.ligot
Re: Covariance / catcall approach -- RE: standardization of ELKS
Reply Threaded More
Print post
Permalink
In reply to this post by Emmanuel Stapf
--- In eiffel_software@..., "Emmanuel Stapf [ES]"
<manus@...> wrote:
>
> > Yes, in our company we have a descendant of DATE_TIME_DURATION. The
> > problem only appears now as we just switched to EiffelStudio 6.2 and a
> > catcall is detected at runtime. For the moment, we will redefine
> > 'zero' in our descendant. Are you going to change the signatures in
> > DATE_DURATION, DATE_TIME_DURATION and TIME_DURATION for the next
> > release of EiffelStudio ?
>
> Makes sense. We will certainly do that, the only drawback is that we
will have to
> switch from being a once to be a normal routine (otherwise we
violate VFFD). It
> should not impact performance since it is mostly used in assertions.

Another one: we have a descendant of DATE that does not redefine
{DATE}.origin and a catcall is detected at runtime.

Olivier Ligot


Emmanuel Stapf
RE: Covariance / catcall approach -- RE: standardization of ELKS
Reply Threaded More
Print post
Permalink
This one could have some significant impact on performance as it could not be made
a once if we use `like Current'. I suggest that you redefine `origin' in your
descendant for the time being.

Regards,
Manu

> -----Original Message-----
> From: eiffel_software@...
> [mailto:eiffel_software@...] On Behalf Of olivier.ligot
> Sent: Wednesday, August 13, 2008 5:06 AM
> To: eiffel_software@...
> Subject: Re: Covariance / catcall approach -- RE: [eiffel_software]
> standardization of ELKS
>
> --- In eiffel_software@..., "Emmanuel Stapf [ES]"
> <manus@...> wrote:
> >
> > > Yes, in our company we have a descendant of DATE_TIME_DURATION. The
> > > problem only appears now as we just switched to EiffelStudio 6.2 and
> a
> > > catcall is detected at runtime. For the moment, we will redefine
> > > 'zero' in our descendant. Are you going to change the signatures in
> > > DATE_DURATION, DATE_TIME_DURATION and TIME_DURATION for the next
> > > release of EiffelStudio ?
> >
> > Makes sense. We will certainly do that, the only drawback is that we
> will have to
> > switch from being a once to be a normal routine (otherwise we
> violate VFFD). It
> > should not impact performance since it is mostly used in assertions.
>
> Another one: we have a descendant of DATE that does not redefine
> {DATE}.origin and a catcall is detected at runtime.
>
> Olivier Ligot
>
>
>
> ------------------------------------
>
> Yahoo! Groups Links
>
>
>

------------------------------------------------------------------------  
Eiffel Software
805-685-1006
http://www.eiffel.com       
Customer support: http://support.eiffel.com       
User group: http://groups.eiffel.com/join       
------------------------------------------------------------------------  
Helmut Brandl
Re: Covariance / catcall approach -- RE: standardization of ELKS
Reply Threaded More
Print post
Permalink
In reply to this post by Eric Bezault
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.

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?

Regards
Helmut

The Eiffel Compiler: http://www.sourceforge.net/projects/tecomp
Documentation: http://tecomp.sourceforge.net


Eric Bezault
Re: Covariance / catcall approach -- RE: standardization of ELKS
Reply Threaded More
Print post
Permalink
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@...
http://www.gobosoft.com
Robert Jurjevic-2
RE: Covariance / catcall approach -- RE: standardization of ELKS
Reply Threaded More
Print post
Permalink
In reply to this post by Emmanuel Stapf
Hello Manu,

Thank for your reply.

Regards,

Robert Jurjevic
Software Engineer
BridgeHead Software Limited
T: +44 (0)1372 221965 | E: robert.jurjevic@...
       
 

________________________________

From: Emmanuel Stapf [ES] [mailto:manus@...]
Sent: 12 August 2008 18:20
To: eiffel_software@...
Subject: RE: Covariance / catcall approach -- RE: [eiffel_software]
standardization of ELKS



> Catcall detected in {BOY}.share for arg#1: expected BOY but got GIRL

The runtime warning about catcall is a new addition in 6.2 and this is
what you
see before the failure. We added it while waiting for the complete
solution since
it is easy to catch at runtime.

> It is interesting that it would seem the catcall was detected at
runtime
> (compilation went with no errors) regardless if I set the "Catcall
> detection (experimental)" flag in the project to true or false.

This flag is actually not operational yet.

> will be (at runtime) done on the object of BOY type and therefore
issue
> a compilation error, but I understand that in general case this can be
> very difficult to detect, sometimes even impossible (if the detection
> depends on the runtime environment which is unknown at the compile
time,
> say a polymorphic assignment may be embedded within an if statement
> which depends on user input, etc.)

The issue is that we need a standardized way of specifying what a
compiler should
do in this case and this is on what we are working on.

Regards,
Manu



 

_____________________________________________________________________
BridgeHead Software is pleased to confirm this e-mail has been scanned for viruses by MessageLabs.
1 2 3