
微软
既然提到了 Chromium,那我来详细讲一下 .NET 的发布情况:1.
微软确实提供了官方的主要发行版本,涵盖
Windows、
macOS 和
linux 平台。其中,
linux 版本可通过
微软的 apt 或 rpm 源获取。所有这些发行版都源自 GitHub 上公开的源代码,并且不包含任何闭源组件(数字签名部分除外)。 2. 对于一些
linux 发行版,例如 Ubuntu,它们会选择自行编译一份 .NET,并将其放入自己的 apt(或其他包管理器)源中。这一过程被称为 source build,通常采用两阶段编译的方式:首先利用
微软提供的 SDK 编译出一个 C 编译器(因为 .NET 是通过 C 自举实现的),然后用这个新编译器重新构建整个 SDK。这样可以确保最终产物完全开源。至于为什么没有出现其他第三方实现,主要原因可能在于功能更新的频率和复杂性。像 span、static virtual 以及向量 intrinsics 等功能,属于运行时的核心特性,需要投入大量资源才能实现。曾经作为第三方项目的 Mono,如今连同其开发团队一起被
微软收购,并与 coreclr 团队紧密协作。即便如此,许多运行时功能在 Mono 上的实现依然存在滞后甚至缺失的问题。此外,
微软维护的并不仅仅是一个单一实现。除了从 Mono 收购而来的代码库(与 coreclr 相对独立)之外,还有其他变种,例如基于 CoreRT 发展的 NativeAOT,以及正在实验中的由 LLVM 驱动的 AOT 技术等。尽管这些变种在运行时部分差异较大,但标准库层面则尽可能共享代码,以减少重复劳动和维护成本。