gpt4 book ai didi

.net - .NET CoreCLR、CoreRT、Roslyn 和 LLILC 之间有什么区别

转载 作者:行者123 更新时间:2023-12-02 07:52:17 27 4
gpt4 key购买 nike

最近我开始阅读有关 .NET 重组的详细信息(主要是通过 .NET Core github pages )。看起来他们创建了兄弟项目来支持更多平台。在阅读时我的印象是CoreCLRCoreRT是专有的新开源版本 Roslyn编译器。 CoreRT 提供 native (AOT) 编译。和LLILC是指导 LLVM 框架的替代实现。

有人可以从用户的角度确认并描述这个项目的差异和目标吗?为什么将来有人会使用 Roslyn 而不是 CoreCLR?

最佳答案

Roslyn 是一个编译器平台,使您能够为 C# 和 VB 编程语言构建静态和动态分析工具以及自定义语言扩展和转换。它还使您能够将这些语言嵌入到其他语言或应用程序中。 Roslyn 包括 C# 和 VB 编译器以及其他工具。这些编译器生成通用中间语言 (CIL) 代码。

要运行此代码,CIL 必须编译为目标计算机体系结构可以执行的二进制代码。 .NET 目前提供了三种方法来实现此目的:

  1. 在应用运行时使用 JIT 编译器将 CIL 代码编译为二进制代码。该模型由CoreCLR实现。 CoreCLR 最初是作为 CLR 的副本。它已被修改以支持不同的操作系统。它们是单独且并行维护的。
  2. 将 CIL 代码编译为二进制代码,并集成任何所需的 .NET 框架组件,以生成单文件独立的可执行文件,其性能更接近于用 native 语言编写的代码。这项技术叫做.NET Native 。 CoreRT 是该技术的开源实现。 .NET Native 和 CoreRT 之间的主要区别在于,前者使用的 AOT 编译器是 UTC 编译器(MSVC 编译器后端),而后者目前使用 RyuJIT。 UTC 在优化代码方面比 RyuJIT 积极得多。同样在 CoreRT 中,运行时的一些组件已用 C# 干净地重新实现。 CoreCLR 仍然使用 C++ 实现。
  3. NGEN 与 .NET Native 类似,只不过生成的可执行文件不是独立的并且需要外部安装的运行时。

LLILC是一个基于可移植LLVM编译器框架的CIL编译器。它可用于构建 JIT(当前)和 AOT( future )编译器。该编译器的优势在于它利用了 Clang C++ 编译器优化,并将 LLVM 可扩展性模型(分析和优化过程)引入到 .NET。

CoreRT 和 LLILC 是新项目,仍处于早期开发阶段,需要做更多工作来支持生产应用程序。因此,如果您是用户而不是贡献者,CoreCLR 和 Roslyn 适合您。同样,CoreCLR 是运行时,而 Roslyn 是 C# 和 VB 编译器。

关于.net - .NET CoreCLR、CoreRT、Roslyn 和 LLILC 之间有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34665026/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com