网易首页 > 网易号 > 正文 申请入驻

我翻了三年代码库,Rust没拦住这些bug

0
分享至

2021年,一位同事告诉我:Rust是"能在bug诞生前就消灭它的语言"。三年后,我在Hacker News看到一个648赞的热帖,标题叫《Rust抓不住的bug》。我打开自己的三个生产项目——一个纯Rust,两个依赖Rust工具链——逐行核对。结果找到了他们保证不会存在的那些bug。

一个编译通过但逻辑崩塌的例子


我的配置处理工具里有一段滑动窗口代码。Rust编译器毫无怨言地通过了它:没有越界访问,没有空指针,内存安全满分。但业务逻辑是错的——窗口边界条件处理与需求文档不符。

编译器检查的是"内存是否安全",不是"代码是否正确"。这个区别,我的代码库用具体数字说话。

为什么内存安全不等于程序正确

原帖把bug分为四类。我在自己的代码里找到了对应实例,每一类都指向同一个盲区:Rust的承诺有明确边界,但社区讨论时常模糊这个边界。

第一类是算术溢出。Rust在debug模式会panic,release模式默认回绕(wrap around)。我的图像处理依赖库里,一个坐标计算在release构建中静默产生错误结果。没有崩溃,没有日志,只有错误的像素位置。

第二类是并发逻辑错误。Rust防止数据竞争,但不防止竞态条件。我的异步任务调度代码里,两个任务通过消息通道协调,编译器确认了所有权安全,但时序逻辑导致偶发的状态不一致。测试覆盖率90%没抓到,生产环境每周出现两三次。

第三类是业务逻辑错误。前面提到的滑动窗口属于此类。最隐蔽的是第四类:与unsafe代码或FFI边界相关的假设违反。我的项目依赖的某个Rust库封装了C代码,文档承诺"输入已校验",但我的调用方没校验。编译器无法跨越这个抽象边界。

TypeScript给我的同一课

去年测试TypeScript 7 beta时,我花了最多时间调试的不是类型错误,而是"类型正确但语义错误"的代码。编译器热情接受的代码,实际行为与意图相反。

Rust和TypeScript在这个模式上惊人相似:它们消除了特定类别的错误,但可能制造一种虚假安全感——让人误以为"编译通过=正确实现"。我的代码审计显示,生产环境中耗时最长的bug,70%属于"编译器无法看见"的范畴。

社区话语与实际体验的落差

我对Rust社区有真正的尊重。borrow checker是工程杰作,生命周期系统解决了C++几十年的痛点。但"消除bug"的营销话术需要拆解:它消除的是内存安全bug,不是逻辑bug,不是并发设计bug,不是业务规则bug。

我的三个项目代码量合计约4.2万行Rust。审计发现的12个有效bug中,3个是内存相关(确实被Rust阻止),9个是逻辑/设计/假设类(Rust未介入)。这个比例与Hacker News原帖的社区反馈基本吻合。

一位维护者在我的issue下回复:「Rust保证的是当你说'我要访问这块内存'时,编译器确认你真的可以。它不保证你说的是对的。」

这对技术选型意味着什么

我不后悔用Rust。内存安全bug的修复成本通常高于逻辑bug,Rust在这个维度兑现了承诺。但需要校准预期:如果团队的问题是"代码经常崩溃",Rust是解药;如果问题是"业务逻辑复杂容易出错",需要其他工具——更完善的测试、形式化验证、或更严格的代码审查。

我的配置处理工具现在增加了property-based testing。图像处理依赖库启用了overflow-checks=true强制panic。异步调度模块重写了状态机,用状态类型替代布尔标志。这些改进与Rust无关,与"承认编译器的边界"有关。

那个2021年的同事现在也在用Rust。上周聊天时他说,当年那句话应该加上后半句:"它消灭一类bug,让你能专注于另一类。"

三年后的我发现,后一类bug的数量和破坏力,被低估了。

你的代码库里,编译器看不见的bug占比多少?

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
7岁女孩独自走6公里上学,只有小狗相伴引发关注。

7岁女孩独自走6公里上学,只有小狗相伴引发关注。

一丝不苟的法律人
2026-04-27 14:58:35
你以为麻豆传媒是卖片的,其实它是卖人的

你以为麻豆传媒是卖片的,其实它是卖人的

创始人笔记
2026-04-23 21:44:50
扎心了!女儿频繁用生殖器官类词汇辱骂父母,一家长哭诉引发热议

扎心了!女儿频繁用生殖器官类词汇辱骂父母,一家长哭诉引发热议

火山詩话
2026-04-30 07:03:35
山西农妇惨死田间,邻居不吃不喝躲藏6天,被抓后笑谈行凶过程

山西农妇惨死田间,邻居不吃不喝躲藏6天,被抓后笑谈行凶过程

