免费搭建个人博客网站,建设机械员证书查询网站,银川企业网站建设,平面设计上班都干啥这篇文章介绍和梳理一下截止到 2022 年的 .NET 向系统编程探索的历程。2003 年的 Singularity 项目试图让 Windows 的内核态与用户态应用完全建立在 .NET 托管世界上#xff0c;并试验了一个支持编译到本机代码的类似 C# 的语言#xff0c;并发布了很多相关的论文。后来 Sing… 这篇文章介绍和梳理一下截止到 2022 年的 .NET 向系统编程探索的历程。2003 年的 Singularity 项目试图让 Windows 的内核态与用户态应用完全建立在 .NET 托管世界上并试验了一个支持编译到本机代码的类似 C# 的语言并发布了很多相关的论文。后来 Singularity 项目被放弃因为当时的 CLR 和 C# 的类型系统被认为难以处理系统编程。2008 年的 Midori 项目试图让 Windows 的用户态应用全部建立在 .NET 上并且出了很多让 CLR 和 C# 类型系统向适合系统编程的方向改进的提案例如 ref 相关和各种零分配抽象设施等等同时诞生了 RedHawk 项目也就是 .NET Native 的前身一个以 UTC 为后端MSVC 的代码生成后端的支持将 C# 代码编译到本机代码的编译器。2015 年 Project N 项目将 RedHawk 编译器带到了 .NET Core 1.0 中并且改名为 .NET Native同时支持了 UWP。以及诞生了 LLILC 项目实验将 LLVM 作为后端的 JIT。另外.NET 发布了下一代高吞吐量 JITRyuJIT用于取代先前 UTC 后端的 JIT64显著改善了代码生成效率和质量并给 .NET Core 启用。.NET Native 更名为 CoreRT 后开源将 UTC 后端更换为 RyuJIT 后端。2017 年开始在 CoreCLR、C# 和 .NET BCL 中加入 Midori 项目中探索出来的特性之一 ref struct 和 Span 系列。同年 LLILC 项目基本宣告失败主要因为 LLVM 导致的 JIT 吞吐量低下和 CoreCLR 与 LLVM 类型系统相关问题难以解决该方案被放弃。另外RyuJIT 正式上位成为 .NET Framework 和 .NET Core 的默认 JIT。2019 年 CoreRT 更名为 NativeAOT 再次成为实验性项目继续发展并分叉出 NativeAOT-LLVM 分支实验将 LLVM 作为后端支持生成 WebAssembly 的将 .NET 程序集编译到本机代码的编译器。同年 CoreRT 的一部分成果被拿去做 crossgen2这是一个支持交叉编译的生成本机代码的编译器用来作为混合 AOT 方案。2021 年 crossgen2 作为下一代 ReadyToRun 特性正式推出同时也使得 .NET RyuJIT 支持了交叉编译来生成各平台和架构的代码。2022 年 Midori 项目提案的另一波语言特性继续加入 CoreCLR 和 C#诸如 ref fields、生命周期以及 ref struct 配套的泛型和反射支持等等同时 NativeAOT 也正式发布。这方面的探索仍在持续进行中期待未来的发展同时如有不对之处欢迎指出。