Ang Linux kernel 5.18 nagplano nga tugotan ang paggamit sa C language standard nga C11

Samtang naghisgot sa usa ka hugpong sa mga patch aron ayohon ang mga problema nga may kalabotan sa Spectre sa linked list code, nahimong klaro nga ang problema mahimong masulbad nga mas nindot kon ang C code nga nagsunod sa mas bag-ong bersyon sa standard gitugotan sa kernel. Sa pagkakaron, ang gidugang nga kernel code kinahanglang mosunod sa ANSI C (C89) nga espesipikasyon, nga naporma niadtong 1989.

Ang usa ka problema nga may kalabotan sa Spectre sa code gipahinabo sa padayon nga paggamit sa usa ka gilain nga gipasabut nga iterator pagkahuman sa loop-usa ka macro ang gigamit sa pag-uli sa mga elemento sa usa ka link nga lista, ug tungod kay ang loop iterator gipasa sa kana nga macro, kini gihubit sa gawas sa loop mismo ug nagpabilin nga magamit pagkahuman sa loop. Ang paggamit sa sumbanan sa C99 magtugot sa mga variable sa loop nga ipasabut sa usa ka for() block, nga makasulbad sa problema nga dili kinahanglan nga maghimo mga solusyon.

Si Linus Torvalds miuyon sa ideya sa pagpatuman sa suporta alang sa mas bag-ong mga detalye ug gisugyot nga ibalhin ang 5.18 kernel aron magamit ang C11 nga sumbanan, nga gipatik sa 2011. Atol sa pasiuna nga pagsulay, ang asembliya sa GCC ug Clang sa bag-ong mode milabay nga walay mga pagtipas. Kung walay wala damha nga problema nga mutungha atol sa mas bug-os nga pagsulay, ang '--std=gnu5.18' nga opsyon sa 89 kernel build scripts pulihan sa '--std=gnu11 -Wno-shift-negative-value'. Ang posibilidad sa paggamit sa C17 nga sumbanan gikonsiderar usab, apan sa kini nga kaso kinahanglan nga dugangan ang minimum nga gisuportahan nga bersyon sa GCC. Ang paglakip sa suporta sa C11 mohaum sa kasamtangan nga mga kinahanglanon alang sa GCC nga bersyon (5.1).

Source: opennet.ru

Idugang sa usa ka comment