跳到主要内容

RuyiSDK 双周报

每两周获得最新开发进展

第 050 期·2025 年 08 月 12 日

· 阅读需 9 分钟
xijing21
RuyiSDK 项目经理
xen0n
RuyiSDK 技术主管
狐坂澪夜
RuyiSDK 测试经理

卷首语

欢迎阅读第50期《RuyiSDK双周进展》!

本期,值得欣喜的是:ruyi 现已在 PyPI 同步发布!您只需在 Python 环境中执行 pip install ruyi 命令,即可轻松安装 RuyiSDK 包管理器,开启您的 RISC-V 开发之旅。

如果您在使用过程中遇到任何问题,还可以通过以下方式获得支持:

根据当前规划,下一个开发版本将于 8月26日 发布,我们将持续优化功能体验,为大家带来更多惊喜。期待与您共同见证 RuyiSDK 的成长!

包管理器

RuyiSDK 0.39 对应的包管理器版本也为 0.39.0,已于今日发布。您可移步 GitHub ReleasesPyPIISCAS 镜像源下载体验。

本次 RuyiSDK 包管理器的更新主要包含了以下内容:

  • ruyi 现已在 PyPI 同步发布。只要您有 Python 环境,您就可以使用 pip install ruyi 或类似的命令安装 RuyiSDK 包管理器了。
  • 如用户自定义了软件源 Git 仓库的存放路径,当该仓库当前分支的远端 URL 与 ruyi 的相应配置项不同时,ruyi update 会报错退出了,而不再将用户配置覆盖。
  • 继续打磨 Shell 自动补全:
    • 优化了常规(非自动补全)模式下的 ruyi 启动延迟;
    • 如本地没有同步过软件源,不会在补全命令行时尝试同步了。
  • 工程化迭代:
    • 现在会给每个 PR 进行端到端的集成测试了,以确保常规命令行使用方式不被破坏。
    • 将 Shell 自动补全脚本整合进了 ruyi 源码发行:位于 contrib/shell-completions 目录。发行版打包人员可进行集成了。
    • 为给 Ubuntu 22.04 LTS 打包做好准备:支持以 pytest 6.2.5 运行测试套件了。
    • 在构建 ruyi 的单文件发行版时,为 RISC-V 架构使用了预制的 cffipygit2,以节省构建时间。
    • 简化了 ruyi 的发版工作:支持了自助打 tag 并触发发版流程。

本次 RuyiSDK 软件源的更新主要包含了以下内容:

  • 更新软件包:
    • source/milkv-duo-examples: Milk-V Duo 示例代码,20241219 版本。
  • 完善了设备支持:
    • Milk-V Meles(4/8/16G 变体)的 RevyOS U-Boot:补齐了上游版本。
    • Milk-V Pioneer、Milk-V Meles 的 RevyOS:补齐缺失版本
    • Sipeed LicheeRV Nano 的 buildroot SDK:补齐了上游版本。
  • 工程化迭代:
    • 自动格式化了所有包版本描述,并以 CI 形式确保了新增的包遵循统一格式。

感谢 @Cyl18@weilinfox 的贡献!

欢迎试用或来上游围观;您的需求是我们迭代开发的目标和动力。您也可以亲自参与 RuyiSDK 软件的打包与分发工作:目前您可以直接在 GitHub 上查看、修改我们的部分打包脚本软件源仓库。今后,按照本年度的开发计划,我们也将支持有权的第三方贡献者通过程序化的方式上传软件包、系统镜像等分发文件,以便利打包工作。

IDE

为了方便开发协作,RuyiSDK IDE 插件项目(ruyisdk-eclipse-plugins) 近期进行了一些代码规范化改进,制定了Java Code 规范指南,明确代码样式要求,并对部分代码进行了格式规范化调整。

此外,欢迎对Eclipse插件开发有兴趣的小伙伴加入开发团队,详情参考 J159 RuyiSDK IDE 开发实习生 ,期待您的加入。

GCC

根据社区review建议,修复了部分指令的立即数编码问题,已同步至ruyisdk-binutils仓库

正在实现p扩展的gcc支持,预计本月底完成初步实现

LLVM

根据社区的建议,在 XTHeadVector 拓展开启时一同开启 zfh 拓展,解决 intrinsic 遇到 float16 无法提升的问题。

V8

PLCT 提交并合入的代码:

  1. Add Kasper Lund to RISC-V owners list
    将 RIVOS 贡献者(V8 创始阶段参与者之一)Kapser 加入 V8 RISCV 后端维护者列表
    chromium-review.googlesource.com/c/6826483

  2. [riscv] Optimize SignExtend Opcode emit
    优化 SignExtend 操作码的生成
    chromium-review.googlesource.com/c/6774564

  3. [risc-v] Use sign-extension (via sext.w) to replace slliw when the shift amount is zero
    当移位量为零时(即 slliw rd, rs, 0),使用符号扩展(通过 sext.w)替代 slliw,使代码更规范
    chromium-review.googlesource.com/c/6726075

  4. [riscv][wasm][growable-stacks] Record missing safepoint entry
    实现 wasm 可增长栈功能,记录缺失的安全点入口
    chromium-review.googlesource.com/c/6808523

  5. [riscv][wasm][jspi][sandbox] Avoid writes to StackMemory from sandboxed code
    避免沙箱代码对栈内存进行写入
    chromium-review.googlesource.com/c/6808522

  6. [riscv] Optimize Change [Truncate] and Change [SignExtend] IR emit.
    优化 Change [Truncate] 和 Change [SignExtend] 的中间表示(IR)生成
    chromium-review.googlesource.com/c/6795158

  7. [riscv] Optimize emit of sext.w when CompareZero/WordShl/Word32Shr/Word32Sar
    在 CompareZero/WordShl/Word32Shr/Word32Sar 时优化 sext.w 的生成
    chromium-review.googlesource.com/c/6780050

