Re: GCC version bikeshedding

2014-08-07 Thread Jeff Law

On 08/06/14 04:50, Marc Glisse wrote:

A clean .so.7 break would be significantly worse nightmare.  We've been
there many years ago, e.g. 3.2/3.3 vs. 3.4, there has been significantly
fewer C++ plugins etc. in packages and it still it was unsolvable.
With the abi_tag stuff, you have the option to make stuff interoperable
when mixing compiler, either with no effort at all, or some limited
effort.  With .so.7, you have no option, nothing will be interoperable.


I disagree that it is worse, but you have more experience, I guess we
will see the results in a few years...
Based on real world end user/developer discussions I've had on this 
topic over the last few years, a SOname bump would catastrophic. 
They've made it painfully clear that a SOname bump would be the worst 
thing that has happened in GCC-land in many years, possibly ever.


jeff



Re: GCC version bikeshedding

2014-08-06 Thread Jakub Jelinek
On Wed, Aug 06, 2014 at 12:33:42PM +0100, Joern Rennecke wrote:
> On 6 August 2014 11:31, Richard Biener  wrote:
> > Ok, so the problematical case is
> >
> > struct X { std::string s; };
> > void foo (X&);
> 
> Wouldn't it be even more troublesome with an application that dynloads
> dsos depending on user input.
> The install script might check if the dso with the right soname is present,
> but then you still get dynamic linker errors when the user tries to
> do something with the application, which could be an arbitrary time after
> the upgrade.

Now, if you do the same with libstdc++.so.7, you have exactly the same issue
(need to think what you do with SONAMEs of libraries built with C++), but
furthermore whenever you get both libstdc++.so.6 and libstdc++.so.7 loaded
into the same process, most probably nothing will work at all, there will be
no mangling differences between so.6 and so.7 symbols, etc.

Jakub


Re: GCC version bikeshedding

2014-08-06 Thread Joern Rennecke
On 6 August 2014 11:31, Richard Biener  wrote:
> Ok, so the problematical case is
>
> struct X { std::string s; };
> void foo (X&);

Wouldn't it be even more troublesome with an application that dynloads
dsos depending on user input.
The install script might check if the dso with the right soname is present,
but then you still get dynamic linker errors when the user tries to
do something with the application, which could be an arbitrary time after
the upgrade.


Re: GCC version bikeshedding

2014-08-06 Thread Richard Biener
On Wed, Aug 6, 2014 at 12:50 PM, Marc Glisse  wrote:
> On Wed, 6 Aug 2014, Jakub Jelinek wrote:
>
>> On Wed, Aug 06, 2014 at 12:31:57PM +0200, Richard Biener wrote:
>>>
>>> Ok, so the problematical case is
>>>
>>> struct X { std::string s; };
>>> void foo (X&);
>>
>>
>> Yeah.
>>
>>> then.  OTOH I remember that then mangling of X changes as well?
>>
>>
>> Only if you add abi_tag attribute to X.
>
>
> Note that -Wabi-tag can tell you where it is needed.
>
> struct __attribute__((abi_tag("marc"))) X {};
> struct Y { X x; };
>
> a.cc:2:8: warning: 'Y' does not have the "marc" abi tag that 'X' (used in
> the type of 'Y::x') has [-Wabi-tag]
>  struct Y { X x; };
> ^
> a.cc:2:14: note: 'Y::x' declared here
>  struct Y { X x; };
>   ^
> a.cc:1:41: note: 'X' declared here
>  struct __attribute__((abi_tag("marc"))) X {};
>
>  ^
>
>> I hope the libstdc++ folks will add some macro which will
>> include the right abi_tag attribute for the std::list/std::string
>> cases, so you'd in the end just add
>> #ifndef _GLIBCXX_ABI_TAG_SOMETHING
>> #define _GLIBCXX_ABI_TAG_SOMETHING
>> #endif
>> ...
>> struct X _GLIBCXX_ABI_TAG_SOMETHING { std::string s; };
>> void foo (X&);
>> or similar.
>
>
> So we only need to patch every project out there...

I wonder if the linker could not do the propagation for us ...
(ok, it needs to rewrite all symbols and typeinfos, etc., but
certainly doable, no?)

That said, if the public API merely has a forward declaration

class X;

and always passes that by reference the ABI doesn't change.
Of course it now _would_ change if you'd change the mangling
of X ...

abigail to the rescue?

>> A clean .so.7 break would be significantly worse nightmare.  We've been
>> there many years ago, e.g. 3.2/3.3 vs. 3.4, there has been significantly
>> fewer C++ plugins etc. in packages and it still it was unsolvable.
>> With the abi_tag stuff, you have the option to make stuff interoperable
>> when mixing compiler, either with no effort at all, or some limited
>> effort.  With .so.7, you have no option, nothing will be interoperable.
>
>
> I disagree that it is worse, but you have more experience, I guess we
> will see the results in a few years...

Indeed.

Richard.

> --
> Marc Glisse


Re: GCC version bikeshedding

2014-08-06 Thread Marc Glisse

On Wed, 6 Aug 2014, Jakub Jelinek wrote:


On Wed, Aug 06, 2014 at 12:31:57PM +0200, Richard Biener wrote:

Ok, so the problematical case is

struct X { std::string s; };
void foo (X&);


Yeah.


then.  OTOH I remember that then mangling of X changes as well?


Only if you add abi_tag attribute to X.


Note that -Wabi-tag can tell you where it is needed.

struct __attribute__((abi_tag("marc"))) X {};
struct Y { X x; };

a.cc:2:8: warning: 'Y' does not have the "marc" abi tag that 'X' (used in 
the type of 'Y::x') has [-Wabi-tag]

 struct Y { X x; };
^
a.cc:2:14: note: 'Y::x' declared here
 struct Y { X x; };
  ^
a.cc:1:41: note: 'X' declared here
 struct __attribute__((abi_tag("marc"))) X {};
 ^


I hope the libstdc++ folks will add some macro which will
include the right abi_tag attribute for the std::list/std::string
cases, so you'd in the end just add
#ifndef _GLIBCXX_ABI_TAG_SOMETHING
#define _GLIBCXX_ABI_TAG_SOMETHING
#endif
...
struct X _GLIBCXX_ABI_TAG_SOMETHING { std::string s; };
void foo (X&);
or similar.


So we only need to patch every project out there...



A clean .so.7 break would be significantly worse nightmare.  We've been
there many years ago, e.g. 3.2/3.3 vs. 3.4, there has been significantly
fewer C++ plugins etc. in packages and it still it was unsolvable.
With the abi_tag stuff, you have the option to make stuff interoperable
when mixing compiler, either with no effort at all, or some limited
effort.  With .so.7, you have no option, nothing will be interoperable.


I disagree that it is worse, but you have more experience, I guess we
will see the results in a few years...

--
Marc Glisse


Re: GCC version bikeshedding

2014-08-06 Thread Jakub Jelinek
On Wed, Aug 06, 2014 at 12:35:02PM +0200, Marc Glisse wrote:
> >>>It's an ABI change for all modes (but not a SONAME change because the
> >>>old and new definitions will both be present in the .so).
> >>
> >>Ugh.  That's going to be a nightmare to support.
> 
> Yes. And IMO a waste of effort compared to a clean .so.7 break, but well...

A clean .so.7 break would be significantly worse nightmare.  We've been
there many years ago, e.g. 3.2/3.3 vs. 3.4, there has been significantly
fewer C++ plugins etc. in packages and it still it was unsolvable.
With the abi_tag stuff, you have the option to make stuff interoperable
when mixing compiler, either with no effort at all, or some limited
effort.  With .so.7, you have no option, nothing will be interoperable.

Jakub


Re: GCC version bikeshedding

2014-08-06 Thread Jakub Jelinek
On Wed, Aug 06, 2014 at 12:31:57PM +0200, Richard Biener wrote:
> Ok, so the problematical case is
> 
> struct X { std::string s; };
> void foo (X&);

Yeah.

> then.  OTOH I remember that then mangling of X changes as well?

Only if you add abi_tag attribute to X.
I hope the libstdc++ folks will add some macro which will
include the right abi_tag attribute for the std::list/std::string
cases, so you'd in the end just add
#ifndef _GLIBCXX_ABI_TAG_SOMETHING
#define _GLIBCXX_ABI_TAG_SOMETHING
#endif
...
struct X _GLIBCXX_ABI_TAG_SOMETHING { std::string s; };
void foo (X&);
or similar.

Jakub


Re: GCC version bikeshedding

2014-08-06 Thread Marc Glisse

