[htdocs,1/2] bugs: improve "ABI changes" subsection

Message ID b6e287020885b6d0faaa1a3eb91f7469b15f9806.1739351793.git.sam@gentoo.org
State New
Headers
Series [htdocs,1/2] bugs: improve "ABI changes" subsection |

Checks

Context Check Description
linaro-tcwg-bot/tcwg_simplebootstrap_build--master-arm-bootstrap fail Patch failed to apply
linaro-tcwg-bot/tcwg_simplebootstrap_build--master-aarch64-bootstrap fail Patch failed to apply
linaro-tcwg-bot/tcwg_gcc_build--master-aarch64 fail Patch failed to apply

Commit Message

Sam James Feb. 12, 2025, 9:16 a.m. UTC
  C++ ABI for C++ standards with full support by GCC (rather than those
marked as experimental per https://gcc.gnu.org/projects/cxx-status.html)
should be stable. It's certainly not the case in 2025 that one needs a
full world rebuild for C++ libraries using e.g. the default standard
or any other supported standard by C++, unless it is marked experimental
where we provide no guarantees.
---
 htdocs/bugs/index.html | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)
  

Comments

Jonathan Wakely Feb. 12, 2025, 10:07 a.m. UTC | #1
This looks more accurate than the current wording, yes.

Specifically, only objects/libraries "built with experimental standard
support" need to be recompiled.

LGTM, but I'll let Jason give approval.




