Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΠΊΠΎΡ€Π·ΠΈΠ½ΡƒΠŸΠΎΠ·Π²ΠΎΠ½ΠΈΡ‚ΡŒ
Найти Π² Π”Π·Π΅Π½Π΅

πŸ§πŸš€ GCC 15: Как Π½ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅Π»ΠΈΠ· компилятора GNU Π΄Π΅Π»Π°Π΅Ρ‚ Тизнь Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΏΡ€ΠΎΡ‰Π΅

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ, Ρ€Π°Π±ΠΎΡ‚Π°Π²ΡˆΠΈΠΉ с C ΠΈΠ»ΠΈ C++, хотя Π±Ρ‹ Ρ€Π°Π· сталкивался с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ошибки компилятора ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π»Ρ‘Π³ΠΊΠΎΠ΅ чувство ΠΏΠ°Π½ΠΈΠΊΠΈ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ отчаяния. ОсобСнно это касаСтся Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ с многостраничными Π²Ρ‹Π²ΠΎΠ΄Π°ΠΌΠΈ ошибок шаблонов ΠΈΠ»ΠΈ нСпонятными прСдупрСТдСниями статичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, ΠΊΠΎΠΌΠ°Π½Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² GCC 15 Ρ€Π΅ΡˆΠΈΠ»Π° Π½Π°ΠΊΠΎΠ½Π΅Ρ† ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ Тизнь программистам ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΠ»Π° Ρ†Π΅Π»ΡƒΡŽ ΡΠ΅Ρ€ΠΈΡŽ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅Π»Π°ΡŽΡ‚ взаимодСйствиС с компилятором Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ приятнСС. Π’ΠΎΡ‚ Ρ‡Ρ‚ΠΎ ΠΆΠ΄Ρ‘Ρ‚ нас Π² Π½ΠΎΠ²ΠΎΠΌ Ρ€Π΅Π»ΠΈΠ·Π΅ GCC: Один ΠΈΠ· самых Ρ€Π°Π·Π΄Ρ€Π°ΠΆΠ°ΡŽΡ‰ΠΈΡ… ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Ρ‹ с компиляторами β€” это ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ½ считаСт ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΏΡƒΡ‚ΡŒ выполнСния ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹ΠΌ ΠΈΠ»ΠΈ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ опасным. Π’ GCC 15 статичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ обзавёлся понятными ASCII-Π³Ρ€Π°Ρ„ΠΈΠΊΠ°ΠΌΠΈ ΠΈ Π΄Π°ΠΆΠ΅ эмодзи-прСдупрСТдСниями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚, Π³Π΄Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: while (n) // ⚠️ бСсконСчный Ρ†ΠΈΠΊΠ» здСсь
{
sum += n->val;
// отсутствуСт ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ элСмСнту списка!
} Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ ясно ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚
ОглавлСниС

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ, Ρ€Π°Π±ΠΎΡ‚Π°Π²ΡˆΠΈΠΉ с C ΠΈΠ»ΠΈ C++, хотя Π±Ρ‹ Ρ€Π°Π· сталкивался с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ошибки компилятора ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π»Ρ‘Π³ΠΊΠΎΠ΅ чувство ΠΏΠ°Π½ΠΈΠΊΠΈ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ отчаяния. ОсобСнно это касаСтся Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ с многостраничными Π²Ρ‹Π²ΠΎΠ΄Π°ΠΌΠΈ ошибок шаблонов ΠΈΠ»ΠΈ нСпонятными прСдупрСТдСниями статичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, ΠΊΠΎΠΌΠ°Π½Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² GCC 15 Ρ€Π΅ΡˆΠΈΠ»Π° Π½Π°ΠΊΠΎΠ½Π΅Ρ† ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ Тизнь программистам ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΠ»Π° Ρ†Π΅Π»ΡƒΡŽ ΡΠ΅Ρ€ΠΈΡŽ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅Π»Π°ΡŽΡ‚ взаимодСйствиС с компилятором Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ приятнСС.

Π’ΠΎΡ‚ Ρ‡Ρ‚ΠΎ ΠΆΠ΄Ρ‘Ρ‚ нас Π² Π½ΠΎΠ²ΠΎΠΌ Ρ€Π΅Π»ΠΈΠ·Π΅ GCC:

🎨 1. ΠšΡ€Π°ΡΠΈΠ²Ρ‹Π΅ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡƒΡ‚Π΅ΠΉ выполнСния (Execution Paths)

Один ΠΈΠ· самых Ρ€Π°Π·Π΄Ρ€Π°ΠΆΠ°ΡŽΡ‰ΠΈΡ… ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Ρ‹ с компиляторами β€” это ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ½ считаСт ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΏΡƒΡ‚ΡŒ выполнСния ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹ΠΌ ΠΈΠ»ΠΈ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ опасным. Π’ GCC 15 статичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ обзавёлся понятными ASCII-Π³Ρ€Π°Ρ„ΠΈΠΊΠ°ΠΌΠΈ ΠΈ Π΄Π°ΠΆΠ΅ эмодзи-прСдупрСТдСниями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚, Π³Π΄Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°:

