[gambit-list] Fatal crash

Marc Feeley feeley at iro.umontreal.ca
Tue Apr 22 10:05:08 EDT 2008


On 22-Apr-08, at 1:51 AM, Derek Peschel wrote:

> On Mon, Apr 14, 2008 at 11:14:26PM -0400, Marc Feeley wrote:
>> And if you are wondering how the ##car procedure is implemented, then
>> it goes roughly like this:
>
> Why have a ##car Scheme procedure at all, if the calls to ##car in
> situations like your other example are inlined by the compiler?  The  
> only
> reason I can think of is "so calls to ##car work from procedures
> without extended bindings".

That's one case, but more importantly it allows you to develop/debug  
with the interpreter (which does not inline ##car, etc) programs that  
will eventually be compiled.

>  If that's the reason, are those calls inlined
> also?  That is, does the extended-bindings declaration cause  
> optimization
> across procedures?

extended-bindings declares to the compiler: "Trust me, at run time the  
global variable ##car will contain the procedure ##car".  The compiler  
can ignore such declarations and perform a true function call instead  
of inlining the procedure ##car (in practice the compiler always  
inlines, but the point is that the inlining is completely transparent  
to the user, except for making the program run faster).

> About the ## prefix in general, I thought of another question.  Which
> procedures' interfaces (argument number and types) are guaranteed  
> not to
> change, and which have no guarantee?  Obviously standard procedures  
> are
> constrained by the standard, but there's the rest of the public  
> namespace
> to consider, the entire ## namespace, and other namespaces (though in
> practice I doubt people have to worry about them).

There are no guarantees in life!  Interfaces have changed over the  
many releases of Gambit.  In general, I try to be as backward  
compatible as possible.  The rule of thumb is: if it is documented,  
then I will try hard to preserve the same interface in the future  
(i.e. only interface extensions are done).

Marc




More information about the Gambit-list mailing list