范文健康探索娱乐情感热点
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

Linux之父终于被劝动用了30年的Linux内核C语言将升级至C11

  还在使用 89 年版 C 语言的 Linux 内核,现在终于要做出改变了。今天,Linux 开源社区宣布,未来会把内核 C 语言版本升级到 C11 ,预计 5.18 版之后生效 ,也就是今年 5 月。
  这个决定很突然,从发起问题到官方声明,不过才一个星期,要知道说服固执的 Linux 之父Linus Torvalds 可不是件容易的事。事情的原因,说起来还有那么一点偶然的因素。一个 bug 的连锁反应
  问题的起源是来自上周的一次 Linux 社区讨论。
  一位名叫 Jakob Koschel 的博士生,在研究阻止与内核链表 primitive 相关的预测执行漏洞时,发现了这样一个问题。
  Linux 内核广泛使用由 struct list_head 定义的双向链表 :structlist_head{ structlist_head*next,*prev; };
  这种结构通常嵌入到其他结构中。通过这种方式,可以使用任何相关的结构类型制作链表。
  除此之外,内核还提供大量可用于遍历和操作链表的函数和宏。list_for_each_entry () 就是其中之一,这是伪装成一种控制结构的宏。问题就出在这个宏上。假设内核包含如下结构:structfoo{ intfooness; structlist_headlist; };
  list 中的元素可用于创建 foo 结构的双向链表。假设有一个叫做 foo_list 的结构声明作为此类链表的头,使用以下代码可以遍历此链表:structfoo*iterator;  list_for_each_entry(iterator,&foo_list,list){ do_something_with(iterator); } /*Shouldnotuseiteratorhere*/
  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,但如果一切顺利,下一个 Linux 内核版本将正式转向 C11。
  参考链接:
  [1]https://lwn.net/SubscriberLink/885941/01fdc39df2ecc25f/
  [2]https://news.ycombinator.com/item?id=30459634

Steam为杜绝恶意跳票出招想延后发售需提交申请据Steam社区SteamCN网友Yesenmidnight的消息,V社近日更新了Steam开发者后台,调整了ldquo为作品修改预定发售时间rdquo的机制,调整后开发者除了第一全面战争官方谈与网易合作将致力于中文本地化此前我们报道了网易宣布与全战系列开发商CreativeAssembly战略合作的消息,今日,全面战争TotalWar官方发文谈与网易合作,一起来了解一下。以下是全面战争官方声明作为火焰纹章风花雪月公布荣誉宣传片媒体好评如潮赞不绝口任天堂公布了火焰纹章风花雪月的荣誉宣传片,其中除了原先预告中的剪辑,还加入了各媒体的评分。视频欣赏其中收录的评分有IGN9。510分USGamer4。55分GameSpot910分魔兽争霸3重制版公布多个人物模型泰奶奶更美了在不久前结束的ChinaJoy2019活动上,暴雪公开了一组魔兽争霸3重制版人物模型,可以看到泰兰德萨尔以及众多游戏中单位的模型都获得了升级。(文中图片为观众现场拍摄,来源于wow宝可梦中心伦敦店10月18日开业将发售独家周边和产品宝可梦中心伦敦店将于10月18日至11月15日向公众开放,它位于英国伦敦知名的WestfieldLondon的Bush购物中心内。在开业期间,玩家可以购买到伦敦主题的宝可梦独家产品光环士官长合集PC版将全面支持Mod官方自曝奇趣bug343工作室近日发布了新一期光环士官长合集开发者日志,相较于前几期开发者日志,本次公布的内容相对较少,不过343工作室通过本期日志展示了游戏对于超宽屏显示器的支持以及一些有趣的bu使命召唤现代战争开发者跨平台进度共享仍在考虑中在使命召唤现代战争的Beta版中将会支持跨平台联机,但是这样也产生一个问题,如果还可以跨平台共享进度,岂不是更好。IW的多人合作设计总监也被问到了相关问题,但是并没有给出明确的回答奇迹时代星陨IGN8。4战斗刺激明快剧情诱人游戏封面游戏名称奇迹时代星陨英文名称AgeofWondersPlanetfall游戏类型策略游戏制作Triumph游戏发行ParadoxInteractive游戏平台PC上市时间2沉睡魔咒2新海报公布安吉丽娜朱莉邪气亮相迪士尼公布了沉睡魔咒2的新海报,安吉丽娜middot朱莉饰演的主角玛琳菲森邪气亮相,这一次她要和即将成为女王的爱洛公主(艾丽middot范宁饰)一起联手对抗新的敌人。在首部沉睡魔咒赛博朋克2077新截图动物帮头领大锤八十CDPR官方微博带来了一张赛博朋克2077的新截图,图中是主角V持枪面对ldquo动物帮rdquo首领Sasquatch的场景,并配文ldquo咚咚咚八十!rdquo,这也是今年E暗黑血统2终极版NS版预告9月26日正式发售今日,官方公布了暗黑血统2终极版NS版预告,一起来看看。视频欣赏据悉,NS版暗黑血统2终极版将于9月26日正式发售,售价29。99美元(约合人民币211元),将提供实体数字版。暗黑
苏联背景科幻原子之心新预告大佬身处机器世界今日,官方公布了苏联背景科幻游戏原子之心全新预告,一起来看看。原子之心新预告原子之心是一款由Mundfish工作室开发的第一人称射击冒险游戏,游戏设定为现实世界的另一条世界线,背景卡普空推出深海探险深世海将登陆AppleArcadeCAPCOM开发的全新潜水探险动作游戏深世海IntotheDepths将会登录AppleInc。的新平台AppleArcade!玩家可于本作享受独特的世界观和画面设计以及高品质的水3分钟看游戏三国志战略版还原真实古战场3分钟时间,能做些什么?在这里,3分钟能带你了解一款游戏。3分钟看游戏是我们推出的一档视频栏目,每期都会推荐一款时下热门的优秀大作精品小游戏以及回顾口碑超强却已经是过去式的老游戏,NSLiteIGN暂评8分轻便实惠是优势功能有缩水SwitchLite将在今日(9月20日)正式开售,IGN为这款轻便版掌机暂评8。0分。评分(暂时)8。0IGN的编辑认为,SwitchLite轻便的尺寸便宜的价格是其优势,但它也战斗策略疾速追杀HexPC版Epic独占10月8日发售今日,官方宣布疾速追杀Hex将于10月8日登陆PC和Mac平台,数字平台由EpicGamesStore(已上架)独占,售价19。99美元(约合人民币142元),主机版也在开发当中。噬血代码PS4免费Demo今日更新追加高难关卡多人模式等据CODEVEIN推特宣布,噬血代码PS4版免费Demo今日会更新更多内容,包括高难度关卡ldquo献祭之街rdquo多人模式将体验版中的自定义角色继承至完整游戏中的功能。噬血代码Office365要更名为Microsoft365了?Microsoft365是面向企业的微软订阅服务,内含Office365Windows10系统以及EnterpriseMobilitySecurity。在去年年底就有谣传称,微软内奥拉星手游地图资源和亚比怎么分布地图资源和亚比分布情报奥拉星手游中的世界,是遍布在宇宙星辰之中的,每一个地图,都是一颗风格独特的星球,那么地图资源是怎么分布呢?亚比又是怎么分布的呢?一起来看看吧。我们的目标是mdashmdash星辰大苹果宣布iOS13。1iPadOS9月24日发布!这iOS13正式版才刚刚推送,苹果已经迫不及待的宣布下个版本。苹果今天早些时候表示,将在9月24日发布iOS13。1和iPadOS的正式版,这要比之前发布会上说的9月30日提前了不谷歌已向部分用户推出地图的隐身模式功能据外媒Techspot报道,谷歌将率先面向参与地图预览计划中的部分用户推出谷歌地图的隐身模式。类似于Chrome样,它可以防止搜索和目的地被保存到您的Google帐户中。据悉这一功Windows10新补丁KB4515384成噩梦Bug接连不断Windows10更新补丁出问题已经是稀松平常的事情,但是这个月最新发布的KB4515384真成了噩梦一般的存在,Bug之多之严重让人难以置信。根据微软知识库文章,KB451538