导语
长期以来,操作系统、数据库等核心基础软件的内核开发几乎被C语言垄断,内存安全、并发安全问题一直是这类软件挥之不去的顽疾。Rust诞生十余年来,凭借内存安全、零成本抽象的特性一直在喊出“替代C”的口号,但始终缺乏核心场景的硬核验证。最近pgrust项目的里程碑进展,终于给这一争论给出了实质性的答案。
事实综述
根据pgrust项目官方仓库公布的信息,目前该项目已经100%通过了Postgres 18.3版本的全部回归测试,覆盖超过46000个标准查询用例,输出结果与原版Postgres完全一致。更重要的是,pgrust实现了与原版Postgres的磁盘级兼容,可以直接读取现有Postgres 18.3的数据目录启动,用户不需要做数据迁移就能切换试用。
pgrust的核心目标是在保留Postgres全部行为兼容性的前提下,用Rust重构内核,降低内核修改的门槛,用Rust+AI辅助编程的模式探索原版Postgres长期难以落地的内核级改进。——pgrust官方说明
目前pgrust还处于早期阶段,尚未生产就绪,也没有完成针对性的性能优化,原版Postgres的扩展生态包括PL/Python、PL/Perl等过程语言扩展大多还不兼容,只有少量内置的contrib模块完成了移植。项目后续的路线图包含了多个原版Postgres社区讨论多年却始终没能落地的特性:比如多线程内核架构、内置连接池、更好的JSON密集型负载支持、无vacuum的存储设计、坏查询和AI生成SQL的运行时防护、减少执行计划突然变坏的概率等。用户现在已经可以通过WebAssembly demo或者Docker镜像体验pgrust,项目代码已经在GitHub开源,采用AGPL-3.0协议。
解读与评价
这一里程碑的意义远超一个普通开源项目的版本更新:它第一次实打实证明了,Rust完全可以胜任核心数据库这类对性能、稳定性、兼容性要求极高的基础软件开发,之前行业普遍担心的“Rust性能不如C”、“Rust难以实现复杂底层逻辑”的质疑不攻自破。
对于中国开发者而言,这一进展的价值尤其突出:首先,国内信创领域的大量数据库产品都是基于Postgres二次开发,原版C语言实现的Postgres内核每年都会曝出多个内存安全漏洞,排查和修复成本极高,基于Rust版本的Postgres二次开发,可以从语言层面消除90%以上的内存安全、野指针、并发访问冲突等问题,大大降低信创产品的安全风险和后期维护成本。其次,pgrust的开发模式证明了AI辅助编程可以大幅加快基础软件重写的速度,该项目从2023年公布时仅67%的测试通过率,到现在100%通过仅用了不到两年时间,远快于行业之前预估的5-10年的重写周期,国内厂商完全可以跟进这一技术路径,快速推出自主可控的下一代兼容PG的数据库产品。
当然也要注意现阶段的风险:pgrust还没有做性能优化,实际生产环境下的吞吐量、延迟表现还未可知,原版PG的海量扩展生态也还不支持,加上AGPL协议的限制,商用的话需要注意合规问题,短期内还无法直接替换生产环境的Postgres实例。