PLCT 审核并合入的代码:

  1. [riscv][maglev] Fix compilation
    修复 maglev 新特性引起的编译问题
    chromium-review.googlesource.com/c/6831542

  2. [riscv] Handle indirect pointer slots when recording writes
    记录写入操作时处理间接指针槽
    chromium-review.googlesource.com/c/6818368

  3. [riscv] Clean up MacroAssembler::StoreReturnAddressAndCall
    整理 MacroAssembler::StoreReturnAddressAndCall 方法
    chromium-review.googlesource.com/c/6818339

  4. [riscv] Restore status registers after tests
    在测试后恢复状态寄存器
    chromium-review.googlesource.com/c/6827265

  5. [riscv] Fail in the simulator if the vector unit wasn't initialized
    若向量单元未初始化则使模拟器运行失败
    chromium-review.googlesource.com/c/6826963

  6. [riscv] Fix load-transforms to setup the vector unit first
    修复加载转换以先设置向量单元
    chromium-review.googlesource.com/c/6826962

  7. [riscv] Fix duplicated comment
    修复重复的注释
    chromium-review.googlesource.com/c/6827141

  8. [riscv] Implement register constraints for more operations
    为更多操作实现寄存器约束
    chromium-review.googlesource.com/c/6760111

  9. [riscv] Don't use kSimd128RegZero in the code-generator
    在代码生成器中不使用 kSimd128RegZero,避免当 kSimd128RegZero 未正确初始化时产生错误
    chromium-review.googlesource.com/c/6760119

  10. [riscv] Avoid unnecessary moves
    避免不必要的 move 操作
    chromium-review.googlesource.com/c/6760118

  11. [riscv] Use register constraints for I8x16Shuffle
    为 I8x16Shuffle 使用寄存器约束
    chromium-review.googlesource.com/c/6760117

  12. [riscv] Avoid temp and unique registers for ExtAddPairwise
    为 ExtAddPairwise 避免使用临时和唯一寄存器
    chromium-review.googlesource.com/c/6760116

  13. [riscv] Remove register uniqueness constraints for some instructions
    移除部分指令的寄存器唯一性约束
    chromium-review.googlesource.com/c/6760115

  14. [riscv] Avoid unique register in VisitRRIR
    在 VisitRRIR 中避免使用唯一寄存器
    chromium-review.googlesource.com/c/6760114

  15. [riscv] Add register constraints
    添加寄存器约束,简化 codegen 逻辑
    chromium-review.googlesource.com/c/6760110

  16. [riscv] Move forward declarations of Set Hi20/Lo12 Offset
    移动 Set Hi20/Lo12 Offset 的前置声明
    chromium-review.googlesource.com/c/6760071

  17. [riscv] Implement register constraints for I32x4DotI8x16I7x16AddS
    为 I32x4DotI8x16I7x16AddS 实现寄存器约束
    chromium-review.googlesource.com/c/6760113

  18. [riscv] Implement more register constraints
    实现更多 opcode 代码生成的寄存器约束
    chromium-review.googlesource.com/c/6760112

操作系统支持矩阵

第 049 期·2025 年 07 月 22 日

· 阅读需 7 分钟
xijing21
RuyiSDK 项目经理
xen0n
RuyiSDK 技术主管
狐坂澪夜
RuyiSDK 测试经理

卷首语

近期,RISC-V 生态发展迎来了一系列重要活动——"RISC-V 中国峰会"、"RISC-V校园行·香港城市大学站"等活动相继举办。团队小伙伴积极参与其中,不仅展示了我们的成果,也与行业同仁进行了深入交流,共同探讨技术发展趋势。由于这段时间的精力部分投入在这些行业活动中,本期更新内容相对精简,还请大家理解。后续我们将持续带来更多精彩内容,敬请关注!

我们特别欣喜地发现,RuyiSDK 论坛 正变得越来越活跃,我们也收到了一些开发者在这里分享使用心得、提出宝贵建议。大家的每一条反馈我们都在认真对待,并已着手进行针对性优化——正是这些真诚的声音推动着我们不断进步,在此向所有支持者致以衷心感谢!也欢迎更多小伙伴加入,一起打造更好的 RuyiSDK。

如果您在使用过程中遇到任何问题,还可以通过以下方式获得支持:

根据当前规划,下一个开发版本将于 8月12日 发布,我们将持续优化功能体验,为大家带来更多惊喜。期待与您共同见证 RuyiSDK 的成长!

包管理器

RuyiSDK 0.38 对应的包管理器版本也为 0.38.0,已于今日发布。您可移步 GitHub ReleasesISCAS 镜像源下载体验。

本次 RuyiSDK 包管理器的更新主要包含了以下内容:

  • 为 RuyiSDK 设备安装器新增了 ruyi device flash 这一别名,以便理解记忆。感谢 RuyiSDK 社区论坛的 @Sequel 同学反馈!
  • ruyi 需要调用某些外部命令但无法找到时,如果当前终端可以交互,会等待您安装以便重试了。您可以在另一个终端下安装所需命令,再回到 ruyi 所在终端按回车键继续。您也可以按 Ctrl+C 退出。感谢 RuyiSDK 社区论坛的 @Sequel 同学反馈!

本次 RuyiSDK 软件源的更新主要包含了以下内容:

  • 完善了设备支持:
    • 新增了 Sipeed LicheePi 4A 的 RevyOS 的历史版本。感谢 @Cyl18 的贡献!
    • 新增了 Milk-V Duo 的 Arduino 的 1.1.2 与 1.1.4 两个版本。感谢 @Cyl18 的贡献!

欢迎试用或来上游围观;您的需求是我们迭代开发的目标和动力。您也可以亲自参与 RuyiSDK 软件的打包与分发工作:目前您可以直接在 GitHub 上查看、修改我们的部分打包脚本软件源仓库。今后,按照本年度的开发计划,我们也将支持有权的第三方贡献者通过程序化的方式上传软件包、系统镜像等分发文件,以便利打包工作。

IDE

