Linux kernel 5.18 dia mikasa ny hamela ny fampiasana ny fenitra C11 amin'ny fiteny C

Raha miresaka andian-tsangantsanganana hamahana ny olana mifandraika amin'ny Spectre ao amin'ny kaody lisitra mifandray, dia nanjary nazava fa ny olana dia azo voavaha tsara kokoa raha toa ka avela hiditra ao amin'ny kernel ny kaody C mifanaraka amin'ny dikan-teny vaovao. Amin'izao fotoana izao, ny kaody kernel fanampiny dia tsy maintsy manaraka ny fanondroana ANSI C (C89), niforona tamin'ny taona 1989.

Ny olana mifandraika amin'ny Spectre ao amin'ny kaody dia vokatry ny fanohizana ny fampiasana mpizara voafaritra manokana aorian'ny loop - ny macro dia ampiasaina hamerenana ireo singa ao amin'ny lisitra mifandray, ary satria ny loop iterator dia alefa amin'io macro io, dia voafaritra ivelan'ny loop ary mijanona ho azo aorian'ny loop. Ny fampiasana ny fenitra C99 dia ahafahana mamaritra ny fari-pahaizan'ny loop ao amin'ny for() block, izay hamaha ny olana nefa tsy mila mitady vahaolana.

Linus Torvalds dia nanaiky ny hevitra hampiharana ny fanohanana ireo fepetra vaovao kokoa ary nanolotra soso-kevitra hamindra ny kernel 5.18 hampiasa ny fenitra C11, navoaka tamin'ny 2011. Nandritra ny fitsapana savaranonando, ny fivoriambe tao amin'ny GCC sy Clang tamin'ny fomba vaovao dia nandalo tsy nisy fiviliana. Raha tsy misy olana tsy ampoizina mitranga mandritra ny fitsapana lalina kokoa, ny safidy '--std=gnu5.18' ao amin'ny 89 kernel build script dia hosoloina '--std=gnu11 -Wno-shift-negative-value'. Nodinihina ihany koa ny mety hampiasana ny fenitra C17, saingy amin'ity tranga ity dia ilaina ny mampitombo ny dikan-teny ambany indrindra amin'ny GCC. Ny fampidirana ny fanohanana C11 dia mifanaraka amin'ny fepetra takiana amin'izao fotoana izao ho an'ny dikan-teny GCC (5.1).

Source: opennet.ru

Add a comment