Ar Γ΄l blwyddyn o ddatblygiad, mae'r gyfres am ddim crynodwr GCC GCC 15.1 wedi'i ryddhau, y datganiad mawr cyntaf yn y gangen 15.x GCC newydd. Yn Γ΄l y cynllun rhifo rhyddhau, defnyddiwyd fersiwn 15.0 yn ystod y datblygiad, ac yn fuan cyn rhyddhau GCC 15.1, roedd cangen o GCC 16.0 eisoes wedi'i fforchio, a fydd yn sail i'r datganiad mawr nesaf, GCC 16.1.
Newidiadau mawr:
- Wrth lunio rhaglenni C, defnyddir y safon C23 (Crynodeb Newid) gydag estyniadau GNU ("-std=gnu23") yn ddiofyn. Yn flaenorol, defnyddiwyd y safon C17 yn ddiofyn (-std=gnu17). Gallai'r newid o bosibl achosi problemau wrth adeiladu prosiectau presennol oherwydd cynnwys y cysonyn nullptr, y math _BitInt(n), a'r allweddeiriau bool, gwir a ffug, a allai wrthdaro Γ’ dynodwyr a enwir yn debyg a ddiffinnir mewn cymwysiadau.
- Mae'r galluoedd canlynol o safon C23 wedi'u gweithredu:
- Mae'r gyfarwyddeb "#embed" wedi'i chynllunio ar gyfer ymgorffori adnoddau deuaidd mewn cod.
- Y briodwedd "di-ddilyniant", sy'n dangos nad yw'r canlyniad yn dibynnu ar y drefn gweithredu.
- Mae'r nodwedd "atgenhedladwy" yn nodi bod y ffwythiant bob amser yn dychwelyd yr un canlyniad gyda'r un mewnbwn, h.y. nid yw'n dibynnu ar ffactorau eraill.
- Mae elfennau o safon C2Y y dyfodol wedi eu gweithredu (-std=c2y a -std=gnu2y):
- Y gallu i ddatgan newidynnau mewn datganiad "os", megis "os (int x = get ()) {...}".
- Cefnogaeth i ddolenni enwi i gyfeirio atynt mewn cod. allanol: ar gyfer (int i = 0; i < IK; ++ i) { switsh (i) { achos 1: toriad; // neidiau i CONT1 achos 2: torri allanol; // neidio i CONT2 } // CONT1 } // CONT2
- Cefnogaeth ar gyfer pennu ystodau o werthoedd cyfanrif mewn ymadroddion achos, megis "achos 1...10:".
- Yr Γ΄l-ddodiaid "i" a "j" i ddynodi'r rhan ddychmygol mewn rhifau cymhlyg.
- Posibilrwydd defnyddio'r gweithredwyr "++" a "β" gyda rhifau cymhlyg.
- Mae'r lluniad "_Generic(type, expr1, expr2, ...)" ar gyfer dewis mynegiant yn seiliedig ar y math operand.
- Cefnogaeth i gael mynediad at araeau beit fel mathau eraill o wrthrychau, megis strwythurau ac undebau.
- Cefnogaeth ar gyfer cymhwyso'r gweithredwr "alignof" i araeau anghyflawn (y rhai a ddatganwyd heb nodi maint, megis "int a []").
- Ychwanegwyd cystrawen newydd ar gyfer dilyniannau dianc cymeriad wythol, hecsadegol a chyffredinol. Yn lle β\uβ, β\xβ a β\nnβ, cynigir y dilyniannau β\u{}β, β\o{}β a β\x{}β, lle gellir nodi unrhyw nifer o ddigidau.
- Swyddogaethau adeiledig "__builtin_stdc_rotate_left" a "__builtin_stdc_rotate_right".
- Caniateir gweithrediadau dim hyd ar awgrymiadau NULL (e.e. "sizeof(*p)").
- Mae blaen yr iaith C++ yn gweithredu nodweddion sy'n cael eu datblygu ar gyfer safon C++26 yn y dyfodol:
- Gweithredwr amrywiadol "ffrind" ("ffrind Ts...").
- Y gallu i ddefnyddio'r allweddair constexpr gydag amrywiad o'r gweithredwr newydd (lleoliad newydd) i osod gwrthrych yn y cof a neilltuwyd ymlaen llaw ar amser llunio.
- Gwall allbwn wrth ddileu pwyntydd i fath anghyflawn.
- Mae'r gystrawen ar gyfer diffinio paramedrau amrywiol ag elipsis heb goma blaenorol (er enghraifft, wrth nodi "void e(intβ¦)" yn lle "void e(int, ...)") wedi'i anghymeradwyo.
- Mynegeio pecyn paramedr mewn templedi.
- Priodoleddau ar gyfer rhwymiadau strwythuredig;
- Cystrawen '= dileu("rheswm")';
- Cynnwys "@", "$" a "`" yn y set nodau sylfaenol.
- Gwaherddir defnyddio macros i ddatgan modiwlau.
- Y gallu i ddefnyddio rhwymiad strwythuredig fel amod mewn datganiadau os a switsh.
- Mae cefnogaeth ar gyfer cymhariaeth arae uniongyrchol (e.e. "int arr1[5]; int arr2[5]; bool same = arr1 == arr2") wedi'i derfynu.
- Y mecanwaith "#embed" ar gyfer gwreiddio adnoddau deuaidd.
- Mae'r dosbarth templed is_trivial wedi'i anghymeradwyo.
- Ychwanegwyd nodweddion C++23:
- Gwrthod rhai defnyddiau o'r gyfarwyddeb "allforio" a chaniatΓ‘u defnyddio "export {}".
- Cefnogaeth ar gyfer ymestyn oes gwrthrychau dros dro i mewn ar gyfer dolenni sy'n ailadrodd dros ystodau.
- Mae'r llyfrgell libstdc++ yn gweithredu cefnogaeth arbrofol ar gyfer y modiwlau std a std.compat.
- Nid yw defnyddio'r cychwynnwr "{0}" ar gyfer undebau yng nghod C a C++ bellach yn gwarantu bod yr holl gynnwys yn cael ei glirio, ond yn hytrach yn arwain at ddileu elfen gyntaf yr undeb. I glirio'r undeb cyfan, defnyddiwch y mynegiad "{}" a ddiffinnir ym manyleb C23, neu nodwch yr opsiwn "-fzero-init-padding-bits=unions" i adfer yr hen ymddygiad.
- Wedi gweithredu cefnogaeth ar gyfer y briodwedd "musttail" ([[gnu::musttail]] a [[clang::musttail]]) ar gyfer galwadau cynffon gwarantedig. Mae'r priodoledd yn berthnasol i ddatganiadau dychwelyd sy'n gwneud galwad recursive i'r swyddogaeth gyfredol, ac yn sicrhau y bydd galwad o'r fath yn defnyddio recursion cynffon, nad yw'n dyrannu cof ychwanegol ar y pentwr (gan ddileu'r risg o redeg allan o gof gyda nifer fawr iawn o alwadau).
- Wedi gweithredu cefnogaeth ar gyfer y briodwedd flag_enum ([[gnu::flag_enum]] a [[clang::flag_enum]]) wedi'i gymhwyso i gyfrifiadau i nodi bod y cynnwys yn cael ei ddefnyddio mewn gweithrediadau bitwise (yn atal rhybuddion yn y modd -Wswitch).
- Ychwanegwyd cefnogaeth i'r briodwedd "counted_by", y gellir ei ddefnyddio i nodi maes mewn strwythur gydag arae hyblyg sy'n pennu nifer yr elfennau. Gellir defnyddio'r priodoledd i wella effeithlonrwydd gwiriadau gorlif byffer.
- Ychwanegwyd priodoledd "nonnull_if_nonzero" i swyddogaethau, sy'n nodi y gall rhai paramedrau swyddogaeth gydag awgrymiadau fod yn NULL dim ond os yw paramedr arall yn sero.
- Caniateir cydosodwr estynedig sy'n inlinio "asm(β¦.)" swyddogaethau allanol. Mewn mewnosodiadau cydosodwr, caniateir i drosysgrifo cof yn y parth coch y pentwr (yr ardal ar frig y pentwr).
- Mae casglu cod C ++ yn gyflymach diolch i stwnsh templed gwell.
- Ychwanegwyd optimeiddiadau newydd. Mae cefnogaeth wedi'i rhoi ar waith ar gyfer fectoreiddio dolenni sy'n cynnwys cod ar gyfer gadael yn gynnar (er enghraifft, trwy doriad neu alwad dychwelyd), hyd yn oed os yw dolenni o'r fath yn trin araeau neu glustogau a ddyrannwyd yn ddeinamig nad yw eu maint yn hysbys ar yr amser casglu. Pan nodir yr opsiwn -O2, mae fectoreiddio rhai dolenni y gellir eu fectoreiddio'n hawdd ac nad oes gwybodaeth cyfrif tripiau ar gael ar eu cyfer wedi'i alluogi.
- Ychwanegwyd modd optimeiddio cynyddrannol yn y cam cysylltu (LTO, Optimeiddio Amser Cyswllt), sy'n lleihau'n sylweddol yr amser ail-grynhoi wrth ddefnyddio LTO mewn sefyllfaoedd lle mae mΓ’n newidiadau wedi'u gwneud i'r cod (mae un swyddogaeth wedi'i golygu). Er mwyn galluogi modd cynyddrannol, cynigir yr opsiwn "-flto-increment".
- Gwell casgliad o ffeiliau mewnbwn mawr iawn. Gweithredwyd olrhain niferoedd colofnau sy'n fwy na 4096. Gwell cywirdeb o ran nodi lleoliad gwallau a rhybuddion mewn ffeiliau mawr iawn.
- Gwell gwelededd o adroddiadau wrth wneud diagnosis o broblemau. Er enghraifft, mae lleoliad y broblem yn cael ei amlygu gyda'r symbol ββ οΈβ, mae cynllun yr allbwn ar gyfer gwallau mewn templedi C ++ wedi'i newid, mae awgrymiadau wedi'u hychwanegu i symleiddio'r trawsnewid i safon C23, ac mae'r cynllun lliw wedi'i ailgynllunio. Ychwanegwyd y gallu i allbynnu diagnosteg mewn fformat Sarif (-fdiagnostics-format=sarif-file).
- Mae'r llyfrgell libgdiagnostics wedi'i gweithredu, sy'n eich galluogi i integreiddio galluoedd GCC sy'n ymwneud Γ’ dylunio negeseuon diagnostig yn eich prosiectau (er enghraifft, gallwch ddefnyddio awgrymiadau dyfynnu, amlygu a chywiro).
- Ychwanegwyd rhybuddion "-Wtrailing-whitespace" a "-Wleading-whitespace" i ganfod gofod gwyn gweddilliol ar ddiwedd llinellau a gofod gwyn ychwanegol ar ddechrau llinellau.
- Ychwanegwyd rhybudd "-Wheader-guard" i adrodd am broblemau mewn macros gwarchod pennawd sy'n atal ffeil pennawd rhag cael ei gynnwys eto.
- Mae blaen blaen yr iaith D wedi'i ddiweddaru i fersiwn 2.111.0.
- Mae cefnogaeth ar gyfer cyfanrifau heb lofnod wedi'i ychwanegu at flaen-ben Fortran.
- Mae'r pecyn yn cynnwys casglwr ar gyfer yr iaith COBOL, gcobol, sy'n cefnogi'r llwyfannau x86-64 ac AArch64 ac nad yw wedi'i gynllunio i'w ddefnyddio ar systemau 32-bit. Mae'r casglwr yn gweithredu manyleb ISO/IEC 1989:2023 ac yn pasio'r rhan fwyaf o brofion NIST CCVS/85.
- Mae gweithredu safonau OpenMP 5.0, 5.1, 5.2 a 6.0 (Aml-Brosesu Agored), gan ddiffinio'r API a dulliau ar gyfer cymhwyso dulliau rhaglennu cyfochrog ar systemau aml-graidd a hybrid (CPU + GPU / DSP) gydag unedau cof a fectoreiddio a rennir (SIMD), wedi parhau. Cefnogaeth ychwanegol ar gyfer metadirectives a lluniadau teils, dadrolio, rhyngopio ac anfon. Ar gyfer rhai GPUs AMD a NVIDIA, mae cefnogaeth ar gyfer cof a rennir unedig wedi'i ychwanegu (wedi'i alluogi trwy nodi unified_shared_memory yn y gyfarwyddeb "angen). Ychwanegwyd cefnogaeth i'r ymadrodd "self_maps".
- Mae'r backend ar gyfer pensaernΓ―aeth AArch64 wedi'i ddiweddaru i gefnogi platfform MinGW (aarch64-w64-mingw32). Mae mwy nag 20 o estyniadau ARM8 wedi'u rhoi ar waith ac mae'r cymorth ar gyfer estyniad ACLE (Arm C Language Extensions) wedi'i wella. Mae nifer o welliannau wedi'u gwneud i'r generadur cod. Ychwanegwyd cefnogaeth CPU:
- Apple A12 (afal-a12)
- Apple M1 (afal-m1)
- Apple M2 (afal-m2)
- Apple M3 (afal-m3)
- Cortecs braich-A520AE (cortecs-a520ae)
- Cortecs braich-A720AE (cortecs-a720ae)
- Cortecs braich-A725 (cortecs-a725)
- Cortecs Braich-R82AE (cortecs-r82ae)
- Cortecs braich-X925 (cortecs-x925)
- Braich Neoverse N3 (neoverse-n3)
- Braich Neoverse V3 (neoverse-v3)
- Braich Neoverse V3AE (neoverse-v3ae)
- FUJITSU-MONAKA (fujitsu-monaka)
- NVIDIA Grace
- NVIDIA Olympus (Olympus)
- Qualcomm Oryon-1 (Oryon-1)
- Mae backend cynhyrchu cod AMD Radeon GPU (GCN) wedi'i ddiweddaru i gefnogi'r llyfrgell libstdc ++ ac mae cefnogaeth cynhyrchu cod arbrofol wedi'i ychwanegu ar gyfer y gyfres dyfeisiau gfx9-generig, gfx10-3-generig, a gfx11-generig.
- Mae'r backend x86 bellach yn cefnogi estyniadau pensaernΓ―aeth set gyfarwyddiadau Intel AVX10.2, AMX-AVX512, AMX-FP8, AMX-MOVRS, AMX-TF32, AMX-TRANSPOSE, MOVRS. Cefnogaeth ychwanegol ar gyfer CPUs Intel Diamond Rapids a Xeon Phi.
- Galluoedd Γ΄l-gefn estynedig ar gyfer llwyfannau LoongArch ac AVR.
- Wedi dileu cefnogaeth ar gyfer y bensaernΓ―aeth darged nios2 a ddefnyddir ym mhroseswyr Nios II. Mae cefnogaeth i'r ILP32 ABI (-mabi = ilp32) yn y porthladd AArch64 wedi'i anghymeradwyo a bydd yn cael ei ddileu yn y datganiad mawr nesaf.
Ffynhonnell: opennet.ru