On Wed, 6 Aug 2014, Richard Biener wrote:


It's an ABI change for all modes (but not a SONAME change because the
old and new definitions will both be present in the .so).


Ugh.  That's going to be a nightmare to support.


Yes. And IMO a waste of effort compared to a clean .so.7 break, but 
well...



 Is there a configure
switch to change the default ABI used?  That is, on a legacy system
can I upgrate to 5.0 and get code that interoperates fine with code
built with 4.8?  (including ABI boundaries using the affected classes?
I suspect APIs with std::string passing are _very_ common, not
sure about std::list)

What's the failure mode the user will see when linking against a
4.8 compiled library with a std::string interface using 5.0?


In good cases, a linker error about a missing symbol (different mangling). 
In less good cases, a warning at compile-time about using a class marked 
with abi_tag in a class not marked with it. In worse cases (passing 
through void* for instance), a runtime crash.



And how do libraries with such an API avoid silently changing their
ABI dependent on the compiler used to compile them?  That is,
I suppose those need to change their SONAME dependent on
the compiler version used?!


Yes, just like a move to .so.7 would entail.

--
Marc Glisse


Re: GCC version bikeshedding

2014-08-06 Thread Richard Biener
On Wed, Aug 6, 2014 at 12:25 PM, Jonathan Wakely  wrote:
> On 6 August 2014 11:20, Richard Biener wrote:
>> On Wed, Aug 6, 2014 at 12:08 PM, Jonathan Wakely  
>> wrote:
>>> On 6 August 2014 10:06, Jakub Jelinek wrote:
 On Wed, Aug 06, 2014 at 11:04:14AM +0200, Richard Biener wrote:
> > - libstdc++ ABI changes (it is a significant user visible change,
> >   if you rebuild everything, no extra effort is needed, but otherwise
> >   if you want some C++ code built with older compilers work together
> >   with code built with newer compilers, it might require source code
> >   changes (the abi_tag attribute additions where needed and warning
> >   suggest to put those at), at least that is my current understanding
> >   of the plans
>
> But that's only with -std=c++11?  Which had no compatibility
> guarantees before?

 No, AFAIK it is also -std=c++98.  At least my understanding was that
 std::list and std::string are going to change ABI (and get new abi_tag)
 in all C++ modes.  Jonathan/Jason/Paolo, is that right?
>>>
>>> Correct. We want C++03 code to continue to be able to interoperate
>>> with C++11 code.
>>>
>>> It's an ABI change for all modes (but not a SONAME change because the
>>> old and new definitions will both be present in the .so).
>>
>> Ugh.  That's going to be a nightmare to support.  Is there a configure
>> switch to change the default ABI used?
>
> You'll need to define a macro to get the old versions of the affected
> classes, we can add a configure switch to make that the default.
>
>>  That is, on a legacy system
>> can I upgrate to 5.0 and get code that interoperates fine with code
>> built with 4.8?  (including ABI boundaries using the affected classes?
>> I suspect APIs with std::string passing are _very_ common, not
>> sure about std::list)
>>
>> What's the failure mode the user will see when linking against a
>> 4.8 compiled library with a std::string interface using 5.0?
>
> There will be a linker error as the types and the interface functions
> will have different mangled names.

Ok, so the problematical case is

struct X { std::string s; };
void foo (X&);

then.  OTOH I remember that then mangling of X changes as well?

Is there a documented way to build a shared library with both
variants?  Or isn't there a good way to automate that?  Like
building the library objects twice once with the new and once
with the old ABI and then simply link both into the shared library?
(of course that doesn't work - but maybe use -ffunction-sections
-fdata-sections and then use the union of all sections discarding
duplicates?)

Richard.


Re: GCC version bikeshedding

2014-08-06 Thread Jakub Jelinek
On Wed, Aug 06, 2014 at 12:20:04PM +0200, Richard Biener wrote:
> >> No, AFAIK it is also -std=c++98.  At least my understanding was that
> >> std::list and std::string are going to change ABI (and get new abi_tag)
> >> in all C++ modes.  Jonathan/Jason/Paolo, is that right?
> >
> > Correct. We want C++03 code to continue to be able to interoperate
> > with C++11 code.
> >
> > It's an ABI change for all modes (but not a SONAME change because the
> > old and new definitions will both be present in the .so).
> 
> Ugh.  That's going to be a nightmare to support.  Is there a configure
> switch to change the default ABI used?  That is, on a legacy system
> can I upgrate to 5.0 and get code that interoperates fine with code
> built with 4.8?  (including ABI boundaries using the affected classes?
> I suspect APIs with std::string passing are _very_ common, not
> sure about std::list)

Generally, if you just pass std::string or std::list or & or && or *
to it around, things will be just mangled differently, so worst case you'll
get linker errors or dynamic linker errors.
The problematic case is if you embed std::string or std::list
in your classes and pass that around in between projects compiled with
one compiler and another compiler, in that case it doesn't affect
the mangling, yet is an ABI change nevertheless.
In such cases, one needs to add abi_tag to your structures, and there is
some g++ warning that can suggest you where to add it.
Of course, if you are not using such structures/classes in between packages,
it is just fine not to do anything about that.

Jakub


Re: GCC version bikeshedding

2014-08-06 Thread Jonathan Wakely
On 6 August 2014 11:20, Richard Biener wrote:
> On Wed, Aug 6, 2014 at 12:08 PM, Jonathan Wakely  
> wrote:
>> On 6 August 2014 10:06, Jakub Jelinek wrote:
>>> On Wed, Aug 06, 2014 at 11:04:14AM +0200, Richard Biener wrote:
 > - libstdc++ ABI changes (it is a significant user visible change,
 >   if you rebuild everything, no extra effort is needed, but otherwise
 >   if you want some C++ code built with older compilers work together
 >   with code built with newer compilers, it might require source code
 >   changes (the abi_tag attribute additions where needed and warning
 >   suggest to put those at), at least that is my current understanding
 >   of the plans

 But that's only with -std=c++11?  Which had no compatibility
 guarantees before?
>>>
>>> No, AFAIK it is also -std=c++98.  At least my understanding was that
>>> std::list and std::string are going to change ABI (and get new abi_tag)
>>> in all C++ modes.  Jonathan/Jason/Paolo, is that right?
>>
>> Correct. We want C++03 code to continue to be able to interoperate
>> with C++11 code.
>>
>> It's an ABI change for all modes (but not a SONAME change because the
>> old and new definitions will both be present in the .so).
>
> Ugh.  That's going to be a nightmare to support.  Is there a configure
> switch to change the default ABI used?

You'll need to define a macro to get the old versions of the affected
classes, we can add a configure switch to make that the default.

>  That is, on a legacy system
> can I upgrate to 5.0 and get code that interoperates fine with code
> built with 4.8?  (including ABI boundaries using the affected classes?
> I suspect APIs with std::string passing are _very_ common, not
> sure about std::list)
>
> What's the failure mode the user will see when linking against a
> 4.8 compiled library with a std::string interface using 5.0?

There will be a linker error as the types and the interface functions
will have different mangled names.


Re: GCC version bikeshedding

2014-08-06 Thread Richard Biener
On Wed, Aug 6, 2014 at 12:20 PM, Richard Biener
 wrote:
> On Wed, Aug 6, 2014 at 12:08 PM, Jonathan Wakely  
> wrote:
>> On 6 August 2014 10:06, Jakub Jelinek wrote:
>>> On Wed, Aug 06, 2014 at 11:04:14AM +0200, Richard Biener wrote:
 > - libstdc++ ABI changes (it is a significant user visible change,
 >   if you rebuild everything, no extra effort is needed, but otherwise
 >   if you want some C++ code built with older compilers work together
 >   with code built with newer compilers, it might require source code
 >   changes (the abi_tag attribute additions where needed and warning
 >   suggest to put those at), at least that is my current understanding
 >   of the plans

 But that's only with -std=c++11?  Which had no compatibility
 guarantees before?
>>>
>>> No, AFAIK it is also -std=c++98.  At least my understanding was that
>>> std::list and std::string are going to change ABI (and get new abi_tag)
>>> in all C++ modes.  Jonathan/Jason/Paolo, is that right?
>>
>> Correct. We want C++03 code to continue to be able to interoperate
>> with C++11 code.
>>
>> It's an ABI change for all modes (but not a SONAME change because the
>> old and new definitions will both be present in the .so).
>
> Ugh.  That's going to be a nightmare to support.  Is there a configure
> switch to change the default ABI used?  That is, on a legacy system
> can I upgrate to 5.0 and get code that interoperates fine with code
> built with 4.8?  (including ABI boundaries using the affected classes?
> I suspect APIs with std::string passing are _very_ common, not
> sure about std::list)
>
> What's the failure mode the user will see when linking against a
> 4.8 compiled library with a std::string interface using 5.0?

