文章摘要
Rust语言团队负责人Tyler Mandry在Kangrejos 2025会议上讨论了即将推出的Rust新特性,特别感谢Rust for Linux项目推动了三项对内核开发至关重要的功能:字段投影、原地初始化和任意self类型。他指出Rust新功能开发缓慢的原因在于志愿者驱动的开发模式需要"注意力对齐",而Rust for Linux项目成功聚集了开发者对这些关键特性的关注。
文章总结
标题:Rust语言即将推出的内核开发新特性
来源:https://lwn.net/Articles/1039073/ 发布时间:2025年10月9日 GMT 07:30:14
核心内容:
- 项目背景
- Rust语言设计团队联合负责人Tyler Mandry在Kangrejos 2025会议上表示,Rust for Linux项目对Rust语言发展具有积极影响
- 会议重点讨论了三个对内核开发至关重要的语言特性:字段投影(field projections)、原地初始化(in-place initialization)和任意self类型(arbitrary self types)
- Rust语言特性发展现状
- 新特性开发缓慢的原因:
- 语言团队对设计质量的严格把控
- 志愿者驱动的开发模式导致资源分配不均
- Rust for Linux项目通过集中开发者注意力,有效推动了特定特性的发展
- 关键特性详解
3.1 字段投影 - 现状:Rust内置引用和指针类型支持字段投影,但用户定义的智能指针类型存在限制 - 内核需求:处理不受信任数据、引用计数、外部锁定等场景需要通用解决方案 - 技术细节: * 统一类型签名:Container<'a, Struct> -> Output<'a, Field> * Pin类型的特殊处理:根据字段是否可移动决定返回Pin<&mut Field>或&mut Field - 应用场景:简化RCU机制实现,避免不必要的互斥锁开销 - 开发进展:自2022年开始设计,目前仍处于设计阶段
3.2 任意self类型 - 现状:Rust方法目前仅支持普通引用作为self参数 - 提案:允许方法接受智能指针作为self参数(如Pin<&mut MyStruct>) - 技术挑战: * 与Deref特性的交互问题 * 类型信息在方法查找过程中的丢失 - 解决方案:引入新的Receiver trait标记支持该特性的指针类型 - 预计时间:1年内可能完成,需通过Crater测试确保兼容性
3.3 原地初始化 - 现状:内核代码使用pin_init!宏实现固定位置初始化 - 提案方向: * 方案1:新增init关键字自动实现PinInit trait(Alice Ryhl和Lossin提出) * 方案2:引入仅可写的&out引用类型(Taylor Cramer提出) * 方案3:借鉴C++的保证优化方案 - 潜在优势: * 简化内核代码 * 改进Future值在堆上的创建方式 * 增强trait的dyn兼容性
- 项目影响
- Rust for Linux项目正推动语言特性的改进
- 这些特性将显著简化涉及自定义智能指针的代码
- 更新:字段投影特性已调整,所有结构字段现在都被视为结构固定的
(注:原文中关于LWN订阅优惠、会议图片等非技术性内容已省略)
评论总结
总结评论内容:
- 关于Rust语言发展方向的观点:
有评论认为Linux内核开发长期主导了Rust语言特性发展(评论1) "the focus on bringing features for the kernel has held up development in other parts of the language" "内核需求主导的特性开发阻碍了语言其他部分的发展"
也有评论肯定Linux对Rust的推动作用(评论5) "Very happy to see Linux driving the language forward" "很高兴看到Linux推动语言发展"
- 技术细节讨论:
对字段投影(field projection)改进的认可(评论2) "it's a pretty technical point, but I'm happy they made the decision" "虽然技术性很强,但很高兴他们做出了这个决定"
关于"优化"命名的争议(评论3) "because 'optimization' gives the wrong idea" "因为'优化'会给人错误印象"
- 对内核开发的幽默担忧:
- 对内核过度集成应用的调侃(评论4) "it's all fun and games until someone puts tokio into the kernel" "当有人把tokio放进内核时,玩笑就不好笑了"
- 特性通用性的评价:
- 新特性将惠及非内核开发(评论1/5) "that are not almost exclusively useful to the kernel" "这些特性不再几乎只对内核有用" "would also benefit many non-kernel cases" "也会使许多非内核场景受益"