RuyiSDK 双周进展汇报 第 072 期·2026 年 07 月 07 日
卷首语
各位 RuyiSDK 的开发者伙伴,大家好!过去两周,RuyiSDK 各核心组件持续稳步推进,本期有几项亮点值得关注。
运行时方面,V8 持续完善 ZVFH 半精度浮点扩展支持,为 Liftoff WebAssembly SIMD 开启 ZVFH 并实现 fp16 舍入运算指令;OpenJDK 的 JEP 401(值类与对象)移植再进一步,已完成 RISC-V 平台模板解释器模块支持,在纯解释模式下跑通相关测试用例,开始推进 C1 与 C2 JIT 模块适配。
工具链方面,GCC 完成 ruyisdk-gcc 16.1 与 binutils 2.46 的整合,支持所有 2026 年 6 月前已批准的 RISC-V 扩展及全面 RV Profiles;GLIBC 在玄铁 C908 平台完成 memset、memmove 初步调优;LLVM 提供 RISC-V msan 功能并合入多项 P 扩展 codegen 与 intrinsic 支持。
开发者工具方面,软件源更新 GNU 与 LLVM 工具链至 0.20260625.0 版本,新增 SpacemiT K3 Pico-ITX 设备支持;VSCode 与 Eclipse 插件新发布 0.1.5 版本。
更多进展详见正文,欢迎前往官网下载页面下载RuyiSDK试用并在 GitHub 或社区中反馈建议,期待更多伙伴一起共建 RISC‑V 软件开发生态。
包管理器和IDE插件工具都提供了多种下载或安装方式,您可以任意选择一种:
-
RuyiSDK 包管理器 0.50.0
[!NOTE]
RISC-V 用户可以使用pip安装ruyi,但由于ruyi依赖的部分 Python
库暂未在 PyPI 上提供 RISC-V 架构的预编译包,安装ruyi时 Python
包管理器会尝试从源代码编译安装这些依赖,可能非常耗时或编译失败。如果您在 RISC-V 设备上安装
ruyi时遇到问题,建议使用其他安装方法。对于ruyi的单文件二进制发行版,您必须将下载的文件重命名为一字不差的ruyi才能正常使用。请注意:从 RuyiSDK 0.48.0 开始,Ubuntu 22.04 LTS 与 Python 3.10 环境不再受到支持。相关用户,尤其是发行版打包者、CI 环境维护者与仍在使用旧版 Python 运行环境的用户,在升级前请提前确认兼容性影响并完成验证。
-
RuyiSDK VSCode Extension 0.1.5

- VSCode/VSCodium Extensions 中搜索
RuyiSDK关键字查询 安装 RuyiSDK 插件 - 手动下载安装 (Install from VSIX):
- 使用文档
- VSCode/VSCodium Extensions 中搜索
-
RuyiSDK Eclipse Plugins 0.1.5

