.NET Core CLR 团队宣布,他们的.NET Core 平台现在已经是完全基于其下一代即时编译器RyuJIT。有人可能不知道,在.NET Core 中,编译器(Roslyn)会把C#代码编译成CIL(公共中间语言)字节码。接下来,RyuJIT 会把CIL 字节码编译成目标体系结构的机器码。其结果是,与遗留系统相比,RyuJIT 支持的所有CPU 体系结构(x86、x64、ARM32 和ARM64)现在都可以从RyuJIT 提供的性能和高效率中受益。
RyuJIT 开发最早公开是在 2013 年 9 月,通过一次社区预览。RyuJIT 的第一个生产版本是面向 x64 体系结构的,于 2015 年 7 月作为.NET Framework 4.6 的一部分发布。然后,又依次引入了 x86、ARM32 支持。据来自微软的 Bruce Forstall 介绍,ARM64 在.NET Core 2.1 时“已经接近预览品质”,之所以没有明确说明,是因为那会让人觉得.NET Core 2.2 会包含这种体系结构。Forstall 指出,为了推进对 ARM64 平台的支持,Qualcomm 做了大量的贡献。
在以 x64 为目标平台时,现行.NET Framework 的用户也可以从 RyuJIT 受益,而针对 x32 平台生成的代码将继续使用遗留的编译器 JIT32。.NET Core 2.1 用户已经可以在 x86、x64 及 ARM32 平台上利用 RyuJIT。
Forstall 指出,随着这项工作的完成,RyuJIT 的未来计划包括增加 SIMD 支持、支持特定体系结构硬件的内联函数以及“支持 Linux 软件约定”。他们还希望继续改进 RyuJIT 所生成代码的总体质量。开发人员的反应总体上是积极的;有人对 RyuJIT 的前景提了一个有趣的问题,就是将来增加 WebASM 目标平台的可能性,但是,到目前为止,微软还没有正式答复。
评论