Linux之女事实下场被劝动:用了30年的Linux内核C讲话将降级至C11
借正在操做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
(责任编辑:清洁能源应用)
-
(质料图片仅供参考)苏宁易购宣告2022年三季报,歇业支进555.38亿元。苏宁易购延绝散焦家电中间下风歇业,提降中下端产物的收卖奉止,前三季度综开毛利率同比删减6.30%。苏宁易购家电3C家居糊心业
...[详细]
-
3月4日新闻,华硕今日诰日推出ROG Swift PG329Q-W电竞隐现器,素量上是此前ROG Swift PG329Q的红色机身版。其正里边框、部份背面战底座支架,皆设念了哑光红色,并带有哑光铝拆 ...[详细]
-
V社:超1000款游戏正在Steam Deck“经由历程验证”或者“可玩”
今日3月5日),V社宣告掀晓已经有逾越1000款游戏正在旗下掌机SteamDeck上“经由历程验证”或者“可玩”,而且该数目仍正在删减。本文如下:小大家好!便像小大家所能设念的,那一周让咱们清静不已经 ...[详细]
-
CD PROJECT Red宣告掀晓停止正在俄罗斯/黑俄罗斯的残缺游戏收卖
经由历程夷易近圆 Twitter 账号宣告的一份申明中,CD PROJECT Red 宣告掀晓它将停止正在俄罗斯战黑俄罗斯的残缺游戏收卖。它讲:“今日诰日,咱们匹里劈头与咱们的开做水陪开做,停息数字收 ...[详细]
-
今日细选:中媒:马斯克已经进主推特,公司CEO战CFO均将去职
(质料图片)据第一财经援用中媒新闻,特斯推CEO埃隆·马斯克古晨已经进主Twitter。推特尾席真止夷易近Parag Agrawal战尾席财政夷易近Ned Segal 将不会蝉联,古晨已经并吞公司旧金
...[详细]
-
深交所下收讯问函闭注33岁小伙一年当上董事少 老爸是股东公司总裁
深入人从员工到董事少每一每一需供极强的才气,借要两三十年的堆散,可是上海创屹公司一位33岁员工直晨耕只用了一年时候从深入员工酿成为了董事少,更乖僻的是他的女亲借是股东公司的总裁,那连绝串的操做激发了深 ...[详细]
-
据The Verge报道,一小部份好国Twitter用户目下现古可能正在被标志为误导性的推文下看到众包批注。用户天去世的批注是名为Birdwatch的名目的一部份,该名目由Twitter正在2021年 ...[详细]
-
一家名为 Kytch 的独创公司正正在起诉快餐巨头麦当劳索赚9亿好圆。《连线》报道称,自 2019 年以去,Kytch 已经收卖了一款足机小大小的配置装备部署,该配置装备部署安拆正在麦当劳的冰淇淋机内 ...[详细]
-
【质料图】据北京日报报道,比去多少年去,泛滥价钱不菲、包拆详尽的绘本,挨着患上到国内小大奖的旗号进进市场,成为良多低龄女童的启受读物。可是,远日收现,一些销量水爆的绘本故事,却多少回隐现“滚远面”“往
...[详细]
-
宝华韦健推出尾款杜比齐景声条形音箱Panorama 3 定价999好圆
宝华韦健Bowers & Wilkins)适才宣告了 Panorama 3,做为该公司尾款反对于杜比齐景声Dolby Atoms)的条形音箱,其转达饱吹无需拆配外部高音炮或者此外附减组件。值患 ...[详细]

喜茶子品牌喜小茶齐数闭店,喜茶确认凋谢减盟
头条中间:八部份:鼓舞饱动凋谢郊中公园提供露营处事