- 在线安装方式: Eclipse IDE → Help → Install New Software… → Add… → Location: RuyiSDK Eclipse Plugins Update Site
- 手动下载安装:
- 使用文档
每一次版本的迭代,都离不开社区伙伴的反馈与贡献。下个版本计划于 7 月下旬发布,我们将持续给您带来更新!我们诚挚邀请您常来 RuyiSDK 技术社区 交流想法,共同成长。
基础开发环境
包管理器
由于 RuyiSDK 发版周期调整,RuyiSDK 包管理器的 0.51.0 版本预期将在 7 月底正式发布。欢迎下载 RuyiSDK 包管理器当前最新版本 0.50.0 试用。
RuyiSDK 团队仍在常态化维护 RuyiSDK 软件源。如您已有 RuyiSDK 包管理器了,您可通过 ruyi update 获取近两周的更新:我们保证这些内容兼容 RuyiSDK 包管理器的近 3 个正式版本。
目前有以下内容正在开发中:
- 迁移大部分 RuyiSDK 打包脚本到新的
ruyi admin build-package打包工作流。
本次 RuyiSDK 软件源的更新主要包含了以下内容:
- 更新软件包:
analyzer/dynamorio-riscv: DynamoRIO RISC-V 性能分析工具,11.91.20630 版本。board-util/wlink: 社区独立实现的 WCH-Link 刷写与调试工具,0.1.2 版本。source/opencv: OpenCV 上游源码,4.13.0 版本。感谢 Tanmay Gulhane 的贡献!toolchain/gnu-ruyisdk: 由 RuyiSDK 团队维护、构建的 GNU 工具链,0.20260625.0 版本。在 GNU binutils 2.46、GCC 16.1.1、glibc 2.43 的基础上支持了所有 2026 年 6 月前已批准(ratified)的 RISC-V 扩展。toolchain/llvm-ruyisdk: 由 RuyiSDK 团队维护、构建的 LLVM 工具链,0.20260625.0 版本。在 LLVM 22.1.8 的基础上支持了所有 2026 年 6 月前已批准(ratified)的 RISC-V 扩展,具体是新增了对 Svrsw60t59b 与 Ziccid 的支持。
- 新增设备支持:
- SpacemiT K3 Pico-ITX: 兼容各类 Bianbu 镜像。感谢 weilinfox 的贡献!
- 完善了设备支持:
board-image/armbian-starfive-visionfive2-minimal: StarFive VisionFive2 的 Armbian。感谢 SmulllLu 的贡献!
欢迎试用或来上游围观;您的需求是我们迭代开发的目标和动力。您也可以亲自参与
RuyiSDK 软件的打包与分发工作:目前您可以直接在 GitHub 上查看、修改我们的部分打包脚本与软件源仓库。今后,按照本年度的开发计划,我们也将支持有权的第三方贡献者通过程序化的方式上传软件包、系统镜像等分发文件,以便利打包工作。
RuyiSDK VSCode 插件
- 更新 i18n 翻译
- 抑制启动时 ruyi detect 信息
- 支持新闻阅读本地已有缓存
- 新增为虚拟环境的 sysroot 使用 projection
- 新增软件源管理
RuyiSDK Eclipse 插件
- 项目: 发布 0.1.5 。
- venv: 支持新的 sysroot 配置方式。
- venv: 根据是否包含 sysroot 筛选列出的工具链。
- venv: 让用户在向导中始终检查虚拟环境文件夹的名称。
- venv: 向项目右键菜单中添加删除 venv 的操作。
- packages: 从树中移除多余的有关包状态的提示内容。
版本测试及遗留问题
基础组件
基础C库
- GLIBC:
- 实现了 strpbrk 和 strspn 的通用版本 RVV 优化。
- 在阿里玄铁 C908 平台进一步调优了基于 RVV 和 xthead 标量访问扩展的 memcpy 平台特定优化,并完成了 memset 和 memmove 的初步调优。
- newlib:
- 先前提交到 newlib 上游的 rawmemchr, memcmp 的通用版本 RVV 优化已合入主线(https://sourceware.org/pipermail/newlib/2026/022437.html)。
- 移植了 atanh 到当前的 newlib 向量数学库框架。
GCC
- 完成了ruyisdk-gcc 16.1,ruyisdk-binutils 2.46的整合工作,支持多种新扩展及全面的RV Profiles
- Rebase了Zcmt的Binutils支持,重新设计了link relaxation实现
- 提交了Zama16b和Ziccamoc扩展的支持patch
- 修复了Zvdota扩展的altfmt识别问题,已合入上游
- 正在推进P扩展的intrinsic支持更新中
LLVM
- [compiler-rt][msan] Add MSan support for RISC-V 64-bit Linux | https://github.com/llvm/llvm-project/pull/206674 提供RISC-V msan 功能
本期提交 PR 如下:
- [RISCV][P-ext] Select signed widening add/sub accumulate to wadda/wsuba
[RISCV][P-ext] Select signed widening add/sub accumulate to wadda/wsuba by sihuan · Pull Request #205475 · llvm/llvm-project · GitHub
添加 wadda/wsuba 的 codegen 支持
已合并 - [RISCV][P-ext] Add codegen for packed reduction sum
https://github.com/llvm/llvm-project/pull/206004
添加 packed reduction sum (predsum[u].*)的 codegen 支持
已合并 - [RISCV][P-ext] Avoid redundant accumulator extend for reduction sum
[RISCV][P-ext] Avoid redundant accumulator extend for reduction sum by sihuan · Pull Request #206430 · llvm/llvm-project · GitHub
优化 reduction sum 生成的多余 sext.w/zext.w 指令
已合并 - [Clang][RISCV] packed reduction sum intrinsics
https://github.com/llvm/llvm-project/pull/206441
添加 packed reduction sum 的 intrinsic 支持
已合并 - [RISCV][P-ext] Support Packed Merge.
https://github.com/llvm/llvm-project/pull/207110
添加 Packed Merge 的 intrinsic 支持
已合并 - [RISCV][P-ext] Use brev8 for bitreverse with Zbkb
[RISCV][P-ext] Use brev8 for bitreverse with Zbkb by XChy · Pull Request #207338 · llvm/llvm-project · GitHub
当存在 Zbkb 拓展时将 bitreverse 下降为 brev8 指令,完成 FIXME
已合并 - [RISCV] Canonicalize the true operand of vselect to fold more vmerge.vvm instructions
https://github.com/llvm/llvm-project/pull/206449
将 vselect 的 true 操作数规范化,以便折叠更多的 vmerge.vvm 指令
已合并 - [VectorCombine] Use TCK_CodeSize for size-optimized functions
https://github.com/llvm/llvm-project/pull/202207
改进 size-optimized functions 下 VectorCombine 的成本模型选择,使其使用TCK_CodeSize
已合并 - [VectorCombine] foldShuffleChainsToReduce - add FADD/FMUL handling
https://github.com/llvm/llvm-project/pull/201302
为foldShuffleChainsToReduce增加FADD/FMUL处理,提升向量归约链折叠能力
已合并 - [CodeGen] Fix ShrinkWrap crash when FindIDom receives empty predecessor/successor list
https://github.com/llvm/llvm-project/pull/198995
修复 ShrinkWrap 在FindIDom收到空 predecessor/successor 列表时的崩溃问题
已合并 - [LV][RISCV] Add crash test for wide pointer stride in convertToStridedAccesses
https://github.com/llvm/llvm-project/pull/200985
为convertToStridedAccesses中 wide pointer stride 场景补充 RISC-V 崩溃回归测试
已合并 - [RISCV][P-ext] Support packed reverse intrinsics
[RISCV][P-ext] Support packed reverse intrinsics by XChy · Pull Request #207574 · llvm/llvm-project · GitHub
支持 packed reverse intrinsics
正在 review - [RISCV][P-ext] Improve codegen for packed reverse intrinsics
[RISCV][P-ext] Improve codegen for packed reverse intrinsics by XChy · Pull Request #207575 · llvm/llvm-project · GitHub
优化 packed reverse intrinsics codegen
正在 review - [RISCV][P-ext] Add codegen for packed absolute difference sum
[RISCV][P-ext] Add codegen for packed absolute difference sum by sihuan · Pull Request #207314 · llvm/llvm-project · GitHub
添加 packed absolute difference sum codegen 支持
正在 review - [RISCV][LLVM][Clang] Add experimental Zvvm config intrinsics
https://github.com/llvm/llvm-project/pull/203774
添加 Zvvm config 相关 intrinsics 支持
正在 review,遇到和LLVM上游和RISC-V规范冲突问题,暂时需要等待规范更新
V8
本期提交patch如下:
- [riscv] sandbox: Replace CPT with TPT
[RISC-V][沙箱] 将代码指针表(CPT)替换为可信指针表(TPT)(https://chromium-review.googlesource.com/c/7983344) - [riscv] Add RISC-V ZVFH extension to CPU feature list
[RISC-V] 将ZVFH向量半精度浮点扩展添加至CPU特性标识列表(https://chromium-review.googlesource.com/c/7980709) - [riscv][maglev] Sign extend index register in DataView bounds check
[RISC-V][Maglev] 在DataView边界校验逻辑中对索引寄存器执行符号扩展(https://chromium-review.googlesource.com/c/7980016) - [Revert “[riscv][maglev] Sign extend index register in DataView bounds check”]
[回退提交] 撤销上一条Maglev索引寄存器符号扩展修改(https://chromium-review.googlesource.com/c/7992036) - [Reland [riscv][maglev] Sign extend index register in DataView bounds check]
[重提提交] 重新合入Maglev索引寄存器符号扩展修复(https://chromium-review.googlesource.com/c/7992037) - [riscv] Enable ZVFH support for Liftoff WebAssembly SIMD
[RISC-V] 为Liftoff WebAssembly SIMD开启ZVFH向量半精度浮点扩展支持(https://chromium-review.googlesource.com/c/7980710) - [riscv][wasm][jspi] Initialize suspend builtin return value
[RISC-V][WASM][JSPI] 初始化线程挂起内置函数的返回值(https://chromium-review.googlesource.com/c/8017623) - [riscv]Implement fp16 rounding operations for RISCV
[RISC-V] 实现半精度浮点(fp16)舍入运算指令(https://chromium-review.googlesource.com/c/8017624) - [riscv] Unify floating-point rounding ops to support fp16
[RISC-V] 统一浮点舍入运算底层逻辑,新增fp16半精度浮点适配(https://chromium-review.googlesource.com/c/8028101) - [riscv][compiler] Scheduler resource allocation table
[RISC-V][编译器] 新增指令调度器资源分配表(https://chromium-review.googlesource.com/c/8037086)
OpenJDK
本期提交的JDK-25u主线patch:
- 8383601: RISC-V: ShenandoahBarrierSetAssembler::load_reference_barrier calls "weak" on "phantom" path by RealFYang · Pull Request #541 · openjdk/jdk25u-dev · GitHub (8383601: RISC-V: ShenandoahBarrierSetAssembler::load_reference_barrier calls “weak” on “phantom” path) 为RISC-V平台回合Shenandoah GC一处load_reference_barrier调用对象错误问题修复
本期审阅并合入的JDK主线patch:
- 8382691: RISC-V: Clean up redundant restore_locals() in TemplateTable::invokeinterface by zifeihan · Pull Request #30865 · openjdk/jdk · GitHub (8382691: RISC-V: Clean up redundant restore_locals() in TemplateTable::invokeinterface) 为ARM64和RISC-V平台移除一处模板解释器接口函数调用场景非必要的locals变量恢复操作以提升性能
- 8382606: Enable VectorMinMaxTransforms.java IR tests for RISC-V by DingliZhang · Pull Request #30837 · openjdk/jdk · GitHub (8382606: Enable VectorMinMaxTransforms.java IR tests for RISC-V) 为RISC-V平台打开一项掩码版本矢量访存白盒测试用例
- 8382522: Disable stringop-overflow in safepointMechanism.cpp by DingliZhang · Pull Request #30823 · openjdk/jdk · GitHub (8382522: Disable stringop-overflow in safepointMechanism.cpp) 为RISC-V平台修复一处GCC编译器构建JDK报警问题
- 8377715: Thawing frame can undo deoptimization by pchilano · Pull Request #30634 · openjdk/jdk · GitHub (8377715: Thawing frame can undo deoptimization) 为RISC-V平台打开一项掩码版本矢量访存白盒测试用例
- 8382878: RISC-V: Missing InlineSkippedInstructionsCounter in ZGC barriers stubs by zifeihan · Pull Request #30893 · openjdk/jdk · GitHub (8382878: RISC-V: Missing InlineSkippedInstructionsCounter in ZGC barriers stubs) 为RISC-V平台修复一处ZGC场景内敛指令数评估准确性问题
- 8382934: LateInlineQueueDrainTest.java fails without diagnostic option by sendaoYan · Pull Request #30901 · openjdk/jdk · GitHub (8382934: LateInlineQueueDrainTest.java fails without diagnostic option) 修复一处jtreg回归测试用例选项设置缺陷
- 8380753: C2: RegMask::find_first_set() incorrectly returns partially contained sets for scalable vector registers by shqking · Pull Request #30890 · openjdk/jdk · GitHub (8380753: C2: RegMask::find_first_set() incorrectly returns partially contained sets for scalable vector registers) 为ARM64和RISC-V平台修复一处C2 JIT编译器可扩展矢量寄存器分配问题
- 8383196: Shenandoah: Interpreter barriers clobber interpreter registers by shipilev · Pull Request #30945 · openjdk/jdk · GitHub (8383196: Shenandoah: Interpreter barriers clobber interpreter registers) 为ARM64和RISC-V平台修复一处模板解释器场景寄存器使用缺陷
- 8383601: RISC-V: ShenandoahBarrierSetAssembler::load_reference_barrier calls "weak" on "phantom" path by shipilev · Pull Request #30990 · openjdk/jdk · GitHub (8383601: RISC-V: ShenandoahBarrierSetAssembler::load_reference_barrier calls “weak” on “phantom” path) 为RISC-V平台修复一处Shenandoah GC一处load_reference_barrier调用对象错误问题
Java重要新特性JEP 401: 值类与对象(Value Classes and Objects)的调研和移植工作进展:
已完成RISC-V平台模板解释器模块对JEP 401的支持,能够在纯解释模式下跑通JEP 401相关测试用例,成功通过兼容性测试。
目前已着手调试和实现RISC-V平台C1& C2 JIT模块对JEP 401的支持,优先解决兼容性问题,短期目标能够在解释模式下跑通JEP 401新增测试用例。
本期详细修改如下:
- [jep401-riscv-port] jep 401 initial interpreter update · openjdk/valhalla@2e7c204 · GitHub
- [jep401-riscv-port] Add profile-related methods · openjdk/valhalla@3976354 · GitHub
- [jep401-riscv-port] Implement LIR_Assembler::emit_profile_inline_type · openjdk/valhalla@9bda478 · GitHub
- [jep401-riscv-port] Fix LIRGenerator::profile_null_free_array · openjdk/valhalla@de1c629 · GitHub
Go
- 796060: runtime: enable vgetrandom vDSO support for linux/riscv64 | https://go-review.googlesource.com/c/go/+/796060 开启 vdso 提升 crypto 性能
- 796100: runtime: use sigaction syscalls when cgo is enabled on riscv64 | https://go-review.googlesource.com/c/go/+/796100 启动sigaction
QEMU模拟器
- target/riscv/kvm: skip FP/Vector sync on KVM_PUT_RUNTIME_STATE 减少寄存器同步压力