Skip to main content

Blog

See important news from the RuyiSDK team at any time

Release notes for RuyiSDK 0.23

· 2 min read
xen0n
RuyiSDK 技术主管

RuyiSDK 0.23 is now released. The corresponding package manager version is also 0.23.0. You can download the RuyiSDK package manager from one of the following locations:

This update mainly consists of the following changes. Happy hacking!

RuyiSDK Package Manager

  • Due to project acceptance requirements, the default telemetry mode has been changed to on. Subsequently, anonymized usage statistics will be periodically uploaded with updates to the RuyiSDK software repository. The telemetry server is located in mainland China and is managed by the RuyiSDK team.
  • Fixed compatibility with the external dependency semver 2.x version.
  • Allowed running ruyi as root in CI environments.
  • Each release now comes with reproducible source packages, which is helpful for distribution packaging work.

Note: Due to metrics such as the number of active users being project KPIs, RuyiSDK 0.23 has added the functionality to upload telemetry data, which is enabled by default in all environments, not just CI. You can decide whether to actively upload this anonymous statistical information to help the RuyiSDK team improve the product. You can also choose to delete previous telemetry data or disable telemetry. You can use ruyi self clean --telemetry to delete all telemetry information, including device information.

When telemetry mode is set to on, you will be notified when your telemetry data will be uploaded each time ruyi is called. You can do one of the following to suppress this prompt:

  • Set the telemetry mode to local or off;
  • Consent to data upload behavior.

Here is an example of the ruyi configuration file. This configuration file is typically located at ~/.config/ruyi/config.toml. If it doesn't exist, you can create it:

# Include one of the following in the [telemetry] section. If this section doesn't exist, create it:
[telemetry]

# You can change the telemetry mode to local or off:
mode = "local"

# Or inform ruyi that you have given consent at the current date and time:
upload_consent = 2024-12-32T25:61:00+08:00
# This date format is not valid, this is intentional. Please fill in the current time of your operation. For example, execute the following command:
#
# echo "upload_consent = $(date -Iseconds)"
#
# The output can be used for the above purpose.

Release notes for RuyiSDK 0.22

· One min read
xen0n
RuyiSDK 技术主管

RuyiSDK 0.22 is now released. The corresponding package manager version is also 0.22.0. You can download the RuyiSDK package manager from one of the following locations:

This update mainly consists of the following changes. Happy hacking!

RuyiSDK Package Manager

  • Added the RuyiSDK platform support documentation, and based on this, improved the platform compatibility of the RuyiSDK package manager:
    • Lowered the minimum Python version requirement to 3.10 to maintain compatibility with the default Python version in Ubuntu 22.04 LTS.
    • Reduced version requirements for various Python dependencies to work with packages provided by Ubuntu 22.04 LTS.
    • Added the declaration of the ruyi entry point according to Python packaging standards, allowing distribution packaging mechanisms to automatically recognize and process it.

Note: We will add the functionality to upload RuyiSDK telemetry data in RuyiSDK 0.23, and may enable it by default in CI environments. At that time, you can decide whether to actively upload this anonymous statistical information to help the RuyiSDK team improve the product. You can also choose to delete previous telemetry data and disable telemetry. You can use ruyi self clean --telemetry to delete all telemetry information, including device information.

Release notes for RuyiSDK 0.21

· 2 min read
xen0n
RuyiSDK 技术主管

RuyiSDK 0.21 is now released. The corresponding package manager version is also 0.21.0. You can download the RuyiSDK package manager from one of the following locations:

This update mainly consists of the following changes. Happy hacking!

RuyiSDK Package Manager

  • Renamed the RuyiSDK software repository packaging helper command ruyi admin manifest to ruyi admin checksum. If you are packaging for RuyiSDK, you may need to update your scripts.
  • Added support for ruyi self clean to delete news reading status (ruyi news): ruyi self clean --news-read-status.
  • Added support for ruyi self clean to delete all variable state files generated by ruyi at once: ruyi self clean --all.
  • Fixed compatibility of ruyi test cases with Python 3.11. We now ensure through CI that ruyi passes tests on Python 3.11, 3.12, and 3.13, which will help ensure compatibility across various Linux distributions.
  • Added a missing declaration of the typing_extensions dependency to fix third-party packaging.
  • Refactored the way ruyi subcommands are declared and implemented, making it more convenient to extend ruyi command-line functionality in the future.

