摘要:NET 10 上周已经发布了.NET 10 Preview 4[1],2025年的开发迭代已经过半了,一起来看下.NET 10 今年对RISC-V架构的支持进展情况。我们从Github .NET 社区的相关仓库和Issue 里通过三个方面的简要梳理dotnet
.NET 10 上周已经发布了.NET 10 Preview 4[1],2025年的开发迭代已经过半了,一起来看下.NET 10 今年对RISC-V架构的支持进展情况。我们从Github .NET 社区的相关仓库和Issue 里通过三个方面的简要梳理dotnet 对 RISC-V 的支持:
官方支持截至 2025 年 5月,微软官方的 .NET(dotnet)尚未正式支持 RISC-V 架构。官方发布版主要支持 x64、Arm64、s390x(部分平台)等架构,龙芯团队支持了LoongArch架构。RISC-V 目前还属于社区实验和探索阶段,未进入官方支持路线图。在(dotnet/runtime #36748: RISC-V support)[2]多位开发者和社区成员表达了对支持 RISC-V 的兴趣,但官方团队明确表示,RISC-V 的支持需要社区的推动、贡献和相关维护资源。目前该 issue 标记为“Future”,说明官方不会在近期版本内支持,但会持续关注社区需求和进展。如果有足够的社区贡献,未来有可能纳入正式支持计划。
社区移植进展社区中有多项针对 RISC-V 的移植尝试,主要由个人或小组驱动, issue(CoreCLR RISC-V architecture port #84834)[3]的主题是 CoreCLR 对 RISC-V 架构的移植进展总结:
当前进展:
JIT 目录:4737 个测试,4304 通过,413 失败,20 跳过
所有测试:6565 个测试,5663 通过,861 失败,41 跳过
已实现 CodeGen BringUp 测试在 Debug 模式下 100% 通过(在 qemu 和 StarFive VisionFive2 板上)。
相关 PR 部分已合并,部分尚未合并。合并后,主分支在 VisionFive2 和 qemu 上的 CodeGen BringUp 测试应全通过(VisionFive2 需暂时禁用 GC_REGIONS)。
VisionFive2 测试结果(Debug,设置 DOTNET_GCgen0size=99999999):
近期计划:
继续让 JIT 目录下的测试在 Release/Debug/Checked 模式下全部通过
修复与 JIT 优化无关的 TODO
为 RISC-V 添加 CI,并启用 JitDisasm 和 JitDump
关注更多测试目录,争取更多模式下通过
后续重点还包括库(corefx)测试、jitstress/gcstress 等测试
近期不计划开展的内容:
JIT 全优化、交叉编译(crossgen2)、SIMD/内联优化、GC 优化、异常处理、栈遍历、跨语言互操作优化等
工作流程:遵循官方 JIT 移植文档,并将失败测试按错误类型分类。后续会开单独 issue 跟踪正在处理的内容。
相关 issue:#36748, #75749。
在 issue(RISC-V NativeAOT port)[4]用于跟踪 .NET NativeAOT 在 riscv64 架构上的移植进展。当前内容包括:
• 主要记录 NativeAOT 在 riscv64 上的移植工作进度。
• 移植工作基于 LA64(LoongArch64)架构的相关实现经验。
• 提供了一个正在进行中的初步移植分支链接,供参考和协作:https://github.com/dotnet/runtime/compare/main...am11:runtime:feature/nativeaot/riscv64-port
• 该 issue 标注了 area-NativeAOT-coreclr 和 arch-riscv 标签,归属于 Future 里程碑,尚未关闭。
• 评论数较多(200),表明社区和开发者有较多讨论和参与。
filipnavara/dotnet-riscv[5] 仓库情况
该仓库即为社区成员 @filipnavara 主导的 .NET RISC-V 移植项目,发布了可用的RISC-V的.NET源码包,特点如下:
目标是让 .NET 运行时(runtime)在 RISC-V 架构上可用,支持托管应用运行。
包含大量针对 RISC-V 架构的底层修改和补丁,涉及 coreclr、corefx 等组件。
项目处于实验和开发阶段,可能并不完全等同于官方主线代码,稳定性和兼容性有限。已经发布了.NET 9 [6]以及v10.0.100-preview.1.25111.1[7]
[1] .NET 10 Preview 4: https://www.cnblogs.com/shanyou/p/18879388
[2] dotnet/runtime #36748: RISC-V support:https://github.com/dotnet/runtime/issues/36748
[3] CoreCLR RISC-V architecture port #84834: https://github.com/dotnet/runtime/issues/84834
[4] RISC-V NativeAOT port: https://github.com/dotnet/runtime/issues/106223
[6] RISC-V 架构.NET 9 : https://github.com/filipnavara/dotnet-riscv/releases/tag/v9.0.101
[7] RISC-V 架构v10.0.100-preview.1.25111.1: https://github.com/filipnavara/dotnet-riscv/releases/tag/v10.0.100-preview.1.25111.1
来源:opendotnet