RuyiSDK IDE 进展:

  • 新增了自定义统一日志和Console管理功能:
    • 统一日志管理:集成控制台输出、文件日志和Eclipse日志系统
    • 多级日志输出:支持DEBUG/INFO/WARN/ERROR分级输出
    • 日志存储:日志文件存储路径兼容XDG规范,默认存储于标准目录(~/.local/state/ruyisdkide/logs)
  • 代码规范化管理:对代码格式进行规范化调整,进行中

GCC

  • 支持了P扩展 v015 版本与B扩展、K扩展的重复部分指令编码,添加了相关测试用例,已同步至RUYISDK仓库与社区
  • 初步完成了P扩展 v015 版本的 intrinsic 草案,正在进行GCC开发支持
  • Rebase了P扩展 v0911 版本的GCC支持到 GCC15

V8

操作系统支持矩阵

第 048 期·2025 年 07 月 08 日

· 阅读需 7 分钟
xijing21
RuyiSDK 项目经理
xen0n
RuyiSDK 技术主管
狐坂澪夜
RuyiSDK 测试经理

卷首语

欢迎阅读第48期《RuyiSDK双周进展》!包管理器已更新新版本,欢迎下载试用。

为了让RISC-V开发者更方便的交流,https://ruyisdk.cn 新网站已经上线了!目前有PLCT实验室超过百名RISC-V开发人员和活跃爱好者帮助回答问题,欢迎注册并参与讨论分享。

如果您在 RuyiSDK 的使用中遇到问题,可以在 RuyiSDK讨论区 反馈,或者参加 7月17日(周四)下午 15:00 开展的 “第九次 RuyiSDK Office Hours” 获得在线答疑支持服务。

下个开发版本计划7月22日发布,我们将持续带来更多改进。

包管理器

RuyiSDK 0.37 对应的包管理器版本也为 0.37.0,已于今日发布。您可移步 GitHub ReleasesISCAS 镜像源下载体验。

本次 RuyiSDK 包管理器的更新主要包含了以下内容:

  • 新增了基本的命令行自动补全支持,初期支持 Bash 与 Zsh 两种 shells。感谢 @wychlw 的贡献!

    要使用命令行自动补全功能,请在您的 shell profile(如 .bashrc.zshrc)的合适位置引入 ruyi 的自动补全脚本:

    # zsh 用户请将 bash 字样替换为 zsh
    eval "$(ruyi --output-completion-script=bash)"

    目前支持 ruyi 子命令与 ruyi install 等命令的软件包参数的自动补全。

  • 使用 ruyi self clean 清除本地数据时,如果新闻已读状态文件不存在,不会报错崩溃了。感谢 @weilinfox 报告问题!

  • 拉取远端 Git 仓库失败时,不会将 Python 错误信息暴露给用户了。

  • 只有在文件的下载 URL 协议为 FTP 时,才会为 curlwget 启用 FTP 被动模式了。这修复了部分 RuyiSDK 用户由于cURL 8.14.1 的 bug 而无法下载任何文件的问题。感谢 @weilinfoxruyi 项目报告问题!

  • 重构了 ruyi 的捆绑资源处理方式,将其从虚拟环境机制中剥离了,以便后续捆绑其他非虚拟环境相关资源,如命令行自动补全脚本、多语言字符串文件等等。同时,也以 CI 方式确保了 ruyi 所含的压缩资源总与原始文件保持同步。

  • 新增了对于 OpenCloudOS 9.4、openEuler 24.03 LTS SP2、openEuler 25.03、openKylin 2.0 的支持情况。ruyi 的 Python 依赖包在这些发行版上均有少量缺失,但其余依赖包的版本满足要求,我们预计将在 2025 年 10 月完成对它们的支持。

本次 RuyiSDK 软件源的更新主要包含了以下内容:

  • 实体数据库更新:
    • 新增了 SpacemiT X60 微架构。
    • 新增了 SpacemiT K1 处理器型号。
    • 新增了 BananaPi BPI-F3 的 eMMC 与 SD 存储两种设备变体。
  • 完善了设备支持:
    • 更新了 Milk-V Duo(64 & 256M RAM)、Duo S(SD 存储)的 Buildroot SDK。感谢 @Cyl18 的贡献!
    • 支持了 BananaPi BPI-F3 的 SD 存储型号,有 SpacemiT 提供的 Bianbu Desktop 与 Bianbu Minimal 两种系统供使用。感谢 @wychlw 的贡献!

欢迎试用或来上游围观;您的需求是我们迭代开发的目标和动力。您也可以亲自参与 RuyiSDK 软件的打包与分发工作:目前您可以直接在 GitHub 上查看、修改我们的部分打包脚本软件源仓库。今后,按照本年度的开发计划,我们也将支持有权的第三方贡献者通过程序化的方式上传软件包、系统镜像等分发文件,以便利打包工作。

IDE

  • 实验性新增:添加新的插件projectcreator来为特定的开发板导入示例演示,并自动配置工具链和定制编译配置。提供了新建项目向导,预置开发板项目模板和自定义构建器用于一键在ruyi虚拟环境内构建项目。

GCC

LLVM

V8

操作系统支持矩阵

RuyiSDK GNU 工具链测试(GCC 16):https://github.com/QA-Team-lo/ruyisdk-gnu-tests

第 047 期·2025 年 06 月 24 日

· 阅读需 6 分钟
xijing21
RuyiSDK 项目经理
xen0n
RuyiSDK 技术主管
狐坂澪夜
RuyiSDK 测试经理

卷首语

欢迎阅读第47期《RuyiSDK双周进展》!包管理器已更新新版本,欢迎下载试用。如果您在 RuyiSDK 的使用中遇到问题,欢迎参加每双周四下午 15:00 开展的 “RuyiSDK Office Hours” 获得在线答疑支持服务(下一次在7月3日),也可以在 RuyiSDK讨论区 反馈。

下个开发版本计划7月8日发布,我们将持续带来更多改进。

