Rust新标准获得意外功能:垃圾收集器
昨天,即2021年10月14日,Rust语言开发团队推出了标准更新——Rust 2021 Edition。然而,最引人瞩目的并非期待已久的所有权系统改进,而是突然引入的实验性垃圾收集器(GC)。这一决定在社区中引发了强烈反响:许多开发者称之为“对语言哲学的背叛”。
根据Rust官方博客,新功能名为“Rust GC Preview”。它在nightly构建中通过标志#![feature(rustc_gc)]启用。规范要求垃圾收集器仅在有限模式下工作——针对标记了Gc特征的类型。“我们并未放弃所有权模型,”Mozilla的Rust首席开发者卡罗尔·尼科尔斯表示,“GC是用于原型设计和内存安全性不关键的场景(例如单线程脚本)的一个选项。”
根据rust-lang/rust仓库的数据,在提交#89765中新增了约12,000行代码,用于实现基础的追踪式垃圾收集器。初步测试表明,在标准基准测试套件中,其性能比手动内存管理低40%。但对于大量使用动态数据结构(如图或树)的代码,开发速度的提升可能十分显著。
专家们意见不一。《Rust实战》一书的作者乔纳森·特纳在推特上写道:“这要么是吸引Python开发者的天才之举,要么是致命错误。Rust始终是那个不妥协的语言。”与此同时,亚马逊公司(Rust的活跃用户)的代表指出:“我们欢迎任何实验,但在生产系统中,GC在未来2-3年内不会出现。”
值得一提的是,2021年Rust已进入TIOBE排行榜前十,而其在Linux内核中的集成(Rust for Linux项目)才刚刚开始。新功能可能既会加速该语言在Web开发中的采用,也可能让系统程序员望而却步。
RFC #3127的完整文本已在GitHub上发布。带有GC的稳定版本预计最早要到2023年才能发布。