From: Pedro Alves <palves@redhat.com>
To: Eli Zaretskii <eliz@gnu.org>
Cc: tom@tromey.com, simon.marchi@polymtl.ca, gdb-patches@sourceware.org
Subject: Re: [RFA 09/22] Remove make_cleanup_restore_current_ui
Date: Thu, 13 Oct 2016 14:26:00 -0000 [thread overview]
Message-ID: <a9ccb080-8727-72fe-f579-d21c204ed4c8@redhat.com> (raw)
In-Reply-To: <83r37k8ifg.fsf@gnu.org>
On 10/13/2016 02:52 PM, Eli Zaretskii wrote:
> Since I'm still unclear what is the oldest C++ standard we want to
> support, I cannot decide whether I agree or disagree. Is the version
> of the C++ standard we support C++03 or C++11? My comment assumed
> that it was C++11.
It was decided in 2014 that we'd target C++03. We have not decided
yet to _require_ C++11.
>
>> I'll give you more examples of why I think forbidding C++11 completely
>> is short sighted.
>
> Thanks, but that kind of arguments completely misses the point. You
> don't need to convince me that a later standard is better than the
> previous ones. The issue at hand is whether we should write code that
> targets more than a single language standard, where these standards
> aren't compatible. I think we shouldn't.
They are not incompatible. C++03 code compiles with a C++11 compiler
just fine.
>
>>> Supporting more than one standard means we will have rarely used code
>>> that is almost never tested, and that means maintenance burden
>>
>> That same argument could be applied to gnulib. Or the many HAVE_FOO's
>> in the code base. We rely on gnulib's reimplementation of the whole
>> printf family of functions if the compiler doesn't support it properly
>> for example!
>
> I did apply it to gnulib at the time, but was voted down.
>
> Do you seriously consider the gnulib solution a good one? I don't.
Yes, I do.
> The code obfuscation is very significant. Of course, as long as you
> don't look into the gnulib headers, you don't care, but in this case
> you propose to have all those shims in our sources, in plain sight.
Yes, "all those shims". One file. And then cleaner code in thousands
of uses of the shim throughout the codebase. None of that
shim-using code needs to know what version of the standard is
being targeted. Take a look at patch #3 from the gdb::unique_ptr
series, and see for yourself.
So I'll take that tradeoff, yes.
>
>>> that means maintenance burden
>>
>> For whom? _I'm_ willing to maintain this code.
>
> Are you saying that no one else will be allowed to modify the code
> which has 2 branches, one for C++03, the other for C++11? I'm betting
> you aren't saying that,
Of course not.
> and so this is a burden for all of us, not just for you.
You're automatically assuming it's a burden. I believe that's
false.
>
>> It's not rocket science code.
>
> Today it isn't. I'm not talking about this particular patch, I'm
> talking about this policy in general. As do you, I suppose: you
> aren't just asking for agreement about using C++11 features in this
> single case, right?
I'm talking about adding a small utility that is going to be used
extensively throughout the codebase. A smart pointer is a central widget.
That mine was modeled on a C++11 feature should be seen as
a _good_ thing. The std::unique_ptr was so good that it made it
to the standard. Not a small feat. Bonus. Once we move on to C++11
for real (I don't know when), then there's one less API to learn.
>
>> Several others have said they think this is a good idea. I've even
>> ran this idea through the libstdc++ maintainer in person at the Cauldron.
>> Trevor said he wants to do this in gcc as well.
>
> I just wanted to voice my opposition, that's all. I don't have to
> give up just because a few others think otherwise. Right?
Of course. The problem is that your opinion is interpreted as
a hard blocker. The result is stalling.
>> If redirecting to C++11 std::unique_ptr turns out to cause trouble, or
>> I'm hit by a bus, then it's trivial to remove that redirection. All it
>> takes is remove a handful of lines of code guarded with
>> #if __cplusplus >= 201103 to always go through the fallback implementation.
>
> Once again, it's not just this single patch that bothers me. Once we
> have enough of these #if's, removing them is not necessarily a trivial
And not "not necessarily" either... This just looks like fear of
the unknown, I'm afraid.
> matter, especially when most of the builds, perhaps even all of them,
> have been using the C++11 code path all the time, and the other one
> has simply bitrotted.
As I've said before, we can make use of the buildbot for that.
If the fallback code breaks, you get an immediate email notification.
>>> which
>>> threaten to undo at least some part of the benefits you aspire to
>>> achieve by moving to C++ in general and to a new enough C++ standard
>>> in particular.
>>
>> I don't understand what this is trying to say.
>
> The move to C++ was supposed to make the maintenance easier, right?
> I'm saying that targeting more than a single language standard makes
> maintenance harder, so it works against the purpose of the move.
Many, many, many, free software projects, small and large, went
through that exercise. It's known territory, we can learn
from their experience, and we know that it's quite doable.
>
>> And no, I'm not planning on getting hit by a bus. :-)
>
> Who is?
;-)
Thanks,
Pedro Alves
next prev parent reply other threads:[~2016-10-13 14:26 UTC|newest]
Thread overview: 121+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-09-27 4:49 [RFA 00/22] More C++-ification Tom Tromey
2016-09-27 4:41 ` [RFA 15/22] Use std::string in macho_symfile_read_all_oso Tom Tromey
2016-10-09 17:28 ` Pedro Alves
2016-10-10 22:40 ` Tom Tromey
2016-10-10 22:46 ` Pedro Alves
2016-09-27 4:41 ` [RFA 07/22] Change scoped_minimal_symbol_reader to store objfile Tom Tromey
2016-09-29 9:19 ` Trevor Saunders
2016-09-30 21:41 ` Tom Tromey
2016-09-27 4:42 ` [RFA 16/22] Use std::vector in elf_read_minimal_symbols Tom Tromey
2016-10-09 17:30 ` Pedro Alves
2016-09-27 4:42 ` [RFA 19/22] Convert tid_range_parser to class Tom Tromey
2016-09-30 1:41 ` Pedro Alves
2016-09-30 14:52 ` Tom Tromey
[not found] ` <926126cb-b3c5-340b-ac1c-5bc14ca41bf9@redhat.com>
2016-10-04 19:24 ` Pedro Alves
2016-10-04 23:09 ` Pedro Alves
2016-10-05 2:16 ` Trevor Saunders
2016-10-12 2:12 ` Tom Tromey
2016-10-13 1:06 ` Pedro Alves
2016-09-27 4:43 ` [RFA 20/22] Initial conversion of dwarf_expr_ctx Tom Tromey
2016-10-09 17:40 ` Pedro Alves
2016-09-27 4:45 ` [RFA 21/22] Convert DWARF expr functions to methods Tom Tromey
2016-10-09 19:18 ` Pedro Alves
2016-09-27 4:47 ` [RFA 04/22] Use scoped_restore for current_ui Tom Tromey
2016-09-27 4:47 ` [RFA 22/22] Convert dwarf_expr_context_funcs to methods Tom Tromey
2016-10-09 19:11 ` Pedro Alves
2016-10-10 18:31 ` Pedro Alves
2016-10-10 19:33 ` Pedro Alves
2016-09-27 4:47 ` [RFA 05/22] Turn wchar iterator into a class Tom Tromey
2016-10-06 1:01 ` Pedro Alves
2016-09-27 4:47 ` [RFA 02/22] Use RAII to save and restore scalars Tom Tromey
2016-09-27 10:24 ` Trevor Saunders
2016-09-30 1:40 ` Pedro Alves
2016-09-30 9:22 ` Pedro Alves
2016-09-30 15:00 ` Tom Tromey
2016-09-30 23:50 ` Pedro Alves
2016-09-30 15:44 ` Tom Tromey
2016-09-30 23:51 ` Pedro Alves
2016-10-01 3:55 ` Tom Tromey
2016-10-01 4:23 ` Tom Tromey
2016-10-01 10:33 ` Pedro Alves
2016-10-02 17:11 ` Tom Tromey
2016-10-05 0:06 ` Pedro Alves
2016-10-12 22:36 ` Tom Tromey
2016-09-27 4:48 ` [RFA 01/22] Change selttest.c to use use std::vector Tom Tromey
2016-09-27 8:50 ` Trevor Saunders
2016-09-27 16:44 ` Tom Tromey
2016-09-28 14:58 ` Trevor Saunders
2016-09-29 8:59 ` Tom Tromey
2016-10-06 0:18 ` Pedro Alves
2016-10-06 0:39 ` Pedro Alves
2016-09-30 14:43 ` Simon Marchi
2016-09-30 21:40 ` Tom Tromey
2016-10-06 0:45 ` Pedro Alves
2016-09-27 4:48 ` [RFA 09/22] Remove make_cleanup_restore_current_ui Tom Tromey
2016-09-29 11:55 ` Trevor Saunders
2016-10-01 3:47 ` Tom Tromey
2016-10-01 4:29 ` Simon Marchi
2016-10-06 2:53 ` Tom Tromey
2016-10-06 1:24 ` Pedro Alves
2016-10-06 2:52 ` Tom Tromey
2016-10-09 4:31 ` Simon Marchi
2016-10-09 15:10 ` Tom Tromey
2016-10-09 19:20 ` Pedro Alves
2016-10-12 22:43 ` Tom Tromey
2016-10-13 1:28 ` Pedro Alves
2016-10-13 6:11 ` Eli Zaretskii
2016-10-13 10:16 ` Pedro Alves
2016-10-13 13:53 ` Eli Zaretskii
2016-10-13 14:26 ` Pedro Alves [this message]
2016-10-13 14:46 ` Eli Zaretskii
[not found] ` <9d9dca17-56a6-6c0a-44bb-efc425f24d8d@redhat.com>
2016-10-13 15:19 ` Eli Zaretskii
2016-10-13 15:43 ` Pedro Alves
2016-10-13 15:48 ` Pedro Alves
2016-10-17 23:43 ` Go C++11? (was: Re: [RFA 09/22] Remove make_cleanup_restore_current_ui) Pedro Alves
2016-10-18 6:14 ` Eli Zaretskii
2016-10-19 18:02 ` Go C++11? Luis Machado
2016-10-19 22:34 ` Pedro Alves
2016-10-13 15:27 ` [RFA 09/22] Remove make_cleanup_restore_current_ui Pedro Alves
2016-10-13 14:26 ` Trevor Saunders
2016-09-27 4:48 ` [RFA 03/22] Use scoped_restore for ui_file Tom Tromey
2016-10-01 4:28 ` Simon Marchi
2016-10-01 5:22 ` Tom Tromey
2016-10-01 11:47 ` Simon Marchi
2016-10-13 14:56 ` Tom Tromey
2016-09-27 4:48 ` [RFA 08/22] Record minimal symbols directly in reader Tom Tromey
2016-10-01 4:29 ` Simon Marchi
2016-10-06 1:12 ` Pedro Alves
2016-09-27 4:50 ` [RFA 17/22] Remove make_cleanup_restore_current_uiout Tom Tromey
2016-09-29 14:35 ` Trevor Saunders
2016-09-29 15:23 ` Tom Tromey
2016-09-29 17:55 ` Simon Marchi
2016-09-29 20:34 ` Tom Tromey
2016-09-30 2:45 ` Pedro Alves
2016-09-30 23:48 ` Tom Tromey
2016-09-30 23:52 ` Pedro Alves
2016-09-27 4:51 ` [RFA 12/22] Remove unnecessary null_cleanup Tom Tromey
2016-10-09 17:06 ` Pedro Alves
2016-09-27 4:51 ` [RFA 13/22] Remove unnecessary cleanup from stabsread.c Tom Tromey
2016-09-30 16:19 ` Tom Tromey
2016-10-09 17:07 ` Pedro Alves
2016-09-27 4:51 ` [RFA 18/22] Some cleanup removal in dwarf2loc.c Tom Tromey
2016-10-09 17:37 ` Pedro Alves
2016-09-27 4:51 ` [RFA 14/22] Replace two xmallocs with vector Tom Tromey
2016-10-09 17:20 ` Pedro Alves
2016-10-12 22:39 ` Tom Tromey
2016-10-13 1:17 ` Pedro Alves
2016-10-13 2:04 ` Tom Tromey
2016-10-13 15:15 ` Tom Tromey
2016-10-13 15:26 ` Trevor Saunders
2016-09-27 4:52 ` [RFA 10/22] Remove some cleanups in MI Tom Tromey
2016-10-06 1:42 ` Pedro Alves
2016-09-27 4:52 ` [RFA 06/22] Introduce scoped_minimal_symbol_reader Tom Tromey
2016-10-06 1:10 ` Pedro Alves
2016-10-06 15:37 ` Tom Tromey
2016-10-10 23:06 ` Tom Tromey
2016-10-10 23:26 ` Pedro Alves
2016-09-27 8:32 ` [RFA 11/22] Change command stats reporting to use class Tom Tromey
2016-10-09 17:01 ` Pedro Alves
2016-10-11 17:31 ` Tom Tromey
[not found] ` <e06fbe1ea266e078eaff6bdc98e48efa@simark.ca>
2016-10-08 16:42 ` [RFA 00/22] More C++-ification Pedro Alves
2016-10-09 2:09 ` Tom Tromey
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=a9ccb080-8727-72fe-f579-d21c204ed4c8@redhat.com \
--to=palves@redhat.com \
--cc=eliz@gnu.org \
--cc=gdb-patches@sourceware.org \
--cc=simon.marchi@polymtl.ca \
--cc=tom@tromey.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