And how do libraries with such an API avoid silently changing their
ABI dependent on the compiler used to compile them?  That is,
I suppose those need to change their SONAME dependent on
the compiler version used?!

Richard.

> Thanks,
> Richard.


Re: GCC version bikeshedding

2014-08-06 Thread Richard Biener
On Wed, Aug 6, 2014 at 12:08 PM, Jonathan Wakely  wrote:
> On 6 August 2014 10:06, Jakub Jelinek wrote:
>> On Wed, Aug 06, 2014 at 11:04:14AM +0200, Richard Biener wrote:
>>> > - libstdc++ ABI changes (it is a significant user visible change,
>>> >   if you rebuild everything, no extra effort is needed, but otherwise
>>> >   if you want some C++ code built with older compilers work together
>>> >   with code built with newer compilers, it might require source code
>>> >   changes (the abi_tag attribute additions where needed and warning
>>> >   suggest to put those at), at least that is my current understanding
>>> >   of the plans
>>>
>>> But that's only with -std=c++11?  Which had no compatibility
>>> guarantees before?
>>
>> No, AFAIK it is also -std=c++98.  At least my understanding was that
>> std::list and std::string are going to change ABI (and get new abi_tag)
>> in all C++ modes.  Jonathan/Jason/Paolo, is that right?
>
> Correct. We want C++03 code to continue to be able to interoperate
> with C++11 code.
>
> It's an ABI change for all modes (but not a SONAME change because the
> old and new definitions will both be present in the .so).

Ugh.  That's going to be a nightmare to support.  Is there a configure
switch to change the default ABI used?  That is, on a legacy system
can I upgrate to 5.0 and get code that interoperates fine with code
built with 4.8?  (including ABI boundaries using the affected classes?
I suspect APIs with std::string passing are _very_ common, not
sure about std::list)

What's the failure mode the user will see when linking against a
4.8 compiled library with a std::string interface using 5.0?

Thanks,
Richard.


Re: GCC version bikeshedding

2014-08-06 Thread Jonathan Wakely
On 6 August 2014 10:06, Jakub Jelinek wrote:
> On Wed, Aug 06, 2014 at 11:04:14AM +0200, Richard Biener wrote:
>> > - libstdc++ ABI changes (it is a significant user visible change,
>> >   if you rebuild everything, no extra effort is needed, but otherwise
>> >   if you want some C++ code built with older compilers work together
>> >   with code built with newer compilers, it might require source code
>> >   changes (the abi_tag attribute additions where needed and warning
>> >   suggest to put those at), at least that is my current understanding
>> >   of the plans
>>
>> But that's only with -std=c++11?  Which had no compatibility
>> guarantees before?
>
> No, AFAIK it is also -std=c++98.  At least my understanding was that
> std::list and std::string are going to change ABI (and get new abi_tag)
> in all C++ modes.  Jonathan/Jason/Paolo, is that right?

Correct. We want C++03 code to continue to be able to interoperate
with C++11 code.

It's an ABI change for all modes (but not a SONAME change because the
old and new definitions will both be present in the .so).


Re: GCC version bikeshedding

2014-08-06 Thread Jakub Jelinek
On Wed, Aug 06, 2014 at 11:20:01AM +0200, Marc Glisse wrote:
> On Wed, 6 Aug 2014, Jakub Jelinek wrote:
> 
> >- libstdc++ ABI changes
> 
> It seems unlikely to be in the next release, it is too late in the cycle.
> Chances to break the ABI don't come often, and rushing one at the end of
> stage1 would be wasting a good opportunity.

AFAIK it has been planned for two or more years, so I would not say it is 
rushed.

Jakub


Re: GCC version bikeshedding

2014-08-06 Thread Marc Glisse

On Wed, 6 Aug 2014, Jakub Jelinek wrote:


- libstdc++ ABI changes


It seems unlikely to be in the next release, it is too late in the cycle. 
Chances to break the ABI don't come often, and rushing one at the end of 
stage1 would be wasting a good opportunity.


--
Marc Glisse


Re: GCC version bikeshedding

2014-08-06 Thread pinskia


