On 2/12/20 8:53 PM, David Malcolm wrote:
On Thu, 2020-02-13 at 00:49 +0000, Modi Mo wrote:
Hey all,
I'm picking this work up from Andrew. Last time it was decided that
the timing wasn't right to upgrade the minimum version to C++11. Is
the timing better now to get this change through?
I've attached the patch Andrew prepared. Can I get feedback on the
change and some help testing on the broader range of
architectures/platforms?
Thanks,
Modi
Hi Modi
Thanks for the patch.
Some nitpicks:
Timing-wise, the GCC developer community is focusing on gcc 10
bugfixing right now (aka "stage 4" of the release cycle). So this
patch won't be suitable to commit to master until stage 1 of the
release cycle for gcc 11 (in April, hopefully).
But yes, it's probably a good idea to get feedback on the patch given
the breadth of platforms we support.
The patch will need an update to the docs; search for
"Tools/packages necessary for building GCC" in gcc/doc/install.texi,
which currently has some paragraphs labelled:
@item ISO C++98 compiler
that will need changing.
I think Richi mentioned that the minimum gcc version should be 4.8.2 as
he recalled issues with .1, so maybe the error message and docs should
reflect that?
https://gcc.gnu.org/ml/gcc/2019-10/msg00180.html
This may be opening a can of worms that should wait until we're done
with the GCC 10 release, but there's probably an eventual wider
discussion about what parts of C++11 we should use; pragmatically we're
also limited by gengtype, the tool that scrapes the source code looking
for garbage-collector markup, as that imposes a subset of C++ on us.
I'd love to be able to rely on move semantics and thus use e.g.
std::unique_ptr to capture more of our memory-management in the type
system (we currently have a limited C++98-compatible implementation in
the tree in the form of gnu::unique_ptr).
How much of the stdlib do we see ourselves using? I think we've
avoided std::string and the <<-style stream APIs; is there a case for
using some of the other data structures?
For reference, see
https://gcc.gnu.org/codingconventions.html#Cxx_Conventions
(looks like that page would need an update also for the version bump;
it's in the website git repo IIRC)
Hope this is constructive.
Dave
Dave,
I recall originally bringing up the move. From memory I recall that
these were the
features we wanted or the people in the discussion wanted from C++11:
1. Better Rounding and Stricter Integer and other number type rules
2. Template Aliasing
3. Auto and for each style loops
4. Move and R Value Semantics
There was a little discussion about lambas and anonymous functions but I
don't
recall that being clear in terms of one of the above areas for sure.
Maybe that helps,
Nick