RuyiSDK 双周进展汇报 第 076 期 · 2026 年 09 月 15 日
卷首语
各位 RISC-V 开发者与 RuyiSDK 社区伙伴,大家好!
在基础开发环境方面,包管理器按照调整后的发版节奏,0.53.0 版本预计 9 月底正式发布,当前 0.52.0 版本可继续使用。团队在维护软件源的同时,正在推进二进制包 ABI 兼容性检测与报告基础设施,以及更多官方维护软件包的 macOS 打包工作。RuyiSDK IDE 近期新增了安装进度显示、virtual workspaces 支持,并为已测试语言推荐第三方插件,同时修复了底栏版本按钮弹窗等细节问题。
社区与内容建设方面,软件源完成了一轮镜像更新与清理:多个 Armbian、RevyOS、OpenWrt 等板级镜像同步至新版本,上游停止维护的 XFCE 镜像按状态移除。开发板支持矩阵持续扩充,HiFive Premier P550、Milk-V Duo S 及 SpacemiT K3 CoM260 Kit 的测试报告得到更新或新增;
基础组件领域的迭代同样密集。基础 C 库方面,GLIBC 与 newlib 分别将多组数学函数移植到向量化框架;GCC 侧 Sspmp 扩展支持已合入 Binutils 上游,P 扩展指令别名与 intrinsics 测试问题得到修复;LLVM 围绕 SLP 向量化、P 扩展 intrinsic 与 Sspmp 等提交多项 PR,多数已进入主线;V8 修复了原子操作、浮点比较、符号扩展等一系列缺陷,稳定性进一步提升;OpenJDK 合入 Zfa、Zvbc、Zvfhmin 等扩展的自动使能支持,并启动 Project Leyden 的 AOT 静态编译(JEP 544)移植调研;Go 在分支与跳转合法性校验、以及 RVV 扫描等方面持续推进;QEMU 新增了 P 扩展的 TCG 测试用例。
欢迎阅读正文,了解更详尽的更新内容,并期待您与我们一同参与社区共建。
获取更多资讯、下载最新工具或参与技术讨论,欢迎通过文章最下方的渠道找到我们。
基础开发环境
包管理器
由于 RuyiSDK 发版周期调整,RuyiSDK 包管理器的 0.53.0 版本预期将在 9 月底正式发布。欢迎下载 RuyiSDK 包管理器当前最新版本 0.52.0 试用。
RuyiSDK 团队仍在常态化维护 RuyiSDK 软件源。如您已有 RuyiSDK 包管理器了,您可通过 ruyi update 获取近两周的更新:我们保证这些内容兼容 RuyiSDK 包管理器的近 3 个正式版本。
目前有以下内容正在开发中:
- 关于
ruyi二进制包 ABI 兼容性检测与报告的基础设施。 - 更多 RuyiSDK 官方维护软件包的 macOS 打包工作。
欢迎试用或来上游围观;您的需求是我们迭代开发的目标和动力。
RuyiSDK IDE
- feat: 安装软件包时显示下载进度
- feat: 支持 virtual workspaces
- chore: 更新插件描述
- feat: 为已经过测试的数种语言推荐第三方插件
- fix: 修复底栏 ruyi 版本按钮弹窗
- chore: 测试简化的 VSCodium 仓库
社区与内容建设
packages-index 资源更新
本次 RuyiSDK 软件源的更新主要包含了以下内容:
- 更新软件包:
board-image/ubuntu-server-riscv64-sifive-unmatched: 修正下载链接。board-image/revyos-sg2042: 更新版本。board-image/armbian-spacemit-musepipro-minimal: 更新版本。board-image/armbian-starfive-visionfive2-minimal: 更新版本、移除上游不再维护的版本。board-image/armbian-orangepi-rv2-minimal: 更新版本、移除上游不再维护的版本。board-image/openwrt-sifive-unmatched: 更新版本。
- 移除软件包:
board-image/armbian-orangepi-rv2-xfce: 上游不再维护 XFCE 构建、且不再提供下载,故移除软件包。board-image/armbian-spacemit-musepipro-xfce: 上游不再维护 XFCE 构建、且不再提供下载,故移除软件包。board-image/armbian-starfive-visionfive2-xfce: 上游不再维护 XFCE 构建、且不再提供下载,故移除软件包。
感谢 SmulllLu 的贡献!
您也可以亲自参与
RuyiSDK 软件的打包与分发工作:目前您可以直接在 GitHub 上查看、修改我们的部分打包脚本与软件源仓库。今后,按照本年度的开发计划,我们也将支持有权的第三方贡献者通过程序化的方式上传软件包、系统镜像等分发文件,以便利打包工作。
开发板支持矩阵
- 更新 HiFive Premier P550 的 Debian 中英文测试报告。PR #393
- 更新 Milk-V Duo S 的 Arch Linux、Debian、RT-Thread、RT-Thread Smart 和 Ubuntu 24.04 中英文测试报告。PR #394、PR #395、PR #396、PR #397、PR #398
- 新增 SpacemiT K3 CoM260 Kit 的 Buildroot 中英文测试报告。PR #399
开发板示例仓库
- 统一 SpaceMIT 厂商名称在开发板元数据及中英文索引中的拼写。PR #43
- 为 K3 Pico-ITX 新增 ROS 2 课程入口和第一章课程元数据,并将课程文档来源切换至 GitHub 镜像。PR #44、PR #45
- 开发板文档前端新增 ROS 2 课程页面及中英文访问路由,并优化课程列表和课程正文的移动端显示。PR #9、PR #10
基础组件
基础C库
- GLIBC:
- 移植了 log10, log10f, log10p1, log10p1f, log1p, log1pf 至现有的 glibc libmvec 框架。
- newlib:
- 移植了 atan2pi, exp2, cbrt, cospi, exp10, log2p1 至现有的 newlib 向量数学框架。
GCC
- 提交了 Sspmp 扩展的工具链支持,已合入 Binutils 上游:
- 补充了 P 扩展的 Binutils 指令别名支持,,修复了 intrinsics api 测试中发现的一些问题
- RISE-CI 的维护 PR 通过了会议审核,已经正式合入 RISE-CI 上游代码中
- ci: migrate GCC post-commit CI ownership and operations to RISE by pz9115 · Pull Request #4 · riseproject-dev/gcc-postcommit-ci · GitHub
- ci: migrate GCC pre-commit CI and Patchwork operations to RISE by pz9115 · Pull Request #1 · riseproject-dev/gcc-precommit-ci · GitHub
- Update RISE-CI toolchain by pz9115 · Pull Request #1 · riseproject-dev/riscv-gnu-toolchain-ci · GitHub
LLVM
本期提交 PR 如下
- [RISCV][SLP] Use common alignment when checking constant-stride loads
[RISCV][SLP] Use common alignment when checking constant-stride loads by imkiva · Pull Request #222520 · llvm/llvm-project · GitHub
修复 SLP 常量步长加载合法性检查中的对齐判断,使用CommonAlignment,避免将 32 位加载扩宽为未对齐的 64 位 RVV 访问而触发SIGBUS。已合并 - [RISCV][SLP] Precommit strided-load alignment tests (NFC)
[RISCV][SLP] Precommit strided-load alignment tests (NFC) by imkiva · Pull Request #222863 · llvm/llvm-project · GitHub
补充 RV32/RV64 下 SLP 步长加载对齐测试,覆盖相邻加载组对齐不同及严格对齐场景,为后续合法性修复提供回归测试。已合并 - [RISCV] Support Packed Multiplication with Horizontal Addition
[RISCV] Support Packed Multiplication with Horizontal Addition by XChy · Pull Request #218430 · llvm/llvm-project · GitHub
实现 packed multiplication with horizontal addition 的 Clang、LLVM intrinsic、后端选择及 RV32/RV64 测试。上期正在 review,本期已合并 - [InstCombine] Fold
uitofp nnegcomparisons above the signed maximum
[InstCombine] Fold `uitofp nneg` comparisons above the signed maximum by imkiva · Pull Request #221118 · llvm/llvm-project · GitHub
在浮点比较折叠中将uitofp nneg的上界收紧为有符号整数最大值,简化超出其有效范围的比较。正在 review - [RISCV][P-ext] Add packed multiply-parts accumulate intrinsics
[RISCV][P-ext] Add packed multiply-parts accumulate intrinsics by sihuan · Pull Request #222571 · llvm/llvm-project · GitHub
为 LLVM 和 Clang 实现 RISC-V P 扩展的 packed multiply-parts accumulate 系列 intrinsic,并添加相应的指令选择支持。已合并 - [RISCV][P-ext] Fold an add of a multiply-parts product into the accumulate form
[RISCV][P-ext] Fold an add of a multiply-parts product into the accumulate form by sihuan · Pull Request #222748 · llvm/llvm-project · GitHub
将 multiply-parts 乘积与加法组合折叠为累加形式,使mul.hXX加add的序列生成单条macc.hXX指令。已合并 - [RISCV][P-ext] Support Packed Element Extract
[RISCV][P-ext] Support Packed Element Extract by XChy · Pull Request #221565 · llvm/llvm-project · GitHub
为 RISC-V P 扩展新增 Packed Element Extract intrinsic 支持。已合并 - [RISCV][MC]Fix encoding for psati.dw/dh
[RISCV][MC]Fix encoding for psati.dw/dh by ChunyuLiao · Pull Request #221889 · llvm/llvm-project · GitHub
修正psati.dw和psati.dh的立即数编码,使饱和位宽分别按uimm5+1和uimm4+1解释。已合并 - [RISCV] Disable shrink wrapping for SiFive CLIC and QCI handlers
[RISCV] Disable shrink wrapping for SiFive CLIC and QCI handlers by zeyi2 · Pull Request #218347 · llvm/llvm-project · GitHub
禁用 SiFive CLIC 和 QCI 中断处理函数的 shrink wrapping 优化。已合并 - [RISCV]Support Sspmp, Sspmpen and Smpmpdeleg Extensions
[RISCV]Support Sspmp, Sspmpen and Smpmpdeleg Extensions by ChunyuLiao · Pull Request #207696 · llvm/llvm-project · GitHub
新增 Sspmp、Sspmpen 和 Smpmpdeleg 扩展支持。已合并 - [RISCV] Add MC support for FCVT.H.Q and FCVT.Q.H
https://github.com/llvm/llvm-project/pull/220176
添加FCVT.H.Q和FCVT.Q.H两条浮点转换指令的 MC 支持。已合并 - [Clang][RISCV] Add packed widening add accumulate intrinsics
[Clang][RISCV] Add packed widening add accumulate intrinsics by Michael-Chen-NJU · Pull Request #221622 · llvm/llvm-project · GitHub
为 RISC-V P 扩展新增 packed widening add accumulate intrinsic 支持,并完善 RV32/RV64 CodeGen 覆盖。正在 review - [RISCV][P-ext] Support Packed Element Insert
[RISCV][P-ext] Support Packed Element Insert by TelGome · Pull Request #222268 · llvm/llvm-project · GitHub
为 RISC-V P 扩展新增 Packed Element Insert intrinsic 支持。正在 review
此外,向 RISC-V P 扩展规范仓库 riscv/riscv-p-spec 提交了以下修正:
- Rename
__riscv_pm2wadd{,a}su_u64to_i64
Rename __riscv_pm2wadd{,a}su_u64 to _i64 by sihuan · Pull Request #361 · riscv/riscv-p-spec · GitHub
将__riscv_pm2wadd{,a}su_u64重命名为_i64后缀,使 intrinsic 命名与有符号返回类型一致。已合并 - Take an unsigned rs1 in
__riscv_sshl_u32/__riscv_sshlr_u32
Take an unsigned rs1 in __riscv_sshl_u32/__riscv_sshlr_u32 by sihuan · Pull Request #362 · riscv/riscv-p-spec · GitHub
将__riscv_sshl_u32和__riscv_sshlr_u32的rs1参数改为无符号类型,修正规范中的参数类型错误。已合并
V8
本期修复了若干bug,提升了RISC-V V8的稳定性,提交并合入的patch如下:
- [riscv64] Zero-extend JSDispatchHandle before computing table offsets
[RISC-V] 在计算表偏移前对JSDispatchHandle做零扩展 CL8342529 - [riscv][maglev] Keep Word32 values sign-extended in all producers
[RISC-V][Maglev] 在所有生成节点保持Word32数值带符号扩展 CL8335670 - [riscv] Use or instead of add for decompression
[RISC-V] 使用OR指令替代ADD完成解压缩运算 CL8334087 - [riscv] Sign-extend operands of 32-bit compares in Select
[RISC-V] 在Select节点对32位比较操作数做符号扩展 CL8342851 - [riscv] Sign-extend AMO.W results in simulator
[RISC-V] 在模拟器中对AMO.W原子操作结果进行符号扩展 CL8350097 - [riscv] Fix unordered FP comparison and emit at the consumer
[RISC-V] 修复无序浮点数比较逻辑,在消费端生成指令 CL8360836 - [riscv] Fix input constraint in BuiltinStringFromCharCode::SetValueLocationConstraints()
[RISC-V] 修复BuiltinStringFromCharCode::SetValueLocationConstraints()中的输入寄存器约束 CL8349148 - [riscv][wasm] Fix Liftoff sub-word atomic RMW
[RISC-V][WASM] 修复Liftoff中半字粒度原子读改写(RMW)操作 CL8378121 - [riscv] Preserve vector registers in PushCallerSaved
[RISC-V] 在PushCallerSaved函数中保留向量寄存器 CL8395546
OpenJDK
本期审阅并合入的JDK主线PR:
- 8388035: RISC-V: Auto-enable Zfa extension features by zifeihan · Pull Request #31853 · openjdk/jdk · GitHub (8388035: RISC-V: Auto-enable Zfa extension features) – 为RISC-V添加Zfa扩展的自动探测和使能
- 8388075: RISC-V: Auto-enable Zvbc extension features by zifeihan · Pull Request #31862 · openjdk/jdk · GitHub (8388075: RISC-V: Auto-enable Zvbc extension features) – 为RISC-V添加Zvbc扩展的自动探测和使能
- 8388399: RISC-V: Enable vector FP16 conversions with Zvfhmin by DingliZhang · Pull Request #31934 · openjdk/jdk · GitHub (8388399: RISC-V: Enable vector FP16 conversions with Zvfhmin) – 为RISC-V添加Zvfhmin半精度浮点矢量转换支持
- 8388459: RISC-V: Add specialized CMove patterns with zero operand by zifeihan · Pull Request #31958 · openjdk/jdk · GitHub (8388459: RISC-V: Add specialized CMove patterns with zero operand) – 为RISC-V优化零操作数场景条件Move优化
- 8321012: RISC-V: C2 ExtractUB by Elain520 · Pull Request #31880 · openjdk/jdk · GitHub (8321012: RISC-V: C2 ExtractUB) – 为RISC-V添加矢量无符号字节元素提取优化
本期审阅并合入的JDK-updates PRs:
- 8387381: RISC-V: assert failed with fastdebug build on systems with different core types by zifeihan · Pull Request #653 · openjdk/jdk25u-dev · GitHub (8387381: RISC-V: assert failed with fastdebug build on systems with different core types) – 为RISC-V修复异构CPU探测断言错误
- 8383601: RISC-V: ShenandoahBarrierSetAssembler::load_reference_barrier calls "weak" on "phantom" path by RealFYang · Pull Request #4407 · openjdk/jdk17u-dev · GitHub (8383601: RISC-V: ShenandoahBarrierSetAssembler::load_reference_barrier calls “weak” on “phantom” path) – 为RISC-V修复ShenandoahGC Barrier调用对象错误
Java重要新特性JEP 544: AOT静态编译(Ahead-of-Time Code Compilation)RISC-V移植工作进展:
已初步开展调研工作 (JEP 401: Value Objects (Preview)),先通过在X86/ARM64平台调试,逐步熟悉和了解该特性的设计思路和代码实现细节,为后续将该特性移植到RISC-V平台做好准备。
JEP 544提案在X86/ARM64平台详细实现:
- 8380476: Implement JEP 544: Ahead-of-Time Code Compilation by vnkozlov · Pull Request #30778 · openjdk/jdk · GitHub (8380476: Implement JEP 544: Ahead-of-Time Code Compilation)
Go
本期提出的主线CL:
- 830525: cmd/internal/obj/riscv: reject extra operands for single-register branches | https://go-review.googlesource.com/c/go/+/830525 – 拒绝分支汇编代码中多余的寄存器
- 830544: cmd/internal/obj/riscv: reject extra operands for jumps | https://go-review.googlesource.com/c/go/+/830544 – 拒绝跳转代码中多余的寄存器
- 832084: internal/runtime/gc/scan: use RVV for span scanning on riscv64 | https://go-review.googlesource.com/c/go/+/832084 – GreenTea GC中添加基于 RVV 的扫描支持
本期审阅的主线CL:
- 821220: cmd/compile/internal/ssa: optimise bit tests on riscv64 | https://go-review.googlesource.com/c/go/+/821220 – 优化 bits 相关指令及测试
- 828344: riscv64: use absolute addresses for branch and jump targets | https://go-review.googlesource.com/c/arch/+/828344 – 由于开启了C扩展,跳转地址使用绝对地址跳转指令
- 827225: cmd/internal/obj/riscv: unify the ADDI immediate split point | https://go-review.googlesource.com/c/go/+/827225 – 低于12bits的加法使用ADDI指令
- 827224: cmd/internal/obj/riscv: use a single ADDI for load/store offsets where possible | https://go-review.googlesource.com/c/go/+/827224 – 对于加载/保存内存指令,条件允许的情况下优先使用ADDI
QEMU
本期为QEMU P扩展添加了tcg测试:
- 在 tests/tcg/riscv 下新增 RV32 和 RV64 汇编测试,测试覆盖算术、移位、乘法、窄化、饱和运算、寄存器重叠以及零寄存器对操作数。
GitHub - mollybuild/qemu at dev-p-020 · GitHub
社区动态
RuyiSDK 软件包页面上线:一站式查取与共建 RISC-V 软硬件开发资源:一站式浏览和查询 RISC-V 开发生态资源。支持按设备或软件包查看开发板支持、系统镜像及相关软件包信息,也欢迎生态伙伴与开发团队接入优质资源,共建 RISC-V 生态。
项目资源入口
获取更多资讯、下载最新工具、查阅硬件适配资料或参与社区共建,欢迎通过以下官方渠道访问:
- RuyiSDK 官网:ruyisdk.org
- RISC-V 开发板与操作系统支持矩阵:matrix.ruyisdk.org
- RISC-V 开发板应用示例库:boards.ruyisdk.org
- RuyiSDK 技术社区(交流、投稿、问题反馈):ruyisdk.cn
- 官方工具下载页面:ruyisdk.org/downloads
- RuyiSDK 开源组织仓库:github.com/ruyisdk/