莫地方
2026-04-28 01:10:03
“二女儿长大得多恨你们!”家长否认重男轻女,名字却暴露了私心

“二女儿长大得多恨你们!”家长否认重男轻女,名字却暴露了私心

妍妍教育日记
2026-04-28 16:14:08
一吃就困的“天然安眠药”!睡前吃它,躺下秒睡到天亮!

一吃就困的“天然安眠药”!睡前吃它,躺下秒睡到天亮!

华庭讲美食
2026-05-01 18:39:45
离婚2次才活明白:男人图你年轻最多3年,图你顾家顶多7年,真正能让他对你死心塌地一辈子的,其实是这两样

离婚2次才活明白:男人图你年轻最多3年,图你顾家顶多7年,真正能让他对你死心塌地一辈子的,其实是这两样

心理观察局
2026-05-01 17:47:08
居民储蓄出现“断崖式”下降,银行慌了!老百姓的钱都去哪里了?

居民储蓄出现“断崖式”下降,银行慌了!老百姓的钱都去哪里了?

平说财经
2026-05-02 08:13:22
红场阅兵凉了:去年27国捧,今年只剩4家“自己人”

红场阅兵凉了:去年27国捧,今年只剩4家“自己人”

斯德哥尔摩的帕金森
2026-05-01 12:29:58
国际油价,快速下跌

国际油价,快速下跌

第一财经资讯
2026-05-01 22:19:51
福州大学一学生称自己5年前的研究生毕业动画作品被合肥工业大学三名学生盗用,且获国奖;合肥工业大学:已了解相关情况,正在核实

福州大学一学生称自己5年前的研究生毕业动画作品被合肥工业大学三名学生盗用,且获国奖;合肥工业大学:已了解相关情况,正在核实

三湘都市报
2026-04-30 16:03:54
日本:射程之内!

日本:射程之内!

新民周刊
2026-05-01 09:17:00
个人收款被查了!2026年个人收款高于这个数,要小心!

个人收款被查了!2026年个人收款高于这个数,要小心!

新浪财经
2026-04-21 22:04:32
枪手终于开口,刺杀目标不是特朗普?疑问出现,高市早苗火速发声

枪手终于开口,刺杀目标不是特朗普?疑问出现,高市早苗火速发声

贵州霖霖
2026-05-02 08:56:12
“崩老头”现象:00后如何收割中年男性

“崩老头”现象:00后如何收割中年男性

流苏晚晴
2026-04-25 16:31:35
历史总是惊人相似:清朝试图和平统一台湾,郑经却得寸进尺要独立

历史总是惊人相似:清朝试图和平统一台湾,郑经却得寸进尺要独立

历史龙元阁
2026-04-25 15:10:07
辱骂裁判染红!曝45岁郑智难逃追罚,按规则至少禁赛5场+罚款5万

辱骂裁判染红!曝45岁郑智难逃追罚,按规则至少禁赛5场+罚款5万

我爱英超
2026-05-02 09:36:46
重大突破!刚刚上海地铁最新通知,大批人身价要涨

重大突破!刚刚上海地铁最新通知,大批人身价要涨

新浪财经
2026-05-02 11:10:34
炎亚纶凌晨发长文清算16年恩怨:决裂汪东城、官宣结婚告别飞轮海

炎亚纶凌晨发长文清算16年恩怨:决裂汪东城、官宣结婚告别飞轮海

橙星文娱
2026-04-30 09:58:57
安妮·海瑟薇25美元开衫:明星穿搭的平民解法

安妮·海瑟薇25美元开衫:明星穿搭的平民解法

追星雷达站
2026-05-01 08:13:33
2026-05-02 11:59:00
我是一个养虾人
我是一个养虾人
有态度网友ytd
2032文章数 21关注度
往期回顾 全部

科技要闻

AI热潮耗尽库存,Mac Mini起售调高200美元

头条要闻

德国学者:欧盟现在必须"拿出点骨气" 挺身对抗特朗普

头条要闻

德国学者:欧盟现在必须"拿出点骨气" 挺身对抗特朗普

体育要闻

坎宁安大逆转:像看到了2006-08的勒布朗

娱乐要闻

白百何罕晒大儿子 18岁元宝越来越帅

财经要闻

雷军很努力 小米还是跌破了30港元大关

汽车要闻

新纪录!零跑汽车4月交付达71387台

态度原创

本地
旅游
家居
数码
公开课

本地新闻

用青花瓷的方式,打开西溪湿地

旅游要闻

看北京|北海万佛楼油菜花盛放,古建花海绘春景

家居要闻

灵动实用 生活艺术场

数码要闻

英特尔为酷睿Ultra 9 386H解锁LPDDR5X-9600支持,雷蛇导入

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版