while (n) // ⚠️ бСсконСчный Ρ†ΠΈΠΊΠ» здСсь
{
sum += n->val;
// отсутствуСт ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ элСмСнту списка!
}

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ ясно ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Π³Π΄Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ начался бСсконСчный Ρ†ΠΈΠΊΠ», с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‡Ρ‘Ρ‚ΠΊΠΈΡ… стрСлочСк ΠΈ пояснСний. Π­Ρ‚ΠΎ ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΉ шаг Π²ΠΏΠ΅Ρ€Ρ‘Π΄ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с простым тСкстовым описаниСм ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… вСрсий.

πŸ“¦ 2. ΠŸΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ ошибки для шаблонов C++

Π›ΡŽΠ±ΠΎΠΉ, ΠΊΡ‚ΠΎ Ρ…ΠΎΡ‚ΡŒ Ρ€Π°Π· разбирался Π² сообщСниях компилятора ΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Π°Ρ… C++, Π·Π½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ это ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ ΠΈΠ΅Ρ€ΠΎΠ³Π»ΠΈΡ„Ρ‹ Π΄Ρ€Π΅Π²Π½Π΅Π³ΠΎ манускрипта. Π’Π΅ΠΏΠ΅Ρ€ΡŒ GCC 15 Π²Π²ΠΎΠ΄ΠΈΡ‚ Π½ΠΎΠ²Ρ‹ΠΉ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, Π²Π΄ΠΎΡ…Π½ΠΎΠ²Π»Ρ‘Π½Π½Ρ‹ΠΉ идСями Sy Brand ΠΎ понятной Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ошибок шаблонов.

НапримСр, ΠΏΡ€ΠΈ Π½Π΅ΡƒΠ΄Π°Ρ‡Π½ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ шаблона GCC Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ наглядно ΠΈ структурировано ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π½Π΅ ΠΏΠΎΠ΄ΠΎΡˆΡ‘Π»:

  • πŸ” ΠšΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ 1: нСподходящий Ρ‚ΠΈΠΏ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°
  • πŸ” ΠšΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ 2: Π½Π΅Ρ‚ извСстного прСобразования
  • πŸ” ΠšΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ 3: Π½Π΅ удовлСтворяСт трСбованиям ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚Π° (drawable)

Π­Ρ‚ΠΎ сильно экономит врСмя ΠΈ Π½Π΅Ρ€Π²Ρ‹ ΠΏΡ€ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅.

πŸ§‘β€πŸ’» 3. ΠœΠ°ΡˆΠΈΠ½ΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹Π΅ ΠΎΡ‚Ρ‡Ρ‘Ρ‚Ρ‹ ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… (Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ SARIF)

Π Π°Π½Π΅Π΅ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ: Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ошибки Π² ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½ΠΎΠΌ тСкстовом Π²ΠΈΠ΄Π΅ ΠΈΠ»ΠΈ Π² ΠΌΠ°ΡˆΠΈΠ½ΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ SARIF. Π’Π΅ΠΏΠ΅Ρ€ΡŒ GCC 15 позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ!

Π­Ρ‚ΠΎ особСнно ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π² CI/CD ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ тСстировании:

  • πŸ“œ Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΡ‚Ρ‡Ρ‘Ρ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π² тСкстовом ΠΈ SARIF-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°Ρ… ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ.
  • πŸ› οΈ Π’ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π΅ появился ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ инструмСнт sarif-replay, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ SARIF-Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ воспроизводит ΠΈΡ… Π²Ρ‹Π²ΠΎΠ΄ Π² консоли ΠΊΠ°ΠΊ Ρ€ΠΎΠ΄Π½Ρ‹Π΅ ошибки GCC.

πŸ“š 4. Π£ΠΏΡ€ΠΎΡ‰Ρ‘Π½Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° стандарт C23

GCC 15 ΠΏΠ΅Ρ€Π΅ΡˆΡ‘Π» ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π° стандарт C23 (Π΄ΠΎ этого стандартом Π±Ρ‹Π» C17). Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ старого ΠΊΠΎΠ΄Π°. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² GCC 15:

  • πŸ”§ Появились Ρ‡Ρ‘Ρ‚ΠΊΠΈΠ΅ сообщСния ΠΎ нСсовмСстимости, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ встроСнный Ρ‚ΠΈΠΏ bool.
  • πŸ“’ Π£Ρ‚ΠΎΡ‡Π½Π΅Π½Ρ‹ сообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… нСсовмСстимости Ρ‚ΠΈΠΏΠΎΠ² ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π±Π΅Π· явного указания ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

Π’Π΅ΠΏΠ΅Ρ€ΡŒ компилятор Ρ‡Ρ‘Ρ‚ΠΊΠΎ подскаТСт, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ сломалось ΠΈ ΠΊΠ°ΠΊ это ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ.

