Python 与 Rust 标准库的架构之辩

Better Batteries

编程界常争论标准库该精简还是全面,但这问错了方向。真正关键的是:什么样的社会架构能孕育出高质量的标准库?Python 常被诟病为“漏水的电池”,但这并非规模问题,而是质量参差不齐。Python 核心团队的优势在于快速推出功能,不纠结于未来,这既导致了 ossified cAPI 的固化,也推动了数据科学革命。Go 的标准库同样全面,却因团队具备强大的制度能力而备受推崇。Rust 的 1.0 标准库 API 堪称艺术品,但在执行新设计决策时显得力不从心。golang.org/x 展现了溢出能力,而 rust-lang-nursery 却成了墓地。或许问题不在于技术难度,而在于解决全球性协调问题所需的组织架构与资源投入。

Rust 之所以在 2026 年仍没有从操作系统获取随机字节流的 API,并非因为这是个容易解决的技术难题,而是因为它需要复杂的组织架构(当然也包括真金白银的投入)来解决这个名为编程语言的高风险全球协调问题。
  1. exceptione

    “开箱即用(Included batteries)”和类型安全并非软件项目的唯一标准,但在我看来,它们无疑是最重要的标准(我排除了一次性代码和脚本)。这篇文章提出了一个重要的观点,但未能向读者介绍 JVM 生态系统和 .NET Core 生态系统。这两个语言动物园的标准库在规模上远远超越了文中讨论的语言(Go、Python 和 Rust)所提供的东西。

    例如,这是 asp.net core:<https://learn.microsoft.com/en-us/aspnet/core/?view=aspnetco...>。这是标准库:<https://learn.microsoft.com/en-us/dotnet/api/?view=net-10.0>。这是 EF core:<https://learn.microsoft.com/en-us/ef/core/>。

    还有许多其他内置的(可选)技术。你的代码通常有 98% 依赖于官方、可信且经过审查的代码。这听起来可能有些夸张,但可以说,如果你看重这些方面,JVM 和 .NET Core 是无可匹敌的。

    我知道,编程语言和宗教……所以你想怎么用这些信息就怎么用吧。

  2. nicoburns

    目前我们通常面临一种权衡:

    - 标准库,它既受信任/官方背书,又永久稳定

    - 包生态系统,两者皆非

    我很想看到对中间地带的更多探索:

    - 一个扩展的标准库,它提供版本化的库,使用语义化版本(semver)而不是永久稳定。

    - 更好地支持对包生态系统的验证和保障管理。

  3. noelwelsh

    我认为 Unison 在这里的视角最有趣:https://www.unison-lang.org/docs/the-big-idea/

    如果你看看任何存在已久的语言,Java 就是一个很好的例子,你会发现许多库使用了过时的编码风格。比如对比 Java 中不同的日期/时间库。演进这些库总是一个问题,我认为 Unison 以一种独特的方式解决了这个问题,它让语言能够演进,而无需背负太多历史包袱,同时又不会破坏他人的代码。

同日更多故事

2026-08-21