Fedora 30 System-Wide Change proposal: New 128-bit IEEE long double ABI for IBM 64-bit POWER LE

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



https://fedoraproject.org/wiki/Changes/PPC64LE_Float128_Transition

== Summary ==
Transition IBM 64-bit POWER LE systems to the new 128-bit IEEE long double ABI.

== Owner ==
* Name: Carlos O'Donell (codonell)
* Email: carlos@xxxxxxxxxx

== Detailed Description ==
IBM has designed a new long double ABI that adheres to the 128-bit
IEEE format. This format is more standard than the existing AIX
double-double or IBM long double (2 grouped 64-bit doubles) which has
discontinuous mantissas and is difficult for developers to use. In
Fedora 29 the plan is to switch to the new ABI for long double, while
still supporting old applications via compatibility symbols. Newly
compiled applications use either the old or new ABI but not a mix of
both. Changes are required in the core C libraries, and the compiler
and the compiler runtimes including the C++ standard libraries.
Therefore there is coordination required across the core toolchain
componenents e.g. gcc, binutils, glibc, gdb (to debug the new types).

== Benefit to Fedora ==
Fedora developers will be using a standard 128-bit IEEE format for
long double instead of the non-standard double-double AIX format which
has a discontinuous mantissa and multiple representations for the same
value.

== Scope ==
The change is relatively limited in that not many packages use the
long double floating point ABI. The double floating point ABI is much
more used, but not long double. It is estimated that few packages use
long double directly, and those packages will need to be rebuilt in
order to use the new ABI. This rebuilding can be targetted by
analyzing which packages have long double usage in their debug
information and rebuilding just those packages. However, we plan to
just use the existing mass rebuild for glibc 2.29 to handle this
issue.

* Proposal owners: Transition glibc to float128 format for long double
for IBM ppc64le. Transition gcc to the default for long double.
Implement support for the new <code>long double</code> format in
libstdc++. Ensure gdb can handle the new types.
* Other developers: Developers need to ensure that rawhide is stable
and ready for the Fedora 30 branch.
* Release engineering: A mass rebuild request has been filed for the
parent system-wide change to upgrade glibc to
2.29<br>[https://pagure.io/releng/issue/7475 #7475]
* Policies and guidelines: The policies and guidelines do not need to
be updated.
* Trademark approval: Not needed for this change

== Upgrade/compatibility impact ==
The library and language runtimes are backwards compatible with the
version shipped in Fedora.

We fully expect to fix all packaging changes in Fedora Rawhide first
when everything is ready.

== How To Test ==
The GNU C Library has its own testsuite, which is run during the
package build and examined by the glibc developers before being
uploaded. This test suite has 2500+ tests that run to verify the
correct operation of the library. In the future we'll also be running
the microbenchmark to look for performance regressions as well as
behavioural ones.

Specific testing for 128-bit IEEE long double ABI will be carried out
by the glibc testsuite. Integration smoke testing will be carried out
by the glibc developers to make sure new applications are built with
the correct defaults and work as expected.

Specific testing for 128-bit IEEE long double ABI will be carried out
by the gcc testsuite.

Specific smoke testing will be carried out using gdb to read and write
the new types.

== User Experience ==
Users will see a new 128-bit floating point ABI, but this will largely
be transparent to them. On POWER hardware that supports 128-bit long
double in hardware the compiler will use the hardware transparently to
accelerate floating point operations, otherwise software floating
point emulation will be used.

== Dependencies ==
This change requires coordination of glibc and gcc to change the
compiler defaults and build the compiler language runtimes correctly.
Also gdb must be able to support the new type to make the process of
transition seamless.

== Contingency Plan ==
* Contingency mechanism: Ship glibc 2.28 instead of glibc 2.29, or
ship glibc 2.29 without this feature if it is not ready.

* Contingency deadline: Final mass rebuild before Fedora release.
* Blocks release? Upgrading glibc does block the release. We should
not ship without the float128 ABI change.

== Documentation ==
The glibc/gcc manual contain the documentation for the release and
don't need any more additional work.

== Release Notes ==
* The ppc64le architecture changed the format of the <code>long
double</code> type to binary128. (Previously, a pair of two doubles
was used.)

-- 
Ben Cotton
Fedora Program Manager
TZ=America/Indiana/Indianapolis
_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://getfedora.org/code-of-conduct.html
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx/message/WXKBQDBDPFX27U62NLYENB4PEGS3WQ2E/




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux