当前位置:首页 >> 资讯

Linus终于被劝动:用了30年的LinuxLinuxC语言将升级

来源:资讯   2025年01月09日 12:16

文则 | 局长

公司出品 | OSC源代码小区(ID:oschina2013)

根据 Linux 应用程序邮件以下的谣言,小区据悉提问了是否要 为应用程序引入早期 C 自然语言规格。

虽然 Linux 应用程序在较慢工业发展,但它同时依赖着一些非常现今的工具,其中的之一就是应用程序示例仍在用作 1989 年发行版的 C 自然语言规格——此规格在 30 很久以前应用程序项目叫停之前就仍然编写完成。从提问结果来看,这一情况未来会在 5.18 发行版应用程序中的相反。

Jakob Koschel 在向 Linus Torvalds 递交的补丁 ( ) 中的 修补了应用程序队列相关的预报执行Bug。

起因是 Jakob 找到了一个问题,Linux 应用程序普遍用作由 struct list_head 定义的双向队列:

structlist_head{

structlist_head*next, *pre

};

这种结构设计基底通常被嵌入到其他结构设计基底中的,通过这种方式为,源代码可以用作任何很感兴趣的结构设计类型制作团队队列。除此以外,应用程序还透过了大量可常用二叉树和操作队列的函数和昌。其中的之一是 list_for_each_entry,这是一个伪装成控制结构设计的昌。要了解到如何用作此昌,请求理论上应用程序相关联如下结构设计:

structfoo{

intfooness;

structlist_headlist;

};

list 架构人物可常用创建 foo 结构设计基底的双向队列,理论上我们有一个被称作 foo_list 的结构设计声明作为此类队列的牛,用作都有示例可以二叉树此以下:

structfoo* iterator;

list_for_each_entry(iterator, Pricefoo_list, list) {

do_something_with(iterator);

}

/* Should not use iterator here */

list 参数告诉昌在 foo 结构设计中的 list_head 结构设计基底的名称。此循环系统将为以下中的的每个成份执行一次,给定器相反该成份。由此引发了 USB 子系统中的的一个 bug:发送到给该昌的给定器在退出昌后还能被用作。

Koschel 通过重取而代之编写有问题的示例,以在循环系统后停止用作给定器来解决问题。

不过 Linus 却对补丁修补的问题回应不解,也无法看到它与预报执行Bug的关系。Koschel 已对同步进行了进一步话说明,已对 Linus 并不认为这只是一个比如说的 bug。但不久之后 Linus 找到了问题的本质所在:发送到给以下二叉树昌的给定器,必须在循环系统本身以外的范围内声明。

随后,Linus 并不认为也许可以引入更反之亦然的修补如 块级函数声明。但 C89 不大力支持,而 1999 年面世的 C99 规格大力支持。所以 Linux 应用程序也许是时候转向用作 C99 规格了。

Linus 话说到,应用程序示例一直停留在 C89 的原因之一是编译器 gcc 的旧发行版都会出现怪异的问题,引发初始化程序被受到破坏。不过如今应用程序促请的 GCC 低于发行版仍然减少到了 v5.1,那些 bug 可能仍然相关了。

另一位密切注目架构编译器问题的应用程序源代码 Arnd Bergmann 提议反之亦然替换到 C11 甚至 C2x,尽管他不已确定 C11 是否都会促使任何对应用程序适合于的取而代之内容。不过如果替换到 C17 或 C2x,都会受到破坏对 gcc-5/6/7 的大力支持,因此替换到 C11 更容易实现, 而且跨越太大应用程序小区未必遵从。

Linus 赞成了这个想法,在 Bergmann 表明必要可以这样做之后,Linus 宣布将在下一个应用程序发行版 v5.18 中的尝试用作 C11 规格。如果一切顺利,下一个应用程序发行版用作的 C 自然语言规格未来会替换到 C11。

FreeBSD大颓势 马斯克:我是Rust粉丝,但为了性能都会选取C 被侮辱、被架空,Swift开创者退出架构团队

觉得亮眼,请求点个在看呀

广州白癜风医院怎么样
武汉癫痫医院哪家专业
济南看精神病哪个医院最好
金笛复方鱼腥草合剂
胃烧心吃什么药好
血糖仪哪个牌子准确
什么家用血糖仪好用
丁桂儿脐贴与肠炎宁颗粒哪个更好
友情链接