unofficial mirror of guile-devel@gnu.org 
 help / color / mirror / Atom feed
From: ludo@gnu.org (Ludovic Courtès)
To: Mark H Weaver <mhw@netris.org>
Cc: Andy Wingo <wingo@igalia.com>, guile-devel@gnu.org
Subject: Foreign object API
Date: Thu, 05 Nov 2015 11:16:13 +0100	[thread overview]
Message-ID: <87611gah02.fsf_-_@gnu.org> (raw)
In-Reply-To: <87oaf9zojn.fsf@netris.org> (Mark H. Weaver's message of "Wed, 04 Nov 2015 12:01:48 -0500")

Mark H Weaver <mhw@netris.org> 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.

Agreed.

> 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
forward?

I expressed mine in
<https://lists.gnu.org/archive/html/guile-devel/2015-05/msg00005.html>
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!  :-)

Thanks,
Ludo’.



  reply	other threads:[~2015-11-05 10:16 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-04 10:10 Mark procedures Andy Wingo
2015-11-04 12:01 ` Stefan Israelsson Tampe
2015-11-04 17:01 ` Mark procedures, LilyPond, and backward compatibility Mark H Weaver
2015-11-05 10:16   ` Ludovic Courtès [this message]
2016-02-01 22:50     ` Foreign objects removed from ‘stable-2.0’ Ludovic Courtès
2015-11-05 14:46   ` Mark procedures, LilyPond, and backward compatibility Andy Wingo
2015-11-05 10:29 ` Mark procedures Ludovic Courtès
2015-11-05 13:11   ` Andy Wingo
2015-11-05 14:17     ` Ludovic Courtès
2015-11-06 12:32     ` Mark procedures and LilyPond Mark H Weaver
2015-11-06 13:50       ` Ludovic Courtès
2015-11-06 15:05       ` Stefan Monnier
2016-01-24  8:58       ` Hans Åberg
2016-06-20 10:34     ` Mark procedures Andy Wingo
2016-06-20 12:15       ` Ludovic Courtès
2021-05-18 15:46 ` Ephemerons, self-referentality in weak hashtables Christopher Lemmer Webber
2021-06-20 15:01   ` Maxime Devos
2021-06-21 17:15     ` Maxime Devos
2021-09-08 16:18       ` Christine Lemmer-Webber
2021-09-08 20:11         ` Maxime Devos
2021-09-08 20:50           ` Christine Lemmer-Webber

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/guile/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87611gah02.fsf_-_@gnu.org \
    --to=ludo@gnu.org \
    --cc=guile-devel@gnu.org \
    --cc=mhw@netris.org \
    --cc=wingo@igalia.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).