包管理器

RuyiSDK 0.36 对应的包管理器版本也为 0.36.0,已于今日发布。您可移步 GitHub ReleasesISCAS 镜像源下载体验。

本次 RuyiSDK 包管理器的更新主要包含了以下内容:

  • 每次 ruyi update 完成后,会报告哪些已安装的软件包有更新版本可供安装了。考虑到具体项目对工具链版本的需求可能较为精确,您可自行 ruyi install 更新的版本,并自行重做相应的虚拟环境。
  • 可以用 ruyi uninstall 卸载已安装的软件包了。另有更简短的别名 ruyi removeruyi rm 可用。
  • ruyi list 的输出中,可以看到软件包的安装文件是否完全下载了。
  • 在同时启用机读模式(porcelain mode)与调试输出(RUYI_DEBUG=y)时,最先输出的几条日志不会以错误格式输出了。
  • 优化了 ruyi 工具的启动速度,现在每次运行 ruyi 都能省下 200-300ms 时间(视机器性能而定),有助于后续实现低延迟的命令行补全特性。并以 CI 检查的方式确保了后续代码变更不会影响本次优化效果。

本次 RuyiSDK 软件源的更新主要包含了以下内容:

  • 更新了 toolchain/gnu-plct:由 PLCT 维护并构建的 GNU RISC-V 工具链,包含 GNU binutils 2.45 的预览版、GCC 15.1.0 以及 glibc 2.40。
  • 更新了实体数据库中的 RISC-V 微架构定义,新增以下微架构:
    • 香山昆明湖
    • 玄铁 C908、C908V、C910V2、C920、C920V2
    • MIPS P8700
    • 8-宽 Tenstorrent Ascalon
  • 修正了玄铁 C910 的 RISC-V ISA 字符串为上游主线 GCC 接受的标准形式。

欢迎试用或来上游围观;您的需求是我们迭代开发的目标和动力。您也可以亲自参与 RuyiSDK 软件的打包与分发工作:目前您可以直接在 GitHub 上查看、修改我们的部分打包脚本软件源仓库。今后,按照本年度的开发计划,我们也将支持有权的第三方贡献者通过程序化的方式上传软件包、系统镜像等分发文件,以便利打包工作。

IDE

RuyiSDK IDE 插件版本 0.0.6 发布:https://github.com/ruyisdk/ruyisdk-eclipse-plugins/releases/tag/v0.0.6

  • 软件包资源:
    • 新增接入软件包资源管理器适配设备型号接口,支持显示Ruyi包管理器已集成的设备型号;
    • 界面优化,优化设备展示窗口尺寸;
    • 代码优化,修复存在安全漏洞的代码;
  • 定制 Welcome 界面:
    • 修复以插件方式运行时存在的 icon 等资源找不到的问题;

GCC

  • 更新了-mcpu的默认参数,使用generic替代具体的rocket cpu模型
  • 同步了-mtune的配置设置,将branch_cost更新为4,以便更好的适配Zicond扩展,生成对应的分支指令

LLVM

V8

操作系统支持矩阵

第 046 期·2025 年 06 月 10 日

· 阅读需 6 分钟
xijing21
RuyiSDK 项目经理
xen0n
RuyiSDK 技术主管
狐坂澪夜
RuyiSDK 测试经理

卷首语

欢迎阅读第46期《RuyiSDK双周进展》!包管理器已更新新版本,欢迎下载试用。如果您在 RuyiSDK 的使用中遇到问题,欢迎参加每双周四下午 15:00 开展的 “RuyiSDK Office Hours” 获得在线答疑支持服务(下一次在6月19日),也可以在 RuyiSDK讨论区 反馈。

下个开发版本计划6月24日发布,我们将持续带来更多改进。

包管理器

RuyiSDK 0.35 对应的包管理器版本也为 0.35.0,已于今日发布。您可移步 GitHub ReleasesISCAS 镜像源下载体验。

本次 RuyiSDK 包管理器的更新主要包含了以下内容:

  • 现在会记录软件包的安装状态了。该信息在 ruyi list 输出中也会体现,并且支持在 ruyi list 时传入 --is-installed y/n 参数进行过滤。
  • ruyi entity list 可以带一个或多个 -t / --entity-type 参数,用来列举特定类型的实体了。
  • ruyi entity list 现在支持机读模式(porcelain mode)输出了。

本次 RuyiSDK 软件源的更新主要包含了以下内容:

  • 新增了 Milk-V Duo (128M & 156M) 开发板镜像的历史版本。
  • 修复了 Milk-V Duo (128M & 256M) 开发板镜像 2.0.0 版本的配置。
  • 更新了多个 Milk-V Meles 的 RevyOS 镜像。
  • 修复了 Milk-V Meles 的 RevyOS 镜像 1.20250123.0 版本的配置。
  • 更新了一些文档链接的指向。
  • 清理了已于 RuyiSDK 0.33 版本弃用的 RuyiSDK 设备安装器的旧版配置数据。

欢迎试用或来上游围观;您的需求是我们迭代开发的目标和动力。您也可以亲自参与 RuyiSDK 软件的打包与分发工作:目前您可以直接在 GitHub 上查看、修改我们的部分打包脚本软件源仓库。今后,按照本年度的开发计划,我们也将支持有权的第三方贡献者通过程序化的方式上传软件包、系统镜像等分发文件,以便利打包工作。

IDE

  • RuyiSDK IDE 插件近期新增了自定义的 Welcome 欢迎页面的插件。通过自定义 Welcome,将产品简介、官网、博客、联系我们等常用链接都挂到了页面中;此外还提供了 New Project、Open Project、Setting的快速入口;还有Support Matrix、Documents、Discussions 链接。功能目前已经就绪,但是在以插件方式运行时还存在icon资源找不到的问题,预计下个周期发布。可通过Draft链接下载尝鲜。