> On Aug 6, 2014, at 2:10 AM, Marek Polacek  wrote:
> 
>> On Wed, Aug 06, 2014 at 11:04:14AM +0200, Richard Biener wrote:
>>> On Wed, Aug 6, 2014 at 10:48 AM, Jakub Jelinek  wrote:
>>> - libstdc++ ABI changes (it is a significant user visible change,
>>>  if you rebuild everything, no extra effort is needed, but otherwise
>>>  if you want some C++ code built with older compilers work together
>>>  with code built with newer compilers, it might require source code
>>>  changes (the abi_tag attribute additions where needed and warning
>>>  suggest to put those at), at least that is my current understanding
>>>  of the plans
>> 
>> But that's only with -std=c++11?  Which had no compatibility
>> guarantees before?
>> 
>>> - likely libgfortran ABI changes (different array descriptors)
>> 
>> Let's wait and see ...
>> 
>> We'll find a good reason to bump the major with every release.
>> Like for 4.9 LTO defaults to slim-objects, or C++ rejecting even more
>> invalid code, or libstdc++ header re-orgs, or defaulting to dwarf4+
>> (or even support for it), or VTA, or ...
>> 
>> Where do we set the barrier?  GCC isn't a C++ (or Fortran) compiler
>> only.
>> 
>> So if we change to 5.1 (please not .0) then let's switch the default
>> optimization level to -O2!  _That's_ a user-visible change across
>> the board.
> 
> I'm planning to move the default C standard from gnu90 to gnu11
> (Currently it's blocked on the -Wc90-c99-compat warning).
> That's a pretty big user-visible change as well, I suppose.

I don't think this is a good move due to extern inline and a lot of code is 
still k&r c and not even c90. 

Thanks,
Andrew

> 
>Marek


Re: GCC version bikeshedding

2014-08-06 Thread Marek Polacek
On Wed, Aug 06, 2014 at 11:04:14AM +0200, Richard Biener wrote:
> On Wed, Aug 6, 2014 at 10:48 AM, Jakub Jelinek  wrote:
> > - libstdc++ ABI changes (it is a significant user visible change,
> >   if you rebuild everything, no extra effort is needed, but otherwise
> >   if you want some C++ code built with older compilers work together
> >   with code built with newer compilers, it might require source code
> >   changes (the abi_tag attribute additions where needed and warning
> >   suggest to put those at), at least that is my current understanding
> >   of the plans
> 
> But that's only with -std=c++11?  Which had no compatibility
> guarantees before?
> 
> > - likely libgfortran ABI changes (different array descriptors)
> 
> Let's wait and see ...
> 
> We'll find a good reason to bump the major with every release.
> Like for 4.9 LTO defaults to slim-objects, or C++ rejecting even more
> invalid code, or libstdc++ header re-orgs, or defaulting to dwarf4+
> (or even support for it), or VTA, or ...
> 
> Where do we set the barrier?  GCC isn't a C++ (or Fortran) compiler
> only.
> 
> So if we change to 5.1 (please not .0) then let's switch the default
> optimization level to -O2!  _That's_ a user-visible change across
> the board.

I'm planning to move the default C standard from gnu90 to gnu11
(Currently it's blocked on the -Wc90-c99-compat warning).
That's a pretty big user-visible change as well, I suppose.

Marek


Re: GCC version bikeshedding

2014-08-06 Thread Jakub Jelinek
On Wed, Aug 06, 2014 at 11:04:14AM +0200, Richard Biener wrote:
> > - libstdc++ ABI changes (it is a significant user visible change,
> >   if you rebuild everything, no extra effort is needed, but otherwise
> >   if you want some C++ code built with older compilers work together
> >   with code built with newer compilers, it might require source code
> >   changes (the abi_tag attribute additions where needed and warning
> >   suggest to put those at), at least that is my current understanding
> >   of the plans
> 
> But that's only with -std=c++11?  Which had no compatibility
> guarantees before?

No, AFAIK it is also -std=c++98.  At least my understanding was that
std::list and std::string are going to change ABI (and get new abi_tag)
in all C++ modes.  Jonathan/Jason/Paolo, is that right?

Jakub


Re: GCC version bikeshedding

2014-08-06 Thread Richard Biener
On Wed, Aug 6, 2014 at 10:48 AM, Jakub Jelinek  wrote:
> On Wed, Aug 06, 2014 at 10:44:11AM +0200, Richard Biener wrote:
>> On Wed, Aug 6, 2014 at 9:42 AM, Jakub Jelinek  wrote:
>> > On Wed, Aug 06, 2014 at 09:25:48AM +0200, Eric Botcazou wrote:
>> >> > What do you propose that we do?
>> >>
>> >> Probably just jump to 5.0 (or 5.1) without the subsequent acceleration.
>> >
>> > That was my preference too.
>>
>> What singles out 5.0 to warrant an increase in the major number?
>>
>> If we don't change then please stay at 4.10, 4.11, 4.12, etc.
>
> - libstdc++ ABI changes (it is a significant user visible change,
>   if you rebuild everything, no extra effort is needed, but otherwise
>   if you want some C++ code built with older compilers work together
>   with code built with newer compilers, it might require source code
>   changes (the abi_tag attribute additions where needed and warning
>   suggest to put those at), at least that is my current understanding
>   of the plans

But that's only with -std=c++11?  Which had no compatibility
guarantees before?

> - likely libgfortran ABI changes (different array descriptors)

Let's wait and see ...

We'll find a good reason to bump the major with every release.
Like for 4.9 LTO defaults to slim-objects, or C++ rejecting even more
invalid code, or libstdc++ header re-orgs, or defaulting to dwarf4+
(or even support for it), or VTA, or ...

Where do we set the barrier?  GCC isn't a C++ (or Fortran) compiler
only.

So if we change to 5.1 (please not .0) then let's switch the default
optimization level to -O2!  _That's_ a user-visible change across
the board.

Richard.

> Jakub


Re: GCC version bikeshedding

2014-08-06 Thread Jakub Jelinek
On Wed, Aug 06, 2014 at 10:44:11AM +0200, Richard Biener wrote:
> On Wed, Aug 6, 2014 at 9:42 AM, Jakub Jelinek  wrote:
> > On Wed, Aug 06, 2014 at 09:25:48AM +0200, Eric Botcazou wrote:
> >> > What do you propose that we do?
> >>
> >> Probably just jump to 5.0 (or 5.1) without the subsequent acceleration.
> >
> > That was my preference too.
> 
> What singles out 5.0 to warrant an increase in the major number?
> 
> If we don't change then please stay at 4.10, 4.11, 4.12, etc.

- libstdc++ ABI changes (it is a significant user visible change,
  if you rebuild everything, no extra effort is needed, but otherwise
  if you want some C++ code built with older compilers work together
  with code built with newer compilers, it might require source code
  changes (the abi_tag attribute additions where needed and warning
  suggest to put those at), at least that is my current understanding
  of the plans
- likely libgfortran ABI changes (different array descriptors)

Jakub


Re: GCC version bikeshedding

2014-08-06 Thread Richard Biener
On Wed, Aug 6, 2014 at 9:42 AM, Jakub Jelinek  wrote:
> On Wed, Aug 06, 2014 at 09:25:48AM +0200, Eric Botcazou wrote:
>> > What do you propose that we do?
>>
>> Probably just jump to 5.0 (or 5.1) without the subsequent acceleration.
>
> That was my preference too.

What singles out 5.0 to warrant an increase in the major number?

If we don't change then please stay at 4.10, 4.11, 4.12, etc.

Richard.

> Jakub


Re: GCC version bikeshedding

2014-08-06 Thread Marek Polacek
On Wed, Aug 06, 2014 at 09:42:23AM +0200, Jakub Jelinek wrote:
> On Wed, Aug 06, 2014 at 09:25:48AM +0200, Eric Botcazou wrote:
> > > What do you propose that we do?
> > 
> > Probably just jump to 5.0 (or 5.1) without the subsequent acceleration.
> 
> That was my preference too.

FWIW, me too.  This way we'll get in a few years to 10.0 that was also 
suggested.
So please, can we finally settle on something? :)

Marek


Re: GCC version bikeshedding

2014-08-06 Thread Jakub Jelinek
On Wed, Aug 06, 2014 at 09:25:48AM +0200, Eric Botcazou wrote:
> > What do you propose that we do?
> 
> Probably just jump to 5.0 (or 5.1) without the subsequent acceleration.

That was my preference too.

Jakub


Re: GCC version bikeshedding

2014-08-06 Thread Eric Botcazou
> What do you propose that we do?

Probably just jump to 5.0 (or 5.1) without the subsequent acceleration.

> Step 1: We agree that the current major revision number conveys no
> information, and therefore we will change the major revision number
> with every release.  (I understand that you do not agree with this.)

Yes.

> Step 2: Assuming we agree about step 1, what should the next version
> number be?  Well, the current version is 4.9.  Therefore, the next
> version should be 5.0.  That seems entirely natural to me.  Having the
> next release be 10.0 would make no sense to anybody who is not an
> active GCC developer.

I also disagree with the last assertion (for example Sun did that for Solaris) 
but that's probably too much bikeshedding at this point.

-- 
Eric Botcazou


Re: GCC version bikeshedding

2014-07-31 Thread Ian Lance Taylor
On Thu, Jul 31, 2014 at 4:22 PM, Ed Smith-Rowland <3dw...@verizon.net> wrote:
> On 07/31/2014 07:03 PM, Ian Lance Taylor wrote:
>>
>> I believe the GCC project has become too large to be able to usefully
>> speak about breaking compatibility with previous versions.  There are
>> too many different moving parts.  We break compatibility in various
>> minor ways with every release.  We try pretty hard to never break
>> compatibility in a big way.  Historically, as far as I can recall, the
>> GCC major release number has never indicated a compatibility break
>> that was relevant to most users.
>>
> What about bumping the default compiler front end versions to C11 or C++11
> or C++14?  Even for bootstrap?
> There may be some breaking changes that are larger than the usual.

C++ is only one of several languages supported by GCC these days.
Changing the default C++ version will not affect Fortran, Java, or Ada
users.  Or, for that matter, C users.

Ian


Re: GCC version bikeshedding

2014-07-31 Thread Ed Smith-Rowland

On 07/31/2014 07:03 PM, Ian Lance Taylor wrote:

On Thu, Jul 31, 2014 at 4:52 AM, NightStrike  wrote:

One thing you might want to consider is that with the typical X.Y.Z
versioning of most GNU projects, changing X allows breaking
compatibility in a significant way with previous versions.  While Z
fixes regressions and Y adds new features, X is a place to make
infrequent but paradigm shifting changes that are unconstrained by a
desire to stay backwards compatible with older values of X.

By going to what is essentially a Y.Z.0 release mechanism, you lose
that ability to some degree.  Maybe that's ok in a mature project like
GCC.

I believe the GCC project has become too large to be able to usefully
speak about breaking compatibility with previous versions.  There are
too many different moving parts.  We break compatibility in various
minor ways with every release.  We try pretty hard to never break
compatibility in a big way.  Historically, as far as I can recall, the
GCC major release number has never indicated a compatibility break
that was relevant to most users.

Ian

What about bumping the default compiler front end versions to C11 or 
C++11 or C++14?  Even for bootstrap?

There may be some breaking changes that are larger than the usual.

FWIW, I do not object to going to 5.0, 6.0.

Ed


Re: GCC version bikeshedding

2014-07-31 Thread Ian Lance Taylor
On Tue, Jul 29, 2014 at 9:45 AM, Eric Botcazou  wrote:
>> I think that if anybody has strong objections, now is the time to make
>> them.  Otherwise I think we should go with this plan.
>
> IMHO the cure is worse than the disease.

What do you propose that we do?


>> Given that there is no clear reason to ever change the major version
>> number, making that change will not convey any useful information to
>> our users.  So let's just drop the major version number.  Once we've
>> made that decision, then the next release (in 2015) naturally becomes
>> 5.0, the release after that (in 2016) becomes 6.0, etc.
>
> I don't really understand the "naturally": if you drop the major version
> number, the next release should be 10.0, not 5.0.  Here we seem to be leaning
> towards a weird scheme where we retain the major version number but change its
> meaning, which will be even more confusing than the current scheme.

Step 1: We agree that the current major revision number conveys no
information, and therefore we will change the major revision number
with every release.  (I understand that you do not agree with this.)

Step 2: Assuming we agree about step 1, what should the next version
number be?  Well, the current version is 4.9.  Therefore, the next
version should be 5.0.  That seems entirely natural to me.  Having the
next release be 10.0 would make no sense to anybody who is not an
active GCC developer.

Ian


Re: GCC version bikeshedding

2014-07-31 Thread Ian Lance Taylor
On Tue, Jul 29, 2014 at 10:27 AM, Markus Trippelsdorf
 wrote:
> On 2014.07.29 at 19:14 +0200, Richard Biener wrote:
>> On July 29, 2014 6:45:13 PM CEST, Eric Botcazou  
>> wrote:
>> >> I think that if anybody has strong objections, now is the time to
>> >make
>> >> them.  Otherwise I think we should go with this plan.
>> >
>> >IMHO the cure is worse than the disease.
>> >
>> >> Given that there is no clear reason to ever change the major version
>> >> number, making that change will not convey any useful information to
>> >> our users.  So let's just drop the major version number.  Once we've
>> >> made that decision, then the next release (in 2015) naturally becomes
>> >> 5.0, the release after that (in 2016) becomes 6.0, etc.
>> >
>> >I don't really understand the "naturally": if you drop the major
>> >version
>> >number, the next release should be 10.0, not 5.0.
>>
>> 10.0 would be even better from a marketing perspective.
>
> Since gcc is released annually why not tie the version to the year of
> the release, instead of choosing an arbitrary number?
>
> 15.o

Personally I would prefer that we retain the ability to make more
rapid releases.

Ian


Re: GCC version bikeshedding

2014-07-31 Thread Ian Lance Taylor
On Thu, Jul 31, 2014 at 4:52 AM, NightStrike  wrote:
>
> One thing you might want to consider is that with the typical X.Y.Z
> versioning of most GNU projects, changing X allows breaking
> compatibility in a significant way with previous versions.  While Z
> fixes regressions and Y adds new features, X is a place to make
> infrequent but paradigm shifting changes that are unconstrained by a
> desire to stay backwards compatible with older values of X.
>
> By going to what is essentially a Y.Z.0 release mechanism, you lose
> that ability to some degree.  Maybe that's ok in a mature project like
> GCC.

I believe the GCC project has become too large to be able to usefully
speak about breaking compatibility with previous versions.  There are
too many different moving parts.  We break compatibility in various
minor ways with every release.  We try pretty hard to never break
compatibility in a big way.  Historically, as far as I can recall, the
GCC major release number has never indicated a compatibility break
that was relevant to most users.

Ian


Re: GCC version bikeshedding

2014-07-31 Thread NightStrike
On Wed, Jul 30, 2014 at 8:00 PM, Jonathan Wakely  wrote:
> On 30 July 2014 23:18, Eric Botcazou wrote:
>>> What are you objecting to, calling the next release from trunk 5.0,
>>> and the next one after that 6.0? Or the wording chosen to describe the
>>> new versioning scheme?
>>
>> Let's not start another subthread, please, this will be even more confusing.
>
> I'm not. I'm trying to get your message back on topic.
>
>> You can reply to my reply to Ian's message if you deem it necessary.
>
> Are you objecting to the numbering scheme, or Ian's description of it?
>
> If you have an objection to the concrete plan it would be nice if you
> stated clearly what it is.

One thing you might want to consider is that with the typical X.Y.Z
versioning of most GNU projects, changing X allows breaking
compatibility in a significant way with previous versions.  While Z
fixes regressions and Y adds new features, X is a place to make
infrequent but paradigm shifting changes that are unconstrained by a
desire to stay backwards compatible with older values of X.

By going to what is essentially a Y.Z.0 release mechanism, you lose
that ability to some degree.  Maybe that's ok in a mature project like
GCC.


Re: GCC version bikeshedding

2014-07-30 Thread Jonathan Wakely
On 30 July 2014 23:18, Eric Botcazou wrote:
>> What are you objecting to, calling the next release from trunk 5.0,
>> and the next one after that 6.0? Or the wording chosen to describe the
>> new versioning scheme?
>
> Let's not start another subthread, please, this will be even more confusing.

I'm not. I'm trying to get your message back on topic.

> You can reply to my reply to Ian's message if you deem it necessary.

Are you objecting to the numbering scheme, or Ian's description of it?

If you have an objection to the concrete plan it would be nice if you
stated clearly what it is.


Re: GCC version bikeshedding

2014-07-30 Thread Eric Botcazou
> What are you objecting to, calling the next release from trunk 5.0,
> and the next one after that 6.0? Or the wording chosen to describe the
> new versioning scheme?

Let's not start another subthread, please, this will be even more confusing.

You can reply to my reply to Ian's message if you deem it necessary.

-- 
Eric Botcazou


Re: GCC version bikeshedding

2014-07-29 Thread Jonathan Wakely
On 29 July 2014 21:58, Eric Botcazou wrote:
>> How does it change meaning?  It's still the major number, just
>> incremented more often.
>
> Reread Ian's post, the original idea is to drop the major version number.

I think you're confusing the topic now.

What are you objecting to, calling the next release from trunk 5.0,
and the next one after that 6.0? Or the wording chosen to describe the
new versioning scheme?


Re: GCC version bikeshedding

2014-07-29 Thread Eric Botcazou
> How does it change meaning?  It's still the major number, just
> incremented more often.

Reread Ian's post, the original idea is to drop the major version number.

-- 
Eric Botcazou


Re: GCC version bikeshedding

2014-07-29 Thread Joern Rennecke
On 29 July 2014 19:29, Joern Rennecke  wrote:
> E.g. A GCC release on the 1st April 2015 at 09:00 UTC is made
> 90 days and 9 hours after the start of the year, and should thus carry
> the version number  2015.24760274

P.S.: a patchlevel  release in a subsequent year can be marked by increasing
the first digit after the decimal point beyond nine into the
hexadecimal ream and beyond.
So a patchlevel release of gcc 2015.x .on 1st Juy 2018 12:00 UTC
would have version number 2015.Y9726027 .


Re: GCC version bikeshedding

2014-07-29 Thread Joern Rennecke
On 29 July 2014 18:30, Markus Trippelsdorf  wrote:
> Since gcc is released annually, why not tie the version to the year of
> the release, instead of choosing an arbitrary number?
>
> 15.o

What did the Romans every do for us?  Release GCC XV, obviously...
Unfortunately, they couldn't release *.0 versions, for lack of a zero.

Now, if we are talking about the coming year, that would be 2015.
And since we use decimal numbers these days, that should be
reflected in version numbers of releases tagged anytime other
than 00:00 new years day.

A year without leap days/seconds has 365 days of 24 hours of 3600
seconds, so for second accuracy, we need eight digits after the
decimal point.

E.g. A GCC release on the 1st April 2015 at 09:00 UTC is made
90 days and 9 hours after the start of the year, and should thus carry
the version number  2015.24760274


Re: GCC version bikeshedding

2014-07-29 Thread Markus Trippelsdorf
On 2014.07.29 at 19:14 +0200, Richard Biener wrote:
> On July 29, 2014 6:45:13 PM CEST, Eric Botcazou  
> wrote:
> >> I think that if anybody has strong objections, now is the time to
> >make
> >> them.  Otherwise I think we should go with this plan.
> >
> >IMHO the cure is worse than the disease.
> >
> >> Given that there is no clear reason to ever change the major version
> >> number, making that change will not convey any useful information to
> >> our users.  So let's just drop the major version number.  Once we've
> >> made that decision, then the next release (in 2015) naturally becomes
> >> 5.0, the release after that (in 2016) becomes 6.0, etc.
> >
> >I don't really understand the "naturally": if you drop the major
> >version 
> >number, the next release should be 10.0, not 5.0. 
> 
> 10.0 would be even better from a marketing perspective.

Since gcc is released annually why not tie the version to the year of
the release, instead of choosing an arbitrary number? 

15.o

-- 
Markus


Re: GCC version bikeshedding

2014-07-29 Thread Joern Rennecke
On 29 July 2014 18:14, Richard Biener  wrote:
> On July 29, 2014 6:45:13 PM CEST, Eric Botcazou  
> wrote:
>>> I think that if anybody has strong objections, now is the time to
>>make
>>> them.  Otherwise I think we should go with this plan.
>>
>>IMHO the cure is worse than the disease.
>>
>>> Given that there is no clear reason to ever change the major version
>>> number, making that change will not convey any useful information to
>>> our users.  So let's just drop the major version number.  Once we've
>>> made that decision, then the next release (in 2015) naturally becomes
>>> 5.0, the release after that (in 2016) becomes 6.0, etc.
>>
>>I don't really understand the "naturally": if you drop the major
>>version
>>number, the next release should be 10.0, not 5.0.
>
> 10.0 would be even better from a marketing perspective.

So if we want version number inflation with plausible deniability, how
about we first increment the miner version number - so we get 4.10.0,
and then we concatenate major and minor version number, yielding
410.0


Re: GCC version bikeshedding

2014-07-29 Thread Richard Biener
On July 29, 2014 6:45:13 PM CEST, Eric Botcazou  
wrote:
>> I think that if anybody has strong objections, now is the time to
>make
>> them.  Otherwise I think we should go with this plan.
>
>IMHO the cure is worse than the disease.
>
>> Given that there is no clear reason to ever change the major version
>> number, making that change will not convey any useful information to
>> our users.  So let's just drop the major version number.  Once we've
>> made that decision, then the next release (in 2015) naturally becomes
>> 5.0, the release after that (in 2016) becomes 6.0, etc.
>
>I don't really understand the "naturally": if you drop the major
>version 
>number, the next release should be 10.0, not 5.0. 

10.0 would be even better from a marketing perspective.

Richard.

Here we seem to be
>leaning 
>towards a weird scheme where we retain the major version number but
>change its 
>meaning, which will be even more confusing than the current scheme.




Re: GCC version bikeshedding

2014-07-29 Thread Andreas Schwab
Eric Botcazou  writes:

> Here we seem to be leaning towards a weird scheme where we retain the
> major version number but change its meaning, which will be even more
> confusing than the current scheme.

How does it change meaning?  It's still the major number, just
incremented more often.

Andreas.

-- 
Andreas Schwab, sch...@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."


Re: GCC version bikeshedding

2014-07-29 Thread Eric Botcazou
> I think that if anybody has strong objections, now is the time to make
> them.  Otherwise I think we should go with this plan.

IMHO the cure is worse than the disease.

> Given that there is no clear reason to ever change the major version
> number, making that change will not convey any useful information to
> our users.  So let's just drop the major version number.  Once we've
> made that decision, then the next release (in 2015) naturally becomes
> 5.0, the release after that (in 2016) becomes 6.0, etc.

I don't really understand the "naturally": if you drop the major version 
number, the next release should be 10.0, not 5.0.  Here we seem to be leaning 
towards a weird scheme where we retain the major version number but change its 
meaning, which will be even more confusing than the current scheme.

-- 
Eric Botcazou


Re: GCC version bikeshedding

2014-07-26 Thread Andreas Schwab
Steven Bosscher  writes:

> Cut the major version number. Solaris 2.9 was marketed as Solaris 9.
> Likewise for Solaris 2.10 and 2.11. They simply dropped the 2 from the
> version number

Which has nothing to do with gcc.

Andreas.

-- 
Andreas Schwab, sch...@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."


Re: GCC version bikeshedding

2014-07-26 Thread Steven Bosscher
On Sat, Jul 26, 2014 at 7:57 PM, Andreas Schwab wrote:
> NightStrike writes:
>
>> On Jul 26, 2014 9:26 AM, "Andreas Schwab" wrote:
>>>
>>> pinskia writes:
>>>
>>> >> On Jul 23, 2014, at 9:51 AM, Andreas Schwab wrote:
>>> >>
>>> >> Ian Lance Taylor writes:
>>> >>
>>> >>> At the same time, we face the fact that going from 4.9 to 4.10 will
>>> >>> break some people's existing scripts, as is also true of any other
>>> >>> decision we can make.
>>> >>
>>> >> Looking forward to gcc 10.0. :-)
>>> >
>>> > So are following what sun did?
>>>
>>> What does this have to do with sun?
>>>
>>
>> It's what sun did for Java and I think Solaris
>
> Did what?


Cut the major version number. Solaris 2.9 was marketed as Solaris 9.
Likewise for Solaris 2.10 and 2.11. They simply dropped the 2 from the
version number

Ciao!
Steven


Re: GCC version bikeshedding

2014-07-26 Thread Andreas Schwab
NightStrike  writes:

> On Jul 26, 2014 9:26 AM, "Andreas Schwab"  wrote:
>>
>> pins...@gmail.com writes:
>>
>> >> On Jul 23, 2014, at 9:51 AM, Andreas Schwab 
> wrote:
>> >>
>> >> Ian Lance Taylor  writes:
>> >>
>> >>> At the same time, we face the fact that going from 4.9 to 4.10 will
>> >>> break some people's existing scripts, as is also true of any other
>> >>> decision we can make.
>> >>
>> >> Looking forward to gcc 10.0. :-)
>> >
>> > So are following what sun did?
>>
>> What does this have to do with sun?
>>
>
> It's what sun did for Java and I think Solaris

Did what?

Andreas.

-- 
Andreas Schwab, sch...@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."


Re: GCC version bikeshedding

2014-07-26 Thread Andreas Schwab
pins...@gmail.com writes:

>> On Jul 23, 2014, at 9:51 AM, Andreas Schwab  wrote:
>> 
>> Ian Lance Taylor  writes:
>> 
>>> At the same time, we face the fact that going from 4.9 to 4.10 will
>>> break some people's existing scripts, as is also true of any other
>>> decision we can make.
>> 
>> Looking forward to gcc 10.0. :-)
>
> So are following what sun did?

What does this have to do with sun?

Andreas.

-- 
Andreas Schwab, sch...@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."


Re: GCC version bikeshedding

2014-07-25 Thread Richard Biener
On Thu, Jul 24, 2014 at 5:38 PM, Jeff Law  wrote:
> On 07/23/14 10:20, Ian Lance Taylor wrote:
>>
>> I am also fine with it.
>>
>> I think that if anybody has strong objections, now is the time to make
>> them.  Otherwise I think we should go with this plan.
>>
>> To me, the basic summary of the idea is that there is no clear reason
>> to ever change the GCC major version number.  There were real
>> objections to changing it when we went from 3 to 4.  There will be
>> real objections for any future change from 4 to 5.  At the same time,
>> we face the fact that going from 4.9 to 4.10 will break some people's
>> existing scripts, as is also true of any other decision we can make.
>>
>> Given that there is no clear reason to ever change the major version
>> number, making that change will not convey any useful information to
>> our users.  So let's just drop the major version number.  Once we've
>> made that decision, then the next release (in 2015) naturally becomes
>> 5.0, the release after that (in 2016) becomes 6.0, etc.
>
> Agreed.   It's not 100% perfect, but, IMHO, it's significantly better than
> what we're doing now and better than the various alternatives that have been
> proposed.

If a native speaker can cook something up for the head of gcc-5/changes.html
about this change that would be nice.  (yes, gcc-5/, not gcc-5.0/ ...)

Richard.

> Jeff


Re: GCC version bikeshedding

2014-07-24 Thread Jeff Law

On 07/23/14 10:20, Ian Lance Taylor wrote:

I am also fine with it.

I think that if anybody has strong objections, now is the time to make
them.  Otherwise I think we should go with this plan.

To me, the basic summary of the idea is that there is no clear reason
to ever change the GCC major version number.  There were real
objections to changing it when we went from 3 to 4.  There will be
real objections for any future change from 4 to 5.  At the same time,
we face the fact that going from 4.9 to 4.10 will break some people's
existing scripts, as is also true of any other decision we can make.

Given that there is no clear reason to ever change the major version
number, making that change will not convey any useful information to
our users.  So let's just drop the major version number.  Once we've
made that decision, then the next release (in 2015) naturally becomes
5.0, the release after that (in 2016) becomes 6.0, etc.
Agreed.   It's not 100% perfect, but, IMHO, it's significantly better 
than what we're doing now and better than the various alternatives that 
have been proposed.


Jeff


Re: GCC version bikeshedding

2014-07-24 Thread Richard Biener
On Wed, Jul 23, 2014 at 10:00 PM, Jakub Jelinek  wrote:
> On Wed, Jul 23, 2014 at 09:20:23AM -0700, Ian Lance Taylor wrote:
>> I think that if anybody has strong objections, now is the time to make
>> them.  Otherwise I think we should go with this plan.
>
> My preference was to keep the current versioning scheme, after all, even
> right now it is IMHO worthwhile to tell users about to significant user
> visible change with libstdc++ ABI.
> But not a strong objection from me.

The point is we have significant user visible changes for each release.
Where the "significance" is of course a subjective matter.

The other thing I could have lived with is doing 4.10.0 (and keeping
the major at 4 forever).  But "randomly" bumping the major version
looks crap to me, esp. as 5.0.0 will be seen as very very experimental.

Richard.

> Jakub


Re: GCC version bikeshedding

2014-07-23 Thread Jakub Jelinek
On Wed, Jul 23, 2014 at 09:20:23AM -0700, Ian Lance Taylor wrote:
> I think that if anybody has strong objections, now is the time to make
> them.  Otherwise I think we should go with this plan.

My preference was to keep the current versioning scheme, after all, even
right now it is IMHO worthwhile to tell users about to significant user
visible change with libstdc++ ABI.
But not a strong objection from me.

Jakub


Re: GCC version bikeshedding

2014-07-23 Thread pinskia


> On Jul 23, 2014, at 9:51 AM, Andreas Schwab  wrote:
> 
> Ian Lance Taylor  writes:
> 
>> At the same time, we face the fact that going from 4.9 to 4.10 will
>> break some people's existing scripts, as is also true of any other
>> decision we can make.
> 
> Looking forward to gcc 10.0. :-)

So are following what sun did?

> 
> Andreas.
> 
> -- 
> Andreas Schwab, sch...@linux-m68k.org
> GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
> "And now for something completely different."


Re: GCC version bikeshedding

2014-07-23 Thread Andreas Schwab
Ian Lance Taylor  writes:

> At the same time, we face the fact that going from 4.9 to 4.10 will
> break some people's existing scripts, as is also true of any other
> decision we can make.

Looking forward to gcc 10.0. :-)

Andreas.

-- 
Andreas Schwab, sch...@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."


Re: GCC version bikeshedding

2014-07-23 Thread Ian Lance Taylor
On Wed, Jul 23, 2014 at 3:28 AM, Jason Merrill  wrote:
> On 07/20/2014 06:01 PM, Jakub Jelinek wrote:
>>
>> On Sun, Jul 20, 2014 at 05:59:08PM +0100, Richard Biener wrote:
>>>
>>> I understood we agreed on 5.0 and further 5.1, 5.2 releases from the
>>> branch and 6.0 a year later.  With unspecified uses for the patch level
>>> number (so leave it at zero).
>>
>>
>> Ian/Jason, is that your understanding too?
>
>
> I didn't think that we had come to a decision, but I don't mind going ahead
> with this pattern.

I am also fine with it.

I think that if anybody has strong objections, now is the time to make
them.  Otherwise I think we should go with this plan.

To me, the basic summary of the idea is that there is no clear reason
to ever change the GCC major version number.  There were real
objections to changing it when we went from 3 to 4.  There will be
real objections for any future change from 4 to 5.  At the same time,
we face the fact that going from 4.9 to 4.10 will break some people's
existing scripts, as is also true of any other decision we can make.

Given that there is no clear reason to ever change the major version
number, making that change will not convey any useful information to
our users.  So let's just drop the major version number.  Once we've
made that decision, then the next release (in 2015) naturally becomes
5.0, the release after that (in 2016) becomes 6.0, etc.

Ian


Re: GCC version bikeshedding

2014-07-23 Thread Jason Merrill

On 07/20/2014 06:01 PM, Jakub Jelinek wrote:

On Sun, Jul 20, 2014 at 05:59:08PM +0100, Richard Biener wrote:

I understood we agreed on 5.0 and further 5.1, 5.2 releases from the
branch and 6.0 a year later.  With unspecified uses for the patch level
number (so leave it at zero).


Ian/Jason, is that your understanding too?


I didn't think that we had come to a decision, but I don't mind going 
ahead with this pattern.


Jason



Re: GCC version bikeshedding

2014-07-23 Thread Richard Biener
On Wed, Jul 23, 2014 at 4:27 AM, Segher Boessenkool
 wrote:
> On Tue, Jul 22, 2014 at 08:44:41AM +0100, Richard Sandiford wrote:
>> So why
>> not just stick to the current scheme and have 5.0.0, 5.0.1, 5.0.2 etc.?
>
> Yes, why would we use a different numbering scheme now?  There is no change
> in development / release planning, unless I missed something.  Is this just
> to have bigger number than the "competition"?  Or is it change for change's
> sake?  Are there no more important things to be done?

It's to avoid the need to decide whether to bump the major version.
For example for the next release I don't see a particularly good reason
to bump from 4.9 to 5.0 - not a reason that wasn't present when going
from 4.8 to 4.9.  And going from 4.9 to 5.0 suggests that 5.0 is
not as stable as 4.9 while in reality our "major" version doesn't carry
any useful information.

Thus, as 4.10.0 is as bad for existing scripts as 5.0.0 take the opportunity
to get rid of that no-information-carrying "major" number (by making
the patchlevel version unused).

And yes, it also looks nicer marketing-wise - but that's not the reason
to change it.

Richard.

>
> Segher


Re: GCC version bikeshedding

2014-07-22 Thread Segher Boessenkool
On Tue, Jul 22, 2014 at 08:44:41AM +0100, Richard Sandiford wrote:
> So why
> not just stick to the current scheme and have 5.0.0, 5.0.1, 5.0.2 etc.?

Yes, why would we use a different numbering scheme now?  There is no change
in development / release planning, unless I missed something.  Is this just
to have bigger number than the "competition"?  Or is it change for change's
sake?  Are there no more important things to be done?


Segher


Re: GCC version bikeshedding

2014-07-22 Thread Marek Polacek
On Sun, Jul 20, 2014 at 07:01:46PM +0200, Jakub Jelinek wrote:
> Ian/Jason, is that your understanding too?  In any case, we should mention
> it on gcc.gnu.org/index.html, in develop.html and perhaps a few other spots.

Also it'd be nice to create htdocs/gcc-5.0/changes.html, so we can
start adding new features there.  Gerald?

Marek


Re: GCC version bikeshedding

2014-07-22 Thread Richard Biener
On Tue, Jul 22, 2014 at 10:07 AM, Andreas Schwab  wrote:
> Richard Sandiford  writes:
>
>> Andreas Schwab  writes:
>>> Richard Sandiford  writes:
 So if x.y.z is __GNU__.__GNU_MINOR__.__GNU_PATCHLEVEL__ then the positions
 in the number stay the same but the meanings of __GNU_MINOR__ and
 __GNU_PATCHLEVEL__ change.
>>>
>>> There is no change in meaning.
>>
>> Sure there is, in terms of the release progression.  The whole point of
>> the discussion is that what used to be the "patchlevel" would become
>> the "minor version".
>
> The patchlevel remains the patchlevel, which is the third part of the
> version number.  It's no longer modified by the offcial releases, but
> that doesn't change its meaning.

Btw, we'd have the opportunity to fix one long-standing issue with our
versioning.  Once we release 4.9.1 the branch becomes 4.9.2 (prerelease)
but any version checking using __GNU_PATCHLEVEL__ checking for a
fix that went into the 4.9.2 release will not work for snapshots between
the 4.9.1 and the 4.9.2 releases.  Now we'd have the opportunity to
encode "prerelease" vs. "" vs. "experimental" with the patchlevel.
Say the first release from the branch will be 5.1.0 and immediately after
it we bump to 5.1.1 (_not_ 5.2.0 as we do now).  For the next release
(and a single SVN revision) we bump to 5.2.0 and then immediately
to 5.2.1.  And we don't have to call it "prerelease" then (which sounds
bad, worse than "postrelease" and not changing the version).

