【Rust日报】2023-12-26 逐步废弃并最终移除 Rust 中 static mut 语法的提案

2023-12-30 14:34:56 浏览数 (3)

逐步废弃并最终移除 Rust 中 static mut 语法的提案

在 Rust Internals 论坛上,有一个关于逐步废弃并最终移除 Rust 中 static mut 语法的提案(Pre—RFC),提议在 2024 年 Rust 版本中开始废弃 static mut 的使用,并在 2027 年版本中完全移除这个语法。(这个提案不涉及 &'static mut)。

主要的动机是:

  1. 现有的 static mut 特性难以正确使用(很容易获得别名的独占引用或由于对 static mut 声明的变量进行非同步访问而遇到未定义行为(UB)),并且由于内部可变性生态系统的扩展,static mut 正变得多余。
  2. static mut 旨在提供可以在初始值设置后修改的静态变量。然而,使用 static mut 可能会导致问题,例如违反 Rust 的借用规则,产生两个对同一数据的独占引用,或在多线程中导致数据竞争和未定义行为。

作者建议使用 std::cell::SyncUnsafeCell<T> 替代 static mut,以提高代码的安全性和可审计性。SyncUnsafeCell 虽然仍然是不安全的,但它使得某些原本在 static mut 上不安全的操作(如获取静态的原始指针)变得安全,同时 2024 年 Rust 版本中通过警告(或默认拒绝的 lint)提示 static mut 的废弃,并在 2027 年版本中将其作为硬语法错误处理。这样可以使代码迁移到更安全的版本,并更容易审计潜在的错误。

同时,github 上也有两个关于 static mut 的 issue:

  1. Disallow references to static mut [Edition Idea]
  2. Consider deprecation of UB-happy static mut

社区成员对这个提案提出了不同的观点,感兴趣的可以参与讨论。

pre-rfc 讨论链接 https://internals.rust-lang.org/t/pre-rfc-deprecate-then-remove-static-mut/20072

Memflow 发布 0.2 版本

Memflow 是一个用于实时物理内存分析的框架,它允许对运行中的系统及其快照进行内存检查,具有如下特点:

  1. 模块化和灵活性:Memflow 采用模块化方法,使其能够轻松支持几乎所有可用直接内存访问(Direct Memory Access, DMA)的场景。
  2. 高吞吐:Memflow 通过高吞吐量优化的虚拟地址转换功能,实现了大规模的快速内存传输

总的来说,Memflow 是一个健壮、高效且灵活的机器内省解决方案,适用于各种内存分析和调试场景。

近日,Memflow 0.2 引入了操作系统层的抽象,大多数 memflow-win32。这使得用户可以以统一的方式与操作系统交互。操作系统现在也被作为插件处理,类似于 0.1 版本中的连接器(Connector)。目前支持的后端包括 memflow-win32(用于分析 Windows)、memflow-native(用于与正在运行的操作系统进行系统调用交互)和正在开发中的 memflow-linux。

github仓库 https://github.com/memflow/memflow

发布日志 https://memflow.io/blog/memflow-0.2.0/

你为什么需要学习 Rust

来自 Reddit 讨论,大家的关注点主要为:

  1. 类型系统的重要性:有用户表示,由于自己编程时经常出错,所以需要一个更强大的类型系统来帮助自己成为更好的程序员。Rust 的类型系统被认为是一个很好的解决方案。
  2. 从其他语言转向 Rust:一些用户从长期使用 C/Obj-C/C 等语言转向 Rust,主要是因为 Rust 在语言特性上的优势,特别是在编写多线程代码时。Rust 的借用检查器、枚举、特征(traits)和函数式编程风格等特性受到了用户的青睐。
  3. Rust 社区的吸引力:Rust 社区的活跃和健康是吸引用户学习这门语言的另一个重要因素。一些用户提到,他们因为Rust社区的积极氛围而开始接触并学习 Rust。
  4. 个人兴趣和职业需求:有用户因为个人兴趣或职业需求而学习 Rust。例如,有人因为对函数式语言和底层编程的兴趣而选择 Rust,也有人因为在工作中需要处理大量遗留的 C 代码而转向 Rust。
  5. 对Rust特性的喜爱:一些用户提到,他们喜欢Rust的特性,如枚举、特征和借用检查器等。这些特性使得编写代码更加愉快和高效。
  6. 从其他语言的不满转向 Rust:还有用户提到,他们因为对其他编程语言(如Python)在依赖管理等方面的不满意而转向Rust。

原帖链接 https://www.reddit.com/r/rust/comments/18qwcqw/why_did_you_learn_or_start_learning_rust

-- From 日报小组 RustPlumber

社区学习交流平台订阅:

  • Rust.cc 论坛: 支持 rss

0 人点赞