Linux цөм 5.18 нь C хэлний стандарт C11-ийг ашиглахыг зөвшөөрөхөөр төлөвлөж байна

Холбогдсон жагсаалтын код дахь Spectre-тэй холбоотой асуудлуудыг засах хэд хэдэн засваруудыг хэлэлцэж байх үед стандартын шинэ хувилбарт нийцсэн C кодыг цөмд оруулахыг зөвшөөрвөл асуудлыг илүү сайн шийдэж болох нь тодорхой болсон. Одоогоор нэмсэн цөмийн код нь 89 онд бий болсон ANSI C (C1989) үзүүлэлттэй нийцэх ёстой.

Код дахь Spectre-тэй холбоотой асуудал нь давталтын дараа тусад нь тодорхойлогдсон давталтыг үргэлжлүүлэн ашигласнаас үүдэлтэй—холбогдсон жагсаалтын элементүүдийг давтахад макро ашигладаг ба давталтын давталт нь тухайн макро руу дамждаг тул энэ нь давталтын гадна тодорхойлогдсон бөгөөд давталтын дараа боломжтой хэвээр байна. C99 стандартыг ашиглах нь давталтын хувьсагчдыг for() блокт тодорхойлох боломжийг олгодог бөгөөд энэ нь тойрон гарах арга замыг олохгүйгээр асуудлыг шийдэх болно.

Линус Торвалдс шинэ техникийн үзүүлэлтүүдэд дэмжлэг үзүүлэх санаатай санал нэгдэж, 5.18 онд хэвлэгдсэн C11 стандартыг ашиглахын тулд 2011 цөмийг шилжүүлэхийг санал болгов. Урьдчилсан туршилтын явцад GCC болон Clang-ийн угсралт шинэ горимд ямар ч хазайлтгүйгээр өнгөрчээ. Нарийвчилсан туршилтын явцад гэнэтийн асуудал гарахгүй бол 5.18 цөм бүтээх скрипт дэх '--std=gnu89' сонголтыг '--std=gnu11 -Wno-shift-negative-value'-ээр солино. C17 стандартыг ашиглах боломжийг мөн авч үзсэн боловч энэ тохиолдолд GCC-ийн хамгийн бага дэмжигдсэн хувилбарыг нэмэгдүүлэх шаардлагатай болно. C11 дэмжлэгийг оруулсан нь GCC хувилбарын (5.1) одоогийн шаардлагад нийцэж байна.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх