聊一聊 dotnet 社区对 RISC-V 的支持进展

B站影视 韩国电影 2025-05-19 09:21 1

摘要: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

相关推荐