打开网易新闻 查看精彩图片

Rust 团队在发布 Rust 1.98.0 之后不久,又发布了 Rust 1.98.1,此次更新修复了一个虚函数表(vtable)生成过程中的错误编译问题。

Rust 1.98.1 于9月3日发布。

一个在8月21日提出(现已关闭)的 Rust 问题指出,Rust 1.98 会在编译器生成的虚函数表中产生一个零值方法条目,从而导致段错误并使程序崩溃。根据 Rust 1.98.1 发布说明:

在 Rust 1.98.0 中,某些情况下 rustc 会错误地生成一个 trait 对象虚函数表,其中本应是函数指针的位置却是空指针。这会导致生成的代码出现未定义行为。在某些情况下,这“仅仅”会因为加载了空指针而导致段错误,但也有可能造成任意其他影响。

该问题已在 Rust 1.98.1 中修复。此前发布的 Rust 1.98.0 为浮点类型引入了加、减、乘、除和取余的代数方法,允许利用实数的代数性质对这些运算进行优化。

通过 rustup 安装了之前版本 Rust 的用户,可以运行命令 rustup update stable 来安装 Rust 1.98.1。Rust 团队希望愿意帮助测试未来版本的开发者考虑使用 beta 频道(rustup default beta)和 nightly 频道(rustup default nightly),并请大家报告发现的任何问题。

Q&A

Q1:Rust 1.98.1 主要修复了什么问题?

A:修复了 Rust 1.98.0 中一个虚函数表生成的错误编译问题,该问题会导致生成的代码中出现空指针而非函数指针,从而引发段错误或未定义行为。

Q2:Rust 1.98.0 带来了哪些新特性?

A:Rust 1.98.0 为浮点类型引入了加、减、乘、除和取余的代数方法,可以利用实数的代数性质对这些运算进行优化。

Q3:如何升级到 Rust 1.98.1?

A:通过 rustup 安装了旧版本 Rust 的用户,只需运行命令 rustup update stable 即可升级到 Rust 1.98.1。