Rakirina komîteya berhevkerê GCC 12

Piştî salek pêşkeftinê, pakêta berhevkerê belaş GCC 12.1 hate berdan, ku yekem serbestberdana girîng di şaxê nû ya GCC 12.x de ye. Li gorî pilana jimarekirina nû ya serbestberdanê, guhertoya 12.0 di pêvajoya pêşkeftinê de hate bikar anîn, û demek kin berî serbestberdana GCC 12.1, şaxê GCC 13.0 jixwe veqetiyabû, li ser bingeha ku serbestberdana mezin a din, GCC 13.1, dê pêk were. Di 23ê Gulanê de, proje dê 35 sal ji damezrandina çapa yekem a GCC pîroz bike.

Guhertinên sereke:

  • Piştgiriyek ji bo CTF (Formata Tîpa Kompaktî) debugkirinê zêde kir, ku hilanîna berhevoka agahdariya di derheqê celebên C, girêdanên di navbera fonksiyonan û sembolên xeletkirinê de peyda dike. Dema ku di nav tiştên ELF-ê de tête bicîh kirin, format destûrê dide karanîna tabloyên karakterên EFL-ê da ku ji dubarekirina daneyan dûr bixe.
  • Piştgiriya ji bo "STABS" formata hilanîna agahdariya debugkirinê, ku di salên 1980-an de hatî afirandin, hate betal kirin.
  • Xebat ji bo berfirehkirina piştgirîya ji bo standardên pêşerojê C2X û C++23 ji bo zimanên C û C++ berdewam dike. Bo nimûne, piştgirî ji bo îfadeya "ger consteval" hatiye zêdekirin; destûr tê dayîn ku di argumanên fonksiyonê de otomatîk bikar bîne ("f(auto(g()))"); Di fonksiyonên ku wekî constexpr hatine destnîşan kirin de karanîna guhêrbarên ne-biwêj, goto û etîketan destûr tê dayîn; piştgiriya zêdekirî ji bo operatorên index operatorên piralî[]; di heke, ji bo û veguheztinê de, kapasîteyên blokên destpêkkirinê hatine berfireh kirin ("ji bo (bikaranîna T = int; T e: v)").
  • Pirtûkxaneya Standard a C++ ji bo beşên ceribandinê yên standardên C++20 û C++23 piştgirî çêtir kiriye. Piştgiriyek ji bo std::move_only_function, , std::basic_string::resize_and_overwrite, , û std::invoke_r zêde kir. Destûra bikaranîna std::unique_ptr, std:: vector, std:: string_basic, std:: vebijarkî û std:: variant di fonksiyonên constexpr de heye.
  • Eniya Fortran ji bo taybetmendiya TS 29113 piştgirîya bêkêmasî peyda dike, ku kapasîteyên ji bo misogerkirina veguheztinê di navbera koda Fortran û C de vedibêje.
  • Ji bo dirêjkirina __builtin_shufflevector(vec1, vec2, index1, index2, ...) ku berê li Clang hatî zêdekirin piştgirî lê zêde kir, ku bangek yekane pêşkêşî dike da ku karûbarên vekêşana vektor û vekêşana hevpar pêk bîne.
  • Dema ku asta xweşbîniyê ya "-O2" bikar tîne, vektorîzasyon ji hêla xwerû ve tê çalak kirin ( modên -ftree-vectorize û -fvect-cost-model=pir-erzan têne çalak kirin). Modela pir erzan destûrê dide vektorîzasyonê tenê heke koda vektorê bi tevahî li şûna koda skalar a ku vektorîzekirî biguhezîne.
  • Moda "-ftrivial-auto-var-init" lê zêde kir da ku destpêkirina eşkere ya guhêrbaran li ser stakê çalak bike da ku pirsgirêkan bişopîne û qelsiyên ku bi karanîna guhêrbarên nedestpêkkirî ve girêdayî ne asteng bike.
  • Ji bo zimanên C û C++, fonksiyonek çêkirî __builtin_dynamic_object_size hatiye zêdekirin da ku mezinahiya tiştek diyar bike, ku bi fonksiyonek mîna Clang re hevaheng e.
  • Ji bo zimanên C û C++, piştgirî ji bo taybetmendiya "neberdest" hatiye zêdekirin (mînak, hûn dikarin fonksiyonên ku heke hûn hewl bidin ku wan bikar bînin dê xeletiyek çêbikin nîşan bidin).
  • Ji bo zimanên C û C++, piştgirî ji bo rêwerzên pêşdibistanê "#elifdef" û "#elifndef" hatine zêdekirin.
  • Ala "-Wbidi-chars" lê zêde kir da ku hişyariyek nîşan bide ger tîpên UTF-8 xelet werin bikar anîn, rêza ku nivîsa dualî tê xuyang kirin diguhezîne.
  • Alaya "-Warray-compare" lê zêde kir da ku hişyariyek nîşan bide dema ku hûn hewl didin ku du operandên ku behsa rêzikan dikin bidin ber hev.
  • Pêkanîna standardên OpenMP 5.0 û 5.1 (Pir-Pêvajoya Vekirî), ku API û rêbazên ji bo sepandina rêbazên bernameya paralel li ser pergalên pir-core û hybrid (CPU+GPU/DSP) bi yekîneyên bîranîn û vektorîzasyonê yên hevbeş (SIMD) diyar dikin. , berdewam kiriye.
  • Pêkanîna pêşkeftî ya taybetmendiya bernameya paralel a OpenACC 2.6, ku amûrên ji bo barkirina operasyonên li ser GPU û pêvajoyên pispor ên wekî NVIDIA PTX diyar dike.
  • Piştgiriya ji bo rêwerzên dirêjkirî Intel AVX86-FP512 û celebê _Float16 ji bo mîmariya x16 li pişta hilberîna kodê hate zêdekirin.
  • Ji bo mîmariya x86, parastin li hember qelsiyên di pêvajoyan de ku ji ber pêkanîna spekulatîf a rêwerzan piştî operasyonên bazdanê yên bê şert û merc hatine zêdekirin. Pirsgirêk ji ber pêvajoyek pêşîlêgirtinê ya rêwerzan tavilê li dû fermana şaxê di bîranînê de (SLS, Spekulasyona Rêza Rast) pêk tê. Ji bo çalakkirina parastinê, vebijarka "-mharden-sls" tê pêşniyar kirin.
  • Tespîtkirina karanîna guhêrbarên nedestpêkkirî li analîzera statîk a ceribandinê zêde kir. Piştgiriya destpêkê ya ji bo analîzkirina koda meclîsê di navberên hundurîn de zêde kir. Şopandina bîranînê çêtir kirin. Koda ji bo hilberandina îfadeyên guhêrbar ji nû ve hatî nivîsandin.
  • 30 bangên nû li libgccjit, pirtûkxaneyek hevbeş zêde kirin ji bo ku jeneratorek kodê di pêvajoyên din de vehewîne û wê bikar bîne da ku JIT bytecode li koda makîneyê berhev bike.
  • Piştgiriya ji bo mekanîzmaya CO-RE (Carekê Berhev Bike - Her Der Bixebite) ji bo çêkirina bytecode BPF-ê li piştê hatî zêdekirin, ku destûrê dide te ku hûn koda bernameyên eBPF ji bo kernel Linux tenê carekê berhev bikin û barkerek gerdûnî ya taybetî bikar bînin ku adapte dike. Bernameya barkirî li kernel û Forma Cureyên BPF ya heyî). CO-RE pirsgirêka veguheztina bernameyên eBPF yên berhevkirî çareser dike, yên ku berê tenê di guhertoya kernelê ya ku ew lê hatine berhev kirin de têne bikar anîn, ji ber ku pozîsyona hêmanan di strukturên daneyê de ji guhertoyek berbi guhertoyê diguhezîne.
  • Piştgiriya RISC-V ji bo dirêjkirina mîmariya mîmarî ya nû zba, zbb, zbc û zbs, û her weha dirêjkirina ISA-yê ji bo operasyonên krîptografî yên vektor û skalar piştgirî zêde dike. Ji hêla xwerû ve, piştgirî ji bo taybetmendiya RISC-V ISA 20191213 tê peyda kirin. Ala -mtune=thead-c906 hatîye zêdekirin da ku xweşbîniyên ji bo korên T-HEAD c906 çalak bike.
  • Piştgiriya ji bo celebê __int128_t/tevjimar(cure=16) ji bo GPU-yên AMD-ê li ser bingeha mîkrosaziya GCN-ê li pişta hilberîna kodê hate zêdekirin. Di her komê de gengaz e ku meriv ji her yekîneyek hesabker (CU) heya 40 komên xebatê û heya 16 eniyên rêwerzê (pêşiya pêlê, komek têlên ku ji hêla Motora SIMD-ê ve paralel têne darve kirin) bikar bînin. Berê, ji her CU re tenê yek rêwerzek destûr hate dayîn.
  • Piştgiriya NVPTX, ku ji bo çêkirina kodê bi karanîna mîmariya koma rêwerzê ya NVIDIA PTX (Parallel Thread Execution) hatî çêkirin, şiyana karanîna alayên "-marş", "-mptx" û "-marş-nexşe" zêde kiriye. Ji bo PTX ISA sm_53, sm_70, sm_75 û sm_80 piştgirî pêkanîn. Mîmariya xwerû sm_30 e.
  • Di paşîn de ji bo pêvajoyên PowerPC / PowerPC64 / RS6000, pêkanînên fonksiyonên çêkirî ji nû ve hatine nivîsandin. Fonksiyonên çêkirî __builtin_get_texasr, __builtin_get_texasru, __builtin_get_tfhar, __builtin_get_tfiar, __builtin_set_texasr, __builtin_set_texasru, __builtin_set_tfhar, __builtin_set_tfhar û __builtin_tfhar û _buil hatine sazkirin.
  • Piştgiriya ji bo Arm Ampere-64 (-mcpu / -mtune ampere1), Arm Cortex-A1 (cortex-a510), Arm Cortex-A510 (cortex-a710) û Arm Cortex-X710 (cortex-x2). Piştgiriya ji bo vebijarkên nû yên mîmariya ARMv2 ji bo karanîna bi vebijarka "-adar" re zêde kir: armv8-a, armv8.7-a, armv8.8-a. Ji bo barkirina atomî û hilanîna daneyan di bîranînê de, li ser bingeha karanîna rêwerzên dirêjkirî yên ARM (ls9) pêkanîna fonksiyonên C-yê ku di berhevkerê (Intrinsics) de hatî çêkirin lê zêde kir. Ji bo bilezkirina fonksiyonên memcpy, memmove û memset bi karanîna dirêjkirina mopsoption ARM piştgirî zêde kir.
  • Moda kontrolê ya nû "-fsanitize=shadow-call-stack" (ShadowCallStack) lê zêde kir, ku niha tenê ji bo mîmariya AArch64 heye û dema ku kodê bi vebijarka "-fixed-r18" ava dike dixebite. Modê parastina li dijî nivîsandina navnîşana vegerê ji fonksiyonek di bûyera zêdebûna tamponê ya li ser stikê de peyda dike. Esasê parastinê ev e ku piştî veguheztina kontrolê li fonksiyonek û wergirtina vê navnîşanê berî derketina fonksiyonê, navnîşana vegerê di stûnek "siya" veqetandî de hilîne.

Source: opennet.ru

Add a comment