PostgreSQL码农集散地

感觉基础软件被Rust包圆了,今天聊聊这咋会事

不知道你有没有这个感觉,现在很多开源软件特别是基础软件,只要是新开发的,基本都是Rust搞的。这是为啥?今天咱们聊聊。我的第一反应是AI coding助长了它,但凭什么只助长Rust呢?
Rust在基础软件里确实在攻城略地,但这不是“AI coding偏爱Rust”,恰恰相反——AI coding实际上更偏爱Python、TypeScript这些训练数据管够的语言。Rust的崛起是另一条逻辑:基础软件到了“安全债还不起”的临界点,而AI coding恰好在这个节点上,把Rust编译器从一个“劝退新人的门槛”变成了一个“自动纠错机器”。

我先把这个逻辑链拆开,一环一环推。

先说开头感觉对的那一半。基础软件这波Rust化,是真事,不是感觉。微软和Google自己统计过,他们代码库里大约七成的高危安全漏洞,根子都在内存安全问题上——缓冲区溢出、释放后使用、悬垂指针,全是C/C++几十年的老毛病。以前工程规模不大,靠程序员守纪律、靠代码审查能兜住。现在云原生基础设施动辄成千上万个关键实例,靠人肉纪律兜内存漏洞,搞不过来了。Rust的所有权模型把这件事在编译期就锁死了:要么编译不过,要么过了就是内存安全的,没有中间地带。这个价值主张对数据库、网络代理、序列化框架这些底层组件来说,几乎是不可拒绝的好处。字节和阿里把核心组件从C/C++往Rust迁,算的就是三五年后比继续补C++漏洞更划算。

然后聊聊感觉偏掉的地方。我前面说“AI coding助长了Rust”,这个因果关系得反过来。AI coding的本能是往训练数据多的地方走。TIOBE的CEO说:AI模型是被训练来帮流行语言的工程师的,因为数据够多;冷门语言数据不够,AI帮不上忙,这本身就成了不用它的理由。Rust的训练数据量跟Python、JavaScript比,差着量级。按这个逻辑,AI coding应该打压Rust才对,怎么会助长它?

关键转折点在这里:Rust的“难”,对人是门槛,对AI agent不是。

人写Rust痛苦在哪?借用检查器跟你较劲,生命周期标注写得头皮发麻,编译器报错密密麻麻。一个新手吭哧吭哧改半天,编译还是不过,挫败感拉满。但你把同样的场景换成一个AI agent在跑自动化循环——它生成代码,编译器拒绝,它读报错信息,改,再编译,再读报错,再改。Rust编译器输出的错误信息质量极高,定位精确,建议具体,这等于给AI提供了一个实时、免费、高精度的自动评分器。有项目就是这么干的,RustCoder让AI agent生成Rust代码后自动编译,拿编译器的详细报错当反馈信号,自己迭代修到过为止,人在旁边不用插手。

这背后的逻辑是这样的:AI生成代码最大的问题不是“写不出来”,是“写出来看着像对的,跑起来是错的”。Python和JavaScript这种动态语言,AI给你一段代码,语法没毛病,逻辑悄悄歪了,等到运行时才炸,而且炸得不明不白。TypeScript比JavaScript好一点,因为静态类型能拦住一部分错误,GitHub的数据也显示AI时代强类型语言在涨。但Rust把这件事推到了极致:它的编译器不光管类型,还管所有权、管并发安全、管生命周期。AI生成的Rust代码如果过了编译,它大概率就是能稳定跑的,而且是在内存安全的意义上稳定。对基础软件来说,这个“过编译即安全”的属性,恰好把AI coding最大的短板给补上了。

再往深一层。基础软件跟上层应用有一个根本区别:上层应用迭代快,用户需求一天一变,开发效率优先,运行时出点小毛病热修一下就完了;基础软件迭代慢,一套数据库内核、一个网络代理,上线之后是要“永远在线”的,bug的代价不是重启一下,是事故。所以基础软件选语言,鲁棒性的权重远高于开发效率。Rust加AI coding这个组合,恰好打在了这个权重上:AI承担了写Rust初稿的“人力成本”,Rust编译器承担了守底线的“质量成本”,最终导致了原来“Rust开发效率太低”那个老短板被削掉了一大截。

但话说回来,你不能因此就觉得Rust要通吃一切。Rust去争上层应用那块市场基本没戏,Java、Go、Python的生态成熟度、人才储备、框架积累,Rust短期内追不上。AI coding也一样,它最擅长的还是数据量大的主流语言,你在Python里让AI帮你写个Web服务,它闭着眼都能给你糊出来。Rust的战场不在那儿,它守的是C和C++让出来的那块地盘:操作系统内核、数据库引擎、网络数据面、嵌入式。Linux内核2022年将Rust作为第二官方语言,微软在拿Rust重写Windows核心组件,这些都不是AI coding推的,是安全需求倒逼的。

所以把整条逻辑串起来:基础软件的内存安全债到了还不起的临界点,这是根因。Rust是当下唯一能同时给到C级性能加编译期内存安全保证的成熟选择,这是供给端。AI coding没有创造这个需求,但它做了一件很关键的事——把Rust学习陡峭这个最劝退人的环节,也就是“跟编译器搏斗”的成本,从由人承担转移给了机器。人不用再吭哧吭哧手搓代码,AI来搓,编译器去当裁判。于是Rust的采用曲线在基础软件这个特定赛道上,被AI coding加速了。