Wiki - https://fedoraproject.org/wiki/Changes/Thin-LTO-Build-Flag This is a proposed Change for Fedora Linux. This document represents a proposed Change. As part of the Changes process, proposals are publicly announced in order to receive community feedback. This proposal will only be implemented if approved by the Fedora Engineering Steering Committee. == Summary == At present, many packages are built with fat link time optimization (LTO) objects. This can increase RAM requirements and build times. There is a build flag to disable LTO completely. But by using slim objects, one can still have the performance and size improvements offered by LTO with less of a build time cost. == Owner == * Name: [[User:fed500| Benson Muite]] * Email: <benson_muite at emailplus dot org> == Detailed Description == As indicated at https://stackoverflow.com/questions/13799452/what-is-the-difference-in-gcc-between-lto-and-fat-lto-objects a thin object allows for faster compilation times than a fat object and requires less memory. Adding this as a possible option would give an intermediate option between using fat objects and no link time optimization. This would enable more codes to benefit from easy incorporation of LTO without a substantial increase in compilation times. == Feedback == == Benefit to Fedora == Fedora would benefit from more efficient use of build resources while still getting optimized executables and libraries. There has been a related discussion on https://fedoraproject.org/wiki/Changes/LTOBuildImprovements == Scope == * Proposal owners: The proposal owner (Benson Muite) will create a macro that enables LTO with thin objects. In the gcc compiler suite, this will replace the build flag `-ffat-lto-objects` by `-fno-fat-lto-objects` At present `%global _lto_cflags %nil` is used to disable LTO (see https://fedoraproject.org/wiki/LTOByDefault). A possible modification is `%global _lto_cflags %slim`. * Other developers: Using this flag will be an option. Would suggest other developers try using LTO with slim objects first before disabling LTO completely. If it seems like it would be helpful to be adopted as default, this can be done in a further system wide change. * Release engineering: [https://forge.fedoraproject.org/releng/tickets/issues #Releng issue number] No expected changes. * Policies and guidelines: N/A (not needed for this Change) If the change is adopted and after it has been tested, we should consider updating the packaging guidelines that when importing a new C/C++ or Fortran package, packagers should test if using a slim LTO is sufficient instead of disabling LTO altogether. * Trademark approval: N/A (not needed for this Change) * Alignment with the Fedora Strategy: General alignment with having an efficient operating system that uses sustainable development practices, but no specific community goal. == Upgrade/compatibility impact == No changes needed. == How To Test == The main thing to test will be modifying spec files for C, C++ or Fortran that use the GCC compiler suite to try using thin objects by setting a macro and then rebuilding When previously a fat object has been used, one should check if there are faster build times and reasonable performance of the resulting outputs. If LTO had been disable due to excessive build times or RAM use, one should test if builds are now possible and if the resulting outputs are more efficient. == User Experience == * Packages will spend less time waiting for builds to complete * Users should get a larger number of optimized packages provided == Dependencies == Only rpm macros package needs to be changed. == Contingency Plan == * Contingency mechanism: Implement by the next freeze * Contingency deadline: Ideally would implement by Fedora 45 release, but before fedora 46 is also fine. * Blocks release? No == Documentation == Packaging guidelines will be updated to document the new option. See: * https://stackoverflow.com/questions/13799452/what-is-the-difference-in-gcc-between-lto-and-fat-lto-objects * https://github.com/google/highway/pull/3024 * https://fedoraproject.org/wiki/Changes/LTOBuildImprovements N/A (not a System Wide Change) == Release Notes == Release notes should not require any changes. -- Aoife Moloney Fedora Operations Architect Fedora Project Matrix: @amoloney:fedora.im IRC: amoloney -- _______________________________________________ devel-announce mailing list -- devel-announce@lists.fedoraproject.org To unsubscribe send an email to devel-announce-leave@lists.fedoraproject.org Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedoraproject.org/archives/list/devel-announce@lists.fedoraproject.org Do not reply to spam, report it: https://forge.fedoraproject.org/infra/tickets/issues/new
No comments:
Post a Comment