别搞“小而美”了!Rust 开发者请愿:求求标准库学学 Go 吧

本文永久链接 – https://tonybai.com/2026/04/09/stop-being-small-and-beautiful-rust-petition-to-learn-from-go

大家好,我是Tony Bai。

如果你之前经常听 Go 社区最火的播客 GoTime(很遗憾,该播客2024年末因平台原因停播了),你一定会熟悉每期节目最后的那个经典环节——“Unpopular Opinion”(非主流观点)。在这个环节,嘉宾们会分享一些看似离经叛道、却往往一针见血的“暴论”。

但就在前几天,这个流行于 Go 社区的“梗”,却被隔壁的 Rust 社区“偷”了过去,并掀起了一场史诗级的“路线之争”。

一位 Rust 开发者,在 r/rust 论坛上发了一篇帖子,标题就叫:《Unpopular opinion: Rust should have a larger standard library》(非主流观点:Rust 应该有一个更大的标准库)。

他在这篇帖子中发出了灵魂拷问:

“我不想为了写一个程序,被迫去拉几百个我根本没时间、也没人去审计的第三方依赖包。看看隔壁的 Go 是怎么做标准库的,你几乎可以不依赖任何三方包就构建出复杂的系统!”

这篇帖子瞬间引爆了 Rust 社区。短短一天,帖子收获了近 700 的高赞和近 300 条激烈辩论。

这看起来像是一场简单的“库多库少”之争,但本质上,它背后是 Rust 这门以“零成本抽象、极致安全”著称的语言,在面对日益猖獗的供应链安全威胁和 Go 语言“开箱即用”的降维打击时,所爆发的一场深刻的身份危机与哲学反思。

“小而美”的代价:悬在每个 Rust 项目头顶的达摩克利斯之剑

长期以来,Rust 社区一直为自己“小核心、强生态”的模式感到自豪。Rust 的标准库(std)极其精简,只提供最基础、最核心的功能。任何稍微高级一点的需求,比如随机数生成、异步运行时、序列化,官方都鼓励你去 crates.io 上找社区“钦定”的“明星库”(Blessed Crates)。

这套模式在早期极大地促进了生态的繁荣。但随着 npm left-pad 事件和各种开源投毒攻击的阴影笼罩全球,这套模式的代价也变得越来越难以承受。

原帖作者一针见血地指出了所有人的噩梦:

“是的,你可以采取各种缓解措施。但等你发现某个藏在你依赖树第三层的、不起眼的包被植入了恶意软件时,你的服务器密钥可能早就被偷光了!”

评论区里的一位开发者用一句话概括了所有人的痛点:

“我完全同意。有时候 std 里就是缺了那么一点至关重要的东西。我能理解这背后的原因,但为了生成一个随机数就要去装一个第三方包,这实在有点小题大做了。”

这正是 Rust 开发者面临的尴尬:当你只是想生成一个 UUID,或者发起一个 HTTP 请求时,你被迫要对 rand、reqwest、tokio 这些由社区个人或小团体维护的库,付出与 Rust 官方核心团队同等级别的“信任”。

而这种信任,正在变得越来越昂贵和危险。

隔壁的诱惑:Go 语言的“大一统”模式

在这场大讨论中,一个名字被反复提及,它就是 Go 语言。

Go 从诞生之初,就选择了与 Rust 截然相反的“自带电池(Batteries Included)”哲学。

  • 你想做 Web 开发?net/http 原生支持,性能强大到可以直接裸奔在生产环境。
  • 你想做 JSON/XML 解析?encoding/json(以及实验性的encoding/json/v2)、encoding/xml 是标配。
  • 你想做并发?goroutine 和 channel 是语言级原生特性。
  • 你想生成随机数?math/rand、crypto/rand 随便用。

评论区里,一位 Rust 开发者的对比极其扎心:

“把恶意代码偷偷塞进一个(流行的)Crate 的第四层依赖里,比把它塞进 Rust 的 std 里要容易得多。”

Go 语言通过一个庞大、稳定、由官方核心团队直接维护的标准库,为开发者提供了一道坚固的“安全护城河”。你可以在不引入任何一个第三方依赖的情况下,构建出一个功能极其完备、性能强大的高并发网络服务。

