This is the mail archive of the
guile@sourceware.cygnus.com
mailing list for the Guile project.
Re: guile/guile-core/libguile async.h coop-defs.h ...
- To: Mikael Djurfeldt <mdj at mdj dot nada dot kth dot se>
- Subject: Re: guile/guile-core/libguile async.h coop-defs.h ...
- From: "Greg J. Badros" <gjb at cs dot washington dot edu>
- Date: 16 Dec 1999 08:55:43 -0800
- Cc: mstachow at alum dot mit dot edu, guile at sourceware dot cygnus dot com, djurfeldt at nada dot kth dot se
- References: <19991216034642.19077.qmail@sourceware.cygnus.com> <xy7k8mf1fmx.fsf@mdj.nada.kth.se>
Mikael Djurfeldt <mdj@mdj.nada.kth.se> writes:
> gjb@sourceware.cygnus.com writes:
>
> > * *.h: Use SCM_NIMP(X) && in all the FOOP macros.
>
> This is a very fundamental change which I think should have been
> preceded by discussion. In any case, it should have been preceded by
> benchmarks (and *fair* benchmarks).
It was preceded by some discussion -- see the thread started at:
http://sourceware.cygnus.com/ml/guile/1999-12/msg00229.html
> I ask you to revert this change until these things have been settled.
I'd rather have the discussion before reverting because I intend to
convince you that I'm right! :-)
> I realize that this change makes application code safer. But the scm
> interface does *not* have as primary purpose to be an application
> interface. That is the role of the gh interface. The primary role
> for the scm interface is to implement Guile itself.
No, but a goal of Guile should be readable code, and once the various
now-spurious SCM_NIMP invocations are removed from call sites the guile
source will be even cleaner, nicer, and better.
> We have never had trouble with maintaining the explicit distinction
> between immediate and nonimmediate values.
>
> It is important that we don't make changes which can adversely affect
> performance without knowledge of these effects. What you're doing now
> is to massively introduce more computations into many operations.
> This may be right, but we don't know that yet.
The "massively" is only until I remove all the spurious SCM_NIMP() from
the guile source. Once that is done, it'll be a rare case where the
code expands any differently than before. And for those cases I
proposed the SCM_SLOPPY_FOOP to skip the SCM_NIMP check (I've not added
them because I'm hopeful based on the preliminary test that optimizers
are smart enough to avoid the duplicate test).
> [Now I hope that other people will pick up and defend this position,
> 'cause I simply can't right now.]
I hope they won't; I'm sympathetic to your wanting this discussed more
thoroughly, but I'm confident I'm doing the right thing and when I have
a half hour to make a contribution I'd rather make things better than
dream about a world where Guile might be better.
And I reiterate that I got *no* negative feedback in the two days after
I suggested the change (I know two days isn't a lot, but things move at
Internet speed these days).
Greg