Linux 5.18 waxaa loo qorsheeyay in koodhka loo wareejiyo nooc ka sii badan oo C si loo xalliyo dhibaatooyin kala duwan. 

Waa maxay Linux iyo waxa loogu talagalay?

Inta lagu jiro habka of dood horumarinta ee Linux kernel ku saabsan iyol theme of set of balastar si loo hagaajiyo dayacanka ee Specter ee koodka si uu ula shaqeeyo liisaska isku xidhan, waxaa caddaatay horumariyayaal badan in dhibaatada si fudud ayaa loo xalin karaa haddii waxaa loo oggolaaday koodhka kernel-ka C que waafaqsan nooca cusub ee heerka. 

Waana in hadda koodka lagu daray Linux Kernel uu waafaqo qeexida ANSI C (C89), kaas oo la sameeyay 1989kii.

Taasi waa sababta dhibaatada la xiriirta Specter koodka wuxuu ahaa sababtoo ah se waxa uu sii isticmaalayey ku celcelin si gaar ah loo qeexay wareegtada ka dib.

Inkasta oo ay guud ahaan dabeecadda degdegga ah leedahay, mashruuca kernelku wuxuu ku tiirsan yahay tiro qalabyo duug ah. Iyadoo dhaleeceeyayaashu ay jecel yihiin inay diiradda saaraan isticmaalka ballaaran ee bulshada ee iimaylka, waxaa suurtogal ah anachronism-ka muhiimka ah isticmaalka nooca 1989 ee heerka luqadda C ee code kernel, oo ah halbeeg la habeeyey ka hor intaan mashruuca kernel bilaabanin 30 sano ka hor. Waxay u egtahay in dhaqanka muddada dheer soo jiray uu soo afjarmi karo isla marka kernel 5.18, la filayo bisha Maajo ee sanadkan.

Waxaa lagu xusay makro waxa loo isticmaalaa in lagu soo celceliyo canaasirta liiska ku xidhan iyo mar haddii wareegtada loop-ga loo gudbiyo makro-kan, waxa lagu qeexaa meel ka baxsan wareegga lafteeda oo waa la heli karaa ka dib wareegga. Isticmaalka heerka C99 waxay u oggolaanaysaa horumariyeyaashu inay qeexaan doorsoomayaasha loop-ka ee block () block, kaas oo xallin doona dhibaatada iyada oo aan la abuurin xalal.

Nasiib darro, waxaa jira meelo badan oo kernel ah oo liiska ku jira
dib-u-eegis ayaa la isticmaalaa ka dib wareegga kaas oo jebiya isbeddelka noocaas ah. Nasiib wanaag
waxaa jira script use_after_iter.cocci kaas oo loo isticmaali karo in lagu aqoonsado sida
goobaha code. Waxaan ku khasbanaaday in aan xoogaa la qabsado qoraalka maadaama ay beenta yarayso
togan ee kiiska asalka ah ee isticmaalka, laakiin kuwani waxay khuseeyaan balastarkan.

Noocyo badan oo goobo kood ah oo la soo sheegay ayaa kaliya isticmaala ku celceliyaha liiska ka dib
meertada haddii ay jirtay bixitaan hore (jebis/ goto) oo sidaas darteed ma jiraan
la xiriira.

Dhinaca kale, Linus Torvalds wuu ku raacay fikradda si ay u awoodaan in ay hirgeliyaan taageerada qeexitaannada cusub oo dheeraad ah ayaa la soo jeediyay in loo dhaqaaqo kernel 5.18 si loo isticmaalo heerka C11, ee la sii daayay 2011.

Taas ka dib, inta lagu guda jiro xaqiijinta horudhac ah, kor u qaadista GCC iyo Clang ee qaabka cusub waxay u gudubtay iyada oo aan leexleexad lahayn. Ilaa dhibaatooyin aan la filayn ay soo baxaan oo ay ugu wacan tahay tijaabin balaadhan, 5.18 qoraalada kernel-ku waxay bedeli doonaan '–std=gnu89' doorashada '–std=gnu11 -Wno-shift-negative-value'.

Linus Torvalds aad uma jeclayn balastarka mana uusan arkin sida ay ula xiriirto dayacanka fulinta mala-awaalka ah. Si kastaba ha noqotee, ka dib markii Koschel uu sii sharraxay xaaladda, Torvalds wuxuu ogolaaday in "tani ay tahay uun bug caadi ah, cad oo fudud" wuxuuna sheegay inay tahay in la hagaajiyo iyada oo aan loo eegin taxanaha weyn. Laakin dabadeed waxa uu dhex galay isha dhabta ah ee dhibku ka imanayo: in dib-u-habayntu u gudubtay liiska macro-maroodiga waa in lagu dhawaaqaa meel ka baxsan wareegga laftiisa:

Sababta ugu weyn ee noocan ah khaladka aan mala-awaalka ahayni u dhici karo waa in taariikh ahaan aynaan haysanin qaabka C99 "ku dhawaaq doorsoomayaasha wareegyada." Markaa list_for_each_entry() - iyo kuwa kale oo dhan - asal ahaan had iyo jeer sifeeyaan gelitaanka MADAXWEYNAHA ee u dambeeya wareegga, si fudud sababtoo ah ma sheegi karno doorsoomiyaha soo noqnoqda ee wareegga laftiisa.

Waxaa kale oo xusid mudan taas suurtogalnimada isticmaalka heerka C17 ayaa la tixgeliyey, laakiin kiiskan waxa lagama maarmaan noqon doonta in la kordhiyo nooca ugu yar ee la taageeray ee GCC, maadaama ku darida taageerada C11 ay waafaqsan tahay shuruudaha hadda jira ee nooca GCC (5.1).

Finalmente hadaad xiisaynayso inaad waxbadan ka ogaato, waxaad ka eegi kartaa faahfaahinta xiriirka soo socda.


Ka tag faalladaada

cinwaanka email aan la daabacin doonaa. Beeraha loo baahan yahay waxaa lagu calaamadeeyay la *

*

*

  1. Ka mas'uul ah xogta: AB Internet Networks 2008 SL
  2. Ujeedada xogta: Xakamaynta SPAM, maaraynta faallooyinka.
  3. Sharci: Oggolaanshahaaga
  4. Isgaarsiinta xogta: Xogta looma gudbin doono dhinacyada saddexaad marka laga reebo waajibaadka sharciga ah.
  5. Kaydinta xogta: Macluumaadka ay martigelisay Shabakadaha Occentus (EU)
  6. Xuquuqda: Waqti kasta oo aad xadidi karto, soo ceshan karto oo tirtiri karto macluumaadkaaga.