这种“开箱即用”的安全感和便利性,对于那些深受供应链安全审计折磨的企业开发者来说,是致命的诱惑。

社区的挣扎:当“保守”成为“瓶颈”

面对社区的“呐喊”,Rust 核心团队的成员和社区大佬们也纷纷下场,给出了极其理性和深刻的解释。他们的回复,揭示了 Rust 在标准库扩张上,面临的“三重枷锁”。

枷锁一:向后兼容性的“诅咒”

一位核心成员引用了 Python 社区的一句名言:

“标准库,是模块最终的坟场(The standard library is where modules go to die)。”

一旦一个 API 进入了 std,它就必须背上永不破坏向后兼容的沉重承诺。哪怕 10 年后发现这个设计有缺陷,也只能眼睁睁地看着它腐烂,或者推出一个 urllib2、urllib3 这样极其丑陋的补丁。

Rust 团队宁愿让这些库在社区里自由进化、大浪淘沙,等到它们的设计真正成熟、稳定到可以“永恒”时,再考虑纳入 std。比如 once_cell 和最新的 rand(目前在 nightly 版本中)。

枷锁二:无休止的“维护地狱”

另外一名核心成员指出,将一个库纳入 std,意味着它的维护成本将全部转移到人数本就捉襟见肘的官方维护者身上。而在社区,每个 Crate 都有自己专门的维护者。这是两种完全不同的成本模型。

枷锁三:设计的“过早僵化”

最典型的例子就是异步。原帖作者提议:“Rust 能不能偷一下 Zig 的 IO 思想,这样我们就不需要在 Tokio 和 non-Tokio 生态之间分裂了?”

一位社区大佬立刻反驳:Zig 没有 Rust 的 Send/Sync 标记,两者的异步模型有本质区别。Rust 的异步生态之所以看起来“分裂”,恰恰是语言给了开发者在不同场景下做最优选择的自由。如果过早地在 std 里统一一个官方运行时,反而会扼杀创新。

破局之路:从“大一统”到“邦联制”

在这场激烈的辩论中,一些极具建设性的“折中方案”也开始浮现。这或许预示着 Rust 未来的演进方向。

方案一:官方背书的“准标准库(Semi-official)”

一位开发者提出,Rust 项目组可以借鉴 C++ Boost 库的模式,官方接管 serde、rand、tokio 这些“钦定”的明星库,将它们纳入一个统一的 extd (extended) 命名空间下。

use extd::regex::Regex;
use extd::rand;

这并不会增加 std 的体积,但给了这些库一个“官方认证”的金字招牌,极大地解决了开发者的信任和审计问题。

方案二:引入“孵化期(Incubation Phase)”

一位开发者建议,应该有一个更明确的孵化流程,让那些有潜力进入 std 的库,先在一个类似 Go golang.org/x 的“实验场”里进行检验,而不是直接从某个个人开发者仓库里一步登天。

方案三:强化 Cargo 的安全审计能力

一些核心成员则认为,问题的根源不在于 std 的大小,而在于 crates.io 的分发机制不够安全。与其“因噎废食”地把所有东西都塞进 std,不如去建立更强大的包安全审计机制,比如:

  • 发布隔离期:新发布的包必须经过 72 小时自动化扫描才能被下载。
  • 签名与信任链:通过 cargo 增强包签名和审计者签名,让企业可以选择只使用“可信审计者”批准的依赖列表。

小结:一场关于“灵魂”的拷问

这场由“非主流观点(Unpopular Opinion)”引发的大讨论,表面上是在争论标准库的大小,但其核心,却是一场关于 Rust 与 Go 两种截然不同建国哲学的灵魂拷问。

  • Go 语言,像一个大一统的、中央集权的帝国。它为你提供了从道路、货币到度量衡的一切基础设施。你享受着极高的安全感和便利性,代价是必须忍受它某些时候的“独裁”与“不灵活”。
  • Rust 语言,则更像一个松散的、充满活力的城邦联盟。官方只提供最基础的法律和军队,剩下的一切都交给各个城邦(Crates)自由发展。你拥有无与伦比的自由和选择权,代价是你必须自己承担选择的风险,并时刻提防“外敌入侵”(供应链攻击)。

这两种哲学没有绝对的优劣,只有不同场景下的取舍。

但 Rust 社区的这场“请愿”,无疑为我们所有技术人敲响了警钟:在软件供应链日益脆弱的今天,一个强大、可靠、由顶级专家背书的“官方基础设施”,其价值正在被无限放大。

或许,Rust 的未来,真的需要在“自由”与“安全”之间,找到一个新的平衡点。而隔壁 Go 的作业,他们可能真的需要抄一抄了。

资料链接:https://www.reddit.com/r/rust/comments/1seu7p2/unpopular_opinion_rust_should_have_a_larger/


今日互动探讨:

在你的日常开发中,你是更喜欢 Go 这种“自带电池”的大标准库模式,还是 Rust 这种“小核心+强生态”的自由模式?你是否也曾因为“拉了一堆三方库”而感到安全焦虑?

欢迎在评论区分享你的看法!


还在为“复制粘贴喂AI”而烦恼?我的新专栏 AI原生开发工作流实战 将带你:

  • 告别低效,重塑开发范式
  • 驾驭AI Agent(Claude Code),实现工作流自动化
  • 从“AI使用者”进化为规范驱动开发的“工作流指挥家”

扫描下方二维码,开启你的AI原生开发之旅。


你的Go技能,是否也卡在了“熟练”到“精通”的瓶颈期?

  • 想写出更地道、更健壮的Go代码,却总在细节上踩坑?
  • 渴望提升软件设计能力,驾驭复杂Go项目却缺乏章法?
  • 想打造生产级的Go服务,却在工程化实践中屡屡受挫?

继《Go语言第一课》后,我的《Go语言进阶课》终于在极客时间与大家见面了!

我的全新极客时间专栏 《Tony Bai·Go语言进阶课》就是为这样的你量身打造!30+讲硬核内容,带你夯实语法认知,提升设计思维,锻造工程实践能力,更有实战项目串讲。

目标只有一个:助你完成从“Go熟练工”到“Go专家”的蜕变! 现在就加入,让你的Go技能再上一个新台阶!


商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求,请扫描下方公众号二维码,与我私信联系。

倒计时 33 个月?Go 前安全负责人:量子计算机将“摧毁”互联网

本文永久链接 – https://tonybai.com/2026/04/08/perspective-on-quantum-computing-timelines

大家好,我是Tony Bai。

过去三十年,我们一直活在一个笑话里:“能够破解 RSA 加密的量子计算机,永远在十年之后。”

作为一名软件工程师,我曾和你们中的大多数人一样,对所谓的“量子末日(Q-Day)”嗤之以鼻。我们觉得,在有生之年,我们赖以生存的 RSA、ECC 加密体系坚不可摧,那一天遥遥无期。

但就在昨天(2026年4月6日),这个笑话,似乎被终结了。

Go 语言前核心团队安全负责人、Go密码学专家之一 Filippo Valsorda,在他的个人博客上发表了一篇极其沉重的文章

在文章的开头,他用一种近乎“忏悔”的口吻写道:

“在推出抗量子密码学的紧迫性上,我的立场与几个月前相比,已经发生了改变。……是时候公开表明并解释我改变想法的原因了。”

在这篇长文中,Filippo 引用了 Google 和 Oratomic 上周刚刚发表的两篇重磅论文,以及多位顶级物理学家的最新警告,最终得出了一个令整个软件工程界脊背发凉的结论:我们不再拥有十年。具备破解当前所有主流加密算法能力的量子计算机(CRQC),其到来的时间线,已经被一些顶级专家压缩到了一个令人绝望的数字——2029 年。

是的,只剩下 33 个月。

今天,就让我们跟随这位曾经的“官方守护者”的视角,看看这场已经兵临城下的“加密世界末日”,到底是怎么回事,以及我们作为普通的后端开发者,该如何在这场史无前例的迁移中生存下来。

冰山撞来:Google 的论文与被撕碎的幻想

Filippo 指出,在过去的一周里,两篇论文彻底改变了游戏规则。

第一篇,来自 Google。 这篇论文极大地修正了破解 256 位椭圆曲线(如我们每天都在用的 HTTPS 证书、比特币签名 secp256k1)所需的逻辑量子比特(qubits)和门电路数量。结论是:在超导量子比特这种高速架构上,攻击可以在几分钟内完成。

