最近我开始阅读有关 .NET 重组细节的内容(主要是通过 .NET Core GitHub 页面)。
他们似乎创建了兄弟项目来支持更多平台。在阅读时,我的印象是 CoreCLR 和 CoreRT 是专有 Roslyn 编译器的新开源版本。 CoreRT 提供本机 (AOT) 编译。 LLILC 是指导 LLVM 框架的替代实现。
这个可以确认吗?从用户的角度来看,这些项目的差异和目标是什么?为什么将来有人会使用 Roslyn 而不是 CoreCLR?
Roslyn 是一个编译器平台,使您能够为 C# 和 VB 编程语言构建静态和动态分析工具以及自定义语言扩展和转换。它还使您能够将这些语言嵌入到其他语言或应用程序中。 Roslyn 包括 C# 和 VB 编译器以及其他工具。这些编译器生成通用中间语言 (CIL) 代码。
要运行此代码,必须将 CIL 编译为目标计算机体系结构可以执行的二进制代码。 .NET 目前提供了三种方法来实现此目的:
LLILC 是一个基于可移植 LLVM 编译器框架的 CIL 编译器。它可用于构建 JIT(当前)和 AOT(未来)编译器。该编译器的优点是它利用了 Clang C++ 编译器优化,并将 LLVM 可扩展性模型(分析和优化过程)引入到 .NET。
CoreRT 和 LLILC 是新项目,仍处于“早期”开发阶段,需要做更多工作来支持生产应用程序。因此,如果您是用户而不是贡献者,CoreCLR 和 Roslyn 适合您。同样,CoreCLR 是运行时,而 Roslyn 是 C# 和 VB 编译器。