Rust团队发布了rust1.93,这是该编程语言的最新版本,专为创建快速且安全的系统级软件而设计。此次发布改进了C标准库musl实现中涉及DNS解析器的操作。因此,Linux二进制文件在网络方面预计将更加可靠。
Rust 1.93于1月22日推出。通过rustup安装了旧版本Rust的开发者可以通过运行rust update stable命令进行升级。
musl库升级带来网络改进
在Rust 1.93中,*-linux-musl目标将附带musl 1.2.5版本。Rust团队表示,这主要影响x86_64、aarch64和powerpc64le的静态musl构建,这些构建此前捆绑的是musl 1.2.3版本。对于Rust生态系统而言,此次更新的主要动机是接收musl DNS解析器的重大改进,这些改进在1.2.4版本中发布,并在1.2.5版本中修复了错误。
使用musl目标进行静态链接时,此次更新应该使执行网络操作的便携式Linux二进制文件更加可靠,特别是在面对大型DNS记录和递归名称服务器时。
不过,更新的musl库也带来了一个破坏性变化:移除了Rust libc crate正在使用的几个传统兼容性符号。这个问题的修复已在2023年6月的libc 0.2.146版本中发布(距今2.5年前)。团队认为这个修复已经得到了足够广泛的传播,因此团队准备在Rust目标中进行这一变更。
标准库内部调整和新功能
此外,Rust 1.93还调整了标准库的内部结构,允许用Rust编写的全局分配器使用std的thread_local!和std::thread::current,而无需担心重入问题,这是通过使用系统分配器来实现的。
在Rust1.93中,cfg属性现在可以应用于asm!块内的单个语句。cfg属性基于配置谓词有条件地包含其所附加的形式。
最后,Rust 1.93稳定了23个API。Rust 1.93紧随上个月发布的Rust 1.92,后者将未来兼容性lint设为默认拒绝,这样在检测到时会导致编译错误。
Q&A
Q1:Rust 1.93更新musl库有什么好处?
A:更新到musl 1.2.5主要是为了获得DNS解析器的重大改进。使用musl目标进行静态链接时,这将使执行网络操作的便携式Linux二进制文件更加可靠,特别是在处理大型DNS记录和递归名称服务器时表现更好。
Q2:如何升级到Rust 1.93?
A:通过rustup安装了旧版本Rust的开发者可以通过运行"rust update stable"命令进行升级到Rust 1.93版本。
Q3:Rust 1.93的musl库更新会带来什么影响?
A:更新主要影响x86_64、aarch64和powerpc64le的静态musl构建。虽然带来了网络功能改进,但也移除了一些传统兼容性符号,不过相关修复已在2.5年前发布,应该已经广泛传播。