Ma hope o hoʻokahi makahiki o ka hoʻomohala ʻana, ua hoʻokuʻu ʻia ka GCC compiler suite GCC 15.1 manuahi, ka hoʻokuʻu nui mua ma ka lālā GCC 15.x hou. Wahi a ka hoʻolālā helu hoʻokuʻu ʻana, ua hoʻohana ʻia ka mana 15.0 i ka wā o ka hoʻomohala ʻana, a ma mua koke o ka hoʻokuʻu ʻia ʻana o GCC 15.1, ua hoʻokuʻu ʻia kahi lālā o GCC 16.0, ʻo ia ke kumu o ka hoʻokuʻu nui ʻana, GCC 16.1.
Nā hoʻololi nui:
- Ke hōʻuluʻulu ʻana i nā polokalamu C, hoʻohana ʻia ka maʻamau C23 (Change Summary) me nā hoʻonui GNU ("-std=gnu23") ma ka paʻamau. Ma mua, ua hoʻohana ʻia ka maʻamau C17 e ka paʻamau (-std=gnu17). Hiki i ka hoʻololi ke hoʻopilikia i ke kūkulu ʻana i nā papahana e kū nei ma muli o ka hoʻokomo ʻia ʻana o ka nullptr mau, ke ʻano _BitInt(n), a me nā huaʻōlelo bool, ʻoiaʻiʻo, a me nā huaʻōlelo wahaheʻe, hiki ke paio me nā mea hōʻike inoa like i wehewehe ʻia i nā noi.
- Ua hoʻokō ʻia nā mana o ka maʻamau C23:
- Hoʻolālā ʻia ke kuhikuhi "#embed" no ka hoʻokomo ʻana i nā kumuwaiwai binary i loko o ke code.
- ʻO ke ʻano "unsequenced", e hōʻike ana ʻaʻole i hilinaʻi ka hopena i ke kauoha o ka hoʻokō.
- Hōʻike ka ʻano "reproducible" e hoʻihoʻi mau ka hana i ka hopena like i hāʻawi ʻia i ka hoʻokomo like, ʻo ia hoʻi, ʻaʻole hilinaʻi i nā kumu ʻē aʻe.
- Ua hoʻokō ʻia nā mea o ka maʻamau C2Y e hiki mai ana (-std=c2y a me -std=gnu2y):
- Hiki ke haʻi aku i nā mea hoʻololi i loko o kahi ʻōlelo "inā", e like me "inā (int x = loaʻa ()) {...}".
- Kākoʻo no ka inoa ʻana i nā puka lou e kuhikuhi iā lākou ma ke code. waho: no (int i = 0; i < IK; ++ i) { hoʻololi (i) { hihia 1: haki; // lele i ka CONT1 hihia 2: wehe i waho; // lele i CONT2 } // CONT1 } // CONT2
- Kākoʻo no ka hoʻomaopopo ʻana i nā pae o nā helu integer i nā hōʻike hihia, e like me "case 1...10:".
- ʻO nā suffix "i" a me "j" e kuhikuhi i ka ʻāpana noʻonoʻo i nā helu paʻakikī.
- Hiki ke hoʻohana i nā mea hoʻohana "++" a me "—" me nā helu paʻakikī.
- ʻO ka "_Generic(type, expr1, expr2, ...)" i kūkulu ʻia no ke koho ʻana i kahi ʻōlelo ma muli o ke ʻano operand.
- Kākoʻo no ke komo ʻana i nā ʻāpana byte e like me nā ʻano mea ʻē aʻe, e like me nā hale a me nā uniona.
- Kākoʻo no ka hoʻohana ʻana i ka mea hoʻohana "alignof" i nā arrays piha ʻole (nā mea i haʻi ʻia me ka ʻole o ka nui, e like me "int a[]").
- Hoʻohui ʻia ka syntax hou no ka octal, hexadecimal, a me ke ʻano holoʻokoʻa holoʻokoʻa. Ma kahi o "\u", "\x" a me "\nnn", ua ho'oholo 'ia nā ka'ina "\u{}", "\o{}" a me "\x{}", i hiki ke ho'ākāka 'ia kekahi helu o nā huahelu.
- Nā hana i kūkulu ʻia "__builtin_stdc_rotate_left" a me "__builtin_stdc_rotate_right".
- ʻAe ʻia nā hana lōʻihi ʻole ma nā kuhikuhi NULL (e like me "sizeof(*p)").
- Hoʻohana ka ʻaoʻao mua no ka ʻōlelo C++ i nā hiʻohiʻona e kūkulu ʻia ana no ka maʻamau C++26 e hiki mai ana:
- Mea hoʻohana like ʻole "hoa" ("hoa Ts...").
- ʻO ka hiki ke hoʻohana i ka huaʻōlelo constexpr me ka hoʻololi ʻana o ka mea hoʻohana hou (hoʻokomo hou) e hoʻokomo i kahi mea i ka hoʻomanaʻo i hoʻokaʻawale mua ʻia i ka manawa hōʻuluʻulu.
- Ua hewa ka hoʻopuka ʻana i ka holoi ʻana i kahi kuhikuhi i kahi ʻano piha ʻole.
- Ua hoʻopau ʻia ka syntax no ka wehewehe ʻana i nā ʻāpana variadic me kahi ellipsis me ka ʻole o ke koma ma mua (no ka laʻana, i ka wehewehe ʻana i ka "void e(int…)" ma kahi o "void e(int,…)")
- Ka helu helu ʻana i kahi pūʻolo hoʻohālikelike i nā mamana.
- Nā hiʻohiʻona no nā paʻa i kūkulu ʻia;
- Syntax '= holoi ("kumu")';
- Hoʻokomo ʻia ʻo "@", "$" a me "`" i ka hoʻonohonoho ʻano kumu.
- ʻAʻole ʻae ʻia ka hoʻohana ʻana i nā macros e haʻi i nā modules.
- Hiki ke hoʻohana i ka paʻa i kūkulu ʻia ma ke ʻano he kūlana inā a hoʻololi i nā ʻōlelo.
- Ua hoʻopau ʻia ke kākoʻo no ka hoʻohālikelike hoʻohālikelike pololei (e laʻa. "int arr1[5]; int arr2[5]; bool same = arr1 == arr2").
- ʻO ka hana "#embed" no ka hoʻokomo ʻana i nā kumuwaiwai binary.
- Ua hoʻopau ʻia ka papa hoʻohālike is_trivial.
- Hoʻohui ʻia nā hiʻohiʻona C++23:
- ʻAʻole ʻae i ka hoʻohana ʻana i ke kuhikuhi "export" a ʻae i ka hoʻohana ʻana o "export {}".
- Kākoʻo no ka hoʻolōʻihi ʻana i ke ola o nā mea liʻiliʻi i loko no nā puka lou e hoʻololi i nā pae.
- Hoʻokomo ka waihona libstdc++ i ke kākoʻo hoʻokolohua no nā modula std a me std.compat.
- Ke hoʻohana nei i ka "{0}" mea hoʻomaka no nā hui ma C a me C++ code ʻaʻole ia e hōʻoiaʻiʻo e holoi ʻia nā mea a pau, akā, e hoʻopau ʻia ka mea mua o ka hui. No ka holoi ʻana i ka hui holoʻokoʻa, e hoʻohana i ka ʻōlelo "{}" i wehewehe ʻia ma ka kikoʻī C23, a i ʻole e kuhikuhi i ke koho "-fzero-init-padding-bits=union" e hoʻihoʻi i ka hana kahiko.
- Hoʻokomo ʻia ke kākoʻo no ka ʻano "musttail" ([[gnu::musttail]] a me [[clang::musttail]]) no nā kelepona huelo i hōʻoia ʻia. Hoʻopili ka ʻano i ka hoʻihoʻi ʻana i nā ʻōlelo e hoʻihoʻi i ka hana o kēia manawa, a e hōʻoia i kēlā kelepona e hoʻohana i ka recursion huelo, ʻaʻole ia e hoʻokaʻawale i ka hoʻomanaʻo hou aʻe ma ka puʻu (e hoʻopau i ka pilikia o ka pau ʻana o ka hoʻomanaʻo me ka nui o nā kelepona).
- Hoʻokomo ʻia ke kākoʻo no ka ʻano flag_enum ([[gnu::flag_enum]] a me [[clang::flag_enum]]) i hoʻohana ʻia i nā helu helu no ka hōʻike ʻana ua hoʻohana ʻia nā mea i loko o nā hana bitwise (pale i nā ʻōlelo aʻo ma -Wswitch mode).
- Kākoʻo hoʻohui ʻia no ke ʻano "counted_by", hiki ke hoʻohana ʻia e kuhikuhi i kahi kahua i loko o kahi hale me kahi ʻano maʻalahi e hoʻoholo ai i ka helu o nā mea. Hiki ke hoʻohana ʻia ke ʻano no ka hoʻomaikaʻi ʻana i ka pono o ka buffer overflow checks.
- Hoʻohui ʻia ka ʻano "nonnull_if_nonzero" i nā hana, e hōʻike ana i kekahi mau ʻāpana hana me nā kuhikuhi hiki ke NULL wale nō inā ʻaʻohe mea ʻē aʻe.
- Ua ʻae ʻia nā hana ma waho o ka mea hoʻohui i hoʻopaʻa ʻia "asm(….)". Ma nā mea hoʻokomo assembler, ʻae ʻia e kākau hou i ka hoʻomanaʻo ma ka ʻāpana ʻulaʻula o ka waihona (ka wahi ma luna o ka waihona).
- ʻOi aku ka wikiwiki o ka hōʻuluʻulu ʻana o ka code C++ no ka hoʻomaikaʻi ʻana i ka hashing template.
- Hoʻohui ʻia nā hoʻonui hou. Ua hoʻokō ʻia ke kākoʻo no ka hoʻololi ʻana i nā puka lou i loaʻa ke code no ka puka mua ʻana (no ka laʻana, ma o ka hoʻomaha a i ʻole kelepona hoʻihoʻi ʻana), ʻoiai inā hoʻohana ia mau puka lou i nā arrays i hoʻokaʻawale ʻia a ʻike ʻole ʻia ka nui i ka manawa hōʻuluʻulu. Ke kuhikuhi ʻia ke koho -O2, hiki ke hoʻololi ʻia ka vectorization o kekahi mau puka lou maʻalahi no ka loaʻa ʻole o ka ʻike tripcount.
- Hoʻohui ʻia ke ʻano hoʻonui hoʻonui i ka pae hoʻopili (LTO, Link-Time Optimization), ka mea e hōʻemi nui i ka manawa hoʻohui hou i ka wā e hoʻohana ai i ka LTO i nā kūlana i hoʻololi ʻia i ke code (ua hoʻoponopono ʻia kekahi hana). No ka hoʻohana ʻana i ke ʻano hoʻohui, ua koho ʻia ke koho "-flto-incremental".
- Hoʻomaikaʻi ʻia ka hui ʻana o nā faila hoʻokomo nui loa. Hoʻokō ʻia ka nānā ʻana i nā helu kolamu i ʻoi aku ma mua o 4096. Hoʻomaikaʻi i ka pololei o ka hōʻike ʻana i kahi o nā hewa a me nā ʻōlelo aʻo i nā faila nui loa.
- Hoʻonui i ka ʻike o nā hōʻike i ka wā e ʻike ai i nā pilikia. No ka laʻana, ʻike ʻia ka wahi o ka pilikia me ka hōʻailona "⚠️", ua hoʻololi ʻia ke ʻano o ka hoʻopuka no nā hewa i nā template C++, ua hoʻohui ʻia nā hōʻailona e hoʻomaʻamaʻa i ka hoʻololi ʻana i ka maʻamau C23, a ua hoʻolālā hou ʻia ke ʻano kala. Hoʻohui i ka hiki ke hoʻopuka i nā diagnostics ma ke ʻano Sarif (-fdiagnostics-format = sarif-file).
- Ua hoʻokō ʻia ka waihona libgdiagnostics, e ʻae iā ʻoe e hoʻohui i nā mana GCC e pili ana i ka hoʻolālā ʻana o nā memo diagnostic i kāu mau papahana (no ka laʻana, hiki iā ʻoe ke hoʻohana i ka ʻōlelo aʻoaʻo, ka hōʻike ʻana, a me nā ʻōlelo hoʻoponopono).
- Hoʻohui ʻia nā ʻōlelo aʻo "-Wtrailing-whitespace" a me "-Wleading-whitespace" e ʻike i ke koena keʻokeʻo ma ka hope o nā laina a me nā wahi keʻokeʻo hou ma ka hoʻomaka o nā laina.
- Hoʻohui ʻia ka ʻōlelo aʻo "-Wheader-guard" e hōʻike i nā pilikia i nā macros kiaʻi poʻo e pale ai i kahi faila poʻomanaʻo mai ka hoʻokomo hou ʻana.
- Ua hōʻano hou ʻia ka ʻaoʻao mua no ka ʻōlelo D i ka mana 2.111.0.
- Ua hoʻohui ʻia ke kākoʻo no nā helu helu ʻole i ka mua o Fortran.
- Aia i loko o ka pūʻolo kahi mea hoʻopili no ka ʻōlelo COBOL, gcobol, e kākoʻo ana i ka x86-64 a me AArch64 platform a ʻaʻole i hoʻolālā ʻia no ka hoʻohana ʻana ma nā ʻōnaehana 32-bit. Hoʻokō ka mea hōʻuluʻulu i ka ISO/IEC 1989:2023 kikoʻī a hala i ka hapa nui o nā hoʻokolohua NIST CCVS/85.
- Ua hoʻomau ʻia ka hoʻokō ʻana i nā kūlana OpenMP 5.0, 5.1, 5.2 a me 6.0 (Open Multi-Processing), e wehewehe ana i ka API a me nā ʻano hana no ka hoʻohana ʻana i nā ʻano papahana parallel ma nā ʻōnaehana multi-core a hybrid (CPU+GPU/DSP) me ka hoʻomanaʻo like ʻana a me nā ʻāpana vectorization (SIMD). Hoʻohui i ke kākoʻo no nā metadirectives a me nā tile, wehe, interop a me nā mea hoʻouna. No kekahi mau AMD a me NVIDIA GPU, ua hoʻohui ʻia ke kākoʻo no ka hoʻomanaʻo like ʻana (e hoʻohana ʻia ma ke kuhikuhi ʻana i ka unified_shared_memory i ka "koi" kuhikuhi). Hoʻohui i ke kākoʻo no ka ʻōlelo "self_maps".
- Ua hōʻano hou ʻia ke kua hope no ka hoʻolālā AArch64 e kākoʻo i ka platform MinGW (aarch64-w64-mingw32). Ua hoʻokō ʻia ma mua o 20 mau hoʻonui ARM8 a ua hoʻomaikaʻi ʻia ke kākoʻo no ka hoʻonui ʻia ʻana o ACLE (Arm C Language Extensions). Nui nā hoʻomaikaʻi i hana ʻia i ka code generator. Kākoʻo CPU i hoʻohui ʻia:
- Apple A12 (apple-a12)
- Apple M1 (apple-m1)
- Apple M2 (apple-m2)
- Apple M3 (apple-m3)
- ʻO ka lima Cortex-A520AE (cortex-a520ae)
- ʻO ka lima Cortex-A720AE (cortex-a720ae)
- Ka lima Cortex-A725 (cortex-a725)
- ʻO ka lima Cortex-R82AE (cortex-r82ae)
- ʻO ka lima Cortex-X925 (cortex-x925)
- Pūlima Neoverse N3 (neoverse-n3)
- Ka lima Neoverse V3 (neoverse-v3)
- Pūlima Neoverse V3AE (neoverse-v3ae)
- FUJITSU-MONAKA (fujitsu-monaka)
- NVIDIA Aloha
- NVIDIA Olympus (olympus)
- Qualcomm Oryon-1 (Oryon-1)
- Ua hōʻano hou ʻia ka AMD Radeon GPU (GCN) code generation backend e kākoʻo i ka hale waihona puke libstdc++ a ua hoʻohui ʻia ke kākoʻo hoʻomohala code hoʻokolohua no ka gfx9-generic, gfx10-3-generic, a me gfx11-generic device series.
- Kākoʻo ka x86 backend i ka Intel instruction set architecture extensions AVX10.2, AMX-AVX512, AMX-FP8, AMX-MOVRS, AMX-TF32, AMX-TRANSPOSE, MOVRS. Hoʻohui i kākoʻo no Intel Diamond Rapids a me Xeon Phi CPUs.
- Hoʻonui ʻia nā mana backend no LoongArch a me AVR platform.
- Wehe ʻia ke kākoʻo no ka hoʻolālā pahuhopu nios2 i hoʻohana ʻia i nā kaʻina hana Nios II. Ua hoʻopau ʻia ke kākoʻo no ka ILP32 ABI (-mabi=ilp32) ma ke awa AArch64 a e wehe ʻia i ka hoʻokuʻu nui ʻana.
Source: opennet.ru
