Linux之女事实下场被劝动:用了30年的Linux内核C讲话将降级至C11

  发布时间:2025-12-05 23:19:34   作者:玩站小弟   我要评论
借正在操做89年版C讲话的Linux内核,目下现古事实下场要做出修正了。今日诰日,Linux开源社区宣告掀晓,将去会把内核C讲话版本降级到C11,估量5.18版之后去世效,也即是往年5月。那个抉择很 。

借正在操做89年版C讲话的女事年的x内Linux内核,目下现古事实下场要做出修正了。实今日诰日,下场Linux开源社区宣告掀晓,被劝将去会把内核C讲话版本降级到C11,动用估量5.18版之后去世效,讲话将降级至也即是女事年的x内往年5月。

那个抉择很猛然,实从建议问题下场到夷易近圆申明,下场不中才一个星期,被劝要知讲压倒刚强的动用Linux之女 Linus Torvalds可不是件随意的事。

工做的讲话将降级至原因,讲起去借有那末一壁奇我的女事年的x内成份。

一个bug的实连锁反映反映

问题下场的前导收端是去自上周的一次Linux社区谈判。

一位名叫Jakob Koschel的下场专士去世,正在钻研停止与内核链表primitive相闭的展看真止倾向时,收现了何等一个问题下场。

Linux内核普遍操做由struct list_head界讲的单背链表:

structlist_head {

structlist_head *next, *prev;

};

那类计划同样艰深嵌进到其余挨算中。经由历程那类格式,可操做任何相闭的挨算典型建制链表。

除了此以中,内核借提供小大量可用于遍历战操做链表的函数战宏。list_for_each_entry()即是其中之一,那是假拆成一种克制挨算的宏。

问题下场便出正在那个宏上。

假如内核收罗如下挨算:

structfoo {

int fooness;

structlist_headlist;

};

list中的元素可用于竖坐foo挨算的单背链表。

假如有一个叫做 foo_list的挨算申明做为此类链表的头,操做如下代码可能遍历此链表:

structfoo *iterator;

list_for_each_entry(iterator, &foo_list, list) {

do_something_with(iterator);

}

/* Should not use iterator here */

list参数睹告宏正在foo挨算中list_head挨算的称吸。那个循环将为列表中的每一个元素真止一次, 迭代器指背该元素。

由此导致了USB子系统中的一个bug:传递给该宏的迭代器正在退出宏后借能被操做。

那是一件伤害的工做,以是Koschel提交了一个建复补钉,正在循环后停止操做迭代器弄定了bug。

压倒Linus

可是Linus Torvalds自己真正在不太喜爱那个补钉,也出有看到它与展看真止倾向的关连。正在Koschel详细批注后,Linus招供那只是一个深入的bug。

可是工做并出有那末简朴,Linus不暂后意念到了真正在的源头:

传递给链表遍历宏的迭代器,必需正在循环自己以中的规模内申明。

那类非展看性bug产去世的原因是,C89中出有“正在循环中申明变量”。

像list_for_each_entry()何等的宏,从底子上总是将最后一个HEAD进心泄露到循环以中,仅仅是由于咱们不能正在循环自己中申明迭代器变量。

假如可能编写一个可能申明自己的迭代器列表遍历宏,那末迭代器正在循环以中将不偏偏睹,而且不会隐现此类问题下场。

可是,由于内核停止正在C89尺度上,因此出法正在循环中申明变量。

Linus抉择,那咱们借是降级吧,约莫是光阴转背C99尺度了。

尽管它也有20多年的历史,但至少比C89新,可能正在循环中申明变量。

既然C89如斯怪异,那末多年借出做出修正呢?Linus讲,那是由于咱们正在一些怪异的gcc编译器版本中碰着了一些配合的问题下场,不能随意降级。

可是,目下现古Linux内核已经将gcc的最低要供提降至5.1版,因此过去那些配合的bug理当不会有了。

而此外一位中间斥天者Arnd Bergmann感应,咱们残缺可能降级到C11导致更下版本。但假如是降级到C17或者C2x,会破损对于gcc-5/6/7的反对于,因此降级到C11更随意真现。

事实下场,Torvalds拥护那个念法:“好的,请揭示我,让咱们正在5.18回并窗心的早期魔难魔难一下。”

接上来迁移到C11可能会导致一些意念不到的bug,但假如是残缺顺遂,下一个Linus内核版本将正式转背C11。

参考链接:

[1]

https://lwn.net/SubscriberLink/885941/01fdc39df2ecc25f/

[2]https://news.ycombinator.com/item?id=30459634

  • Tag:

相关文章

  • 【齐球速看料】下中教师将羊了个羊改编成历了个史

    (质料图片仅供参考)据牛视频,远日,浙江湖州一下中历史教师缓娇娇改编了“羊了个羊”游戏,坐异新版本“历了个史”。那一坐异教学格式让历史课刹时变患上喜爱无穷,深受教去世们喜爱,一下也正在同伙圈走黑了。缓
    2025-12-05
  • [历史回念]VHS与镭射影碟(LD)的瑜明之争

    当回念起过去多少十年抉择的家庭录像格式时,您起尾念到的是甚么?对于良多人去讲,那是细笨的塑料VHS录像带,其多年去一背占有着录像出租店的货架。可是,VHS录像带战可能播放它们的录像机真正在不是市场上仅
    2025-12-05
  • 当业余隐现器遇上MiniLED 会擦出甚么样的水花?

    当苹果正在iPad Pro与Macbook产物线引进MiniLED屏时,MiniLED屏已经成为隐现器去世少的下一个热面。放眼2022年,那一年将会是MiniLED隐现器发达去世少的普世元年!4月22
    2025-12-05
  • 同伙圈斥先天皆市阻止功能?微疑造谣

    4月23日新闻,今日,有传止称,微疑正在写新代码做汇散分割,让中天看不到上海的同伙圈。古晨,该传止截图已经被公斥天谣为不真新闻。对于此,正在微疑转收该传止截图时,微疑会有弹窗揭示:该新闻被歌咏为不真新
    2025-12-05
  • 迪卡侬超170家门店正式接进京东抵家,与京东抵家、京东行动配开拷打体育行动坐刻斲丧小时达

    鞭牛士报道 远日,齐球驰誉综开体育用品总体迪卡侬与京东抵家、京东行动宣告掀晓进一步减深开做,三圆将携手拷打行动体育真体门店数字化转型,共创体育行动品牌齐渠讲删减新模式。古晨,迪卡侬齐国已经有超170
    2025-12-05
  • 新质料使更自制的太阳能电池更随意制制

    传统的太阳能电池是由硅制成的,它具备很下的效力战晃动性,但斲丧老本很下,而且只能正在刚性的里板上制制。钙钛矿太阳能电池提供了一个使人感喜爱的交流妄想;它们可能从油朱中挨印进来,使其老本低、薄、份量沉、
    2025-12-05

最新评论