🌈 5. Π£Π»ΡƒΡ‡ΡˆΠ΅Π½Π½Π°Ρ цвСтовая схСма Π²Ρ‹Π²ΠΎΠ΄Π° ошибок

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ GCC Π½Π°ΠΊΠΎΠ½Π΅Ρ†-Ρ‚ΠΎ пСрСсмотрСли ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ Ρ†Π²Π΅Ρ‚ΠΎΠ²Ρ‹ΠΌ схСмам сообщСний. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ элСмСнты ошибки ΠΏΠΎΠ΄ΡΠ²Π΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Ρ†Π²Π΅Ρ‚Π°ΠΌΠΈ. НапримСр, Ссли Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ошибка нСсоотвСтствия Ρ‚ΠΈΠΏΠΎΠ² ΠΏΡ€ΠΈ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… опСрациях, ΠΎΠ±Π° Ρ‚ΠΈΠΏΠ° Π±ΡƒΠ΄ΡƒΡ‚ подсвСчСны контрастными Ρ†Π²Π΅Ρ‚Π°ΠΌΠΈ:

  • 🟒 Π’ΠΈΠΏ слСва
  • πŸ”΅ Π’ΠΈΠΏ справа

Π­Ρ‚ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ восприятиС сообщСний ΠΈ экономит врСмя Π½Π° ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅, особСнно ΠΏΡ€ΠΈ Π±Π΅Π³Π»ΠΎΠΌ просмотрС Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π»ΠΎΠ³ΠΎΠ².

πŸ“– 6. Новая Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° libgdiagnostics для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² инструмСнтов

НаконСц, Π² GCC 15 появилась новая общСдоступная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° libgdiagnostics, которая позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ сторонних инструмСнтов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ вСсь арсСнал диагностики компилятора:

  • 🐍 Python ΠΈ C++ API для ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ
  • πŸ–ŒοΈ ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ†Π²Π΅Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π²ΠΎΠ΄Π°, выдСлСния Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠΎΠ΄Π°, автоматичСских исправлСний (fix-it hints) ΠΈ SARIF-Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ сторонниС инструмСнты статичСского Π°Π½Π°Π»ΠΈΠ·Π°, IDE ΠΈ Π»ΠΈΠ½Ρ‚Π΅Ρ€Ρ‹ смогут ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΡ‰Π½Ρ‹Π΅ возмоТности диагностики GCC, Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ускорив ΠΈ ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΠ² свою Ρ€Π°Π±ΠΎΡ‚Ρƒ.

πŸ’‘ Π›ΠΈΡ‡Π½ΠΎΠ΅ ΠΌΠ½Π΅Π½ΠΈΠ΅ Π°Π²Ρ‚ΠΎΡ€Π°

Как Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ, рСгулярно Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ с C ΠΈ C++, ΠΌΠΎΠ³Ρƒ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ всС пСрСчислСнныС ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ Π² GCC 15 Π΄Π°Π²Π½ΠΎ Π½Π°Π·Ρ€Π΅Π»ΠΈ ΠΈ нСвСроятно Π²Π°ΠΆΠ½Ρ‹. ОсобСнно Ρ€Π°Π΄ΡƒΠ΅Ρ‚ шаг навстрСчу понятным ΠΈ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ сообщСниям ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…. ВрСмя, ΠΏΠΎΡ‚Ρ€Π°Ρ‡Π΅Π½Π½ΠΎΠ΅ Π½Π° Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ сообщСний компилятора, Π½Π°ΠΊΠΎΠ½Π΅Ρ†-Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠΊΡ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ. ОсобСнно стоит ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° стандарт C23 ΠΈ ΡΠΎΠΏΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Π»Π΅Π³Ρ‡Π°ΡŽΡ‚ Π°Π΄Π°ΠΏΡ‚Π°Ρ†ΠΈΡŽ старых ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ².

Π’Π°ΠΊΠΆΠ΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ диагностичСской Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ libgdiagnostics β€” это ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΉ шаг ΠΊ созданию Π½ΠΎΠ²ΠΎΠΉ экосистСмы инструмСнтов для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ смогут Π»Π΅Π³ΠΊΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ вСсь ΠΌΠΎΡ‰Π½Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» GCC Π² собствСнныС ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹.

НадСюсь, Ρ‡Ρ‚ΠΎ GCC 16 ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ Π² этом Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΈ компилятор станСт Π΅Ρ‰Ρ‘ Π΄Ρ€ΡƒΠΆΠ΅Π»ΡŽΠ±Π½Π΅Π΅ ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ.

πŸ“ Π’Ρ‹Π²ΠΎΠ΄Ρ‹ ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ

ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ GCC 15, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ½ станСт доступСн. А ΠΏΠΎΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡˆΠ΅ΡΡ‚Π²Π° Π½Π° сайтС Compiler Explorer.

Бчастливого ΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ программирования с Π½ΠΎΠ²Ρ‹ΠΌ GCC! πŸš€

πŸ”— Бсылки: