RuyiSDK 双周进展汇报 第 078 期 · 2026 年 10 月 13 日
卷首语
各位 RISC-V 开发者与 RuyiSDK 社区伙伴,大家好!
RISC-V 中国峰会2026 即将于 2026.10.18-20 日在深圳会展中心召开,RuyiSDK 将带来主题演讲、海报展示以及 D15 展位的多种应用方案演示(详见汇总信息),欢迎开发者朋友到现场与我们面对面交流。会议议程奉上,RISC-V 年度盛宴欢迎大家关注~~~
近期,RuyiSDK 包管理器 0.53.0 持续服务社区,0.54.0 预计 10 月底正式发布,围绕 ABI 兼容性检测、官方软件包 macOS 打包以及 SpacemiT K1/K3 工具链适配的开发也在稳步推进;RuyiSDK IDE 完成了一轮体验打磨——虚拟环境向导重构、构建失败一键查看示例、错误详情透出、IEC 单位统一显示等多项易用性改进合入。
社区与内容建设方面,软件源修复了 SiFive Unmatched Ubuntu 服务器镜像的下载地址,感谢 @weilinfox 的贡献,也欢迎更多贡献者参与。开发板支持矩阵新增 ESP32-C3、ESP32-C6、CH32V003 的 RT-Thread 5.3.1 测试报告并更新 Milk-V Duo S 的 xv6 报告;开发板示例仓库补齐了 SpacemiT K3 CoM260 Kit 的 ROS 2 课程讲义,前端也实现了课程目录自动同步与章节页面生成。
基础组件侧,编译器与运行时团队继续高频输出:GLIBC 与 newlib 各自补齐了一批向量数学函数,GCC 在 ZTT 后端、Zvzip 0.3 与 Packed-SIMD 扩展上取得实质进展,LLVM 本期十余个 RISC-V P 扩展及通用 RISC-V 补丁合入主线,V8 团队首次在真实硬件上开展 RVV Wasm SIMD 测试并合入 13 个补丁,OpenJDK 完成了 JEP 483 / JEP 515 AOT 特性在 RISC-V 平台的移植并合入主线,Go 也在 riscv64 原子操作与 clobberdead 调试模式上提交了多项主线 CL。
欢迎阅读正文,了解更详尽的更新内容,并期待您与我们一同参与社区共建。
获取更多资讯、下载最新工具或参与技术讨论,欢迎通过文章最下方的渠道找到我们。
基础开发环境
包管理器
由于 RuyiSDK 发版周期调整,RuyiSDK 包管理器的 0.54.0 版本预期将在 10 月底正式发布。欢迎下载 RuyiSDK 包管理器当前最新版本 0.53.0 试用。
RuyiSDK 团队仍在常态化维护 RuyiSDK 软件源。如您已有 RuyiSDK 包管理器了,您可通过 ruyi update 获取近两周的更新:我们保证这些内容兼容 RuyiSDK 包管理器的近 3 个正式版本。
目前有以下内容正在开发中:
- 检测软件包与当前系统的 ABI 兼容性的工作。
- 更多 RuyiSDK 官方维护软件包的 macOS 打包工作。
- 针对 SpacemiT K1/K3 的工具链适配。
欢迎试用或来上游围观;您的需求是我们迭代开发的目标和动力。
RuyiSDK IDE
- 重构虚拟环境向导以避免其在丢失焦点时消失。
- 测试由 CI 构建的 RISC-V VSCodium IDE。
- 构建失败提示中新增"查看示例"按钮。
- 文件大小改用 IEC 单位(KiB、MiB 等)显示。
- 软件包悬浮提示中显示描述信息。
- 安装软件包、刷新索引失败时可查看详细错误。
- 修复 curl 下载大小单位解析错误。
- 修复搜索内容被强制转为小写的问题。
社区与内容建设
packages-index 资源更新
本次 RuyiSDK 软件源的更新主要包含了以下内容:
- 更新软件包:
board-image/ubuntu-server-riscv64-sifive-unmatched: 修复下载地址。
感谢 weilinfox 的贡献!
您也可以亲自参与
RuyiSDK 软件的打包与分发工作:目前您可以直接在 GitHub 上查看、修改我们的部分打包脚本与软件源仓库。今后,按照本年度的开发计划,我们也将支持有权的第三方贡献者通过程序化的方式上传软件包、系统镜像等分发文件,以便利打包工作。
开发板支持矩阵
- 新增 ESP32-C3 的 RT-Thread 5.3.1 中英文测试报告。PR #406
- 更新 Milk-V Duo S 的 xv6 中英文测试报告。PR #407
- 新增 CH32V003 的 RT-Thread 5.3.1 中英文测试报告。PR #408
- 新增 ESP32-C6 的 RT-Thread 5.3.1 中英文测试报告。PR #409
开发板示例仓库
- 补充 SpacemiT K3 CoM260 Kit 的 ROS 2 第 3 至 8 章课程讲义和实验手册。PR #48、课程目录
- 开发板文档前端支持从课程仓库同步 ROS 2 目录、正文和媒体资源,并按课程目录自动生成章节页面。PR #12
基础组件
基础C库
- GLIBC:
- 移植了 powf, sincos, sincosf, sincospi, sincospif, sinf 至现有的 glibc libmvec 框架。
- newlib:
- 移植了 hypot, log10, log1p, sincospi, sinpi, tanpi 至现有的 newlib 向量数学框架。
GCC
- 完善了 ZTT 的 GNU 工具链后端,启动了 GEMM / GEMV 算子验证方案设计与优化,编译时间降低约 5.05%—6.97%,已经开始改善 GCC 后端的编译成本
- 修复了 RISE-CI 运维中发现的一些问题
- 持续推进 Packed-SIMD 扩展更新,已同步至0.6文档版本
- 提交了 Zvzip 0.3 版本的 gcc 后端支持,更新了 API 名称,添加了 VLS 支持
LLVM
本期提交 PR 如下
- [RISCV][P-ext] Add packed saturation intrinsics
[RISCV][P-ext] Add packed saturation intrinsics by sihuan · Pull Request #224432 · llvm/llvm-project · GitHub
为 RISC-V P 扩展新增 packed saturation intrinsics 支持。上期正在 review,本期已合并 - [RISCV][P-ext] Support Packed Multiply High Parts
[RISCV][P-ext] Support Packed Multiply High Parts by TelGome · Pull Request #225015 · llvm/llvm-project · GitHub
为 RISC-V P 扩展新增 Packed Multiply High Parts intrinsic 支持。上期正在 review,本期已合并 - [RISCV][P-ext] Support the missing packed pair
[RISCV][P-ext] Support the missing packed pair by XChy · Pull Request #226992 · llvm/llvm-project · GitHub
补全 RISC-V P 扩展 Packed Pair Intrinsics 中的v2i16支持。已合并 - [RISCV][P-ext] Support Packed Widening Unzip
[RISCV][P-ext] Support Packed Widening Unzip by TelGome · Pull Request #227211 · llvm/llvm-project · GitHub
为 RISC-V P 扩展新增 Packed Widening Unzip Intrinsics 支持。已合并 - [RISCV] Support frame pointers in SiFive CLIC preemptible handlers
[RISCV] Support frame pointers in SiFive CLIC preemptible handlers by zeyi2 · Pull Request #221318 · llvm/llvm-project · GitHub
支持 SiFive CLIC 可抢占中断处理函数使用帧指针。已合并 - [RISCV] Reject reserved (qc.)cm.mvsa01/(qc.)cm.mva01s encodings in the disassembler
[RISCV] Reject reserved (qc.)cm.mvsa01/(qc.)cm.mva01s encodings in the disassembler by zeyi2 · Pull Request #229091 · llvm/llvm-project · GitHub
在反汇编器中拒绝(qc.)cm.mvsa01和(qc.)cm.mva01s的保留编码,补充寄存器组合及 RVE 寄存器约束检查。已合并 - [RISCV] Fix FP properties for Zvbdota instructions
[RISCV] Fix FP properties for Zvbdota instructions by zeyi2 · Pull Request #228737 · llvm/llvm-project · GitHub
为 Zvbdota 浮点指令补充可能触发浮点异常的属性,并为使用动态舍入模式的vfbdota.vv添加隐式 FRM 依赖。已合并 - [RISCV][P-ext] Support Packed Slide 1 up/down
[RISCV][P-ext] Support Packed Slide 1 up/down by XChy · Pull Request #228049 · llvm/llvm-project · GitHub
为 RISC-V P 扩展新增 Packed Slide 1 up/down Intrinsics 及相应代码生成支持。已合并 - [Clang][RISCV] Add packed widening shift intrinsics
[Clang][RISCV] Add packed widening shift intrinsics by Michael-Chen-NJU · Pull Request #224790 · llvm/llvm-project · GitHub
为 Clang RISC-V 新增 packed widening shift intrinsics 支持。已合并 - [mlir][arith] Handle unsigned moduli in int-range optimizations
https://github.com/llvm/llvm-project/pull/224933
完善 MLIR arith 整数范围优化对无符号模数的处理,避免将最高位为 1 的无符号模数误判为负值。已合并 - [Clang][RISCV] Add packed narrowing shift intrinsics
[Clang][RISCV] Add packed narrowing shift intrinsics by Michael-Chen-NJU · Pull Request #228726 · llvm/llvm-project · GitHub
为 RISC-V P 扩展新增 packed narrowing shift intrinsics,支持逻辑右移、算术右移及舍入变体。已合并 - [Clang][RISCV][P-ext] Add packed Q-format widening accumulate intrinsics
[Clang][RISCV][P-ext] Add packed Q-format widening accumulate intrinsics by Michael-Chen-NJU · Pull Request #228009 · llvm/llvm-project · GitHub
新增 P 扩展 Q-format 扩宽乘累加 intrinsics,并实现 RV32/RV64 对应的指令选择与 lowering。已合并 - [SelectionDAG][RISCV] Account for samesign in preferred export extensions
[SelectionDAG][RISCV] Account for samesign in preferred export extensions by imkiva · Pull Request #226013 · llvm/llvm-project · GitHub
在跨基本块值的扩展偏好分析中考虑samesign,避免无符号同号比较取消既有的符号扩展偏好,减少部分 RISC-Vi8/i16冗余零扩展。正在 review
V8
本期我们开始在实际硬件平台上开展基于Node.js的RVV的Wasm SIMD功能/性能测试,并在一开始就发现旧版内核不提供hwprobe,导致V8 runtime无法正确获取运行时指令集特征的问题。这类问题是在仅基于V8的开发和测试中无法发现的,接下来适配会进一步推进。
本期提交并合入的patch:
- [riscv] Fix CompareTaggedAndBranch with relocatable immediates
[RISC-V] 修复带可重定位立即数的 CompareTaggedAndBranch CL8436921 - [riscv][maglev] Zero-extend string index before address computation
[RISC-V][Maglev] 在地址计算前对字符串索引做零扩展 CL8438659 - [riscv][wasm] Fix OOL spill space size in RecordSpillsInSafepoint
[RISC-V][WASM] 修复 RecordSpillsInSafepoint 中Out-Of-Line代码区段溢出空间大小 CL8436642 - [riscv] Fix zero-extension of BitcastFloat32ToWord32 in ChangeUint32ToUint64
[RISC-V] 修复 ChangeUint32ToUint64 中 BitcastFloat32ToWord32 的零扩展 CL8461522 - [riscv][wasm]Patch jump table slots atomically
[RISC-V][WASM] 原子方式修补跳转表槽位 CL8483311 - [riscv][sandbox] Tag entries in the TrustedPointerTable
[RISC-V][Sandbox] 为可信指针表中的条目添加标记 CL5373845 - [riscv][maglev] Avoid clobbering allocatable register t4 in ByteSwap
[RISC-V][Maglev] 在 ByteSwap 中避免覆盖可分配寄存器 t4 CL8492392 - [riscv][wasm] Zero upper lanes in v128.load{32,64}_zero
[RISC-V][WASM] 在 v128.load{32,64}_zero 中将高位通道置零 CL8485765 - [riscv][wasm] Fix growable stacks return trampoline frame teardown
[RISC-V][WASM] 修复可增长栈返回跳板帧的销毁逻辑 CL8535227 - [riscv][wasm] Add preemptive stack checks to generic JS-to-Wasm wrapper
[RISC-V][WASM] 在通用 JS-to-Wasm 包装器中增加抢占式栈检查 CL8536826 - [riscv][compiler] Simplify AssembleConstructFrame
[RISC-V][编译器] 简化 AssembleConstructFrame 实现 CL8535328 - [riscv][compiler] Add stack check to compiled JS-to-Wasm wrappers
[RISC-V][编译器] 在编译后的 JS-to-Wasm 包装器中添加栈检查 CL8535329 - [riscv] Implement and correctly round FP16 RVV fused multiply-add
[RISC-V] 实现 FP16 RVV 融合乘加并正确处理舍入 CL8544731
本期审阅并合入的patch:
- [riscv] Fall back to /proc/cpuinfo when riscv_hwprobe is unavailable
[RISC-V] riscv_hwprobe 不可用时回退读取 /proc/cpuinfo CL8473041
OpenJDK
本期审阅并合入的JDK主线PR:
- 8389939: RISC-V: OrderAccess can be simplified by UseZtso by kuaiwei · Pull Request #32391 · openjdk/jdk · GitHub (8389939: RISC-V: OrderAccess can be simplified by UseZtso) – 为RISC-V优化强内存序场景JVM C++内存访问
- 8390452: RISC-V: gc/shenandoah/TestSieveObjects.java fails with "assert(UseZba) failed: must be" by DingliZhang · Pull Request #32392 · openjdk/jdk · GitHub (8390452: RISC-V: gc/shenandoah/TestSieveObjects.java fails with “assert(UseZba) failed: must be”) – 为RISC-V修复ShenandoahGC场景断言错误
- 8389378: RISC-V: Eliminate redundant sext.w by fusing ConvI2L with int producers by zifeihan · Pull Request #32096 · openjdk/jdk · GitHub (8389378: RISC-V: Eliminate redundant sext.w by fusing ConvI2L with int producers) – 为RISC-V优化32位整数运算符号扩展优化
- 8390522: RISC-V: Avoid clobbering ra in the nmethod entry barrier by zifeihan · Pull Request #32417 · openjdk/jdk · GitHub (8390522: RISC-V: Avoid clobbering ra in the nmethod entry barrier) – 为RISC-V改进JIT方法入口barrier寄存器使用,避免修改RA特殊寄存器
- 8390521: RISC-V: Clean up vector register dispatch in MachSpillCopyNode::implementation by DingliZhang · Pull Request #32416 · openjdk/jdk · GitHub (8390521: RISC-V: Clean up vector register dispatch in MachSpillCopyNode::implementation) – 为RISC-V重构矢量寄存器SPILL相关代码实现
本期审阅并合入的JDK LTS主线PR:
- 8390441: RISC-V: Fix C2 stack-to-stack spill copies with large offsets by zifeihan · Pull Request #734 · openjdk/jdk25u-dev · GitHub (8390441: RISC-V: Fix C2 stack-to-stack spill copies with large offsets) – 为RISC-V修复寄存器SPILL大偏移量支持问题
- 8390441: RISC-V: Fix C2 stack-to-stack spill copies with large offsets by zifeihan · Pull Request #3018 · openjdk/jdk21u-dev · GitHub (8390441: RISC-V: Fix C2 stack-to-stack spill copies with large offsets)
- 8390441: RISC-V: Fix C2 stack-to-stack spill copies with large offsets by zifeihan · Pull Request #4623 · openjdk/jdk17u-dev · GitHub (8390441: RISC-V: Fix C2 stack-to-stack spill copies with large offsets)
- 8390521: RISC-V: Clean up vector register dispatch in MachSpillCopyNode::implementation by zifeihan · Pull Request #748 · openjdk/jdk25u-dev · GitHub (8390521: RISC-V: Clean up vector register dispatch in MachSpillCopyNode::implementation) – 为RISC-V重构矢量寄存器SPILL相关代码实现
- 8390521: RISC-V: Clean up vector register dispatch in MachSpillCopyNode::implementation by zifeihan · Pull Request #3040 · openjdk/jdk21u-dev · GitHub (8390521: RISC-V: Clean up vector register dispatch in MachSpillCopyNode::implementation)
- 8390521: RISC-V: Clean up vector register dispatch in MachSpillCopyNode::implementation by zifeihan · Pull Request #4643 · openjdk/jdk17u-dev · GitHub (8390521: RISC-V: Clean up vector register dispatch in MachSpillCopyNode::implementation)
Java重要新特性JEP 544: AOT静态编译(Ahead-of-Time Code Compilation)RISC-V移植工作进展:
与社区生态伙伴沟通协作,已将JEP 483 and JEP 515特性移植到RISC-V平台并合入JDK主线:
- 8390102: RISC-V: Support AOT Code Cache by cczdsq · Pull Request #32311 · openjdk/jdk · GitHub (8390102: RISC-V: Support AOT Code Cache) – JEP 483 and JEP 515特性在RISC-V上的移植
- 8391431: RISC-V: AOTCodeTest.java fails after JDK-8388288 with fastdebug by zifeihan · Pull Request #32592 · openjdk/jdk · GitHub (8391431: RISC-V: AOTCodeTest.java fails after JDK-8388288 with fastdebug) – 为RISC-V相关AOT失败用例修复
- 8390614: RISC-V: Support VerifyOops for AOT caching stub and code by DingliZhang · Pull Request #32438 · openjdk/jdk · GitHub (8390614: RISC-V: Support VerifyOops for AOT caching stub and code) – 为RISC-V添加AOT VerifyOops支持
- https://github.com/openjdk/jdk/pull/33081 (8393051: RISC-V: Check SATP mode when loading the AOT code cache) – 为RISC-V添加AOT地址模式比对
- 8390914: [leyden] add missing relocations for addresses recorded in AOT code cache by vnkozlov · Pull Request #32491 · openjdk/jdk · GitHub (8390914: [leyden] add missing relocations for addresses recorded in AOT code cache) – 为RISC-V添加缺失的AOT重定位信息
相关JEP提案:
- JEP 483: Ahead-of-Time Class Loading & Linking (JEP 483: Ahead-of-Time Class Loading & Linking)
- JEP 515: Ahead-of-Time Method Profiling (JEP 515: Ahead-of-Time Method Profiling)
Go
本期提出的主线CL:
- 837345: internal/runtime/atomic: fix Xaddint64 return value on riscv64 | https://go-review.googlesource.com/c/go/+/837345 修复 atmoic xadd64 位 错误使用 movw
- 844385: cmd/compile: implement clobberdead mode on riscv64 | https://go-review.googlesource.com/c/go/+/844385 添加 clobber dead 模式
- 844366: runtime: crash the GC at clobberdead pointer on riscv64 | https://go-review.googlesource.com/c/go/+/844366 使能runtime clobber dead 模式
本期审阅的主线CL:
- 825684: cmd/compile: use BINV/BINVI for single bit flip on riscv64 | https://go-review.googlesource.com/c/go/+/825684 zbb 反转位支持
- 848545: runtime: improve CALLFN macro for riscv64 | https://go-review.googlesource.com/c/go/+/848545 使用 MOV 提升函数调用性能
- 847794: riscv64: fix c.j offset decoding | https://go-review.googlesource.com/c/arch/+/847794 修复 cj 指令编码错误
- 807980: cmd/compile: inline constant sized memclrNoHeapPointers calls on riscv64 | https://go-review.googlesource.com/c/go/+/807980 内联清零内存算法
- 801683: runtime: save RISC-V vector registers state during async preemption | https://go-review.googlesource.com/c/go/+/801683 异步抢占时保存 v 寄存器
社区动态
RuyiSDK邀您一同参与第六届RISC‑V中国峰会,RuyiSDK将带来演讲与海报展示:RuyiSDK将亮相第六届RISC‑V中国峰会,现场将带来主题演讲以及海报展示,并在开源社区D15展位展示多种RuyiSDK应用方案,欢迎各位开发者到场交流。
项目资源入口
获取更多资讯、下载最新工具、查阅硬件适配资料或参与社区共建,欢迎通过以下官方渠道访问:
- RuyiSDK 官网:ruyisdk.org
- RISC-V 开发板与操作系统支持矩阵:matrix.ruyisdk.org
- RISC-V 开发板应用示例库:boards.ruyisdk.org
- RuyiSDK 技术社区(交流、投稿、问题反馈):ruyisdk.cn
- 官方工具下载页面:ruyisdk.org/downloads
- RuyiSDK 开源组织仓库:github.com/ruyisdk/