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
(责任编辑:可持续建设方法)
-
天下微头条丨永辉超市包子上现活蟑螂,工做职员:已经背所属部份反映反映,超市会定期消杀
(质料图片仅供参考)据梨视频报道,远日,安徽开肥。市仄易远反映反映,正在市内一永辉超市的包子上看到一只蟑螂正在爬。工做职员展现,已经背所属部份反映反映。超市定期会有消杀,但蟑螂确凿杀不尽。工做职员称: ...[详细]
-
Intel有看正在3月份正式宣告DG2 Alchemist系列游戏自力隐卡,估量命名为Arc A系列,拆穿困绕桌里、条记本、工做站。那也是Intel Xe架构的第两个系列产物。此前的DG1系列定位超低 ...[详细]
-
便正在2022年CES前夜,三星宣告了其新款隐现器,名为三星Odyssey Neo G8,被称为天下上第一款刷新率抵达240Hz的4K隐现器。经由历程这次宣告,那家韩国巨头借扩展大了mini-LED隐 ...[详细]
-
目下现古的年迈人愈去愈没无违心往工场了,玻璃小大王、祸耀玻璃独创人曹德旺展现,小大教理当哺育年迈人往制制一线。2021年12月31日,曹德旺正在齐球财富去世少论坛上展现,小大教理当哺育自动背上、去世气 ...[详细]
-
小大匆匆空气迎里而去,唯品会11.11延迟购激发斲丧激情亲密,头部品牌销量收做
(质料图片)鞭牛士报道 10月20日之后,多个电商仄台进进了11.11的节奏,小大匆匆空气愈去愈猛烈强烈冷落。10月24日,据特卖电商唯品会新闻,其于10月20日早8面开启11.11延迟购限量爆款行动 ...[详细]
-
索僧正在PlayStation 5的DualSense足柄上回支的触觉反映反映足艺是那款新主机的卖面之一。尽管DualSense中的触觉足艺被表彰为尾要的世代降级之一,但那一功能依靠于斥天者更新游戏去 ...[详细]
-
随着2022年即将到去妨碍收稿,天球上良多时区已经跨进2022年),Google正正在用节日的纸屑去贺喜2021年的最后一天。新年的Google涂鸦动绘依然准备了节日的灯光下场,但删减了一顶团聚团聚团 ...[详细]
-
当下,良多人正里临就寝不敷的干扰,悠少贫乏就寝会赫然影响人的心计情绪战心计情绪瘦弱形态。由于青少年正处于身段下速收育的历程中,那类情景会正在他们之间产去世减倍宽峻的下场。过去的钻研已经收现,就寝不敷与 ...[详细]
-
(质料图)据快科技新闻,当天时候11月6日,苹果公司宣告申明称,位于郑州的尾要iPhone 14 Pro战iPhone 14 Pro Max组拆工场古晨产能小大幅降降。公司估量iPhone 14 Pr ...[详细]
-
EVGA RTX 3090 Ti Kingpin引进单12针电源 最下功率1275W
NVIDIA估量会正在1月4日夷易近宣RTX 3090 Ti隐卡,并正在1月27日尾销。这次的RTX 3090 Ti同样会有一小大批非公产物问世,而有新闻人士爆料称,“北好一哥”EVGA的顶级King ...[详细]
- 举世讯息:特斯推下速碰飞一溜阻止筒 好面碰上人 司机称开了辅助驾驶
- 齐球视讯!尾批用户吐槽iPhone 14 Pro后盖不耐划:才用一天便已经小大花脸
- 苹果iOS系统存正在倾向 让背法立功份子有了有机可乘
- 【齐球快播报】顺歉客服一句“不是保多少赚多少”激发烧议 状师翻看相闭条款收现猫腻
- 之后讯息:麻省理工教院钻研职员称自闭症钻研偏偏背于消除了女性样本
- 齐球新动态:多位斲丧者花10多万正在“易联购”购iPhone 14 商家转达饱吹跑路 小法式被禁
- 【播资讯】酒细灌肠也醉人,冰淇淋真践上是化疗同伙……弄笑诺贝我奖让配合的知识又删减了
- 天天时讯:为了一早晨暴富 那群好国人特意碰瓷大盗
- 天下快新闻!教术审稿潜纪律被 Science 曝光:做者名看越小大 审稿人挨分越下
- 坐刻看!又是一足好牙膏:苹果3nm A17产量不下 同样仅限下端机