Note: We may implement the RuyiSDK telemetry mechanism in the next one to two versions. At that time, you can decide whether to actively upload this anonymous statistical information to help the RuyiSDK team improve the product. You can also choose to delete previous telemetry data and disable telemetry. You can use ruyi self clean --telemetry to delete all telemetry information, including device information.

Release notes for RuyiSDK 0.20

· 2 min read
xen0n
RuyiSDK 技术主管

RuyiSDK 0.20 is now released. The corresponding package manager version is also 0.20.0. You can download the RuyiSDK package manager from one of the following locations:

This update mainly consists of the following changes. Happy hacking!

RuyiSDK Package Manager

  • Fixed an issue where ruyi self uninstall --purge would leave telemetry data behind.
  • Fixed a bug where ruyi admin subcommands could not be invoked.
  • Fixed forwarding to commands without target tuple prefixes (such as a series of LLVM tools) in Ruyi virtual environments.
  • Removed the Starlark sandbox from the plugin mechanism at the request of the RuyiSDK project. This helps simplify packaging and lower development barriers: according to RuyiSDK's current threat model, the sandbox mechanism does not provide additional security.

Note: Due to subtle semantic differences between Starlark and Python, after upgrading to ruyi 0.20.0, you must update your software repository to the latest with ruyi update in order to continue using certain features of ruyi (such as ruyi venv). Apart from this, we don't expect the technical changes to the plugin mechanism to affect actual usage.

Note: We may implement the RuyiSDK telemetry mechanism in the next one to two versions. At that time, you can decide whether to actively upload this anonymous statistical information to help the RuyiSDK team improve the product. You can also choose to delete previous telemetry data and disable telemetry. You can use ruyi self clean --telemetry to delete all telemetry information, including device information.

Eclipse 上游初步支持 RISC-V,每日构建镜像已经可以下载试用

· 3 min read

Eclipse 是一款开源且功能强大的集成开发环境(IDE),广泛支持多种编程语言,为开发者提供了一个统一的平台,用于编写、调试和管理代码。同时,Eclipse 还具备强大的插件系统,可根据需求灵活扩展功能。

近期,来自中国科学院软件研究所(ISCAS)的 RevyOS 小队的工程师联合其他开源社区开发者,成功为 Eclipse 上游代码仓库引入了对 riscv64 架构的初步支持。期间创建了二十余个 Issue/PR,涵盖了包括 SWT、Equinox 在内的关键组件。目前,Eclipse 已支持在 riscv64 平台上基于 OpenJDK 开发 Java 项目。

eclipse-pic-1.png

图1-Eclipse upstream 涉及到几十个不同的组建和支持过程,许多开发者都进行了贡献

相关改动已被合入上游,感兴趣的朋友可通过下方链接,建议选择 Integration Builds 板块中的最新构建日期(20240929以后每日构建支持riscv)进入每日构建资源页面,选择“Eclipse SDK -> Linux (64 bit version for RISC-V)”下载后进行体验。

https://download.eclipse.org/eclipse/downloads/index.html

eclipse-pic-2.png

图2-在安装了 Debian 操作系统的 SiFive Unmatched 上测试运行 Eclipse SDK IDE

接下来,RevyOS 小队将继续完善 Eclipse riscv64 的支持,敬请期待更多优化与改进!

中国科学院软件研究所诚邀对开源技术充满热情的开源软件贡献者加入进来,助力 Eclipse 在 riscv64 平台上的发展。

关于 ISCAS、RevyOS小队

RevyOS小队隶属于 PLCT Lab, ISCAS。ISCAS 是 RISC-V International 的 Development Partner、Training Partner,同时在2024年8月获得了 RISC-V Ecosystem Labs 认证。

特别致谢以下贡献者

于波、陈璇、Hannes Wellmann、Alexander Kurtakov、Ed Merks、Pawel Stankiewicz、Frederic Gurr

