Megjelent a GCC 16.1, mely a GCC 16 sorozat első stabil kiadása C++20 alapértelmezéssel

8/10
Új főverziós fordítókiadásról van szó, amely bevezeti a GNU C++20 szabványkönyvtárat. Ez sok C++ projekt fordítását, buildrendszerét és kompatibilitását érintheti. Emellett kísérleti C++26 elemeket, új Algol 68 frontendet, bővülő C23 _BitInt támogatást, optimalizálási fejlesztéseket és friss AMD Zen 6, Intel Wildcat Lake, valamint Nova Lake célplatform-támogatást is hoz.

Megjelent a GCC 16.1, a GNU Compiler Collection 16-os sorozatának első stabil kiadása. Az új verzió egyik legnagyobb újdonsága a C++ fordítást érinti: a GCC C++ frontendje mostantól alapértelmezésben a GNU C++20 dialektust használja a korábbi GNU C++17 helyett. Ez a változás több projektet is érinthet, ezért a régebbi C++ szabványra épülő kódbázisoknál szükség lehet a fordítási beállítások pontosítására vagy a forráskód frissítésére.

Megjelent a GCC 16.1, mely a GCC 16 sorozat első stabil kiadása C++20 alapértelmezéssel

A GCC 16.1-ben a C++20 szabványkönyvtár támogatása már stabilnak számít, a C++20 modulok viszont továbbra is kísérleti állapotban vannak, és használatukhoz a -fmodules kapcsolóra van szükség. Azoknál a projekteknél, amelyek továbbra is a régebbi C++ szabványt várják el, ott a -std= kapcsoló megadásával lehet rögzíteni a kívánt fordítási módot.

Az új kiadás több C++26 elemhez is kísérleti támogatást hoz. Ide tartozik a reflection, a contracts, az expansion statements és a constexpr exceptions kezelése, valamint több kapcsolódó szabványkönyvtári bővítés. A GCC 16.1 emellett egy új, kísérleti Algol 68 compiler frontendet is bevezet ga68 néven. A GCC projekt leírása szerint ez a Revised Reportban meghatározott nyelvet célozza, az elfogadott hibajegyzékekkel együtt, és néhány GNU-kiterjesztést, valamint POSIX prelude-ot is megvalósít.

A diagnosztikai rendszer is változott. A GCC 16 mostantól már kísérleti HTML formátumú diagnosztikai kimenetet is tud készíteni, a SARIF kimenet pedig új vezérlésifolyam-információkat tartalmaz. A régi JSON diagnosztikai formátum megszűnt, gépileg feldolgozható diagnosztikához a fejlesztők a SARIF használatát ajánlják.

A GCC 16.1-ben a C23 _BitInt támogatása több architektúrára is kiterjed, köztük RISC-V, Arm, S/390 és LoongArch architektúrákra. A C frontendben megjelent a pointermezőkhöz használható counted-by attribútum, amely a pointerhez kapcsolódó elemek számának megadását segíti. A Fortran coarray implementáció pedig egy gépen belül, megosztott memóriával működő többszálú támogatást kapott.

Az optimalizálási fejlesztések között javított vektorizálás, a számlálatlan ciklusok vektorizálásának támogatása, valamint a redukciók és a feltételesen megszakadó ciklusok pontosabb kezelése szerepel. A Link-Time Optimization a -flto-toplevel-asm-heuristics kapcsolóval hatékonyabban kezeli a top-level assembly utasításokat, a spekulatív devirtualizáció pedig már általános indirekt függvényhívásoknál is működik, és több lehetséges meghívott függvénnyel tud számolni.

A hardvertámogatás szintén bővült. x86-on a GCC 16 már támogatja az AMD Zen 6 processzorokat a -march=znver6 kapcsolóval, az Intel Wildcat Lake platformot a -march=wildcatlake beállítással, valamint az Intel Nova Lake rendszereket a -march=novalake opcióval. Az AMD GPU offloading kísérleti MI300 támogatást kapott, a LoongArch és az IBM Z célplatformoknál pedig további fordítófejlesztések érkeztek. A korábbi nagy GCC-verziókhoz hasonlóan előfordulhat, hogy egyes, régebbi fordítóval működő kódok GCC 16.1 alatt módosítást igényelnek. A GCC 16.1 már elérhető a GNU projekt hivatalos szerverein, a kiadási megjegyzések pedig itt olvashatóak.

Gábor a Pingvinbázis alapítója és főszerkesztője, több mint 20 éves tapasztalattal rendelkezik a Linux rendszerek és az Open Source szoftverek területén. Jártas a Python, és a PHP nyelvben, valamint a BASH scriptelésben is.