皇上,还记得我吗?我就是1999年那个Linux伊甸园啊-----24小时滚动更新开源资讯,全年无休!

Rust 1.71.0发布

Rust 1.71.0发布

Rust团队很高兴地宣布Rust的新版本1.71.0。Rust是一种编程语言,能够帮助每个人构建可靠高效的软件。

如果您已经通过rustup安装了Rust的旧版本,您可以通过以下方式获得1.71.0:

rustup update stable
如果你还没有rustup,你可以从我们网站的相应页面获取,并在GitHub上查看1.71.0的详细发布说明

如果你想帮助我们测试未来的版本,可以考虑在本地更新,使用beta通道(rustup default beta)或nightly通道(rustup default nightly)。请报告您可能遇到的任何bug!

1.71.0稳定版中的内容
C-unwind ABI
1.71.0 稳定了 C-unwind (以及其它以 -unwind 为后缀的 ABI 变体1)。

非强制解卷(典型情况)的行为在提出该特性的 RFC 中的表格中进行了说明。总结如下

每个ABI在很大程度上等同于不带-unwind的ABI,除了带-unwind的行为被定义为在解卷操作(panic或C++风格的异常)越过ABI边界时是安全的。对于panic=unwind,这是一种有效的方式,可以让来自一种语言的异常在另一种语言中展开堆栈而不终止进程(只要该异常是在产生它的相同语言中捕获的);对于panic=abort,这通常会立即终止进程。

为了初步稳定,现有的ABI(例如 “C”)不会发生变化,跨ABI的反卷仍然是未定义的行为。未来的Rust版本将修改这些ABI,以符合RFC中指定的行为,作为稳定该功能的最后一部分(通常在边界处终止)。我们鼓励用户开始在他们的代码中使用新的unwind ABI变体,以便在将来需要跨越ABI边界进行unwind时能够保持稳定。

调试器可视化属性
1.71.0稳定了对新属性#[debug_visualizer(natvis_file = “…”)] 和#[debug_visualizer(gdb_script_file = “…”)] 的支持,它允许将Natviz描述和GDB脚本嵌入到Rust库中,从而在检查这些库创建的数据结构时改善调试器输出。Rust本身为标准库打包类似的脚本已经有一段时间了,但是这个特性使得库作者能够为最终用户提供类似的体验。

详细用法请参见参考资料。

raw-dylib链接
在Windows平台上,Rust现在支持使用动态库中的函数,而不需要这些库在构建时可用,使用#[link]新的kind=”raw-dylib “选项。

这避免了要求用户安装这些库(对于交叉编译来说尤其困难),也避免了在crates中提供库的存根版本来进行链接。这简化了提供Windows库绑定的crates。

Rust还支持使用新的#[link_ordinal]属性,通过序号而不是命名的符号来绑定DLL提供的符号。

升级到musl 1.2
正如之前所宣布的,Rust 1.71将musl版本升级到1.2.3。大多数用户应该不会受此影响。

常量初始化线程局部
Rust 1.59.0稳定了标准库中的常量初始化线程局部支持,这使得代码生成更加优化。然而,直到现在,这个特性在发布说明和文档中都没有被提及。请注意,这一稳定化并不会使 const { …} 在其他上下文中是有效的表达式或语法;这是一个独立的、目前还不稳定的特性。

使用 std::cell::Cell;

thread_local!
pub static FOO:Cell<u32> = const { Cell::new(1) };
}

Stabilized APIs

现在,这些API在const上下文中是稳定的:

其他更改
查看 Rust、Cargo 和 Clippy 中的所有更改。

1.71.0的贡献者
许多人一起创建了Rust 1.71.0。没有你们,我们无法完成。感谢你们

转自 Announcing Rust 1.71.0 | Rust Blog (rust-lang.org)