如有遗漏,请联系作者

Release notes for RuyiSDK 0.19

· 3 min read
xen0n
RuyiSDK 技术主管

RuyiSDK 0.19 is now released. The corresponding package manager version is also 0.19.0. You can download the RuyiSDK package manager from one of the following locations:

This update mainly consists of the following changes. Happy hacking!

RuyiSDK Package Manager

  • Fixed an issue where ruyi news list would crash when the environment locale configuration was invalid on the local machine. This is also the first contribution to the RuyiSDK package manager from an external contributor. Thanks to RekiDunois!
  • Added the ruyi admin format-manifest command for package developers to automatically format software package description files to ensure they conform to standard formats.
  • Added multi-toolchain support for ruyi venv: It's now possible to configure multiple toolchain packages with different target tuples for a single virtual environment.
  • Added the ruyi self clean command to clean up various data generated by Ruyi, freeing up storage space.
  • Provided means for distribution packagers to prevent users from accidentally running ruyi self uninstall when distributions directly redistribute RuyiSDK's officially compiled ruyi binary.
  • Implemented basic telemetry functionality, currently without data upload support. See the "Telemetry" section for details.

Telemetry

To help the RuyiSDK team better understand user habits and improve the experience, we have added basic telemetry functionality to the RuyiSDK package manager. There are 3 telemetry modes:

  • local: Only collects data, does not actively report. This is the default mode.
  • on: Collects data and reports periodically. Not yet implemented.
  • off: Completely disables telemetry.

Currently, we collect the following data:

  • When running ruyi for the first time, a small amount of device information is collected once:
    • A unique installation ID generated only from the system random number generator, unrelated to any system configuration or local data;
    • Whether the current running environment is one of several known CI services, such as GitHub Actions, GitLab CI, Travis CI, etc.;
    • Operating system kernel type and processor architecture;
    • C runtime library type and version (like glibc 2.40);
    • Linux distribution code name and version;
    • If the processor architecture is RISC-V, RISC-V-specific information such as the system model specified by the device tree and the number of CPU cores, microarchitecture, ISA string, etc. exposed by /proc/cpuinfo.
  • Each time ruyi is run, the type of command called is recorded, without parameters.
  • Each time a toolchain proxy in the Ruyi virtual environment is run, the name of the command being called is recorded.

If you do not wish to participate in telemetry, you can do one of the following two operations before running the new version of ruyi. Either ensure that the environment variable RUYI_TELEMETRY_OPTOUT=1 exists (note: not OUTPUT), or add the following to the configuration file ~/.config/ruyi/config.toml:

[telemetry]
mode = "off"

Before RuyiSDK fully supports telemetry data upload, we will inform you, and you can decide whether to delete previous telemetry data and whether to disable telemetry. You can use ruyi self clean --telemetry to delete all telemetry information, including device information.

Linux Distribution Packaging

RuyiSDK packages are now available for several major Linux distributions:

  • Debian 13 ("trixie")
  • Fedora 39, 40, 41
  • openEuler 24.03
  • Ubuntu 22.04 ("jammy"), 24.04 ("noble")
  • Arch Linux (via AUR)

We provide binaries for all three officially supported architectures: amd64, arm64, and riscv64, for all distributions except Fedora 39 and Fedora 41.

Release notes for RuyiSDK 0.18

· 2 min read
xen0n
RuyiSDK 技术主管

RuyiSDK 0.18 is now released. The corresponding package manager version is also 0.18.0. You can download the RuyiSDK package manager from one of the following locations:

This update mainly consists of the following changes. Happy hacking!

RuyiSDK Package Manager

  • Further improved the fix for issue #181: While the previous fix addressed the missing characters in code blocks, it inadvertently caused Markdown list items and block quotes exceeding one line in length to be truncated.
  • Addressed issue #193: Removed dependency on the third-party library python-frontmatter to facilitate packaging work for distributions.

