Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ пСрСсборки ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠΉ Π±Π°Π·Ρ‹ Debian ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Clang 10

Π‘ΠΈΠ»ΡŒΠ²Π΅ΡΡ‚Ρ€ Π›Π΅Π΄Ρ€ΡŽ (Sylvestre Ledru) ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ пСрСсборки Π°Ρ€Ρ…ΠΈΠ²Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Debian GNU/Linux с использованиСм компилятора Clang 10 вмСсто GCC. Из 31014 ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ 1400 (4.5%), Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ² ΠΊ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΡŽ Debian Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ‚Ρ‡ число нСсобранных ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Π΄ΠΎ 1110 (3.6%). Для сравнСния ΠΏΡ€ΠΈ сборкС Π² Clang 8 ΠΈ 9 число ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ, Π΄Π΅Ρ€ΠΆΠ°Π»ΠΎΡΡŒ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ 4.9%.

ΠŸΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ экспСримСнта со сборкой Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ сосрСдоточСно Π½Π° 250 ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ…, Π²Ρ‹Π·Π²Π°Π½Π½Ρ‹Ρ… сбоСм ΠΈΠ·-Π·Π° ошибки Π² Qmake, ΠΈ 177 ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ…, связанных с Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… символов Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ…. Π”ΠΎΠ±Π°Π²ΠΈΠ² простой ΠΏΠ°Ρ‚Ρ‡ ΠΊ dpkg-gensymbols, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΎΡˆΠΈΠ±ΠΊΡƒ сравнСния символов ΠΏΡ€ΠΈ связывании ΠΊΠ°ΠΊ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅, ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΠ² Π² qmake ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ g++ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ сбои ΠΏΡ€ΠΈ сборкС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ 290 ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ².

Из ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, приводящих ΠΊ сбою ΠΏΡ€ΠΈ сборкС Π² Clang, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ ошибки ΠΈΠ·-Π·Π° отсутствия Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², привСдСния Ρ‚ΠΈΠΏΠΎΠ², отсутствия ΠΏΡ€ΠΎΠ±Π΅Π»Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠΌ ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ со связываниСм, отсутствиС Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° значСния ΠΈΠ· Π½Π΅-void Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, использованиС упорядочСнного сравнСния указатСля с Π½ΡƒΠ»Ρ‘ΠΌ, отсутствиС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