GCC

  • 添加香山昆明湖CPU到gcc RISC-V后端,目前已合入gcc上游,添加时补充了一系列gcc缺失的特权模式扩展指令集。
  • 修复了binutils中smnrmi缺失zicsr依赖的问题。

V8

  1. 在turbofan RISC-V后端中支持非经典NAN
  2. 在wasm的liftoff编译器RISC-V后端中支持代码覆盖统计
  3. 在RISC-V架构上实现JS undefined value的floating nan boxing
  4. 指令选择优化compare zero
  5. 调整maglev中临时寄存器分配作用域,使临时寄存器能尽快被使用
  6. 审阅并合入syntacore的针对jalr和jal指令的RAS特性所做的优化
  7. 审阅并合入syntacore的代码生成优化
  8. 修复指针压缩模式下对tagged smi的加减法溢出处理
  9. 实现优化JITed代码中的diapatch handle正确性保证代码
  10. 删除InstructionSelectorAdapter,为删除turbofan的SON IR,全面使用turboshaft IR做好准备,

操作系统支持矩阵

第 045 期·2025 年 05 月 27 日

· 阅读需 8 分钟
xijing21
RuyiSDK 项目经理
xen0n
RuyiSDK 技术主管
狐坂澪夜
RuyiSDK 测试经理

卷首语

第45期《RuyiSDK双周进展》准时送达!包管理器已更新新版本,欢迎下载试用。如果您在 RuyiSDK 的使用中遇到问题,欢迎参加每双周四下午 15:00 开展的 “RuyiSDK Office Hours” 获得在线答疑支持服务(下一次在6月5日),也可以在 RuyiSDK讨论区 反馈。

下个开发版本计划6月10日发布,我们将持续带来更多改进。

包管理器

RuyiSDK 0.34 对应的包管理器版本也为 0.34.0,已于今日发布。您可移步 GitHub ReleasesISCAS 镜像源下载体验。

本次更新的部分软件包需要最新版本的 RuyiSDK 包管理器才能正常解析、工作,因此强烈建议您在 ruyi update 之余,将您的 ruyi 也升级到最新版本。此外,已在 RuyiSDK 0.33 弃用的旧版设备安装器支持也将于 RuyiSDK 0.35(下个版本)移除。

本次 RuyiSDK 包管理器的更新主要包含了以下内容:

  • 支持了部分解包 tar 归档文件,以适应个别厂商在其官方渠道将多个软件打成一个包分发的做法。
  • 允许用 ruyi venv --extra-commands-from 为虚拟环境提供额外的与目标元组(target tuple)无关的命令,如特定厂商的刷写工具等。
  • ruyi admin format-manifest 会保留文件头部和尾部的注释了。
  • 遥测功能更新:
    • 当用户在终端首次运行 ruyi 时,现在会一次性询问用户是否允许立即上传安装信息。
    • 修复了 ruyi 的命令转发模式下遥测事件未被记录的问题。
    • 支持在软件源级别记录软件包的安装动作,以便第一方或第三方软件源的维护者们了解其软件的使用情况。
  • 重构了 ruyi 命令行工具的入口点和 ruyi 的日志处理方式,消除了大部分全局量的使用,以便后续 RuyiSDK 生态的其他 Python 组件复用 ruyi 的功能。

本次 RuyiSDK 软件源的更新主要包含了以下内容:

  • 软件源格式更新:
    • 明确了官方软件源的 ID 为 ruyisdk,以便后续与第三方源和谐共存。
    • 术语更新:将那些指代非标准行为的“flavor”重命名为了“quirk”。
    • 为支持软件包声明其含有的可执行命令,为 binary 元数据新增了 commands 可选字段。
    • 为支持 tar 归档文件的部分解包,为 distfile 元数据新增了 prefixes_to_unpack 可选字段。
  • 完善了设备支持:
    • board-image/revyos-sipeed-lpi4a: 更新了 Sipeed LicheePi 4A 的 RevyOS 镜像版本至 20250420,修复了 20250323 版本的信息。
    • 将 Milk-V Duo 系列设备的 1.0.7 版本的 "Python" 镜像与非 "Python" 镜像调换了名称。
  • 新增软件包:
    • board-util/wlink: 社区独立实现的 WCH-Link 刷写与调试工具。
    • source/wch-ch32v103-evt: WCH CH32V103 EVT 官方代码示例包。
    • source/wch-ch32v20x-evt: WCH CH32V20x EVT 官方代码示例包。
    • source/wch-ch32v307-evt: WCH CH32V30x & CH32V317 EVT 官方代码示例包。
    • toolchain/gnu-wch-mrs-toolchain-gcc12-bin: WCH MounRiver Studio (MRS) 工具链的官方 2.1.0 版本,其中的 GCC 12.x 工具链。仅支持 x86_64 架构。
    • toolchain/gnu-wch-mrs-toolchain-gcc8-bin: WCH MounRiver Studio (MRS) 工具链的官方 2.1.0 版本,其中的 GCC 8.x 工具链。仅支持 x86_64 架构。
  • 更新软件包:
    • toolchain/gnu-plct-xthead: 采用玄铁官方源码、由 PLCT 构建的玄铁工具链的 3.0.1 版本,GCC 版本为 14.1.1。
  • 实体数据库更新:
    • 新增了 WCH 微架构、CPU 的实体定义。
    • 修正了 WCH 开发板的 CPU 信息。
  • 插件系统更新:
    • 新增了初步的 RISC-V 32 位配置文件支持。
  • 修复了一些软件包声明的格式错误。

欢迎试用或来上游围观;您的需求是我们迭代开发的目标和动力。您也可以亲自参与 RuyiSDK 软件的打包与分发工作:目前您可以直接在 GitHub 上查看、修改我们的部分打包脚本软件源仓库。今后,按照本年度的开发计划,我们也将支持有权的第三方贡献者通过程序化的方式上传软件包、系统镜像等分发文件,以便利打包工作。

IDE