RuyiSDK Software Repository

  • Updated WPS Office to the latest upstream version.
  • Updated the RV64ILP32 bare-metal toolchain toolchain/gnu-plct-rv64ilp32-elf to the current latest version.
  • Enhanced support for Milk-V Duo:
    • Added the Milk-V Duo official example code repository source/milkv-duo-examples. You can extract it in a new directory using the ruyi extract command.
    • Added Milk-V official host toolchains for Milk-V Duo. Note: These are repackaged by RuyiSDK from the upstream repository under permission from the vendor, and upstream only provides binaries for the x86_64 architecture:
      • toolchain/gnu-milkv-milkv-duo-bin: For Linux glibc environments.
      • toolchain/gnu-milkv-milkv-duo-elf-bin: For bare-metal environments.
      • toolchain/gnu-milkv-milkv-duo-musl-bin: For Linux musl environments.
    • Updated the Milk-V Duo official system image packages to the latest upstream version. RuyiSDK has repackaged these images under permission from the vendor, so that all system images distributed through RuyiSDK channels can be logged in with the username and password ruyisdk for your convenience.

Release notes for RuyiSDK 0.17

· One min read
xen0n
RuyiSDK 技术主管

RuyiSDK 0.17 is now released. The corresponding package manager version is also 0.17.0. You can download the RuyiSDK package manager from one of the following locations:

This update mainly consists of the following changes. Happy hacking!

RuyiSDK Package Manager

  • Fixed issue #181: When using features like ruyi news read in narrower terminal windows, long lines in Markdown code blocks no longer have missing characters, and there are no spaces at the beginning or end of lines that would affect copy-paste operations. The tradeoff is that the full-width beautiful background color is no longer implemented.

RuyiSDK Software Repository

  • Updated Box64 to the latest upstream development version.
  • Updated WPS Office to the latest upstream version. Note: Upstream has removed native support for AArch64 architecture. These users will also need to rely on binary translation solutions to run WPS Office.
  • Clarified the open source license for the software repository content: Apache 2.0 license, consistent with the Ruyi package manager itself.

Release notes for RuyiSDK 0.16

· One min read
xen0n
RuyiSDK 技术主管

RuyiSDK 0.16 is now released. The corresponding package manager version is also 0.16.0. You can download the RuyiSDK package manager from one of the following locations:

This update mainly consists of the following changes. Happy hacking!

RuyiSDK Package Manager

  • Completed the plugin transformation of the device installer (ruyi device provision). Future support for uncommon flashing procedures will be more convenient, as updating the ruyi core may not be necessary.

嘉楠勘智K230D: 首款基于新32位 RuyiSDK 的AIoT量产芯片

· 7 min read
RuyiSDK
RuyiSDK 团队

在上期文章中,向大家介绍了《玄铁团队与PLCT实验室联合发布:新32位产品级开源工具链及Linux内核》,本期为大家带来新32位(RV64ILP32)产品化的最新进展:嘉楠勘智K230D。去年,嘉楠推出 K230,它基于玄铁c908 打造,是世界上第一款带有 VECTOR 1.0 的 RISC-V 64位 AIOT 芯片。今年,嘉楠勘智推出更高集成度的 K230D AIoT 芯片,内存由原来外挂 256MB/512MB 改为内封 128MB。原先基于 LP64 ABI 的软件内存开销过大,不再适合 K230D,而新32位技术可同时提升内存与缓存的效率。PLCT实验室联合玄铁团队,一起为 K230D 打造基于新32位的 RuyiSDK,第一次实现新32位 AIoT 产品的落地。相比原先基于 LP64 ABI 的 SDK,新32位 SDK 内存开销下降 30%,同时链表遍历性能提升 20%,兼顾成本和性能。

616c6103a9a4656a2b24226e55425d62.png

达摩院玄铁团队联手嘉楠科技和中科院软件所PLCT实验室,将新32位落地到Banana Pi开源社区的BPI-CANMV-K230D-Zero 开发板,并与PLCT实验室的 RuyiSDK 集成,一起为用户提供便捷的使用体验:

  • 升级 Linux 内核至 6.6、升级工具链

  • 新增32位根系统 和 LVGL

  • 基于 VECTOR 的图形加速

  • 支持 Linux + Nuttx 双系统,大小核任意切换

  • 支持传统64位和新32位,两种系统配置

