逐步废弃并最终移除 Rust 中 static mut 语法的提案
在 Rust Internals 论坛上,有一个关于逐步废弃并最终移除 Rust 中 static mut 语法的提案(Pre—RFC),提议在 2024 年 Rust 版本中开始废弃 static mut 的使用,并在 2027 年版本中完全移除这个语法。(这个提案不涉及 &'static mut)。
主要的动机是:
- 现有的 static mut 特性难以正确使用(很容易获得别名的独占引用或由于对 static mut 声明的变量进行非同步访问而遇到未定义行为(UB)),并且由于内部可变性生态系统的扩展,static mut 正变得多余。
- static mut 旨在提供可以在初始值设置后修改的静态变量。然而,使用 static mut 可能会导致问题,例如违反 Rust 的借用规则,产生两个对同一数据的独占引用,或在多线程中导致数据竞争和未定义行为。
作者建议使用 std::cell::SyncUnsafeCell<T>
替代 static mut,以提高代码的安全性和可审计性。SyncUnsafeCell 虽然仍然是不安全的,但它使得某些原本在 static mut 上不安全的操作(如获取静态的原始指针)变得安全,同时 2024 年 Rust 版本中通过警告(或默认拒绝的 lint)提示 static mut 的废弃,并在 2027 年版本中将其作为硬语法错误处理。这样可以使代码迁移到更安全的版本,并更容易审计潜在的错误。
同时,github 上也有两个关于 static mut 的 issue:
- Disallow references to static mut [Edition Idea]
- 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 是一个用于实时物理内存分析的框架,它允许对运行中的系统及其快照进行内存检查,具有如下特点:
- 模块化和灵活性:Memflow 采用模块化方法,使其能够轻松支持几乎所有可用直接内存访问(Direct Memory Access, DMA)的场景。
- 高吞吐: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 讨论,大家的关注点主要为:
- 类型系统的重要性:有用户表示,由于自己编程时经常出错,所以需要一个更强大的类型系统来帮助自己成为更好的程序员。Rust 的类型系统被认为是一个很好的解决方案。
- 从其他语言转向 Rust:一些用户从长期使用 C/Obj-C/C 等语言转向 Rust,主要是因为 Rust 在语言特性上的优势,特别是在编写多线程代码时。Rust 的借用检查器、枚举、特征(traits)和函数式编程风格等特性受到了用户的青睐。
- Rust 社区的吸引力:Rust 社区的活跃和健康是吸引用户学习这门语言的另一个重要因素。一些用户提到,他们因为Rust社区的积极氛围而开始接触并学习 Rust。
- 个人兴趣和职业需求:有用户因为个人兴趣或职业需求而学习 Rust。例如,有人因为对函数式语言和底层编程的兴趣而选择 Rust,也有人因为在工作中需要处理大量遗留的 C 代码而转向 Rust。
- 对Rust特性的喜爱:一些用户提到,他们喜欢Rust的特性,如枚举、特征和借用检查器等。这些特性使得编写代码更加愉快和高效。
- 从其他语言的不满转向 Rust:还有用户提到,他们因为对其他编程语言(如Python)在依赖管理等方面的不满意而转向Rust。
原帖链接 https://www.reddit.com/r/rust/comments/18qwcqw/why_did_you_learn_or_start_learning_rust
-- From 日报小组 RustPlumber
社区学习交流平台订阅:
- Rust.cc 论坛: 支持 rss