逐步废弃并最终移除 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:
社区成员对这个提案提出了不同的观点,感兴趣的可以参与讨论。
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。
你为什么需要学习 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。
-- From 日报小组 RustPlumber
社区学习交流平台订阅:
评论区
写评论rust快点进化吧~ 那本rust编程之道还没看完~
那ffi要怎么办。。。