RuyiSDK IDE 插件版本 0.0.5 发布:https://github.com/ruyisdk/ruyisdk-eclipse-plugins/releases/tag/v0.0.5

  • ruyi 安装/更新:
    • 针对 ruyi 安装向导中下载进度条不能达到100%的问题进行了修复;
    • 删除 ruyi 安装向导中将 ruyi 加入到 path 路径的设定和步骤,改为使用 ruyi 绝对路径
  • 软件包资源:
    • 通过树状结构分类展示软件包资源,并通过 checkbox 状态表示软件包资源的下载状态
    • 实现对软件包的下载
    • 支持打开软件包资源的本地缓存等路径,方便查看缓存文件

GCC

  • Binutils上游已合并Profiles RV20/22/23支持,更新了Smcdeleg,Ssccfg扩展支持
  • 向FFmpeg上游提交了gcc构建时配置选项的修改,目前仍在讨论中

LLVM

V8

  • wasm struct.atomic 特性在RISC-V平台上的实现
  • 修复trampoline emit和scratch寄存器使用的bug
  • 审阅和合入进迭时空comparisionOP 代码生成,load word unsigned op的0扩展优化

操作系统支持矩阵

官网

新实习生的加入,推动 ruyisdk.org 首页焕然一新。不过当前尚余一些小问题需要修复,具体见 issue #135。大家觉得新的首页怎么样呢,欢迎在该 issue 下添加评论!

第 044 期·2025 年 05 月 13 日

· 阅读需 6 分钟
xijing21
RuyiSDK 项目经理
xen0n
RuyiSDK 技术主管
狐坂澪夜
RuyiSDK 测试经理

卷首语

欢迎阅读《RuyiSDK 双周进展汇报》第 44 期,包管理器 和 ide 都有版本更新,欢迎下载试用。如果您在 RuyiSDK 的使用中遇到问题,欢迎参加每双周四下午 15:00 开展的 “RuyiSDK Office Hours” 获得在线答疑支持服务(下一次在5月22日),也可以在 RuyiSDK讨论区 反馈。

下个开发版本计划 5月27日发布,我们将持续带来更多改进。

包管理器

RuyiSDK 0.33 对应的包管理器版本也为 0.33.0,已于今日发布。您可移步 GitHub ReleasesISCAS 镜像源下载体验。

本次 RuyiSDK 包管理器的更新主要包含了以下内容:

  • 将设备安装器的数据源迁移到了实体数据库,以降低维护成本、避免频繁更新时潜在的合并冲突等。

本次 RuyiSDK 软件源的更新主要包含了以下内容:

  • 完善了设备支持:
    • 新增支持了 Milk-V Meles 的 16G RAM 型号,支持 RevyOS 系统。
  • 实体数据库更新:
    • 设备实体定义更新:设备型号变体现已被拆分为单独实体类型 device-variant 了。
    • 新增了“设备适用系统信息”实体 image-combo
  • 现已弃用旧版设备安装器支持,请尽快更新您的 RuyiSDK 包管理器。该支持将于 RuyiSDK 0.35 移除。

本次 RuyiSDK 服务端组件的更新主要包含了以下内容:

  • 新增了官方软件源的新闻条目阅读 API。
  • 新增了按版本号查询 RuyiSDK 版本发行注记的 API。
  • 将官方软件源当前目录结构下的所有子目录都纳入了下载量统计范围。
  • 改进了服务容器的构建方式。

欢迎试用或来上游围观;您的需求是我们迭代开发的目标和动力。您也可以亲自参与 RuyiSDK 软件的打包与分发工作:目前您可以直接在 GitHub 上查看、修改我们的部分打包脚本软件源仓库。今后,按照本年度的开发计划,我们也将支持有权的第三方贡献者通过程序化的方式上传软件包、系统镜像等分发文件,以便利打包工作。

IDE

  • RuyiSDK IDE 插件版本 0.0.4 发布:

    • 新增 ruyi 包管理器检测、安装及版本更新向导。

    • 新增 RuyiSDK 配置面板 (Windows > Preferences > RuyiSDK):

      • Ruyi 配置项:开机自动检测开关、 Ruyi 安装路径设置、软件源配置、遥测模式选择
      • RISC-V 开发板管理(添加/编辑/删除/设默认)。
  • 安装步骤:

    1. 从 ISCAS 镜像 下载并解压 ruyisdk-0.0.3
    2. 下载 org.ruyisdk.ide_0.0.4.zip,解压后将 plugins/ 下所有 JAR 文件复制到 ruyisdk/dropins/。
    3. 启动/重启 ruyisdk。
  • 使用说明:

    • 启动时自动弹出 ruyi 安装/更新向导。
    • 手动操作:RuyiSDK > Ruyi Installation。
    • 配置路径:Windows > Preferences > RuyiSDK > Ruyi Config。

GCC

  • 更新了 RUYISDK 仓库中的 gcc 版本到 gcc15, binutils 版本到 binutils-2.45。支持了 Profiles 特性,包括 RV20/22/23A|B, 使用 -march=Profiles 可直接使能 Profiles 规定的强制支持扩展
  • 支持了 Sha扩展组合,该扩展为 RVA23S64 中针对 RISC-V 虚拟化特性提出的最新扩展组合,用于高效实现虚拟化特性。修复回归测试中发现的 gcc 错误,限制了错误测试 case 中
  • -mgeneral-regs-only 选项对应的架构范围,已被上游接收

LLVM

V8

  • 增加从 isolate 中加载 JS Dispatch Table 的机制
  • 增加 riscv zfh 指令集支持
  • 添加 wasm growble stack 的特性

操作系统支持矩阵

第 043 期·2025 年 04 月 22 日

· 阅读需 6 分钟
xijing21
RuyiSDK 项目经理
xen0n
RuyiSDK 技术主管
狐坂澪夜
RuyiSDK 测试经理

卷首语

