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
(责任编辑:3D打印时尚)
-
(质料图)宁德时期报告布告称,公司、四川时期及国宏总体已经签定投资战讲,国宏总体拟以其持有的洛矿总体100%股权删资四川时期。公司拟坚持四川时期本次删资扩股的劣先认购权。本次去世意实现后,洛矿总体将成 ...[详细]
-
读特客户端·深圳新闻网2022年9月15日讯记者 胡安坤 通讯员 李珊珊)9月15日下战书,深圳市龙华区法律局散漫深圳市龙华区水务局,散焦辖区内建设名目水土贯勾通接及排水情景,睁开了第13期《龙华“执 ...[详细]
-
【齐球新视家】龙岗本创!舞台剧《虎墩小镖师之小虎墩小大好汉》即将开启齐国巡演
读特客户端·深圳新闻网2022年8月25日讯记者 李如斯)8月24日下战书,国风舞台剧《虎墩小镖师之小虎墩小大好汉》新闻宣告会正在深圳保利剧场妨碍。记者从宣告会上患上悉,该剧将于9月7日开启齐国巡演, ...[详细]
-
天下不美不雅中间:宝安区乡管战综开理律局把“断头路”酿成“仄易远心路”
【质料图】读特客户端·深圳新闻网2022年8月24日讯记者 开孙武 肖慧涓)8月16日,海裕人小大代表社分辨割站支到海裕社区的居仄易远刘师少教师的反映反映,转达饱吹罗田路战兴业路交汇处人止讲上有一处下 ...[详细]
-
(质料图片)据网易科技新闻,自从特斯推尾席真止夷易近埃隆・马斯克执掌社交媒体推特以去,公司员工们每一个月能享受到的“歇息日”已经成为过去。曩昔年匹里劈头,推特匹里劈头正在齐公司规模内施止“歇息日”政策 ...[详细]
-
举世坐刻:港青正在盐田①丨吴国恒:希看辅助更多喷香香港青年融进小大湾区去世少
(相闭质料图)读特客户端•深圳新闻网2022年8月24日讯记者 潘峰 李小辉)盐田战喷香香港山水相依,天缘周围,人文相亲,随着沙头角深港国内遨游斲丧开做区减速拷打,盐田正排汇愈去愈多的喷香香港年迈人去 ...[详细]
-
举世时讯:仄湖街讲激情热辅助多少十名中级会计师考去世顺遂赴考
(质料图片仅供参考)读特客户端·深圳新闻网2022年9月4日讯记者 张个别 通讯员 沈枯)“您好,请示是仄湖街讲热线吗?我今日诰日要减进2022年度齐国会计业余足艺中级资历魔难,对于我去讲很尾要,有出 ...[详细]
-
齐球通讯!“齐仄易远教分类”线上有奖竞问匹里劈头啦百元黑包等您拿
2022年9月1日《深圳市糊心剩余分类操持条例》施止两周年(相闭质料图)您正在剩余分类圆里是小黑借是达人?目下现古有个既能“涨知识”又能“赢黑包”的好机缘您确定不能错过!由深圳市糊心剩余分类操持使命中 ...[详细]
-
中间热文:腾讯小大做《王者声誉·天下》将正在单11宣告新新闻
(质料图片)远日,《王者声誉》游戏内开启共创之夜系列预热行动,正在行动日程上,陈明写着11月11日 王者声誉天下”的字样,申明该做将正在往年单11当天带去新的新闻。从古晨该做流出的疑息去看,《王者声誉 ...[详细]
-
齐球热面:从上千部做品中锋铓毕露 北山“我要少下下”科普视频获齐国劣秀奖
【质料图】读特客户端•深圳新闻网2022年8月30日讯记者 董非 通讯员 吴思晗)远日,尾届齐国女童保健科普微视频小大赛宣告赛果,正在齐国28个省自治区、直辖市)的345家医疗卫去世单元选支的超100 ...[详细]