Малко след като копията за Windows на интернет браузъра Mozilla Firefox преминаха към Clang-cl компилатора с PGO (Profile Guided Optimizations) и LTO (Link Time Optimizations), сега разработчиците съобщават, че в следващите nightly билдове всички платформи от първо ниво (tier-1) ще се компилират с Clang и разрешен LTO при Linux, Mac, Android arm, aarch64 и x86.
Към момента Mac и Android билдовете вече са използвали Clang, така че при тях като новост идва само разрешаването на LTO, което води до повишаване на производителността и бързината, а само билдовете за Linux получават и разрешен PGO. Разработчиците съобщават обаче, че при Linux прирастът в бързодействието е най-впечатляващ при проведените Talos тестове, където константно получават подобрение от над 5% и до 18% в сравнение с GCC 6.4 и PGO.
В момента Clang пакетът, който използват разработчиците е базиран на LLVM6, но когато се премине към LLVM/Clang 7.0 те очакват повишение от допълнителни от 2 до 5%. Те са опитали и с преминаване към GCC 8.x с използването на LTO, но са се натъкнали на множество проблеми, а преминаването към GCC 7.x е нарушило съвместимостта на бинарните файлове с някои стари системи. Освен това са били налични проблеми и с тестовата платформа.
Предвид преимуществата на Clang, разработчиците са предпочели преминаване към него, вместо да търсят решение на множеството проблеми с GCC. Всички тези подобрения ще бъдат налични за x64-битовите издания на интернет браузъра.
Встрани от повишаването на бързодействието Firefox за Linux вече се компилират като Position Independent Executables (PIE), което подобрява Address Space Layout Randomization и е необходимо за LTO, защото Clang не компилира Position Independent код, който не е PIE. За сметка на това GCC го прави, но, както споменахме по-горе, той няма да бъде използван поради различни проблеми.
Повече подробности можете да получите от официалния блог пост.