近两周进展已呈上,欢迎阅读《RuyiSDK 双周进展汇报》第 43 期。如果您在 RuyiSDK 的使用中遇到问题,欢迎参加每双周四下午 15:00 开展的 “RuyiSDK Office Hours” 获得在线答疑支持服务(下一次在4月25日),也可以在 RuyiSDK讨论区 反馈。

受五一假期影响,下个开发版本将顺延至5月13日发布,我们将持续带来更多创新改进。

包管理器

RuyiSDK 0.32 对应的包管理器版本也为 0.32.0,已于今日发布。您可移步 GitHub ReleasesISCAS 镜像源下载体验。

本次 RuyiSDK 包管理器的更新主要包含了以下内容:

  • 新增了贡献指南文档,使社区成员更容易参与项目贡献。
  • 为流程合规,现在要求所有向 RuyiSDK 发起的拉取请求(Pull Requests)都包含开发者原创声明(Developer's Certificate of Origin, DCO)了。

本次 RuyiSDK 软件源的更新主要包含了以下内容:

  • 完善了设备支持:
    • 新增支持了适用于 SpacemiT K1 设备的特殊刷写策略。
    • 修复了设备安装器调用 fastboot 失败的问题。
    • 更新了 Sipeed LicheeRV Nano 的 Buildroot SDK 镜像。
    • 更新了 Sipeed LicheePi 4A 的 RevyOS 镜像版本并修复问题。
    • 更新了 Milk-V Meles 的 RevyOS 镜像。
  • 重命名了软件包 board-image/revyos-sg2042-milkv-pioneerboard-image/revyos-milkv-pioneer 以符合当前的软件包命名规范。
  • 实体数据库更新:
    • 设备实体定义现已与设备安装器支持范围对齐。补充了 Milk-V、Sipeed、Canaan、StarFive、WCH 等厂商的设备定义。

本次 RuyiSDK 服务端组件的更新主要包含了以下内容:

  • 优化了 ruyisdk.org 官网数据统计页面的性能。
  • 集成了 GitHub Releases 渠道的下载量到官网数据统计页面的 RuyiSDK 包管理器下载计数中,使统计数据更准确、全面。
  • 将原先位于 RuyiSDK 包管理器仓库、需要手工配置生效的镜像源同步脚本迁移到了服务端。

欢迎试用或来上游围观;您的需求是我们迭代开发的目标和动力。您也可以亲自参与 RuyiSDK 软件的打包与分发工作:目前您可以直接在 GitHub 上查看、修改我们的部分打包脚本软件源仓库。今后,按照本年度的开发计划,我们也将支持有权的第三方贡献者通过程序化的方式上传软件包、系统镜像等分发文件,以便利打包工作。

IDE

  • 将插件仓库规范化迁移到ruyisdk-eclipse-plugins ,并对代码进行了重构和优化:
    • 重构插件组织,基础类调整到 org.ruyisdk.core 包下,作为其它插件的依赖项;实现XDG规范目录的设置和路径获取;
    • 重构和优化设备管理,调整配置文件到 ~/.config/ruyisdkide 下,并将UI从继承 viewpart 实现修改为 PreferencePage,实现了通过 Windows > preferences > Device Manage 进行管理,更加符合使用场景。
  • 新增 ruyi 包管理器安装检测、版本检测等基础类;

GCC

  • 添加了zama16b,sdtrig,zvfbfmin 扩展的支持,重新提交了ssnpm 的 patch。

LLVM

V8

  • 处理 scriptcontext 里面 let 涉及的常量和变量,避免重复堆分配和垃圾回收开销。
  • 修复了构建错误和段错误 bug。
  • 优化 RiscvCmpDouble 和 RiscvCmpSingle 的 codegen。

操作系统支持矩阵

官网

第 042 期·2025 年 04 月 08 日

· 阅读需 6 分钟
xijing21
RuyiSDK 项目经理
xen0n
RuyiSDK 技术主管

卷首语

大家好,RuyiSDK 近期在持续迭代的基础上,也在用户支持上做出更多努力。围绕 RuyiSDK 的使用、问题与缺陷、改进建议等在线会议 RuyiSDK Office Hours 本周四将迎来第二次会议,欢迎您的关注与加入。

第2次RuyiSDK Office Hours会议安排如下:

我们期待在会议中与您交流,共同推动 RuyiSDK 的发展!

参考链接:

下一个开发版本预计将在 2025 年 4 月 22 日发布。感谢您一直以来的支持与关注,如有任何问题,欢迎联系我们,您的反馈是我们前进的动力!

包管理器

RuyiSDK 0.31 对应的包管理器版本也为 0.31.0,已于今日发布。您可移步 GitHub ReleasesISCAS 镜像源下载体验。

本次 RuyiSDK 包管理器的更新主要包含了以下内容:

  • RuyiSDK 设备安装器在需要安装的软件包不止一个可用版本的时候,会额外允许您选择一个非默认(最新)的版本了。如果您的开发板需要旧版本的系统,该功能对您可能有所帮助。
  • 新增了实验模式开关:环境变量 RUYI_EXPERIMENTAL,用于启用一些我们暂不承诺兼容性的实验性功能。
  • 新增了实验性功能:实体数据库。
    • 该功能有助于 RuyiSDK 为您提供与手头设备关联的有用信息。例如,可用 ruyi list --related-to-entity device:sipeed-lpi4a 查询适用于 Sipeed LicheePi 4A 的各种软件包了。
    • 初期支持 CPU 微架构(如香山南湖、玄铁 C910 等等)、CPU 型号(如香山南湖、玄铁 TH1520 等等)、设备型号(如 Sipeed LicheePi 4A 等等)、软件包等四种实体类型。
    • 这些功能为预览版,后续不排除作出不兼容变更以适应需求,因此仅在启用实验模式时才可用。如您有使用场景,请保持您的 ruyi 与软件源为最新。
  • 工程化迭代:
    • 为避免 CI 物理机资源的临时下线等原因影响到发版,将 RISC-V 架构的构建任务也暂时迁移至 GitHub Actions 公开免费提供的实例上了。
    • 将构建 ruyi 的单文件分发版本所用的 Python 版本升级到了 3.13.2。

本次 RuyiSDK 软件源的更新主要包含了以下内容:

  • 更新了 toolchain/gnu-plcttoolchain/gnu-upstream 两种工具链包到 0.20250401.0。敬请试用!
    • 其中,gnu-plct 工具链套件提供的软件版本如下:
      • binutils 2.42,PLCT 维护分支
      • gcc 14.1.0,PLCT 维护分支,含 P 扩展与 RV64ILP32 ABI 支持
      • gdb 16.0,PLCT 维护分支
      • glibc 2.40,PLCT 维护分支
      • linux-headers 6.13
    • gnu-upstream 工具链套件提供的软件版本如下:
      • binutils 2.43.1
      • gcc 14.2.0
      • gdb 16.2
      • glibc 2.41
      • linux-headers 6.13

欢迎试用或来上游围观;您的需求是我们迭代开发的目标和动力。您也可以亲自参与 RuyiSDK 软件的打包与分发工作:目前您可以直接在 GitHub 上查看、修改我们的部分打包脚本软件源仓库。今后,按照本年度的开发计划,我们也将支持有权的第三方贡献者通过程序化的方式上传软件包、系统镜像等分发文件,以便利打包工作。

IDE

  • RuyiSDK IDE 近期正在优化启动功能,增加包管理器的安装检查、安装、版本检查、升级等功能;及执行过程中的执行状态显示;
  • RuyiSDK IDE 正在招聘插件开发实习生,详情参考 J159 RuyiSDK IDE 开发实习生 ,欢迎加入。

GCC

  • 修复了zicbop 的回归测试问题,正在实现 zvfbfa 扩展支持。

LLVM

  • 在 17.1.6 版本中修复了 vector reduction 内建指令的指令选择问题。

V8

  • Atomic views 适配 Tuboshaft IR;修复trap handler崩溃的问题
  • 优化后端 opcde , 删除 RiscvCtz/RiscvPopcnt

操作系统支持矩阵

第 041 期·2025 年 03 月 25 日

· 阅读需 6 分钟
xijing21
RuyiSDK 项目经理
xen0n
RuyiSDK 技术主管

卷首语

大家好,RuyiSDK 项目组为了更好地帮助开发者掌握 RuyiSDK 的使用,让开发团队能更加深入了解大家的需求从而改进产品,我们诚挚邀请您参加 RuyiSDK Office Hours 线上会议(类似于RISC-V技术答疑时间)。我们期待与您通过线上会议的方式相聚,共同探讨如何提升 RuyiSDK 的用户体验。会议内容将主要围绕 RuyiSDK 的使用、问题与缺陷、改进建议等话题进行交流,同时也欢迎大家讨论与 RISC-V 相关的任何问题。

会议安排如下:

我们期待在会议中与您交流,共同推动 RuyiSDK 的发展!

参考链接:

下一个开发版本预计将在 2025 年 4 月 8 日发布。感谢您一直以来的支持与关注,如有任何问题,欢迎联系我们,您的反馈是我们前进的动力!

包管理器

RuyiSDK 0.30 对应的包管理器版本也为 0.30.0,已于今日发布。您可移步 GitHub ReleasesISCAS 镜像源下载体验。

本次 RuyiSDK 包管理器的更新主要包含了以下内容:

  • 修复了 ruyi list --category-contains 不工作的问题。
  • 修复了全新安装 ruyi 之后直接进行 ruyi install 会崩溃的问题。
  • 软件源格式更新:
    • 基于目前的设备安装器配置数据,新增实验性的结构化设备型号描述数据库,初期支持为每种设备型号描述其 CPU 与微架构能力。
  • 工程化迭代:
    • 将 AArch64 架构的构建任务迁移至 GitHub Actions 公开免费提供的实例上,以降低 RuyiSDK 团队的维护成本。
    • 修复了 CI 开源许可证检查任务。

欢迎试用或来上游围观;您的需求是我们迭代开发的目标和动力。您也可以亲自参与 RuyiSDK 软件的打包与分发工作:目前您可以直接在 GitHub 上查看、修改我们的部分打包脚本软件源仓库。今后,按照本年度的开发计划,我们也将支持有权的第三方贡献者通过程序化的方式上传软件包、系统镜像等分发文件,以便利打包工作。

IDE

RuyiSDK IDE 近期正在实现基于包管理器(ruyi list)的软件包资源管理,功能开发中。

此外,RuyiSDK IDE 正在招聘插件开发实习生,欢迎有兴趣的小伙伴加入开发团队,详情参考 J159 RuyiSDK IDE 开发实习生 ,期待您的加入。

GCC

提交了Ssnpm, Smnpm与Smmpm 的工具链支持,在社区中对玄铁C系列RISC-V芯片添加了mcpu选项支持

LLVM

  • 在 17.1.6 版本中新增默认 _mu_tum 类 policy 的 XTHeadVector 内建指令,与 RVV 1.0 的命名方式提供更好的兼容性。
  • 在 17.1.6 中修复 mask 版本的 vector bitwise logical 内建指令的指令选择问题。
  • 在 17.1.6 中补全 vector integer merge 和 vector floating-point merge 相关的内建指令。

V8

  • 继续增加 WASM JSPI 的支持功能:
    • in-sandbox chain of stacks
    • 删除 jump buffer 外部指针
  • 增加 C++ 垃圾回收模块的 Scan simulator stack and registers 功能
  • 修复 WASM OOB Trap Handler 特性中,Fault Address Register 没有在 mcontext 中被正确设置的 bug
  • 审阅并合入 syntacore 的2个 patch :
    • 优化32位比较操作代码生成
    • 类型转换优化
  • 修复非对齐 load/store 的代码生成中临时寄存器不够用的问题
  • 在指令选择阶段内联 Adapter's DeoptimizeView

操作系统支持矩阵