Richard.


> Andreas.
>
> --
> Andreas Schwab, SUSE Labs, sch...@suse.de
> GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE  1748 E4D4 88E3 0EEA B9D7
> "And now for something completely different."


Re: GCC version bikeshedding

2014-07-22 Thread Andreas Schwab
Richard Sandiford  writes:

> Andreas Schwab  writes:
>> Richard Sandiford  writes:
>>> So if x.y.z is __GNU__.__GNU_MINOR__.__GNU_PATCHLEVEL__ then the positions
>>> in the number stay the same but the meanings of __GNU_MINOR__ and
>>> __GNU_PATCHLEVEL__ change.
>>
>> There is no change in meaning.
>
> Sure there is, in terms of the release progression.  The whole point of
> the discussion is that what used to be the "patchlevel" would become
> the "minor version".

The patchlevel remains the patchlevel, which is the third part of the
version number.  It's no longer modified by the offcial releases, but
that doesn't change its meaning.

Andreas.

-- 
Andreas Schwab, SUSE Labs, sch...@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE  1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."


Re: GCC version bikeshedding

2014-07-22 Thread Richard Sandiford
Andreas Schwab  writes:
> Richard Sandiford  writes:
>> So if x.y.z is __GNU__.__GNU_MINOR__.__GNU_PATCHLEVEL__ then the positions
>> in the number stay the same but the meanings of __GNU_MINOR__ and
>> __GNU_PATCHLEVEL__ change.
>
> There is no change in meaning.

