Sgaoileadh an t-sreath compiler GCC 11

Às deidh bliadhna de leasachadh, chaidh an t-sreath compiler an-asgaidh GCC 11.1 a leigeil ma sgaoil, a ’chiad fhoillseachadh cudromach anns a’ mheur ùr GCC 11.x. A rèir an sgeama àireamhan fuasglaidh ùr, chaidh dreach 11.0 a chleachdadh sa phròiseas leasachaidh, agus goirid mus deach GCC 11.1 a leigeil ma sgaoil, bha meur GCC 12.0 air a dhol a-mach mar-thà, às an deidheadh ​​an ath fhoillseachadh mòr, GCC 12.1, a chruthachadh.

Tha GCC 11.1 ainmeil airson a ghluasad gu cruth faidhle dì-bhugachaidh DWARF 5 gu bunaiteach, toirt a-steach an inbhe C++17 gu bunaiteach ("-std=gnu++17"), leasachaidhean mòra ann an taic airson an inbhe C++20, taic deuchainneach airson C++23, leasachaidhean co-cheangailte ris an inbhe C a tha ri thighinn (C2x), agus coileanadh ùr air a bharrrachadh.

Atharraichean mòra:

  • Chaidh am modh bunaiteach airson a’ chànain C++ atharrachadh gu bhith a’ cleachdadh an inbhe C++17 (-std=gnu++17) an àite C++14 a chaidh a mholadh roimhe. Tha e comasach an giùlan ùr C++17 a dhì-chomasachadh gu roghnach nuair a thathar a’ giullachd theamplaidean a bhios a’ gabhail theamplaidean eile mar pharaimearan (-fno-new-ttp-matching).
  • Chaidh taic a chur ris airson luathachadh bathar-cruaidh an inneil AddressSanitizer, a lorgas ruigsinneachd gu raointean cuimhne saor, cus ruith bufair, agus mearachdan cuimhne eile. Chan eil luathachadh bathar-cruaidh ri fhaighinn an-dràsta ach airson ailtireachd AArch64 agus tha e ag amas air cruinneachadh eithne. LinuxGus luathachadh bathar-cruaidh a chomasachadh airson AddressSanitizer, chaidh a’ bhratach "-fsanitize=hwaddress" a chur ris nuair a bha co-phàirtean àite-cleachdaiche gan togail, agus chaidh a’ bhratach "-fsanitize=kernel-hwaddress" a chur ris airson an eithne.
  • Nuair a bhios fiosrachadh dì-bhugachaidh ga chruthachadh, 's e cruth DWARF 5 a thathar a' cleachdadh gu bunaiteach. An coimeas ri dreachan roimhe, leigidh an cruth seo le dàta dì-bhugachaidh 25% nas dlùithe a chruthachadh. Feumaidh làn thaic do DWARF 5 binutils 2.35.2 no nas fhaide air adhart. Bidh innealan dì-bhugachaidh a' toirt taic do DWARF 5 a' tòiseachadh le GDB 8.0, valgrind 3.17.0, elfutils 0.172, agus dwz 0.14. Gus faidhlichean dì-bhugachaidh a chruthachadh a' cleachdadh dreachan DWARF eile, faodaidh tu na roghainnean "-gdwarf-2," "-gdwarf-3," agus "-gdwarf-4" a chleachdadh.
  • Chaidh na riatanasan airson luchd-cruinneachaidh a ghabhas cleachdadh gus GCC a thogail a mheudachadh. Feumaidh an neach-cruinneachaidh a-nis taic a thoirt don inbhe C++11 (roimhe seo, bha feum air C++98). Tha seo a’ ciallachadh, ged a bha GCC 3.4 gu leòr airson GCC 10 a thogail, gu bheil feum a-nis air co-dhiù GCC 4.8 airson GCC 11 a thogail.
  • Chaidh ainmean is àite fhaidhlichean airson dumpan, faidhlichean sealach, agus fiosrachadh a bharrachd a tha a dhìth airson leasachadh LTO a stòradh atharrachadh. Tha na faidhlichean seo a-nis an-còmhnaidh air an sàbhaladh san eòlaire làithreach mura tèid an t-slighe atharrachadh gu soilleir le bhith a’ cleachdadh nam paramadairean "-dumpbase," "-dumpdir," agus "-save-temps=*".
  • Chaidh taic airson cruth dà-chànanach BRIG, a thathar an dùil a chleachdadh leis an Heterogeneous System Architecture Intermediate Language (HSAIL), a chur à bith agus thèid a thoirt air falbh a dh’ aithghearr.
  • Chaidh am modh ThreadSanitizer (-fsanitize=thread), a chaidh a dhealbhadh gus suidheachaidhean rèis a lorg nuair a bhios snàithleanan eadar-dhealaichte ann an tagradh ioma-shnàthaichte a’ faighinn cothrom air an aon dàta aig an aon àm, a leudachadh. Tha an sgaoileadh ùr a’ cur taic ri amannan ruith is àrainneachdan eile, a bharrachd air taic airson an inneal dì-bhugachaidh KCSAN (Kernel Concurrency Sanitizer), a chaidh a dhealbhadh gus suidheachaidhean rèis a lorg gu fiùghantach taobh a-staigh an eithne. LinuxChaidh roghainnean ùra a chur ris: "--param tsan-distinguish-volatile" agus "--param tsan-instrument-func-entry-exit".
  • Tha àireamhan colbh ann an teachdaireachdan breithneachaidh a-nis a’ nochdadh àireamhan colbh fìor, chan e cunntasan byte bho thoiseach na loidhne. Tha na h-àireamhan seo a’ toirt cunntas air caractaran ioma-byte agus caractaran a tha a’ gabhail thairis iomadh suidheachadh san loidhne (mar eisimpleir, tha an caractar 🙂 a’ gabhail thairis dà shuidheachadh agus air a chòdachadh ann an 4 bytes). San aon dòigh, thathas a’ làimhseachadh caractaran taba a-nis mar àireamh shònraichte de dh’àiteachan (a ghabhas rèiteachadh leis an roghainn -ftabstop, 8 gu bunaiteach). Gus an giùlan roimhe a thoirt air ais, tha an roghainn "-fdiagnostics-column-unit=byte" ri fhaighinn, agus gus an luach tùsail a shònrachadh (àireamhachadh a’ tòiseachadh le 0 no 1), tha an roghainn "-fdiagnostics-column-origin=" ri fhaighinn.
  • Bidh am vectaraiche a-nis a’ toirt aire do shusbaint iomlan gnìomh agus a’ cur comasan giullachd ris a tha co-cheangailte ri eadar-ghearraidhean agus iomraidhean air blocaichean roimhe anns a’ ghraf sruth-smachd (CFG).
  • Tha an inneal-optamachaidh a-nis a’ toirt taic do bhith a’ tionndadh sreath de ghnìomhachdan cumhach a bhios a’ dèanamh coimeas eadar an aon chaochladair gu abairt suidse. Faodar an abairt suidse a chòdachadh an uairsin le bhith a’ cleachdadh stiùiridhean deuchainn bit (chaidh an roghainn "-fbit-tests" a chur ris gus smachd a chumail air an tionndadh seo).
  • Chaidh leasachadh a dhèanamh air na leasachaidhean eadar-mhodhan-obrach. Chaidh pas ùr IPA-modref (-fipa-modref) a chur ris gus fo-bhuaidhean a leantainn rè ghairmean gnìomh agus gus cruinneas anailis a leasachadh. Chaidh am pas IPA-ICF (-fipa-icf) a leasachadh, a’ lughdachadh caitheamh cuimhne rè cruinneachadh agus ag àrdachadh an àireamh de ghnìomhan aonaichte airson a bheil blocaichean còd co-ionann air an co-chur. Tha am pas IPA-CP (Interprocedural Constant Propagation) air heuristics ro-innse a leasachadh, a’ toirt aire do chrìochan lùb aithnichte agus giùlan lùb.
  • Ann an cur an gnìomh leasachaidhean ùine ceangail (LTO), chaidh cruth a’ chòd-byte a bharrachadh gus meud a lughdachadh agus astar giollachd a leasachadh. Chaidh an ìre as àirde de chaitheamh cuimhne aig àm a’ cheangail a lùghdachadh.
  • Anns an dòigh-obrach Leasachadh air a stiùireadh le pròifil (PGO), a bhios a’ gineadh còd nas fheàrr stèidhichte air mion-sgrùdadh giùlan cur an gnìomh, chaidh meud fhaidhlichean dàta GCOV a lùghdachadh le bhith a’ pacadh cunntairean neoni nas dlùithe. Chaidh am modh "-fprofile-values" a leasachadh le bhith a’ tracadh àireamh nas motha de pharaimeatairean rè ghairmean neo-dhìreach.
  • Chaidh leantainn air adhart le bhith a’ cur an gnìomh inbhe OpenMP 5.0 (Open Multi-Processing), a mhìnicheas an API agus na dòighean airson dòighean prògramaidh co-shìnte a chur an sàs air siostaman ioma-cridhe agus measgaichte (CPU+GPU/DSP) le cuimhne co-roinnte agus aonadan vectarachaidh (SIMD). Chaidh taic tùsail a chur ris airson an stiùireadh riarachaidh agus a’ chomas lùban neo-èideadh a chleachdadh ann an togail OpenMP. Chaidh taic airson caochladair àrainneachd OMP_TARGET_OFFLOAD a chur an gnìomh.
  • Chaidh leasachadh a dhèanamh air buileachadh sònrachadh prògramadh co-shìnte OpenACC 2.6, a mhìnicheas na dòighean airson obrachaidhean a ghluasad gu GPUan agus pròiseasairean sònraichte leithid an NVIDIA PTX, airson C, C++, agus Fortran.
  • Chaidh feart ùr, "no_stack_protector," a chur an gnìomh airson chànanan teaghlaich-C. Tha e air a chleachdadh gus gnìomhan a chomharrachadh nach bu chòir dìon cruachan a chomasachadh ("-fstack-protector"). Chaidh am feart "malloc" a leudachadh gus taic a thoirt do chomharrachadh chàraidean gairm riarachaidh/dì-roinneachaidh. Tha seo air a chleachdadh leis an anailisiche statach gus mearachdan cumanta ann an riaghladh cuimhne a lorg (aodion cuimhne, cleachdadh-às dèidh-saor, gairmean dùbailte chun ghnìomh saor, msaa.) agus anns na rabhaidhean co-chruinneachaidh "-Wmismatched-dealloc," "-Wmismatched-new-delete," agus "-Wfree-nonheap-object", a bhios ag aithris neo-chunbhalachdan eadar obrachaidhean riarachaidh cuimhne agus dì-roinneachaidh.
  • Chaidh rabhaidhean ùra a chur ris airson a’ chànain C:
    • "-Wmismatched-dealloc" (air a chomasachadh gu bunaiteach) - A’ toirt rabhadh mu obrachaidhean dealloc a bhios a’ cleachdadh comharraiche nach eil co-chòrdail ris na gnìomhan riarachaidh cuimhne.
    • "-Wsizeof-array-div" (air a chomasachadh nuair a thèid "-Wall" a shònrachadh) - A’ toirt rabhadh mu bhith a’ roinneadh dà obraiche sizeof mura h-eil an roinneadair a’ freagairt ri meud an eileamaid array.
    • "-Wstringop-overread" (air a chomasachadh gu bunaiteach) - A’ toirt rabhadh mu bhith a’ gairm gnìomh sreang a leughas dàta bho raon taobh a-muigh crìochan an array.
    • "-Wtsan" (air a thòiseachadh gu bunaiteach) - A’ toirt rabhadh mu bhith a’ cleachdadh fheartan (leithid std::atomic_thread_fence) nach eil air an taiceadh le ThreadSanitizer.
    • "-Warray-parameter" agus "-Wvla-parameter" (air a chomasachadh nuair a thèid "-Wall" a shònrachadh) - Rabhadh mu bhith ag ath-mhìneachadh ghnìomhan le dearbhaidhean neo-fhreagarrach de argamaidean co-cheangailte ri sreathan fad stèidhichte agus fad caochlaideach.
    • Tha an rabhadh "-Wunitialized" a-nis a’ comharrachadh oidhirpean air leughadh bho chuimhne a chaidh a riarachadh gu daineamaigeach gun tòiseachadh.
    • Chaidh an rabhadh "-Wfree-nonheap-object" a leudachadh gus cùisean a lorg far a bheil gnìomhan dì-riarachadh cuimhne air an gairm le comharraiche nach fhaighear tro ghnìomhan riarachadh cuimhne fiùghantach.
    • Chaidh an rabhadh "-Wmaybe-uninitialized" a leudachadh gus comharran a lorg a tha a’ dol seachad air gnìomhan a tha a’ toirt iomradh air raointean cuimhne neo-thòisichte.
  • Airson a’ chànain C, chaidh cuid de fheartan ùra a chaidh a leasachadh taobh a-staigh inbhe C2X a chur an gnìomh (air an comasachadh le bhith a’ sònrachadh -std=c2x agus -std=gnu2x): macraidhean BOOL_MAX agus BOOL_WIDTH, sònrachadh roghainneil ainmean pharaimearan nach deach an cleachdadh ann am mìneachaidhean gnìomh (mar ann an C++), an tréith "[[nodiscard]]", an gnìomhaiche ro-phròiseasar "__has_c_attribute", na macraidhean 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 agus DEC_NAN, macraidhean NaN= airson FloatN, _FloatNx agus _DecimalN, a’ chomas bileagan leum a shònrachadh ro dhearbhaidhean agus aig deireadh aithrisean co-thàthaichte.
  • Bidh C++ a’ cur an gnìomh grunn atharrachaidhean agus fheartan ùra a chaidh a mholadh ann an inbhe C++20, a’ gabhail a-steach gnìomhan brìgheil consteval, pseudo-destructors airson crìoch a chur air cearcall-beatha nithean, cleachdadh a’ chlas enum, agus àireamhachadh meud sreath san abairt ùr.
  • Chaidh taic deuchainneach a chur ri C++ airson cuid de leasachaidhean a thathar a’ leasachadh airson an inbhe C++23 a tha ri thighinn (-std=c++23, -std=gnu++23, -std=c++2b, -std=gnu++2b). Mar eisimpleir, chaidh taic a chur ris airson an iar-leasachan litireil "zu" airson luachan size_t le ainmean.
  • Tha Libstdc++ air taic nas fheàrr a thoirt don inbhe C++17, a’ gabhail a-steach cur-ris de std::from_chars agus std::to_chars airson seòrsachan puing-fleòdraidh. Tha eileamaidean ùra den inbhe C++20 air an cur an gnìomh, nam measg std::bit_cast, std::source_location, agus na h-obrachaidhean feitheamh is fios a chur air atamach. , , , , a bharrachd air eileamaidean den inbhe C++23 san àm ri teachd (std::to_underlying, std::is_scoped_enum). Chaidh taic deuchainneach airson seòrsachan airson giollachd dàta co-shìnte (SIMD, Seòrsachan Dàta-Co-shìnte) a chur ris. Chaidh cur an gnìomh std::uniform_int_distribution a luathachadh.
  • Chaidh bratach càileachd alpha a thoirt air falbh bho libgccjit, leabharlann cho-roinnte airson an gineadair còd a thoirt a-steach do phròiseasan eile agus airson cruinneachadh JIT de bytecode gu còd inneal. Chaidh a’ chomas libgccjit a thogail airson MinGW a chur ris.
  • Taic air a chur ris airson ailtireachd AArch64 Armv8-R (-march=armv8-r). Airson ailtireachdan AArch64 agus ARM, taic air a chur ris airson na pròiseasairean a leanas (paramadairean -mcpu agus -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), agus Arm Neoverse N2 (neoverse-n2). Tha CPUan Fujitsu A64FX (a64fx) agus Arm Cortex-R82 (cortex-r82) air an cur ris cuideachd, a tha a’ toirt taic do ailtireachd AArch64 a-mhàin.
  • Chaidh taic a chur ris airson stiùiridhean SIMD Armv8.3-a (AArch64/AArch32), SVE (AArch64), SVE2 (AArch64), agus MVE (AArch32 M-profile) airson fèin-bheactarachadh obrachaidhean a bhios a’ dèanamh atharrachaidhean cur-ris, toirt-air-falbh, iomadachaidh, agus cur-ris/toirt-air-falbh air àireamhan iom-fhillte. Chaidh taic tùsail airson fèin-bheactarachadh a’ cleachdadh an t-seata stiùiridhean MVE a chur ris airson ARM.
  • Airson àrd-ùrlaran ARM, tha seata slàn de fheartan bunaiteach co-chruinneachaidh C air a thoirt seachad, a ghabhas cur nan àite le stiùiridhean vectar leudaichte (SIMD), a’ còmhdach a h-uile stiùireadh NEON a tha clàraichte ann an sònrachadh ACLE Q3 2020.
  • Chaidh taic airson GPUan gfx908 a chur ris a’ chùl-raon airson còd a chruthachadh airson GPUan AMD stèidhichte air microarchitecture GCN.
  • Taic air a chur ris airson pròiseasairean ùra agus na leudachaidhean seata stiùiridh ùra a chaidh a chur an gnìomh annta:
    • Intel Sapphire Rapids (-march=sapphirerapids, a’ comasachadh taic airson nan stiùiridhean MOVDIRI, MOVDIR64B, AVX512VP2INTERSECT, ENQCMD, CLDEMOTE, SERIALIZE, PTWRITE, WAITPKG, TSXLDTRK, AMT-TILE, AMX-INT8, AMX-BF16, agus AVX-VNNI).
    • Intel Alderlake (-march=alderlake, a’ comasachadh taic airson nan stiùiridhean CLDEMOTE, PTWRITE, WAITPKG, SERIALIZE, KEYLOCKER, AVX-VNNI, agus HRESET).
    • Intel Rocketlake (-march=rocketlake, coltach ri Rocket Lake às aonais taic SGX).
    • AMD Zen 3 (-march=znver3).
  • Airson siostaman IA-32/x86-64 stèidhichte air pròiseasairean Intel, chaidh taic a chur ris airson stiùiridhean pròiseasar ùra TSXLDTRK, SERIALIZE, HRESET, UINTRKEYLOCKER, AMX-TILE, AMX-INT8, AMX-BF16, AVX-VNNI.
  • Chaidh taic a chur ris airson nam brataichean "-march=x86-64-v[234]" gus ìrean ailtireachd x86-64 a thaghadh (v2 - a’ còmhdach leudachaidhean SSE4.2, SSSE3, POPCNT, agus CMPXCHG16B; v3 - AVX2 agus MOVBE; v4 - AVX-512).
  • Chaidh taic a chur ris airson siostaman big-endian RISC-V. Chaidh an roghainn "-misa-spec=*" a chur ris gus an dreach sònrachaidh ailtireachd seata stiùiridh RISC-V a thaghadh. Chaidh taic a chur ris airson AddressSanitizer agus dìon cruachan a’ cleachdadh canaries.
  • Chaidh leasachaidhean a dhèanamh air modh anailis statach "-fanalyzer", a bhios a’ dèanamh mion-sgrùdadh eadar-mhodh-obrach dian air goireasan air slighean cur an gnìomh còd agus sruthan dàta taobh a-staigh prògram. Faodaidh am modh seo cùisean a lorg aig àm an tional, leithid gairmean dùbailte chun ghnìomh free() airson an aon raon cuimhne, aodion tuairisgeul faidhle, dì-iomradh agus a’ dol seachad air puingean neoni, a’ faighinn cothrom air blocaichean cuimhne saor, a’ cleachdadh luachan neo-thòiseachaidh, agus barrachd. Anns an dreach ùr:
    • Chaidh còd sgrùdaidh staid a’ phrògraim ath-sgrìobhadh gu tur. Chaidh cùisean le sgrùdadh fhaidhlichean C glè mhòr fhuasgladh.
    • Chaidh taic tùsail a chur ris airson C++.
    • Chaidh mion-sgrùdadh air riarachadh is dì-riarachadh cuimhne a thoirt a-mach às na gnìomhan concrait malloc is free, agus tha e a-nis a’ toirt taic do new/delete agus new[]/delete[].
    • Rabhaidhean ùra air an cur ris: -Wanalyzer-shift-count-negative, -Wanalyzer-shift-count-overflow, -Wanalyzer-write-to-const agus -Wanalyzer-write-to-string-literal.
    • Chaidh roghainnean dì-bhugachaidh ùra a chur ris -fdump-analyzer-json agus -fno-analyzer-feasibility.
    • Chaidh a’ chomas an inneal-anailis a leudachadh tro plugins GCC a chur an gnìomh (mar eisimpleir, chaidh plugin ullachadh airson sgrùdadh a dhèanamh airson cleachdadh ceàrr den eadar-ghlasadh cruinneil (GIL) ann an CPython).

Source: fosgailtenet.ru

Ceannaich aoigheachd earbsach airson làraich le dìon DDoS, frithealaichean VPS VDS 🔥 Ceannaich aoigheachd làrach-lìn earbsach le dìon DDoS, frithealaichean VPS VDS | ProHoster