Kohëzgjidhja e paketës së kompilerëve GCC 11

Pas një viti zhvillimi, është publikuar kohëzgjidhja e paketës së lirë të kompilerëve GCC 11.1, lëshimi i parë i rëndësishëm në degën e re GCC 11.x. Sipas skemës së re të numërimit të lëshimeve, versioni 11.0 u përdor gjatë procesit të zhvillimit, dhe pak para daljes së GCC 11.1, dega GCC 12.0 u ndan, mbi të cilën do të formohet lëshimi i ardhshëm i rëndësishëm GCC 12.1.

GCC 11.1 është i njohur për kalimin në përdorimin e formatit të skedarëve të shenjave DWARF 5 si default, përfshirjen e standardit C++17 ('-std=gnu++17') si default, përmirësimin e theksuar të mbështetjes për standardin C++20, mbështetje eksperimentale për C++23, përmirësime të lidhura me standardin e ardhshëm të gjuhës C (C2x), dhe optimizime të reja për performancën.

Ndryshimet kryesore:

  • Regjimi default pĂ«r gjuhĂ«n C++ Ă«shtĂ« kaluar nĂ« pĂ«rdorimin e standardit C++17 (-std=gnu++17) nĂ« vend tĂ« C++14 qĂ« ishte propozuar mĂ« parĂ«. ËshtĂ« e mundur tĂ« çaktivizohet selektivisht komportimi i ri tĂ« C++17 kur pĂ«rpunohen shabllone, nĂ« tĂ« cilat pĂ«rdoren shabllone tĂ« tjera si parametra (-fno-new-ttp-matching).
  • Shtohet mbĂ«shtetje pĂ«r pĂ«rshpejtimin hardueror tĂ« instrumentit AddressSanitizer, i cili mundĂ«son pĂ«rcaktimin e rasteve tĂ« aksesit nĂ« zona tĂ« çliruara tĂ« memories, daljes pĂ«rtej kufijve tĂ« ndarjeve tĂ« alokuara dhe disa lloje tĂ« tjera gabimesh gjatĂ« punĂ«s me memorien. PĂ«rshtatja harduerore Ă«shtĂ« aktualisht e disponueshme vetĂ«m pĂ«r arkitekturĂ«n AArch64 dhe Ă«shtĂ« pĂ«rqendruar nĂ« pĂ«rdorimin e saj gjatĂ« kompilimit tĂ« bĂ«rthamĂ«s Linux. PĂ«r tĂ« aktivizuar pĂ«rshpejtimin hardueror tĂ« AddressSanitizer gjatĂ« ndĂ«rtimit tĂ« komponenteve tĂ« hapĂ«sirĂ«s sĂ« pĂ«rdoruesit Ă«shtĂ« shtuar flagu "-fsanitize=hwaddress", ndĂ«rsa pĂ«r bĂ«rthamĂ«n – "-fsanitize=kernel-hwaddress".
  • GjatĂ« gjenerimit tĂ« informacionit pĂ«r debugin, formati DWARF 5 ka qenĂ« aktiv nga ana e tĂ« dhĂ«nave, duke lejuar gjenerimin e tĂ« dhĂ«nave debuguese deri nĂ« 25% mĂ« tĂ« kompaktuara krahasuar me versionet e mĂ«parshme. PĂ«r mbĂ«shtetje tĂ« plotĂ« tĂ« DWARF 5, kĂ«rkohet binutils tĂ« paktĂ«n versioni 2.35.2. NĂ« mjetet pĂ«r debugin, formati DWARF 5 mbĂ«shtetet qĂ« nga GDB 8.0, valgrind 3.17.0, elfutils 0.172 dhe dwz 0.14. PĂ«r tĂ« gjeneruar skedarĂ« debuguese duke pĂ«rdorur versione tĂ« tjera tĂ« DWARF, mund tĂ« pĂ«rdoren opsionet "-gdwarf-2", "-gdwarf-3" dhe "-gdwarf-4".
  • KĂ«rkesa pĂ«r kompilatorĂ«t qĂ« mund tĂ« pĂ«rdoren pĂ«r ndĂ«rtimin e GCC janĂ« rritur. Tani kompilatorĂ«t duhet tĂ« mbĂ«shtesin standardin C++11 (mĂ« parĂ« kĂ«rkesa ishte C++98), domethĂ«nĂ«, nĂ«se pĂ«r ndĂ«rtimin e GCC 10 mjaftonte prania e GCC 3.4, tani pĂ«r ndĂ«rtimin e GCC 11 kĂ«rkohet tĂ« paktĂ«n GCC 4.8.
  • EmĂ«rtimi dhe vendndodhja e skedarĂ«ve pĂ«r ruajtjen e dump-eve, skedarĂ«ve tĂ« pĂ«rkohshĂ«m dhe informacionit shtesĂ« tĂ« nevojshĂ«m pĂ«r optimizimin LTO Ă«shtĂ« ndryshuar. Tani kĂ«to skedarĂ« gjithmonĂ« ruhen nĂ« katalogun e tanishĂ«m, nĂ«se rruga nuk ndryshohet qartĂ« pĂ«rmes parametrave ‘-dumpbase’, ‘-dumpdir’ dhe ‘-save-temps=*’.
  • MbĂ«shtetje pĂ«r formatin binar BRIG, e destinuar pĂ«r t'u pĂ«rdorur me gjuhĂ«n HSAIL (Heterogeneous System Architecture Intermediate Language), Ă«shtĂ« shpallur e tejkaluar dhe do tĂ« hiqet sĂ« shpejti.
  • KanĂ« zgjeruar funksionalitetin e modit ThreadSanitizer (-fsanitize=thread), i destinuar pĂ«r zbuluar gjendjet e garĂ«s gjatĂ« aksesit nĂ« tĂ« njĂ«jtat tĂ« dhĂ«na nga fishkat e ndryshme tĂ« aplikacioneve shumĂ«-fishk. NĂ« versionin e ri Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r runtime alternative dhe mjedise, si dhe mbĂ«shtetje pĂ«r mjetin debugues KCSAN (Kernel Concurrency Sanitizer), qĂ« shĂ«rben pĂ«r zbuluar dinamikisht gjendjet e garĂ«s brenda bĂ«rthamĂ«s Linux. JanĂ« shtuar mundĂ«si tĂ« reja "—param tsan-distinguish-volatile" dhe "—param tsan-instrument-func-entry-exit".
  • Numrat e kolonave nĂ« mesazhet diagnostikuese tani pasqyrojnĂ« jo numĂ«ratorin e bajtĂ«ve nga fillimi i rreshtit, por vĂ«rtet numrat e kolonave qĂ« marrin parasysh simbolet shumĂ«-bajtĂ« dhe simbolet qĂ« zĂ«nĂ« disa pozita nĂ« rresht (p.sh., simboli 🙂 zĂ« dy pozita dhe kodifikohet me 4 bajta). NĂ« mĂ«nyrĂ« tĂ« ngjashme, simbolet e tabulimit tani pĂ«rpunohen si njĂ« numĂ«r tĂ« caktuar hapĂ«sirash (cilĂ«simi bĂ«het pĂ«rmes opsionit -ftabstop, me 8 si parazgjedhje). PĂ«r tĂ« rikthyer sjelljen e vjetĂ«r, Ă«shtĂ« propozuar opsioni "-fdiagnostics-column-unit=byte", dhe pĂ«r tĂ« pĂ«rcaktuar vlerĂ«n fillestare (numĂ«rimi nga 0 ose 1) - opsioni "-fdiagnostics-column-origin=".
  • NĂ« vektorizator Ă«shtĂ« siguruar mbajtja e tĂ« gjithĂ« pĂ«rmbajtjes sĂ« funksionit dhe Ă«shtĂ« shtuar trajtimi i mundĂ«sive tĂ« lidhura me ndĂ«rprerjet dhe referencat nĂ« blloqet e mĂ«parshme nĂ« grafikun e rrjedhĂ«s sĂ« controles (CFG, control-flow graph).
  • NĂ« optimizues Ă«shtĂ« realizuar mundĂ«sia pĂ«r ta transformuar njĂ« seri operacioneve kushtore pĂ«r tĂ« krijuar njĂ« shprehje switch, nĂ« tĂ« cilat krahasohet e njĂ«jta variabĂ«l. MĂ« tej, shprehja switch mund tĂ« kodifikohet duke pĂ«rdorur instrukcione testimi bitshe (pĂ«r tĂ« menaxhuar kĂ«tĂ« transformim Ă«shtĂ« shtuar opsioni "-fbit-tests").
  • JanĂ« pĂ«rmirĂ«suar optimizimet ndĂ«rprocedurale. ËshtĂ« shtuar njĂ« kalim i ri IPA-modref (-fipa-modref) pĂ«r tĂ« gjurmuar efektet anĂ«sore gjatĂ« thirrjeve tĂ« funksioneve dhe pĂ«r tĂ« rritur saktĂ«sinĂ« e analizĂ«s. ËshtĂ« pĂ«rmirĂ«suar realizimi i kalimit IPA-ICF (-fipa-icf), nĂ« tĂ« cilin Ă«shtĂ« reduktuar konsumimi i memories gjatĂ« kompilimit dhe Ă«shtĂ« rritur numri i funksioneve tĂ« unifikuara, pĂ«r tĂ« cilat bĂ«het bashkimi i blloqeve tĂ« kodit identik. NĂ« kalimin IPA-CP (PĂ«rhapja e konstantave ndĂ«rprocedurale) Ă«shtĂ« pĂ«rmirĂ«suar heuristika e parashikimit duke marrĂ« parasysh kufijtĂ« e njohur dhe veçoritĂ« e punĂ«s sĂ« cikleve.
  • NĂ« realizimin e optimizimeve nĂ« fazĂ«n e lidhjes (LTO), formati i kodit bajt Ă«shtĂ« optimizuar pĂ«r tĂ« reduktuar madhĂ«sinĂ« dhe pĂ«r tĂ« rritur shpejtĂ«sinĂ« e pĂ«rpunimit. ËshtĂ« reduktuar konsumimi maksimal i memories gjatĂ« fazĂ«s sĂ« lidhjes.
  • NĂ« mekanizmin e optimizimit tĂ« bazuar nĂ« rezultatet e profilizimit tĂ« kodit (PGO - Optimize me udhĂ«zime nga profili), i cili lejon tĂ« gjenerohet kod mĂ« optimal bazuar nĂ« analizĂ«n e veçorive tĂ« ekzekutimit, Ă«shtĂ« reduktuar madhĂ«sia e skedarĂ«ve tĂ« tĂ« dhĂ«nave GCOV pĂ«r shkak tĂ« paketimit mĂ« kompakt tĂ« numrave zero. ËshtĂ« pĂ«rmirĂ«suar moda "-fprofile-values", duke bĂ«rĂ« qĂ« tĂ« ndiqen mĂ« shumĂ« parametra gjatĂ« thirrjeve indirekte.
  • ËshtĂ« vazhduar realizimi i standardit OpenMP 5.0 (Open Multi-Processing), i cili pĂ«rcakton API dhe metodat e aplikimit tĂ« metodave tĂ« programimit paralel nĂ« sisteme me shumĂ« bĂ«rthama dhe hibride (CPU+GPU/DSP) me memorie tĂ« pĂ«rbashkĂ«t dhe blloqe vektorizimi (SIMD). ËshtĂ« shtuar mbĂ«shtetje fillestare pĂ«r direktivĂ«n allocate dhe mundĂ«sia e pĂ«rdorimit tĂ« cikleve tĂ« heterogjene nĂ« konstruksionet OpenMP. ËshtĂ« realizuar mbĂ«shtetje pĂ«r variablĂ«n e mjedisit OMP_TARGET_OFFLOAD.
  • Implementimi i pĂ«rmirĂ«suar i specifikimeve tĂ« programimit paralel OpenACC 2.6 pĂ«r gjuhĂ«t C, C++ dhe Fortran, i cili pĂ«rcakton mjete pĂ«r tĂ« realizuar operacione (offloading) nĂ« GPU dhe procesorĂ« tĂ« specializuar, si NVIDIA PTX.
  • PĂ«r gjuhĂ«t e familjes C Ă«shtĂ« implementuar njĂ« atribut i ri "no_stack_protector", i dedikuar pĂ«r tĂ« etiketuar funksionet pĂ«r tĂ« cilat nuk duhet pĂ«rfshirĂ« mbrojtja e stack-ut ("-fstack-protector"). Atributi "malloc" Ă«shtĂ« zgjeruar me mbĂ«shtetje pĂ«r identifikimin e çifteve tĂ« thirrjeve pĂ«r alokim dhe çalokim tĂ« memories (allocator/deallocator), i cili pĂ«rdoret nĂ« analizatorin statik pĂ«r tĂ« identifikuar gabimet tipike tĂ« menaxhimit tĂ« memories (rrjedhje memorjeje, pĂ«rdorim pas çalokimit, thirrje tĂ« dyfishta tĂ« funksionit free, etj.) dhe nĂ« paralajmĂ«rimet e kompajlerit "-Wmismatched-dealloc", "-Wmismatched-new-delete" dhe "-Wfree-nonheap-object", qĂ« informojnĂ« pĂ«r mosakordimin e operacioneve tĂ« çalokimit dhe alokimit tĂ« memories.
  • PĂ«r gjuhĂ«n C janĂ« shtuar paralajmĂ«rime tĂ« reja:
    • "-Wmismatched-dealloc" (aktivizuar si parazgjedhje) — paralajmĂ«ron pĂ«r operacionet e çalokimit tĂ« memories ku pĂ«rdoret njĂ« tregues, qĂ« nuk pĂ«rputhet me funksionet e alokimit tĂ« memories.
    • «-Wsizeof-array-div» (aktivizohet kur pĂ«rcaktohet «-Wall») — tĂ«rheq vĂ«mendjen pĂ«r ndarjen e dy operatorĂ«ve sizeof, nĂ«se ndarje nuk korrespondon me pĂ«rmasĂ«n e elementit tĂ« vargut.
    • «-Wstringop-overread» (aktivizohet si parazgjedhje) — tĂ«rheq vĂ«mendjen pĂ«r thirrjen e funksionit tĂ« pjesĂ«s string, qĂ« lexon tĂ« dhĂ«na nga zona jashtĂ« kufijve tĂ« vargut.
    • «-Wtsan» (aktivizohet si parazgjedhje) — tĂ«rheq vĂ«mendjen pĂ«r pĂ«rdorimin e mundĂ«sive (si std::atomic_thread_fence), qĂ« nuk mbĂ«shteten nĂ« ThreadSanitizer.
    • «-Warray-parameter» dhe «-Wvla-parameter» (aktivizohet kur pĂ«rcaktohet «-Wall») — tĂ«rheq vĂ«mendjen pĂ«r pĂ«rcaktimin e funksioneve me deklarata argumentesh tĂ« paqĂ«ndrueshme, tĂ« lidhura me vargje me gjatĂ«si fikse dhe variabĂ«l.
    • ParalajmĂ«rimi «-Wuninitialized» tani pĂ«rcakton pĂ«rpjekjet pĂ«r tĂ« lexuar nga kujtesĂ« dinamike tĂ« pa inicializuar.
    • NĂ« paralajmĂ«rimin «-Wfree-nonheap-object» Ă«shtĂ« zgjeruar spektri i rasteve tĂ« pĂ«rcaktuara tĂ« thirrjeve tĂ« funksioneve tĂ« lirimit tĂ« kujtesĂ«s me njĂ« tregues, i marrĂ« jo pĂ«rmes funksioneve tĂ« alokimit dinamik tĂ« kujtesĂ«s.
    • NĂ« paralajmĂ«rimin «-Wmaybe-uninitialized» Ă«shtĂ« zgjeruar identifikimi i kaluarjes nĂ« funksione tĂ« treguesve, qĂ« referojnĂ« nĂ« zona tĂ« pa inicializuara tĂ« kujtesĂ«s.
  • PĂ«r gjuhĂ«n C Ă«shtĂ« realizuar njĂ« sĂ«rĂ« mundĂ«sish tĂ« reja, tĂ« zhvilluara nĂ« kuadĂ«r tĂ« standardit C2X (aktivizohet duke treguar -std=c2x dhe -std=gnu2x): makrot e BOOL_MAX dhe BOOL_WIDTH, tĂ« gjitha parametrat opsionalĂ« nĂ« pĂ«rkufizimin e funksioneve (si nĂ« C++), atributi '[[nodiscard]]', operatori i pĂ«rpunimit '.__has_c_attribute', makrot FLT_IS_IEC_60559, DBL_IS_IEC_60559, LDBL_IS_IEC_60559, __STDC_WANT_IEC_60559_EXT__, INFINITY, NAN, FLT_SNAN, DBL_SNAN, LDBL_SNAN, DEC_INFINITY dhe DEC_NAN, NaN=makrot pĂ«r FloatN, _FloatNx dhe _DecimalN, mundĂ«sia e caktimit tĂ« etiketave tĂ« kalimit para shpalljeve dhe nĂ« fund tĂ« operatorĂ«ve tĂ« pĂ«rbĂ«rĂ«.
  • PĂ«r C++ Ă«shtĂ« realizuar njĂ« sĂ«rĂ« ndryshimesh dhe risish, tĂ« propozuara nĂ« standardin C++20, duke pĂ«rfshirĂ« funksionet virtuale 'consteval virtual', pseudodestroyers tĂ« pĂ«rfundimit tĂ« ciklit tĂ« jetĂ«s sĂ« objekteve, pĂ«rdorimin e klasĂ«s enum dhe llogaritjen e madhĂ«sisĂ« sĂ« array nĂ« shprehjen 'new'.
  • PĂ«r C++ Ă«shtĂ« shtuar mbĂ«shtetje eksperimentale pĂ«r disa pĂ«rmirĂ«sime qĂ« po zhvillohen pĂ«r standardin e ardhshĂ«m C++23 (-std=c++23, -std=gnu++23, -std=c++2b, -std=gnu++2b). PĂ«r shembull, Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r sufixin literal 'zu' pĂ«r vlerat e nĂ«nshkruara size_t.
  • NĂ« libstdc++ Ă«shtĂ« pĂ«rmirĂ«suar mbĂ«shtetje pĂ«r standardin C++17, duke pĂ«rfshirĂ« implementimin e std::from_chars dhe std::to_chars pĂ«r tipet me pikĂ« fluturuese. JanĂ« realizuar elemente tĂ« reja tĂ« standardit C++20, duke pĂ«rfshirĂ« std::bit_cast, std::source_location, operacione atomike wait dhe notify, , , , , si dhe elemente tĂ« standardit tĂ« ardhshĂ«m C++23 (std::to_underlying, std::is_scoped_enum). ËshtĂ« shtuar mbĂ«shtetje eksperimentale pĂ«r tipet e pĂ«rpunimit paralel tĂ« tĂ« dhĂ«nave (SIMD, Data-Parallel Types). Implementimi i std::uniform_int_distribution Ă«shtĂ« pĂ«rshpejtuar.
  • ShtĂ« hequr si njĂ« shenjĂ« e cilĂ«sisĂ« alfa libgccjit, bibliotekĂ« e ndarĂ« pĂ«r integrimin e gjeneruesit tĂ« kodit nĂ« procese tĂ« tjera dhe pĂ«rdorimin pĂ«r organizimin e JIT-kompilaimit tĂ« kodit tĂ« bytkodit nĂ« kodin e makinĂ«s. ËshtĂ« shtuar mundĂ«sia e ndĂ«rtimit tĂ« libgccjit pĂ«r MinGW.
  • ËshtĂ« shtuar mbĂ«shtetje pĂ«r arkitekturĂ«n AArch64 Armv8-R (-march=armv8-r). PĂ«r arkitekturat AArch64 dhe ARM Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r procesorĂ«t (parametrat -mcpu dhe -mtune): Arm Cortex-A78 (cortex-a78), Arm Cortex-A78AE (cortex-a78ae), Arm Cortex-A78C (cortex-a78c), Arm Cortex-X1 (cortex-x1), Arm Neoverse V1 (neoverse-v1) dhe Arm Neoverse N2 (neoverse-n2). JanĂ« shtuar gjithashtu CPU Fujitsu A64FX (a64fx) dhe Arm Cortex-R82 (cortex-r82), qĂ« mbĂ«shtesin vetĂ«m arkitekturĂ«n AArch64.
  • ËshtĂ« shtuar mbĂ«shtetje pĂ«r pĂ«rdorimin e instrukcioneve SIMD Armv8.3-a (AArch64/AArch32), SVE (AArch64), SVE2 (AArch64) dhe MVE (AArch32 M-profile) pĂ«r avtokomponentizimin e operacioneve qĂ« kryejnĂ« shumimin, zbritjen, shumĂ«zimin dhe varianta e shumimit/zbritjes mbi numra kompleksĂ«. PĂ«r ARM Ă«shtĂ« shtuar mbĂ«shtetje fillestare pĂ«r avtokomponentizimin duke pĂ«rdorur setin e instrukcioneve MVE.
  • PĂ«r platformat ARM Ă«shtĂ« ofruar njĂ« gamĂ« e plotĂ« funksionesh tĂ« ndĂ«rtuara nĂ« kompilatorin C (Intrinsics), tĂ« zĂ«vendĂ«suara me instrukcione tĂ« zgjeruara vektoriale (SIMD), duke pĂ«rfshirĂ« tĂ« gjithĂ« instrukcionet NEON, tĂ« dokumentuara nĂ« specifikimin ACLE Q3 2020.
  • NĂ« backend pĂ«r gjenerimin e kodit pĂ«r GPU AMD bazuar nĂ« mikroarkitekturĂ«n GCN Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r GPU gfx908.
  • ËshtĂ« shtuar mbĂ«shtetje pĂ«r procesorĂ« tĂ« rinj dhe zgjerime tĂ« reja tĂ« implementuar nĂ« setin e instrukcioneve:
    • Intel Sapphire Rapids (-march=sapphirerapids, pĂ«rfshin mbĂ«shtetje pĂ«r instrukcione MOVDIRI, MOVDIR64B, AVX512VP2INTERSECT, ENQCMD, CLDEMOTE, SERIALIZE, PTWRITE, WAITPKG, TSXLDTRK, AMT-TILE, AMX-INT8, AMX-BF16 dhe AVX-VNNI).
    • Intel Alderlake (-march=alderlake, pĂ«rfshin mbĂ«shtetje pĂ«r instrukcione CLDEMOTE, PTWRITE, WAITPKG, SERIALIZE, KEYLOCKER, AVX-VNNI dhe HRESET).
    • Intel Rocketlake (-march=rocketlake, analog i Rocket Lake pa mbĂ«shtetje pĂ«r SGX).
    • AMD Zen 3 (-march=znver3).
  • PĂ«r sistemet IA-32/x86-64 bazuar nĂ« procesorĂ«t Intel, Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r instruksionet e reja tĂ« procesorit TSXLDTRK, SERIALIZE, HRESET, UINTRKEYLOCKER, AMX-TILE, AMX-INT8, AMX-BF16, AVX-VNNI.
  • Shtuar mbĂ«shtetje pĂ«r flamujt «-march=x86-64-v[234]» pĂ«r zgjedhjen e niveleve tĂ« arkitekturĂ«s x86-64 (v2 - pĂ«rmban zgjerimet SSE4.2, SSSE3, POPCNT dhe CMPXCHG16B; v3 - AVX2 dhe MOVBE; v4 - AVX-512).
  • Shtuar mbĂ«shtetje pĂ«r sistemet RISC-V me renditje bajtesh «big-endian». Shtuar opsioni «-misa-spec=*» pĂ«r zgjedhjen e versionit tĂ« specifikimit tĂ« arkitekturĂ«s sĂ« grupit tĂ« komandave RISC-V. Shtuar mbĂ«shtetje pĂ«r AddressSanitizer dhe mbrojtjen e stack-ut duke pĂ«rdorur etiketat e kanarinĂ«s.
  • PĂ«rmirĂ«simi i vazhdueshĂ«m i modit tĂ« analizĂ«s statike «-fanalyzer», i cili kryen njĂ« analizĂ« ndĂ«rprocedurale tĂ« rĂ«ndĂ« tĂ« rrugĂ«ve tĂ« ekzekutimit tĂ« kodit dhe rrjedhave tĂ« tĂ« dhĂ«nave nĂ« program. Moda Ă«shtĂ« nĂ« gjendje tĂ« identifikojĂ« gjatĂ« fazĂ«s sĂ« kompilimit probleme tĂ« tilla si thirrjen e dyfishtĂ« tĂ« funksionit free() pĂ«r njĂ« zonĂ« memorjeje, rrjedhje tĂ« descriptorĂ«ve tĂ« skedarĂ«ve, dereferencimin dhe kalimin e treguesve nul, aksesin nĂ« blloqet e memorjes sĂ« çliruar, pĂ«rdorimin e vlerave tĂ« pa inicializuara, etj. NĂ« versionin e ri:
    • Kodi Ă«shtĂ« shkruar plotĂ«sisht pĂ«rsĂ«ri pĂ«r tĂ« ndjekur gjendjen e programit. Çështjet me verifikimin e skedarĂ«ve shumĂ« tĂ« mĂ«dhenj C janĂ« zgjidhur.
    • Shtohet mbĂ«shtetje fillestare pĂ«r C++.
    • Analiza e ndarjes dhe lĂ«shimit tĂ« memories Ă«shtĂ« abstraktuar nga funksionet e veçanta malloc dhe free, dhe tani mbĂ«shtet new/delete dhe new[]/delete[].
    • Shtohet paralajmĂ«rime tĂ« reja: -Wanalyzer-shift-count-negative, -Wanalyzer-shift-count-overflow, -Wanalyzer-write-to-const dhe -Wanalyzer-write-to-string-literal.
    • Shtohet mundĂ«si tĂ« reja pĂ«r debuggim -fdump-analyzer-json dhe -fno-analyzer-feasibility.
    • Ka realizuar mundĂ«sinĂ« e zgjerimit tĂ« analizuesit pĂ«rmes plugineve nĂ« GCC (pĂ«r shembull, Ă«shtĂ« pĂ«rgatitur njĂ« plugin pĂ«r tĂ« verifikuar pĂ«rdorimin e papĂ«rshtatshĂ«m tĂ« bllokimit global (GIL) nĂ« CPython).

Burimi: opennet.ru

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster