Famoahana ny GCC 12 compiler suite

Taorian'ny taonan'ny fampandrosoana dia navoaka ny suite compiler maimaim-poana GCC 12.1, ny famoahana manan-danja voalohany amin'ny sampana GCC 12.x vaovao. Mifanaraka amin'ny drafitra fanisana ny famoahana vaovao, ny dikan-teny 12.0 dia nampiasaina tamin'ny dingan'ny fampandrosoana, ary fotoana fohy talohan'ny famoahana ny GCC 12.1, dia efa nisampana ny sampana GCC 13.0, izay fototry ny famoahana lehibe manaraka, GCC 13.1, miforona. Ny 23 mey no hankalazana ny faha-35 taona nijoroan’ny GCC andiany voalohany ny tetikasa.

Fiovana lehibe:

  • Fanohanana fanampiny ho an'ny endrika debugging CTF (Compact Type Format), izay manome fitahirizana fampahalalam-baovao momba ny karazana C, fifandraisana eo amin'ny fiasa sy ny marika debugging. Rehefa tafiditra ao anatin'ny zavatra ELF, ny endrika dia mamela ny fampiasana ny tabilao misy tarehin-tsoratra EFL mba hisorohana ny dika mitovy.
  • Ny fanohanana ny endrika fitahirizana fampahalalana momba ny "STABS", noforonina tamin'ny taona 1980, dia tsy nampiasaina intsony.
  • Mitohy manitatra ny fanohanana ny fenitra C2X sy C++23 ho avy ho an'ny fiteny C sy C++ ny asa. Ohatra, ny fanohanana ny teny hoe "raha consteval" dia nampiana; avela hampiasa automatique amin'ny tohan-kevitra ("f(auto(g()))"); ny fampiasana ny fari-pitsipika tsy ara-bakiteny, goto ary etikety dia avela amin'ny fiasa nambara ho constexpr; fanohanana fanampiny ho an'ny mpandraharaha mpandraharaha index multidimensional []; amin'ny raha, ho an'ny ary switch, dia nitarina ny fahafahan'ny blocs d'initialisasi (β€œho (mampiasa T = int; T e : v)”).
  • Ny C++ Standard Library dia nanatsara ny fanohanana ireo fizarana andrana amin'ny fenitra C++20 sy C++23. Fanampiana fanampiny ho an'ny std::move_only_function, , std::basic_string::resize_and_overwrite, , ary std::invoke_r. Avela hampiasa std::unique_ptr, std::vector, std::basic_string, std::tsy voatery ary std::variant amin'ny asa constexpr.
  • Ny frontend Fortran dia manome fanohanana feno ho an'ny famaritana TS 29113, izay mamaritra ny fahafaha-manao hiantohana ny fifindran'ny Fortran sy C code.
  • Fanohanana fanampiny ho an'ny fanitarana __builtin_shufflevector(vec1, vec2, index1, index2, ...) izay nampiana teo aloha tao amin'ny Clang, izay manolotra antso tokana mba hanatanterahana ny asa fanodinkodinana sy fanodikodinam-peo mahazatra.
  • Rehefa mampiasa ny haavon'ny fanatsarana "-O2", ny vectorization dia alefa amin'ny alΓ lan'ny default (ny maodely -ftree-vectorize sy -fvect-cost-model=very-cheap dia alefa). Ny maodely tena mora dia mamela ny fanaovana vectoriel raha toa ka afaka manolo tanteraka ny kaody scalar atao vectorize ny code vector.
  • Nampiana fomba "-ftrivial-auto-var-init" mba ahafahan'ny fanombohana mazava ny fari-pahalalana eo amin'ny stack mba hanaraha-maso ny olana sy hanakanana ny vulnerabilitΓ© mifandray amin'ny fampiasana fari-pahalalana tsy fantatra.
  • Ho an'ny fiteny C sy C ++, dia nampiana fampiasa __builtin_dynamic_object_size naorina mba hamaritana ny haben'ny zavatra iray, mifanaraka amin'ny asa mitovy amin'ny Clang.
  • Ho an'ny fiteny C sy C++ dia nampiana ny tohana ho an'ny toetra "tsy misy" (ohatra, azonao atao ny manamarika ireo fiasa izay hiteraka hadisoana raha manandrana mampiasa azy ireo ianao).
  • Ho an'ny fiteny C sy C++ dia nampiana toromarika mialoha ny fanodinana β€œ#elifdef” sy β€œ#elifndef”.
  • Nampiana saina "-Wbidi-chars" hanehoana fampitandremana raha diso ny fampiasana ny tarehin-tsoratra UTF-8, hanova ny filaharan'ny lahatsoratra roa tondro.
  • Nampiana saina "-Warray-compare" hanehoana fampitandremana rehefa manandrana mampitaha operand roa izay manondro array.
  • Ny fampiharana ny fenitra OpenMP 5.0 sy 5.1 (Open Multi-Processing), izay mamaritra ny API sy ny fomba fampiharana ny fomba fandaharana parallΓ¨le amin'ny rafitra multi-core sy hybrid (CPU+GPU/DSP) miaraka amin'ny fahatsiarovana iombonana sy ny vectorization units (SIMD) , dia nitohy.
  • Fanatsarana ny fampiharana ny fanoritsoritana fandaharana parallΓ¨le OpenACC 2.6, izay mamaritra ny fitaovana amin'ny fampidinana ny asa amin'ny GPU sy ny processeur manokana toa ny NVIDIA PTX.
  • Fanohanana toromarika miitatra Intel AVX86-FP512 sy ny karazana _Float16 dia nampiana tao amin'ny backend famokarana code ho an'ny maritrano x16.
  • Ho an'ny maritrano x86, ny fiarovana dia nampiana amin'ny vulnerabilities amin'ny processeur vokatry ny fanombantombanana ny toromarika taorian'ny hetsika mitsambikina tsy misy fepetra. Mitranga ny olana noho ny fanodinana mialoha ny toromarika manaraka avy hatrany ny torolalan'ny sampana amin'ny fitadidiana (SLS, Straight Line Speculation). Mba ahafahana miaro dia atolotra ny safidy "-mharden-sls".
  • Nampiana fitiliana ny fampiasana fari-pahalalana tsy fantatra amin'ny mpanadihady static andrana. Nampiana fanohanana voalohany amin'ny famakafakana kaody fivoriambe amin'ny fampidirana an-tsipika. Fanaraha-maso fahatsiarovana nohatsaraina. Nosoratana indray ny kaody ho an'ny fanodinana fitenenana switch.
  • Nampiana antso vaovao 30 ho an'ny libgccjit, tranomboky ifampizarana amin'ny fametahana mpamorona kaody amin'ny dingana hafa ary ampiasaina amin'ny JIT manangona bytecode amin'ny kaody milina.
  • Ny fanohanana ny mekanika CO-RE (Compile Once - Run Everywhere) dia nampiana ao amin'ny backend amin'ny famokarana BPF bytecode, izay ahafahanao manangona ny kaody programa eBPF ho an'ny kernel Linux indray mandeha ary mampiasa loader manerantany manokana izay mampifanaraka ny programa feno amin'ny kernel ankehitriny sy BPF Types Format). Ny CO-RE dia mamaha ny olan'ny fampitaovana ireo programa eBPF natambatra, izay tsy azo ampiasaina afa-tsy amin'ny dikan-tenin'ny kernel izay nanangona azy ireo teo aloha, satria miova ny toeran'ny singa ao amin'ny rafitra data.
  • Ny backend RISC-V dia manampy fanohanana ho an'ny fanitarana ny maritrano vaovao zba, zbb, zbc ary zbs, ary koa ny fanitarana ISA ho an'ny hetsika kriptografika vector sy scalar. Amin'ny alΓ lan'ny default, ny fanohanana ny RISC-V ISA 20191213 dia omena.
  • Ny fanohanana ny karazana __int128_t/integer(karazana=16) dia nampiana tao amin'ny backend famokarana kaody ho an'ny AMD GPU mifototra amin'ny microarchitecture GCN. Azo atao ny mampiasa vondrona miasa hatramin'ny 40 isaky ny vondrona informatika (CU) ary hatramin'ny 16 eo anoloana fampianarana (wavefront, andian-tady vita amin'ny motera SIMD) isaky ny vondrona. Teo aloha, iray ihany ny sisiny fampianarana isaky ny CU navela.
  • Ny backend NVPTX, natao hamoronana kaody amin'ny fampiasana ny maritrano fampianarana NVIDIA PTX (Parallel Thread Execution), dia nanampy ny fahafahana mampiasa ny saina "-march", "-mptx" ary "-march-map". Fanohanana ny PTX ISA sm_53, sm_70, sm_75 ary sm_80. Ny maritrano default dia sm_30.
  • Ao amin'ny backend ho an'ny PowerPC / PowerPC64 / RS6000 processeur, dia naverina nosoratana ny fampiharana ireo fiasa naorina. Ny fiasa anatiny __builtin_get_texasr, __builtin_get_texasru, __builtin_get_tfhar, __builtin_get_tfiar, __builtin_set_texasr, __builtin_set_texasru, __builtin_set_tfhar ary __builtin_set dia voarakitra.
  • Fanohanana ny Arm Ampere-64 (-mcpu/-mtune ampere1), Arm Cortex-A1 (cortex-a510), Arm Cortex-A510 (cortex-a710) ary Arm Cortex-X710 (cortex- x2). Fanampiana fanampiny ho an'ny safidy maritrano ARMv2 vaovao ampiasaina amin'ny safidy "-march": armv8-a, armv8.7-a, armv8.8-a. Nampiana ny fampiharana ny asa C natsangana tao amin'ny compiler (Intrinsics) ho an'ny fametrahana atomika sy fitahirizana angona ho fahatsiarovana, mifototra amin'ny fampiasana torolalana ARM (ls9). Fanampiana fanampiny amin'ny fanafainganana ny fiasa memcpy, memmove ary memset amin'ny fampiasana ny fanitarana ARM mopsoption.
  • Nampiana fomba fisavana vaovao "-fsanitize = shadow-call-stack" (ShadowCallStack), izay tsy misy afa-tsy amin'ny maritrano AArch64 ary miasa rehefa manangana kaody miaraka amin'ny safidy "-fixed-r18". Ny maodely dia manome fiarovana amin'ny fanodinkodinana ny adiresin'ny fiverenana amin'ny asa iray raha sendra misy fihoaran'ny buffer amin'ny stack. Ny fototry ny fiarovana dia ny mitahiry ny adiresy miverina amin'ny stack "aloka" misaraka aorian'ny famindrana ny fanaraha-maso amin'ny asa iray ary maka ity adiresy ity alohan'ny hivoahan'ny asa.

Source: opennet.ru

Add a comment