Bidh am pròiseact LLVM a’ leasachadh làimhseachadh sàbhailte bufair ann an C ++

Tha luchd-leasachaidh a’ phròiseict LLVM air grunn atharrachaidhean a mholadh a tha ag amas air tèarainteachd phròiseactan C ++ a tha deatamach do mhisean a neartachadh agus a bhith a’ toirt seachad dòigh air cuir às do mhearachdan a dh’ adhbhraich tar-ruith bufair. Tha an obair ag amas air dà raon: a’ toirt seachad modail leasachaidh a leigeas leat obrachadh gu sàbhailte le bufairean, agus a bhith ag obair air neartachadh tèarainteachd leabharlann àbhaisteach libc ++ de ghnìomhan.

Is e am modail prògramadh sàbhailte a thathar a’ moladh airson C ++ na clasaichean a tha an leabharlann àbhaisteach a’ toirt seachad a chleachdadh nuair a bhios iad ag obair le bufairean an àite a bhith a’ làimhseachadh comharran lom. Mar eisimpleir, thathas a’ moladh na clasaichean std ::array, std::vector agus std ::span a chleachdadh, a thèid a chur ris le seic ùine ruith airson cuimhne taobh a-muigh crìochan.

Gus cuir an-aghaidh cleachdaidhean prògramadh cunnartach ann an clang, thathas a’ moladh rabhaidhean cruinneachaidh a chuir a-mach airson a h-uile gnìomhachd àireamhachd puing, coltach ri rabhaidhean linter clang-tidy nuair a bhios tu a’ cleachdadh a’ bhratach “cppcoreguidelines-pro-bounds-pointer-arithmetic”, agus nochdaidh taic dhaibh ann an an naidheachd LLVM 16. Gus an leithid de rabhaidhean a chur an comas, thèid bratach air leth a chur ris a' chlang, nach eil gnìomhach a ghnàth.

Thathas an dùil modh dìon cruaidh roghainneil a chuir an gnìomh ann an libc ++, a ghlacas, nuair a bhios e comasach, cuid de shuidheachaidhean a dh’ adhbhraicheas giùlan neo-mhìnichte aig àm ruith. Mar eisimpleir, anns na clasaichean std ::span agus std ::vector, thèid sùil a chumail air ruigsinneachd taobh a-muigh crìochan, agus ma thachras sin tuitidh am prògram. Tha an luchd-leasachaidh den bheachd gun cum cuir ris na h-atharrachaidhean sin libc ++ a rèir inbhean C ++, leis gu bheil an roghainn air mar a làimhsicheas tu cùisean de ghiùlan neo-mhìnichte aig luchd-leasachaidh an leabharlainn, a dh’ fhaodadh, am measg rudan eile, giùlan neo-mhìnichte a mhìneachadh mar thubaist a dh’ fheumas an prògram airson fàgail.

Thathas an dùil sgrùdaidhean ùine ruith ann an libc ++ a roinn ann an roinnean a ghabhas toirt a-steach leotha fhèin. Tha cuid de na sgrùdaidhean a chaidh a mholadh nach lean gu gnìomhachd nas iom-fhillte no atharrachaidhean ABI air an cur an gnìomh mar-thà ann am modh sàbhailte libc++.

A bharrachd air an sin, thathas an dùil inneal ullachadh airson a’ chòd a cheartachadh, a leigeas leat comharran lom a chuir an àite nan soithichean agus innealan-làimhseachaidh eile a chuir an sàs ann an suidheachaidhean far nach urrainn don ghobhar a’ phuing a chuir na àite gu dìreach (mar eisimpleir, an “if (array_pointer)” Faodar togail a thionndadh gu “ma tha (span.data ()”) Faodar atharrachaidhean a chuir an sàs chan ann a-mhàin air caochladairean ionadail, ach cuideachd air paramadairean seòrsa le comharran.

Source: fosgailtenet.ru

Cuir beachd ann