第二篇,来自 Oratomic。 这篇论文更加激进。它指出,如果拥有非局部连接能力(如中性原子方案),破解 256 位椭圆曲线甚至只需要 10,000 个物理量子比特。这种攻击虽然更慢,但哪怕一个月只能破解一个密钥,也足以引发灾难。

那张出现在论文第二页、堪称“末日倒计时”的图表,清晰地展示了攻破 RSA-2048 和 ECC-256 所需的物理量子比特数,正在以肉眼可见的速度急剧下降。

Filippo 坦言:“我不是物理学家,我看不懂论文里所有的物理学原理。但我的工作是风险评估。我知道的是,至少有一部分真正的专家正在告诉我们:硬件在变好,算法在变便宜,纠错要求在降低。一切都在加速。

精英的警告:当你还在嘲笑,他们已经开始行动

更让 Filippo 感到警惕的,不是冷冰冰的论文,而是行业顶尖精英们近乎“反常”的表态。

  • Google 的安全总监 Heather Adkins 和 Sophie Schmieg 公开宣布,他们的最后期限是 2029 年。Filippo 强调:“在此之前,从没有人给出过如此激进的时间表。”
  • 著名的量子计算理论家 Scott Aaronson,将当前的状态比作 1939 年到 1940 年之间——那段时间,关于核裂变研究的公开发表突然在全球范围内“神秘消失”了。
  • Scott Aaronson 更是抛出了一个灵魂拷问,戳破了所有人的侥幸心理:
    > “一旦你理解了量子容错,再问‘你什么时候能用 Shor 算法分解 35?’,就好像在 1943 年问曼哈顿计划的物理学家‘你什么时候能搞出一次小小的核爆?’一样可笑。”

Filippo 写道,如果你还在想“这事儿可能成,也可能不成”,那你已经输了。

现在的赌注不是“你 100% 确定 2030 年会有量子计算机吗?”,而是“你 100% 确定 2030 年绝对不会有吗?你敢拿你所有用户的身家性命去赌那不到 1% 的可能性吗?”

SNDL 攻击:你的数据,正在被黑客“先存后破”

为什么我们必须立刻行动?因为黑客们正在疯狂执行一种极其阴险的战略:“Store Now, Decrypt Later”(先收集,后破解,SNDL)。

他们把现在通过网络截获的、由 RSA/ECC 加密的、看似安全的核心机密数据(比如你的银行交易、公司的商业合同、国家的敏感情报)全部存储在巨大的硬盘阵列里。

等几年后量子计算机成熟,他们就能在一瞬间,把这些尘封的历史数据全部解开,一览无余。

这意味着,我们今天发送的每一封加密邮件,每一次 HTTPS 访问,都在为未来的某一次“数字考古”提供素材。

行动指南:我们必须立刻开始“造船”

面对这场已经兵临城下的风暴,Filippo 作为Go 密码学界的专家,给出了极其具体、甚至有些“痛苦”的行动指南。

1. 密钥交换(Key Exchange):立即迁移到 ML-KEM

这是抵御 SNDL 攻击的第一道防线。Filippo 强调,任何非抗量子的密钥交换(如经典的 ECDH)都应被视为潜在的“主动破解”行为,并像 OpenSSH 那样向用户发出明确警告。

2. 数字签名(Digital Signatures):硬着头皮上 ML-DSA,放弃幻想

这是最痛苦的部分。Filippo 不无遗憾地承认,他原本希望我们能有更多时间去设计更优雅的、适应大签名体积的协议。但现在,没时间了。

我们必须接受 ML-DSA 签名体积巨大(几千字节,而 ECDSA 只有几十字节)的残酷现实,并开始在为小签名设计的协议(如 X.509 证书)中强行塞入这些“肥胖”的签名。

他甚至激进地提出:应该彻底放弃“混合签名”(经典+后量子)的过渡方案,直接一步到位使用纯 ML-DSA-44。因为混合签名带来的复杂性和性能开销,已经超过了它能提供的那点微不足道的“对冲”收益。

3. 对 Go 开发者意味着什么?

Filippo 直言不讳:

“在我的世界里,我们必须开始思考,Go 标准库中一半的密码学包突然变得不安全意味着什么。……这是我们职业生涯中从未遇到过的事情:从 SHA-1 到 SHA-256 的迁移,远没有这次这么具有破坏性。”

