public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
From: Florian Weimer <fw@deneb.enyo.de>
To: Carlos O'Donell <carlos@redhat.com>
Cc: libc-alpha@sourceware.org
Subject: Re: Future of libio vtable compatibility
Date: Mon, 18 Jun 2018 20:18:00 -0000	[thread overview]
Message-ID: <87efh3u9vo.fsf@mid.deneb.enyo.de> (raw)
In-Reply-To: <bcd031d0-3b1a-b404-9731-36179ed06446@redhat.com> (Carlos O'Donell's message of "Mon, 18 Jun 2018 15:22:15 -0400")

* Carlos O'Donell:

> Let me pose another question...
>  
>> It almost looks to me as if nobody really wants that level of
>> backwards compatibility.
>
> Assume you had reliable test system with 100 tests for the backwards
> compatibility support.
>
> Given the tests, would you still make the same argument for removal?

Probably not.  Depends how good the tests are.  If lack of testing of
those internal interfaces does not prevent library cleanups and other
changes (such as the implement of fgetln, biased locking for stdio
streams, or *printf speed-ups),

> Is the argument about poor testing semi-independent of the argument for
> removal?

I think the lack of a testsuite is a huge upfront cost if we ever
tackle libio modernization.  And if we treat vtables as an internal
implementation detail, it's significantly easier to achieve some
decent level of coverage.

If give up the notion of vtable compatibility (or internal, data
structure layout compatibility), it will be somewhat easier to
convince that certain fixes are acceptable.

For example, with virtual methods, the call graph between virtual
methods is part of the API, and also the relative order of internal
calls.  Or look at the marker support (see struct _IO_marker).  I'm
not sure which of the streams are compatible with that.

> Is this a part of a broader discussion to rid glibc of external projects
> which depend on implementation internals?

I don't think so.  I'm not sure such a project even exists.  The
issues are far too disparate for that.

> Is "libio vtable compat removal" the best value?

I'm not even sure to what extent the vtables constrain us in terms of
the changes we want to make.  Sure, code cleanups are basically
impossible right now, but what are the changes we want to make and
people want to work on, and which are at risk due to the vtable
complexity?

>> We could require that vtable compatibility requires setting an
>> environment variable in glibc 2.28.  This might finally allow us to
>> gather some data.  Either nobody needs backwards compatibility, or our
>> backwards compatibility is just too perfect.  It's difficult to tell
>> why we don't see more bug reports in this area.
>
> We all suspect that nobody needs it.

There is this one glibc bug I mentioned. 8-)

> The reason behind my suggestion for making this change in glibc 3.0
> is completely one of optics. To ensure that our users see us making
> big compatibility changes only on major project boundary changes.
>
> To be honest I don't care if we call the *next* release glibc 3.0,
> and remove the vtable libio compat code *today* :-)

I'm worried that it would lead to the hospitalization of a few people
if we did that *now*. 8-/  The first major version change will
certainly be hardest, based on the Linux experience.

I considered the “do not flush on abort or assertion failure” a glibc
3.0 project too.

Hmm, it looks like never posted the glibc 3.0 notes from last year's
Cauldron session to the wiki.  I should really upload the notes you
sent to me.

  reply	other threads:[~2018-06-18 20:18 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-15  7:50 Florian Weimer
2018-06-18 16:07 ` Carlos O'Donell
2018-06-18 17:15   ` Florian Weimer
2018-06-18 17:41     ` Zack Weinberg
2018-06-18 18:25       ` Adhemerval Zanella
2018-06-18 19:08       ` Florian Weimer
2018-06-18 19:26         ` Zack Weinberg
2018-06-18 19:22     ` Carlos O'Donell
2018-06-18 20:18       ` Florian Weimer [this message]
2018-06-18 20:28         ` Carlos O'Donell
     [not found]           ` <878t7bu834.fsf@mid.deneb.enyo.de>
     [not found]             ` <80e0f086-a966-618d-7b27-1f42a7b9a5c9@redhat.com>
2018-06-19 19:11               ` Florian Weimer
2018-06-19 19:20                 ` Carlos O'Donell
2018-06-19 12:18       ` Joseph Myers
2018-06-19 12:39         ` Adhemerval Zanella

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

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

  git send-email \
    --in-reply-to=87efh3u9vo.fsf@mid.deneb.enyo.de \
    --to=fw@deneb.enyo.de \
    --cc=carlos@redhat.com \
    --cc=libc-alpha@sourceware.org \
    /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).