Sure there is, in terms of the release progression.  The whole point of
the discussion is that what used to be the "patchlevel" would become
the "minor version".

Richard



Re: GCC version bikeshedding

2014-07-22 Thread Andreas Schwab
Richard Sandiford  writes:

> So if x.y.z is __GNU__.__GNU_MINOR__.__GNU_PATCHLEVEL__ then the positions
> in the number stay the same but the meanings of __GNU_MINOR__ and
> __GNU_PATCHLEVEL__ change.

There is no change in meaning.  .. stays the
same.

Andreas.

-- 
Andreas Schwab, sch...@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."


Re: GCC version bikeshedding

2014-07-21 Thread Eric Botcazou
> Was this a Cauldron thing?  Could you summarise it for the people who
> weren't there?  I don't strongly object, but it seems like unnecessary
> churn (especially in terms of user expectations).

Yeah, bumping the major version number every year is a bit ridiculous.  Not as 
ridiculous as Firefox, but still.

-- 
Eric Botcazou


Re: GCC version bikeshedding

2014-07-21 Thread Diego Novillo
On Mon, Jul 21, 2014 at 10:30 AM, Alec Teal  wrote:

> Agreed (no experience, but I wouldn't want to live in a world where what
> Andi
> describes is the case!)

We already live in that world. This would not change that. I quite
like the proposal.

