[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Foreign object API

From: Ludovic Courtès
Subject: Foreign object API
Date: Thu, 05 Nov 2015 11:16:13 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)

Mark H Weaver <address@hidden> skribis:

> Deprecating and replacing the SMOB API is a significant event in the
> history of Guile.  It should not be rushed, nor should it be finalized
> until it supports existing use cases and anticipated future
> developments.


> As an aside, I'm not happy with the fact that this new foreign objects
> API was pushed to the stable-2.0 branch less than 25 hours after the
> initial proposal was posted.  It feels like establishing "facts on the
> ground", and sets up a situation where the burden is now on me to argue
> that it's not ready to be included in 2.0.12, whereas the burden should
> rather be on you to obtain a consensus that this new major API is ready
> for release.

Agreed too.

But we had already agreed on both long ago.  :-)

> For now, I would prefer to revert the commits that added this new API,
> to enable the immediate release of 2.0.12.  Then we can have a proper
> discussion about what a SMOB replacement API should look like, and make
> sure that both past and future anticipated use cases are covered before
> releasing it.

I sympathize with your concerns.  (I wish we had had this discussion
long ago, when Andy pushed the foreign objects API, or when I called for
us to “do something” about it so we can release 2.0.12.)

Could you summarize your practical concerns with the foreign object API
so we can decide whether reverting is the best thing to do to move

I expressed mine in
to which Andy replied on IRC the other day that (roughly; correct me if
I’m wrong):

  1. GOOPS is faster in 2.1.

  2. In 2.4 we may be able to avoid loading GOOPS altogether, but not
     before that.

  3. It’s OK if foreign objects introduce some overhead compared to
     SMOBs in 2.0, because the addition of this API in 2.0 is for people
     who want to write forward-compatible code where overhead is less of
     an issue.

  4. Even though some primitives are turned into primitive-generics,
     there are no observable semantic differences when GOOPS is loaded.

  5. Using structs as I suggested above appears to be undoable for
     obscure reasons.

I am not fully convinced, but I prefer to live with that than with a
frozen project.

Besides, it is clear to me that the SMOB API is here to stay, as is, in
the 2.2 series and probably the 2.4 series as well.  I believe Andy
agrees with that.

Don’t escape this thread people, you’re trapped!  :-)


reply via email to

[Prev in Thread] Current Thread [Next in Thread]