这意味着,我们很快就要在 Go 的 crypto/tls, crypto/x509, x/crypto/ssh 中看到翻天覆地的变化。

小结: weird, but it is what it is

在文章的结尾,Filippo 提到,他本周刚刚开始在博洛尼亚大学教授一门密码学博士课程。他告诉学生,RSA、ECDSA 这些我们曾经引以为傲的算法,现在只能作为“遗留算法(Legacy Algorithms)”来介绍了

他写道:“我知道,这感觉很奇怪。但,现实就是如此(it is what it is)。”

Filippo 的这声叹息,既是对一个技术时代的告别,也是对我们所有软件工程师拉响的高级别警报。

当 Go 语言前核心团队的安全负责人、一个以极度严谨和保守著称的密码学专家,都开始用如此紧迫的口吻催促我们行动时,我们没有理由再把头埋在沙子里,假装危机还很遥远。

那艘名为“量子计算”的巨轮,已经出现在了海平面上。现在不是争论它会不会撞上来的时候,现在是立刻开始造救生艇的时候。

资料链接:

  • https://words.filippo.io/crqc-timeline/
  • https://research.google/blog/safeguarding-cryptocurrency-by-disclosing-quantum-vulnerabilities-responsibly/
  • https://arxiv.org/abs/2603.28627

今日互动探讨:

在你的公司或个人项目中,有哪些核心数据是绝对不能在 5-10 年后被解密的?面对这场迫在眉睫的密码学大迁移,你觉得我们应该从哪个环节开始着手准备?

欢迎在评论区分享你的看法和焦虑!


还在为“复制粘贴喂AI”而烦恼?我的新专栏 AI原生开发工作流实战 将带你:

  • 告别低效,重塑开发范式
  • 驾驭AI Agent(Claude Code),实现工作流自动化
  • 从“AI使用者”进化为规范驱动开发的“工作流指挥家”

扫描下方二维码,开启你的AI原生开发之旅。


你的Go技能,是否也卡在了“熟练”到“精通”的瓶颈期?

  • 想写出更地道、更健壮的Go代码,却总在细节上踩坑?
  • 渴望提升软件设计能力,驾驭复杂Go项目却缺乏章法?
  • 想打造生产级的Go服务,却在工程化实践中屡屡受挫?

继《Go语言第一课》后,我的《Go语言进阶课》终于在极客时间与大家见面了!

我的全新极客时间专栏 《Tony Bai·Go语言进阶课》就是为这样的你量身打造!30+讲硬核内容,带你夯实语法认知,提升设计思维,锻造工程实践能力,更有实战项目串讲。

目标只有一个:助你完成从“Go熟练工”到“Go专家”的蜕变! 现在就加入,让你的Go技能再上一个新台阶!


商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求,请扫描下方公众号二维码,与我私信联系。

如发现本站页面被黑,比如:挂载广告、挖矿等恶意代码,请朋友们及时联系我。十分感谢! Go语言第一课 Go语言进阶课 AI原生开发工作流实战 Go语言精进之路1 Go语言精进之路2 Go语言第一课 Go语言编程指南
商务合作请联系bigwhite.cn AT aliyun.com
这里是 Tony Bai的个人Blog,欢迎访问、订阅和留言! 订阅Feed请点击上面图片

如果您觉得这里的文章对您有帮助,请扫描上方二维码进行捐赠 ,加油后的Tony Bai将会为您呈现更多精彩的文章,谢谢!

如果您希望通过微信捐赠,请用微信客户端扫描下方赞赏码:

如果您希望通过比特币或以太币捐赠,可以扫描下方二维码:

比特币:

以太币:

如果您喜欢通过微信浏览本站内容,可以扫描下方二维码,订阅本站官方微信订阅号“iamtonybai”;点击二维码,可直达本人官方微博主页^_^:
本站Powered by Digital Ocean VPS。
选择Digital Ocean VPS主机,即可获得10美元现金充值,可 免费使用两个月哟! 著名主机提供商Linode 10$优惠码:linode10,在 这里注册即可免费获 得。阿里云推荐码: 1WFZ0V立享9折!


View Tony Bai's profile on LinkedIn
DigitalOcean Referral Badge

文章

评论

  • 正在加载...

分类

标签

归档



View My Stats