> What is "Bikeshedding"? I've not heard this term before and a quick search
> showed
> some weird things, and this very thread!

Derived from Parkinson's Law of Triviality
(http://en.wikipedia.org/wiki/Parkinson's_law_of_triviality). Boils
down to giving more weight to trivial aspects of a discussion.


Diego.


Re: GCC version bikeshedding

2014-07-21 Thread Alec Teal

On 20/07/14 22:28, Andi Kleen wrote:

Paulo Matos  writes:

That's what I understood as well. Someone mentioned to leave the patch
level number to the distros to use which sounded like a good idea.

Sounds like a bad idea, as then there would be non unique gcc versions.
redhat gcc 5.0.2 potentially being completely different from suse gcc
5.0.2
Agreed (no experience, but I wouldn't want to live in a world where what 
Andi

describes is the case!)


-Andi
What is "Bikeshedding"? I've not heard this term before and a quick 
search showed

some weird things, and this very thread!

Alec



Re: GCC version bikeshedding

2014-07-21 Thread Andreas Schwab
Andi Kleen  writes:

> Sounds like a bad idea, as then there would be non unique gcc versions.
> redhat gcc 5.0.2 potentially being completely different from suse gcc
> 5.0.2

How is that different from now?

Andreas.

-- 
Andreas Schwab, SUSE Labs, sch...@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE  1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."


RE: GCC version bikeshedding

2014-07-21 Thread Paulo Matos


> -Original Message-
> From: gcc-ow...@gcc.gnu.org [mailto:gcc-ow...@gcc.gnu.org] On Behalf
> Of Andi Kleen
> Sent: 20 July 2014 22:29
> To: Paulo Matos
> Cc: gcc@gcc.gnu.org
> Subject: Re: GCC version bikeshedding
> 
> Paulo Matos  writes:
> >
> > That's what I understood as well. Someone mentioned to leave the
> patch
> > level number to the distros to use which sounded like a good idea.
> 
> Sounds like a bad idea, as then there would be non unique gcc
> versions.
> redhat gcc 5.0.2 potentially being completely different from suse gcc
> 5.0.2
> 

I understand your concern but I am not convinced it's bad. The main reason for 
this is that we wouldn't distribute GCCs x.y.z with z != 0 so if you would see 
5.0.3 in the wild then you could only conclude it's 5.0 with a few patches from 
some vendor. As I type this I am starting to think how frustrating this might 
become. However, isn't it the case that nowadays you can have different gcc 
4.9.1-2 distributed from different distros? The default gcc in my linode shows: 
gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)