On Wed, 12 Feb 2025 at 09:30, Sam James <sam@gentoo.org> wrote:
>
> C++ ABI for C++ standards with full support by GCC (rather than those
> marked as experimental per https://gcc.gnu.org/projects/cxx-status.html)
> should be stable. It's certainly not the case in 2025 that one needs a
> full world rebuild for C++ libraries using e.g. the default standard
> or any other supported standard by C++, unless it is marked experimental
> where we provide no guarantees.
> ---
>  htdocs/bugs/index.html | 16 ++++++++--------
>  1 file changed, 8 insertions(+), 8 deletions(-)
>
> diff --git a/htdocs/bugs/index.html b/htdocs/bugs/index.html
> index d6556b26..99d19095 100644
> --- a/htdocs/bugs/index.html
> +++ b/htdocs/bugs/index.html
> @@ -633,14 +633,14 @@ changed the parser rules so that <code>&lt;::</code> works as expected.
>  components: the first defines how the elements of classes are laid
>  out, how functions are called, how function names are mangled, etc;
>  the second part deals with the internals of the objects in libstdc++.
> -Although we strive for a non-changing ABI, so far we have had to
> -modify it with each major release.  If you change your compiler to a
> -different major release <em>you must recompile all libraries that
> -contain C++ code</em>.  If you fail to do so you risk getting linker
> -errors or malfunctioning programs.
> -It should not be necessary to recompile if you have changed
> -to a bug-fix release of the same version of the compiler; bug-fix
> -releases are careful to avoid ABI changes. See also the
> +For C++ standards marked as
> +<a href="https://gcc.gnu.org/projects/cxx-status.html">experimental</a>,
> +stable ABI is not guaranteed: for these, if you change your compiler to a
> +different major release <em>you must recompile any such libraries built
> +with experimental standard support that contain C++ code</em>.  If you fail
> +to do so, you risk getting linker errors or malfunctioning programs.
> +It should not be necessary to recompile for C++ standards supported fully
> +by GCC, such as the default standard.  See also the
>  <a href="https://gcc.gnu.org/onlinedocs/gcc/Compatibility.html">compatibility
>  section</a> of the GCC manual.</p>
>
> --
> 2.48.1
>
  
Sam James March 3, 2025, 10:16 a.m. UTC | #2
Jonathan Wakely <jwakely@redhat.com> writes:

> This looks more accurate than the current wording, yes.
>
> Specifically, only objects/libraries "built with experimental standard
> support" need to be recompiled.
>
> LGTM, but I'll let Jason give approval.
>

ping (I've found myself citing this section a few times recently and
don't want people to get the wrong idea).

>
>
>
> On Wed, 12 Feb 2025 at 09:30, Sam James <sam@gentoo.org> wrote:
>>
>> C++ ABI for C++ standards with full support by GCC (rather than those
>> marked as experimental per https://gcc.gnu.org/projects/cxx-status.html)
>> should be stable. It's certainly not the case in 2025 that one needs a
>> full world rebuild for C++ libraries using e.g. the default standard
>> or any other supported standard by C++, unless it is marked experimental
>> where we provide no guarantees.
>> ---
>>  htdocs/bugs/index.html | 16 ++++++++--------
>>  1 file changed, 8 insertions(+), 8 deletions(-)
>>
>> diff --git a/htdocs/bugs/index.html b/htdocs/bugs/index.html
>> index d6556b26..99d19095 100644
>> --- a/htdocs/bugs/index.html
>> +++ b/htdocs/bugs/index.html
>> @@ -633,14 +633,14 @@ changed the parser rules so that <code>&lt;::</code> works as expected.
>>  components: the first defines how the elements of classes are laid
>>  out, how functions are called, how function names are mangled, etc;
>>  the second part deals with the internals of the objects in libstdc++.
>> -Although we strive for a non-changing ABI, so far we have had to
>> -modify it with each major release.  If you change your compiler to a
>> -different major release <em>you must recompile all libraries that
>> -contain C++ code</em>.  If you fail to do so you risk getting linker
>> -errors or malfunctioning programs.
>> -It should not be necessary to recompile if you have changed
>> -to a bug-fix release of the same version of the compiler; bug-fix
>> -releases are careful to avoid ABI changes. See also the
>> +For C++ standards marked as
>> +<a href="https://gcc.gnu.org/projects/cxx-status.html">experimental</a>,
>> +stable ABI is not guaranteed: for these, if you change your compiler to a
>> +different major release <em>you must recompile any such libraries built
>> +with experimental standard support that contain C++ code</em>.  If you fail
>> +to do so, you risk getting linker errors or malfunctioning programs.
>> +It should not be necessary to recompile for C++ standards supported fully
>> +by GCC, such as the default standard.  See also the
>>  <a href="https://gcc.gnu.org/onlinedocs/gcc/Compatibility.html">compatibility
>>  section</a> of the GCC manual.</p>
>>
>> --
>> 2.48.1
>>
  

Patch

diff --git a/htdocs/bugs/index.html b/htdocs/bugs/index.html
index d6556b26..99d19095 100644
--- a/htdocs/bugs/index.html
+++ b/htdocs/bugs/index.html
@@ -633,14 +633,14 @@  changed the parser rules so that <code>&lt;::</code> works as expected.
 components: the first defines how the elements of classes are laid
 out, how functions are called, how function names are mangled, etc;
 the second part deals with the internals of the objects in libstdc++.
-Although we strive for a non-changing ABI, so far we have had to
-modify it with each major release.  If you change your compiler to a
-different major release <em>you must recompile all libraries that
-contain C++ code</em>.  If you fail to do so you risk getting linker
-errors or malfunctioning programs.
-It should not be necessary to recompile if you have changed
-to a bug-fix release of the same version of the compiler; bug-fix
-releases are careful to avoid ABI changes. See also the
+For C++ standards marked as
+<a href="https://gcc.gnu.org/projects/cxx-status.html">experimental</a>,
+stable ABI is not guaranteed: for these, if you change your compiler to a
+different major release <em>you must recompile any such libraries built
+with experimental standard support that contain C++ code</em>.  If you fail
+to do so, you risk getting linker errors or malfunctioning programs.
+It should not be necessary to recompile for C++ standards supported fully
+by GCC, such as the default standard.  See also the
 <a href="https://gcc.gnu.org/onlinedocs/gcc/Compatibility.html">compatibility
 section</a> of the GCC manual.</p>