# 为什么 memscope-rs 存在

## Rust 值得拥有诚实的内存工具。

***

亲爱的 Rust 开发者，

如果你在读这封信，说明你和我一样关心内存安全。让我分享一下 memscope-rs 为什么存在——不是宣传版本，是真实版本。

***

## 你今天能得到什么

在讲故事之前，先告诉你这个工具**现在**能为你做什么：

- **几分钟内找到内存泄漏**——以 <5% 开销追踪每一次分配
- **检测 Arc/Rc 循环引用**——真实的克隆追踪，不是猜测
- **按异步任务归属内存**——看哪个任务消耗了什么
- **可视化所有权图**——交互式 HTML 仪表板

上周有用户用 memscope-rs 在 15 分钟内定位到一个 Arc 循环引用，而这个问题他们用传统工具找了两天。

***

## 不得不接受的残酷真相

我做这个工具是因为现有方案不理解 Rust。Valgrind 不知道 `Arc<Rc<Box<...>>>` 意味着什么。AddressSanitizer 给你的调用栈总是指向死胡同。

但工作了几个月后，我撞墙了。

我花了几周时间阅读 Rust 编译器源码——`rustc_middle`、`rustc_borrowck`、`rustc_mir_build`。我追踪了从 HIR 到 THIR 到 MIR 到 LLVM IR 的完整路径。我把所有发现记录在 [Rust 所有权语义分析](../zh/rust-ownership-semantics-analysis.md) 里——735 行解释为什么 move/borrow 语义在运行时之前就消失了。

残酷的真相：

```
源码 → AST → HIR → THIR → MIR → LLVM IR → 机器码
                            ↑
                  move/borrow 在这里存在
                            ↓
                       在这里消失
```

**我理解 Rust 在运行时看不见什么，因此我只追踪真实可见的数据，并把不可见部分做成可信推断。**

这不是每个工具作者能做到的认知深度。这是 memscope-rs 的核心差异。

***

## 承诺

> **我永远不会对用户撒谎。**

如果数据是真实的，我会说是真实的。如果数据是推测的，我会标注置信度。不假装，不躲在技术术语后面。

每个推测字段都带有：

```json
{
  "borrow_info": {
    "immutable_borrows": 5,
    "_source": "inferred",
    "_confidence": "low"
  }
}
```

***

## 理念

**想法大胆。** 我梦想做一个能在运行时理解 Rust 所有权模型的工具。

**小心实现。** 每个功能都在真实约束下实现。我兑现我承诺的。

**功能狂野。** Arc/Rc 克隆检测。任务内存归属。循环引用检测。所有权图可视化。

**链路收敛。** <5% 开销。21-40ns 延迟。删掉 75% 代码保持精简。

***

## 这不是一个心血来潮的项目

memscope-rs 是以下的结果：

- **数月开发**——从架构到实现
- **深入研究编译器**——理解限制
- **诚实的自我反思**——承认约束
- **持续改进**——v0.2.0、v0.2.1、v0.2.2、v0.2.3...

你可能看到早期版本被标注为"研究项目"。那是当时我诚实的评估——我不确定这个方法是否可行。但经过大量测试和真实使用后，我可以自信地说：**这个工具已经生产可用**。核心功能正常工作。性能稳定。数据真实。

***

## 前方的路

我还没完成。还有工作要做：

- 更好的异步任务追踪
- 更准确的所有权推测
- 更好的仪表板可视化
- 与流行框架的集成

***

## 加入我们

如果你相信工具应该诚实、快速、对 Rust 原生友好——欢迎。

这不只是一个工具。这是对 Rust 社区的承诺。

给项目点个 star。开一个 issue。分享你的故事。

让我们一起构建更好的内存工具。

***

负责人

TimWood

***

> "最好的工具不是承诺一切的工具，而是兑现承诺的工具。"