So, I can't see why in the future you couldn't have:
Gcc version 5.1 (Ubuntu/Linaro 5.1.3)

This is only if the release managers want to assign the patch level number to 
distros. I don't think there was a decision on this.

Paulo Matos


Re: GCC version bikeshedding

2014-07-20 Thread Andi Kleen
Paulo Matos  writes:
>
> That's what I understood as well. Someone mentioned to leave the patch
> level number to the distros to use which sounded like a good idea.

Sounds like a bad idea, as then there would be non unique gcc versions.
redhat gcc 5.0.2 potentially being completely different from suse gcc
5.0.2

-Andi



Re: GCC version bikeshedding

2014-07-20 Thread Geert Bosch

On Jul 20, 2014, at 5:55 PM, Jakub Jelinek  wrote:

> So, what versioning scheme have we actually agreed on, before I change it in
> wwwdocs?  Is that
> 5.0.0 in ~ April 2015, 5.0.1 in ~ June-July 2015 and 5.1.0 in ~ April 2016,
> or
> 5.0 in ~ April 2015, 5.1 in ~ June-July 2015 and 6.0 in ~ April 2016?
> The only thing I understood was that we don't want 4.10, but for the rest
> various people expressed different preferences and then it was presented as
> agreement on 5.0, which applies to both of the above.

Can we use the switch to 5.0, a supposedly stable C++11 ABI etc,
also as an excuse to finally configure for --with-sse2 by default 
for 32-bit x86? Maybe then we can finally retire PR 323 and its 
dozens of duplicates...

  -Geert


Re: GCC version bikeshedding

2014-07-20 Thread Paulo Matos

On 20/07/14 17:59, Richard Biener wrote:

On July 20, 2014 5:55:06 PM GMT+01:00, Jakub Jelinek  wrote:

Hi!

So, what versioning scheme have we actually agreed on, before I change
it in
wwwdocs?  Is that
5.0.0 in ~ April 2015, 5.0.1 in ~ June-July 2015 and 5.1.0 in ~ April
2016,
or
5.0 in ~ April 2015, 5.1 in ~ June-July 2015 and 6.0 in ~ April 2016?
The only thing I understood was that we don't want 4.10, but for the
rest
various people expressed different preferences and then it was
presented as
agreement on 5.0, which applies to both of the above.

It is not a big deal either way of course.


I understood we agreed on 5.0 and further 5.1, 5.2 releases from the branch and 
6.0 a year later. With unspecified uses for the patch level number (so leave it 
at zero).



That's what I understood as well. Someone mentioned to leave the patch 
level number to the distros to use which sounded like a good idea.


Paulo Matos


Richard.


Jakub









Re: GCC version bikeshedding

2014-07-20 Thread Jakub Jelinek
On Sun, Jul 20, 2014 at 05:59:08PM +0100, Richard Biener wrote:
> >So, what versioning scheme have we actually agreed on, before I change
> >it in
> >wwwdocs?  Is that
> >5.0.0 in ~ April 2015, 5.0.1 in ~ June-July 2015 and 5.1.0 in ~ April
> >2016,
> >or
> >5.0 in ~ April 2015, 5.1 in ~ June-July 2015 and 6.0 in ~ April 2016?
> >The only thing I understood was that we don't want 4.10, but for the
> >rest
> >various people expressed different preferences and then it was
> >presented as
> >agreement on 5.0, which applies to both of the above.
> >
> >It is not a big deal either way of course.
> 
> I understood we agreed on 5.0 and further 5.1, 5.2 releases from the
> branch and 6.0 a year later.  With unspecified uses for the patch level
> number (so leave it at zero).

Ian/Jason, is that your understanding too?  In any case, we should mention
it on gcc.gnu.org/index.html, in develop.html and perhaps a few other spots.

Jakub


Re: GCC version bikeshedding

2014-07-20 Thread Richard Biener
On July 20, 2014 5:55:06 PM GMT+01:00, Jakub Jelinek  wrote:
>Hi!
>
>So, what versioning scheme have we actually agreed on, before I change
>it in
>wwwdocs?  Is that
>5.0.0 in ~ April 2015, 5.0.1 in ~ June-July 2015 and 5.1.0 in ~ April
>2016,
>or
>5.0 in ~ April 2015, 5.1 in ~ June-July 2015 and 6.0 in ~ April 2016?
>The only thing I understood was that we don't want 4.10, but for the
>rest
>various people expressed different preferences and then it was
>presented as
>agreement on 5.0, which applies to both of the above.
>
>It is not a big deal either way of course.

I understood we agreed on 5.0 and further 5.1, 5.2 releases from the branch and 
6.0 a year later. With unspecified uses for the patch level number (so leave it 
at zero).

Richard.

>   Jakub