内核配置:

传统64位(64LP64)新32位(64ILP32)
内核编译命令make ARCH=riscv k230_defconfig allmake ARCH=riscv k230_defconfig 64ilp32.config all

默认配置差异仅2行:

CONFIG_ARCH_RV64ILP32=y

CONFIG_32BIT=y

内存对比

下面的视频和图片展示了,传统64位(左)与新32位(右)对比 LVGL 的运行:

k230d_final.jpeg

动态内存对比传统64位 (RV64 LP64)新32位 (RV64 ILP32)
used37MB24MB
静态内存对比传统64位 (RV64 LP64)新32位 (RV64 ILP32)
kernel code10282KB10456KB
rwdata1126KB832KB
rodata5105KB4464KB
bss500KB376KB

相比传统64位,新32位 RuyiSDK 大幅提升内存使用效率,避免了 K230D 产品化中的内存浪费。

性能对比

由于 LP64 的指针数据类型比 ILP32 大一倍,导致 LP64 的缓存利用率偏低。下面,基于 K230D 对比二者的双向链表遍历性能:

双向链表遍历 (链表节点为4000,遍历50000次结果)

第一次执行时长第二次执行时长第三次执行时长第四次执行时长第五次执行时长平均执行时长
单位:纳秒单位:秒
LP64387222162834202618503774494961353948499840349405903.728280805
ILP32261474925722618915172680216665289449936828472820362.659727769

结果显示,ILP32 的链表遍历性能显著优于 LP64。

相关资料:

K230D RuyiSDK:https://github.com/ruyisdk/k230_linux_sdk

(镜像构建详见文档 https://github.com/ruyisdk/k230_linux_sdk/blob/dev/README_zh.md

K230D 使用说明:https://ruyisdk.org/docs/k230d/intro

结束语

与过往的架构(ARM、x86、MIPS、Sparc)聚焦用户态的思路不同,当前新32位的方案是:基于 RVA20/22/23 Profiles 为 RV64 架构的特权态提供 ILP32 ABI 能力,这是前人未曾走过的新路。自 2024 年 3 月推出新 32 位工具链和 Linux 内核以来,这次终于在 K230D 上实现了产品化,降低了 30% 的内存开销,大幅提升缓存性能,这些成果进一步揭示了新 32 位的产业化价值。我们热切期待开发者们积极参与新32位的开发和完善中,共同提出宝贵的建议和意见,推动新 32 位不断发展。我们致力于建立一个健康和活跃的开源社区,将持续投入资源和精力,确保新32位软件的稳定和可靠,并不断改进和完善其功能和性能。在此,我们也呼吁更多的硬件厂商加入我们的阵营,共同推动新32位嵌入式系统的发展和创新,为行业带来更多机遇。

关于我们

●   RuyiSDK 是一个由 PLCT Lab 所启动的开源项目,该项目旨在为 RISC-V 开发者提供一个完整的、全家桶式的全功能开发环境,包含从编译、调试到仿真的全套工具,并计划支持市面上主流的 RISC-V 硬件。

●   达摩院玄铁团队持续深耕 RISC-V 技术研发及生态建设,并陆续推出了一系列玄铁处理器,可满足高中低全系列性能需求。玄铁积极拥抱开源,坚持开放创新,已逐渐构建起以 RISC-V 为核心的生态体系,与生态伙伴协同推动 RISC-V 芯片、开发工具、操作系统、应用解决方案等不同层面的软硬一体化发展。全力推动 RISC-V 软硬全栈技术多领域发展落地,加速实现智能时代的万物互联!

●   嘉楠科技(Canaan Inc.)(纳斯达克股票代码:CAN)是一家领先的高性能ASIC芯片设计公司,以“区块链+AI”为多元化经营战略,业务范围涵盖高性能ASIC计算芯片及设备研发、AI芯片及产品开发。作为一家纳斯达克上市公司,嘉楠科技是全球“区块链第一股”,也是第一家在美国上市的中国自主知识产权AI芯片公司。公司愿景:提升社会运行效率,改善人类生活方式。