最近我开始阅读有关.NET重组细节的信息(主要是通过.NET Core github pages)。 它接缝他们创建了兄弟项目以支持更多平台。在阅读时,我的印象是CoreCLR和CoreRT是一个新的OpenSource版本的专有Roslyn编译器。 CoreRT提供本机(AOT)编译。 LLILC是指导LLVM框架的替代实现。
任何人都可以从用户角度确认和描述这些项目的差异和目标吗?为什么有人会在将来使用Roslyn而不是CoreCLR?
答案 0 :(得分:46)
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编译器。