Linux内核7.4的合并窗口在10月19日开了。Rust for Linux项目负责人Miguel Ojeda把本轮的拉取请求发到了主线,规模大约1.7万行,是Rust进内核以来体量偏大的一次。前一个版本7.3在10月18日发布,7.4稳定版按惯例要等到12月底。
最扎眼的一处是Zerocopy这个库一次性往前推了八个版本。它提供的是原始字节序列与结构化类型之间安全转换的trait和宏,内核里零拷贝路径的数据解释要经过它。跨八个版本不是改几个函数签名的事,相关的安全抽象和诊断信息都得同步跟上,否则类型边界上会留下没人验证的缝。
工具链动了proc_macro_span这个不稳定特性。启用之后,所有过程宏的编译期诊断能指向更精确的源码位置,而不是笼统地报错在宏调用那一行。对写内核Rust代码的人来说,这一项改变的是排错时要不要靠猜。
模块层面新加了两个:mem与ratelimit。pin-init这个crate补上了对元组结构体的支持,允许以安全方式创建自引用结构,错误诊断也一并修了。这类改动看着不起眼,内核里凡是要求初始化时必须固定在某个地址的场景,都要靠它兜住。
1.7万行只是主拉取请求这一份。各子系统还会通过自己的拉取请求带进更多Rust代码,已经点明的有NVIDIA Nova驱动的改进,以及Rust DRM图形驱动的基础设施,后者是让图形驱动能用Rust写的那层底座。这一轮的最终规模会在1.7万行之上继续往上加。
同一个版本里另有一处与Rust无关的改动。Greg Kroah-Hartman加了TAINT_FORCED_BIND标志,字母取Y,只要有人往sysfs的bind或unbind文件写过,内核就在崩溃报告里打上这个标记。起因是syzbot把驱动硬绑到不该绑的设备上,刷出一堆没有意义的报错。标志不阻止操作,靠手动绑定跑VFIO的机器照旧能用,崩溃报告里只多一个Y。
A5创业网 版权所有