在地下32米的机房,我摸到了Rust的真实分量

去年十二月的周二。 我跟着老周钻到10号线健德门站往下32米的备用信号机房。那地方常年恒温16度,裹着厚羽绒服都能感觉到冷风顺着脚踝往上爬,机柜的指示灯绿得发幽,像一排蹲在黑暗里盯着你的眼睛。 之前处理这类信号同步故障,我们都是调老工程师留了二十年的C代码,改个缓存大小,重启进程,半小时就能搞定。结果那天运维的小宇指了指屏幕,说这次不一样——核心同步模块是去年刚迁成Rust写的。 我当时第一反应:至于吗? 地铁信号系统,跑了二十年的C代码稳得一批,换什么Rust?

地下32米的编译报错

那天的报错不是内存溢出,不是进程崩溃,是一行红得扎眼的生命周期提示,小宇改了三版都过不了编译。老周凑过去,手指冻得发红,在屏幕上划了两下,说上次迁模块的时候漏了标隧道温度传感器回调函数的作用域——你想啊,那个传感器每200毫秒发一次数据,以前C代码里我们直接拿全局指针指过去,野指针就野指针吧,反正跑了十年没炸过,换Rust直接把你拦在编译阶段,连跑都不让你跑。 我当时突然就笑出了声。以前我们求的是“能跑就行”,现在倒好,编译器当你半个师父,你想写懒一点的代码,它直接把门关死。
地下地铁备用机房机柜指示灯实拍
地下地铁备用机房机柜指示灯实拍
那天我们蹲在机柜前面磨了四十分钟,终于把那行报错消了。编译通过的进度条走完的时候,小宇长出了一口气,说你知道吗,以前改C代码,最怕的就是你觉得改对了,结果跑出去三公里才发现指针指错了地方,把相邻的内存块冲了。那种悬着心的感觉,跟开车的时候刹车突然软了半脚似的。 我当然懂。 前年晚高峰,某站的信号进程因为野指针写了相邻内存块,把车载通信的队列冲了,导致三列车间隔压缩到不到两分钟,调度员在上面喊得嗓子都哑,我们在地下查了四个小时,才找到那行写漏了边界的memcpy。那种后背发凉的恐惧感,我到现在都记得——你不知道哪行代码哪天醒过来,就给你捅个天大的篓子。

那些被Rust拦住的“旧毛病”

之前我总觉得,Rust是硅谷互联网公司玩的花活,什么内存安全,零成本抽象,跟我们这种天天跟地铁、机房、掉漆的旧硬件打交道的人有啥关系? 直到那次迁完模块,连续三个月,以前每个月都要出个两三次的随机内存崩溃,一次都没出现过。 不是说C代码不好。是我们这些写了十几年C的老油条,太知道怎么在代码里“偷懒”了:全局变量随便用,指针随便转,边界判断能省就省,反正出了问题大不了重启。Rust最狠的地方根本不是语法有多酷,是它把你所有想偷懒的路,全给你堵在编译阶段了。
Rust编译器生命周期报错终端界面实拍
Rust编译器生命周期报错终端界面实拍
去年夏天我们招了个刚毕业的小孩,之前在学校学了四年Java,第一次接触Rust的时候,坐在工位上哭丧个脸,说写了一下午,代码一行没跑起来,编译器抛了二十多个报错,全是关于所有权、借用的。老周当时拍他肩膀说,你现在跟编译器磨的每一分钟,以后在晚高峰的机房里,都能少熬三个大夜。 那小孩一开始还不信。直到上个月,他写的隧道通风系统联动模块,上线之后连续跑了四十天,连个warning都没出。他自己在朋友圈发了个截图,配文“以前写Java是找bug找到头秃,现在写Rust是编译器提前把bug掐死在摇篮里”。 我刷到的时候给他点了个赞。

不是取代,是给旧系统留个靠谱的后路

说实话,我到现在还是觉得,写个简单的日志处理脚本,用Python比Rust爽一百倍,根本没必要啥都上Rust。 网上好多人吵,说Rust是程序员的新宗教,学不会的就是落后,还有人说Rust根本不实用,写个简单功能都要磨半天。我每次看到这些争论都觉得有点没意思。 我们从来没想过要把所有旧代码全换成Rust。那些跑在边缘的、非核心的模块,用C写就挺好,用Python写也挺好,没人会闲到去给跑了十几年的日志收集脚本做重构。但是那些跑在关键位置的、一旦出问题就要关乎几百万人出行安全的模块,你真的没法靠“写代码的人足够细心”来兜底。 我见过太多在行业里摸爬滚打了十几年的老工程师,敲代码的手指上带着常年握鼠标磨出来的茧子,最后因为赶项目进度漏了一个边界判断,导致整个系统宕机,在地下机房蹲了整整一整夜排查原因,最后把责任全揽在自己身上。 Rust不是来当救世主的。它是给这些在地下跑了十几年的老系统,搭了个新的脚手架——你不用把所有的墙都拆了重盖,只要把最容易塌的那几块梁,换成Rust写的,整个系统就能再稳稳跑二十年。 上个月我又去那个32米的机房。冬天的冷风还是顺着脚踝往上吹,机柜的指示灯还是绿得发幽,那个刚毕业的小孩坐在小凳子上,盯着屏幕写新的模块,通风管的嗡嗡声混着他敲键盘的声音。编译通过的那一瞬间,他“嗷”了一声,吓得旁边的老周手里的保温杯都晃了,枸杞水洒了半杯在裤子上。 我们都笑。老周骂骂咧咧地掏纸巾,说这破编译器,比当年我们带徒弟的时候管得还宽。 我靠在机柜边上,看着屏幕上滚过的日志,突然觉得有点奇妙。 这东西从来不是什么高高在上的技术神话。它就是在你看不见的地下机房里,帮你拦住那些可能闯祸的野指针,帮你少熬几个通宵,帮你让下班的人早点坐上回家的地铁。 最近总有人问我,Rust到底好在哪? 我每次都给他们讲那个地下32米的机房,讲冻得发红的手指,讲洒在裤子上的枸杞水,讲编译通过时那声没憋住的“嗷”。 技术哪有什么天生的高低啊。 能让你踏实下班的,就是好东西。

作者|大讲堂

排版|大讲堂

审核|满满

免责声明:市场有风险,选择需谨慎!此文仅供参考,不作买卖依据。如有侵权请联系删除。
文章名称:在地下32米的机房,我摸到了Rust的真实分量
文章链接:https://www.lfdjt.com/info_23_25675.html