Skip to main content

Blog

See important news from the RuyiSDK team at any time

Release notes for RuyiSDK 0.43

· 2 min read

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

[!NOTE] RISC-V users can install ruyi using pip, but since some Python libraries depended on by ruyi do not yet provide pre-compiled packages for the RISC-V architecture on PyPI, the Python package manager will attempt to compile and install these dependencies from source code when installing ruyi, which may be very time-consuming or fail to compile.

If you encounter problems installing ruyi on a RISC-V device, it is recommended to use other installation methods.

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

RuyiSDK Package Manager

  • Running ruyi as root is now allowed in container environments, to facilitate usage in controlled scenarios such as CI.
  • Metadata such as package name and version number of the used RuyiSDK packages are now recorded in newly created Ruyi virtual environments, for consumption by RuyiSDK ecosystem components such as RuyiSDK IDE.
  • Engineering iteration:
    • Added support for Python 3.14 runtime environment.
    • Removed ruyi's dependency on packaging. Packagers are requested to update their dependency declarations.
    • Added an integration test framework as a supplement to ruyi-litester, helping to continuously ensure that ruyi's functionality is not broken in niche scenarios.

RuyiSDK Software Repository

  • New package:
    • source/riscv-gnu-toolchain-plct: Source code repository collection for toolchain/gnu-plct.
  • New device support:
    • Milk-V Jupiter: Compatible with various Bianbu images.
    • Sipeed LicheePi 3A: Compatible with various Bianbu images.
    • SpacemiT MUSE Book: Compatible with various Bianbu images.
    • SpacemiT MUSE Box: Compatible with various Bianbu images.
    • XiangShan Nanhu Laptop: Compatible with RedleafOS.
  • Improved device support:
    • Removed Armbian support for Pine64 Star64: Upstream has stopped maintenance and no longer provides system image downloads.
    • Bianbu Desktop and Bianbu Minimal for various SpacemiT K1 devices: Added images suitable for eMMC storage devices.
    • Added Bianbu Desktop Lite for various SpacemiT K1 devices.

Thanks to @weilinfox for the contribution!

Pre-release testing and known issues

RuyiSDK 0.43.0 has passed our pre-release tests. Testing was conducted against 0.43.0-beta.20251118, and 0.43.0 is planned to be released based on 0.43.0-beta.20251118.

Release notes for RuyiSDK 0.42

· 5 min read

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

[!NOTE] RISC-V users can install ruyi using pip, but since some Python libraries depended on by ruyi do not yet provide pre-compiled packages for the RISC-V architecture on PyPI, the Python package manager will attempt to compile and install these dependencies from source code when installing ruyi, which may be very time-consuming or fail to compile.

If you encounter problems installing ruyi on a RISC-V device, it is recommended to use other installation methods.

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

RuyiSDK Package Manager

  • Default telemetry mode is now changed to local -- collecting data but not automatically uploading.
    • Accordingly, when running ruyi for the first time in the terminal interface, ruyi will ask for your data collection preference and help you write it to the user configuration file.
  • ruyi extract command default behavior changes and other improvements:
    • ruyi extract now extracts the requested package content into a separate directory named after the package name and version. Previously, it would extract directly to the current working directory, which could clutter the user's directory if the user did not read the documentation in advance. If the previous behavior is still needed, the newly added --extract-without-subdir option can be passed.
    • ruyi extract now supports the --dest-dir or -d option to specify a directory other than the current working directory for extraction.
    • ruyi extract also adds the --fetch-only or -f option, consistent with the corresponding option in ruyi install.
  • Polished command-line user experience:
    • In supported terminals, ruyi will highlight important manual operations in bold red style.
    • Before running ruyi for the first time, attempting command-line auto-completion will no longer incorrectly print prompt messages.
    • ruyi install -f, used to download packages without installing or extracting them, now supports downloading source-type packages.
    • If a user downloads the single-binary distribution of ruyi but forgets to rename it to ruyi, ruyi will remind the user to do so at runtime.
  • Fixed some issues:
    • When the value of repo.local is an empty string or equal to the default value, it will no longer be judged as a custom software source local path.
    • Fixed an issue where ruyi update needed to be run twice to reflect changes after changing repo.remote when automatically managing the software source remote branch.
    • ruyi clean --all will no longer leave package installation status records.
    • User configuration files are no longer allowed to override configuration items that are not user-facing.
  • Updated documentation:
    • Documented the system global search path for the ruyi configuration file for reference by packagers, system administrators, etc. Thanks to @bkmgit for the contribution!
  • Engineering iteration:
    • ruyi's dependency on packaging is no longer necessary and will be removed in version 0.43.0. Packagers are requested to update dependency declarations at that time.

RuyiSDK Software Repository

  • Entity database updates:
    • Profiles used by Ruyi virtual environments are now exposed via the profile-v1 entity type, such as profile-v1:generic.
  • Engineering iteration:
    • Fixed some configuration issues with third-party software source mirror addresses. Thanks to @weilinfox for the contribution!

Pre-release testing and known issues

RuyiSDK 0.42.0 has passed our pre-release tests. Testing was conducted against 0.42.0-alpha.20251013, 0.42.0-beta.20251015, and 0.42.0-beta.20251017, and 0.42.0 is planned to be released based on 0.42.0-beta.20251017. The following table lists the new unresolved defects in version 0.42.0-beta.20251017:

IssueSeverityNotes
A large number of old revyos images were deleted #116MinorBuilt-in self-healing; expected to be fixed before 0.43.0

Due to the deletion of a large number of historical images by RevyOS, there are inconsistencies between the RevyOS upstream, the operating system support matrix, and the Ruyi package manager software repository. The fix details have been confirmed and are scheduled to be implemented before version 0.43.0.

You can also refer to the table below to track the progress of fixing historical legacy issues:

IssueSeverityNotes
Usage notes regarding fastboot #95MajorFiled new issue for tracking; planned fix in version 0.43.0
Usage notes regarding pip installation #96MajorHas plans for overall renovation of documentation and concrete schedule
Some packages fail to download #37MinorHas follow-up comments; already under fix
BananaPi BPI-F3 eMMC storage variant did not refer to any combo #101MinorBuilt-in self-healing; see updates in issue comments

These legacy issues do not negatively impact the core functionality of the Ruyi package manager, but may affect user experience, so it is recommended to be aware of them before downloading and updating your Ruyi package manager version. Issues related to packages-index will mainly affect the ruyi device provision function. Please do not use the BananaPi BPI-F3 (eMMC storage) image for the BananaPi BPI-F3 board and the Armbian for Pine64 Star64 image for the Pine64 Star64 board. Relevant defects can be resolved via ruyi update after they are fixed.

Release notes for RuyiSDK 0.41

· 3 min read

RuyiSDK 0.41 is now released. The corresponding package manager version is also 0.41.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

  • ruyi update now prints informational messages before and after accessing the network.
  • If running a ruyi command triggers repository synchronization, an informational message is printed.
  • ruyi news (when invoked without a subcommand) now informs you of unread news.
  • On the first run of the one-file distribution of ruyi in bash or zsh, you will be prompted to configure shell completions.
  • The RuyiSDK device provisioner now checks whether the target device file for the dd command is currently mounted, and will refuse mounted devices.
  • Engineering changes:
    • Reintroduced Python project metadata compatible with Poetry 1.0.7 to facilitate distro packaging.
    • Automated packaging for Debian, deepin, and Ubuntu is now performed for every ruyi tag to aid testing.

RuyiSDK Software Repository

  • New packages:
    • source/jdk23u: OpenJDK 23 source.
    • source/llvm: LLVM source.
    • source/llvm-plct: PLCT-maintained LLVM source with RVP extension support.
    • source/opencv: OpenCV source.
    • source/qemu: QEMU source.
    • source/qemu-plct: PLCT-maintained QEMU source with RVP extension support.
    • source/v8: V8 JavaScript engine.
  • Package updates:
    • toolchain/gnu-plct: PLCT-maintained GNU toolchain, version 0.20250912.0.
    • toolchain/llvm-plct: PLCT-maintained LLVM toolchain, version 21.1.0.
    • toolchain/llvm-upstream: Upstream LLVM toolchain, version 21.1.1.
  • Improved device support:
    • board-image/freebsd-riscv64-mini-live: removed unusable legacy versions and added updated ones.
    • board-image/openbsd-riscv64-live: removed unusable legacy versions and added updated ones.
    • board-image/ubuntu-server-riscv64-sifive-unmatched: removed unusable legacy versions and added updated ones.
    • Added a new manual profile to the ruyi virtual environment. This profile does not configure any compiler flags on your behalf and is suitable when you need to control -march, -mabi, or -mcpu yourself.
  • Engineering changes:
    • Dropped support for ruyi 0.33.0 and earlier to reduce maintenance burden.
    • Systematically configured mirror lists for third-party software sources.

Thanks to @weilinfox for their contributions!

Pre-release testing and known issues

RuyiSDK 0.41.0 has passed our pre-release tests. Testing was conducted against 0.41.0-beta.20250922 and 0.41.0-beta.20250926, and 0.41.0 is planned to be released based on 0.41.0-beta.20250926. The following defect present in 0.41.0-beta.20250922 was fixed in 0.41.0-beta.20250926:

IssueStatusNotes
[Feature Request] Provide information prompts when automatically running ruyi update #352FixedFixed in 0.41.0-beta.20250926

This version of RuyiSDK contains some known issues that do not negatively impact core functionality. Please be aware of the issues and double-check before you upgrade, to avoid potentially degraded user experience or loss.

IssueSeverityNotes
Usage notes regarding fastboot #95MajorFiled new issue for tracking; planned fix in version 0.42.0
Usage notes regarding pip installation #96MajorHas plans for overall renovation of documentation and concrete schedule
Some packages fail to download #37MinorHas follow-up comments; already under fix
BananaPi BPI-F3 eMMC storage variant did not refer to any combo #101MinorBuilt-in self-healing; see updates in issue comments

Issues in the packages-index primarily affect the ruyi device provision workflow. For now, please avoid the BananaPi BPI-F3 (eMMC storage) image for the BananaPi BPI-F3 board and the Armbian for Pine64 Star64 image for the Pine64 Star64 board. Fixes will be delivered via ruyi update when available.

Release notes for RuyiSDK 0.40

· 2 min read

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

We focused on QA process improvements for this release and have doubled up on our pre-release compatibility and documentation tests. The release was delayed by 2 days compared to our regular release cadence as a result.

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

RuyiSDK Software Repository

  • Improved device support:
    • Debian built by fishwaldo for Sipeed LicheeRV Nano: added versions 1.2.0 and 1.3.0.
    • RevyOS for Milk-V Pioneer: updated version 0.20250901.0.
  • Engineering changes:
    • Fixed data structure of board-image/debian-desktop-sdk-milkv-mars-cm-sd, and added a CI check to ensure no regression of this kind.

Thanks to @weilinfox for their contributions!

Pre-release testing and known issues

RuyiSDK 0.40 has passed our pre-release tests.

This version of RuyiSDK contains some known issues that does not negatively impact core functionality. Please be aware of the issues and double-check before you upgrade, to avoid potentially degraded user experience or loss.

IssueSeverityNotes
Inconsistent format for code blocks #93FixedSee updates in issue comments
Casing of RuyiSDK in links #94FixedSee updates in issue comments
Usage notes regarding fastboot #95MajorFiled new issue for tracking; planned fix in version 0.42.0
Usage notes regarding pip installation #96MajorHas plans for overall renovation of documentation and concrete schedule
Some packages fail to download #37MinorHas follow-up comments; already under fix
BananaPi BPI-F3 eMMC storage variant did not refer to any combo #101MinorHas follow-up comments; OTA fix to be developed

Release notes for RuyiSDK 0.39

· 2 min read

RuyiSDK 0.39 is now released. The corresponding package manager version is also 0.39.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

  • ruyi is now published on PyPI. Now you can install the RuyiSDK package manager with pip install ruyi or a similar command, as long as you have a Python environment.
  • If you provide your own local RuyiSDK software repository by overriding its local path, and the remote URL of that repo's current branch differs from the corresponding ruyi configuration, ruyi update will now exit with an error instead of overwriting your remote URL.
  • Continued polishing of shell completions:
    • Optimized ruyi startup latency in normal (non-completion) mode.
    • If the software repository has never been synchronized locally, ruyi no longer attempt to sync it during command-line completion.
  • Engineering changes:
    • End-to-end integration tests now run for every PR to ensure typical CLI usage does not regress.
    • Shell completion scripts are now included in the ruyi source distribution under contrib/shell-completions, making it easier for distro packagers to integrate.
    • Preparing for Ubuntu 22.04 LTS packaging: the test suite now runs with pytest 6.2.5.
    • When building ruyi's one-file distribution, prebuilt cffi and pygit2 are used for the RISC-V build to reduce build times.
    • Simplified the ruyi release process: tagging and the release workflow are now automated.

RuyiSDK Software Repository

  • Package updates:
    • source/milkv-duo-examples: Milk-V Duo example code, version 20241219.
  • Improved device support:
    • RevyOS U-Boot for Milk-V Meles (4/8/16G variants): caught up with upstream versions.
    • RevyOS for Milk-V Pioneer and Milk-V Meles: added missing versions.
    • Buildroot SDK for Sipeed LicheeRV Nano: caught up with upstream versions.
  • Engineering changes:
    • Formatted all package manifests and added a CI check to ensure new packages follow the unified coding style.

Thanks to @Cyl18 and @weilinfox for their contributions!

Release notes for RuyiSDK 0.38

· One min read

RuyiSDK 0.38 is now released. The corresponding package manager version is also 0.38.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 ruyi device flash as an easier-to-remember alias for the RuyiSDK device provisioner. Thanks to @Sequel from the RuyiSDK community forum for the feedback!
  • When ruyi needs to invoke an external command but cannot find it, it will now wait for you to install it and retry, if the current terminal is interactive. You can install the required command in another terminal, then return to the terminal where ruyi is running and press Enter to continue. You can also press Ctrl+C to exit. Thanks to @Sequel from the RuyiSDK community forum for the feedback!

RuyiSDK Software Repository

  • Improved device support:
    • Added historical versions of RevyOS for Sipeed LicheePi 4A. Thanks to @Cyl18 for the contribution!
    • Added versions 1.1.2 and 1.1.4 of Arduino for Milk-V Duo. Thanks to @Cyl18 for the contribution!

Release notes for RuyiSDK 0.37

· 2 min read

RuyiSDK 0.37 is now released. The corresponding package manager version is also 0.37.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 basic command-line completion support, initially for Bash and Zsh. Thanks to @wychlw for the contribution!

    To enable command-line completion for ruyi, source the completion script in your shell profile, e.g. .bashrc or .zshrc:

    sh
    # For zsh users: replace "bash" with "zsh"
    eval "$(ruyi --output-completion-script=bash)"
    

    Currently, subcommands of ruyi and package name arguments for commands like ruyi install are supported.

  • ruyi self clean no longer crashes if the news read-state file does not exist. Thanks to @weilinfox for reporting the bug!

  • Python tracebacks are no longer shown to the user when fetching a remote Git repository fails.

  • FTP passive mode is now only enabled for curl or wget when the download URL protocol is FTP. This fixes an issue where some RuyiSDK users were unable to download any files due to a bug in cURL 8.14.1. Thanks to @weilinfox for reporting the ruyi bug!

  • Refactored the handling of bundled resources in ruyi, decoupling it from the virtual environment mechanism. This allows for bundling other non-venv-related resources in the future, such as command-line completion scripts, internationalization string files, etc. A CI check is also in place to ensure the compressed resources included in ruyi are always in sync with the original files.

  • Added support status for OpenCloudOS 9.4, openEuler 24.03 LTS SP2, openEuler 25.03, and openKylin 2.0. The Python dependencies for ruyi are partially missing on these distributions, but the versions of other dependencies are sufficient. We expect to have full support for them by October 2025.

RuyiSDK Software Repository

  • Entity database updates:
    • Added the SpacemiT X60 micro-architecture.
    • Added the SpacemiT K1 processor model.
    • Added device variants for BananaPi BPI-F3 with eMMC and SD storage.
  • Improved device support:
    • Updated the Buildroot SDK for Milk-V Duo (64 & 256M RAM variants) and Duo S (SD storage variant). Thanks to @Cyl18 for the contribution!
    • Added support for the SD storage variant of BananaPi BPI-F3, with Bianbu Desktop and Bianbu Minimal systems provided by SpacemiT. Thanks to @wychlw for the contribution!

Release notes for RuyiSDK 0.36

· 2 min read

RuyiSDK 0.36 is now released. The corresponding package manager version is also 0.36.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

  • After each ruyi update, you will now be informed of which installed packages have newer versions available. Since some projects may require precise toolchain versions, you can choose to update with ruyi install and recreate relevant virtual environments as needed.
  • You can now uninstall installed packages using ruyi uninstall. Shorter aliases ruyi remove and ruyi rm are also available.
  • The ruyi list output now shows whether each package's installation files are fully downloaded.
  • When both machine-readable output (porcelain mode) and debug output (RUYI_DEBUG=y) are enabled, the initial log lines will no longer be output in wrong format.
  • Startup performance of the ruyi tool has been improved, saving 200-300ms per run (depending on your machine). This paves the way for low-latency command-line completion in the future. A CI lint is also in place to ensure future code changes do not regress this optimization.

RuyiSDK Software Repository

  • Updated toolchain/gnu-plct: The GNU RISC-V toolchain maintained and built by PLCT, now including GNU binutils 2.45 (pre-release snapshot), GCC 15.1.0 and glibc 2.40.
  • Updated RISC-V microarchitecture definitions in the entity database, adding:
    • Xiangshan Kunminghu
    • Xuantie C908, C908V, C910V2, C920, C920V2
    • MIPS P8700
    • 8-wide Tenstorrent Ascalon
  • Corrected the RISC-V ISA string of Xuantie C910 to the standard form accepted by upstream GCC.

Release notes for RuyiSDK 0.35

· One min read

RuyiSDK 0.35 is now released. The corresponding package manager version is also 0.35.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

  • Package installation status is now tracked. This information is also reflected in the ruyi list output, and filtering packages by installation status is also supported by passing the --is-installed y/n parameter to ruyi list.
  • ruyi entity list can now take one or more -t / --entity-type parameters to list entities of specific type(s).
  • ruyi entity list now supports porcelain mode output for machine-readable results.

RuyiSDK Software Repository

  • Added historical versions for Milk-V Duo (128M & 256M) board images.
  • Fixed configuration for Milk-V Duo (128M & 256M) board images version 2.0.0.
  • Updated multiple RevyOS images for Milk-V Meles.
  • Fixed configuration for RevyOS image version 1.20250123.0 for Milk-V Meles.
  • Updated some documentation links.
  • Cleaned up legacy configuration data for the RuyiSDK device provisioner that was deprecated in RuyiSDK 0.33.

Release notes for RuyiSDK 0.34

· 3 min read

RuyiSDK 0.34 is now released. The corresponding package manager version is also 0.34.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

  • Supported partial extraction of tarballs, to accommodate certain vendors' practice of bundling multiple software packages into a single distribution archive through their official channels.
  • Target-tuple-independent commands, such as vendor-specific flashing tools can now be additionally provided in virtual environments with ruyi venv --extra-commands-from.
  • ruyi admin format-manifest now preserves header and footer comments.
  • Telemetry feature updates:
    • When ruyi is invoked for the first time in a terminal, the user will now be asked once for a one-time immediate upload of installation information.
    • Fixed an issue where telemetry events were not recorded in ruyi's proxying mode.
    • Added support for recording package installation actions at the software repository level, allowing first-party or third-party RuyiSDK repository maintainers to understand the usage of their software.
  • Refactored the entry point of the ruyi command-line tool and ruyi's logging mechanism, eliminating most global variable usage to facilitate reuse of ruyi by other Python components in the RuyiSDK ecosystem in the future.

RuyiSDK Software Repository

The latest version of the RuyiSDK package manager is required for some packages updated in this release to be properly parsed and work. Therefore, we strongly recommend that you upgrade your ruyi to the latest version besides doing your routine ruyi update.

Reminder: Support for legacy versions of the device provisioner is now deprecated. Please update your RuyiSDK package manager as soon as possible. This support will be removed in RuyiSDK 0.35 (the next version).

  • Software repository format updates:
    • The ID of the official repository is explicitly defined as ruyisdk, for coexistence with future third-party repositories.
    • Terminology update: Renamed "flavors" that refer to non-standard behaviors to "quirks".
    • A new optional field commands is added to binary metadata to allow packages to declare executable commands they contain.
    • A new optional field prefixes_to_unpack is added to distfile metadata to support partial extraction of tarballs.
  • Improved device support:
    • board-image/revyos-sipeed-lpi4a: Updated the RevyOS image for Sipeed LicheePi 4A to 20250420 and fixed the 20250323 version.
    • Swapped the names of the version 1.0.7 "Python" and non-"Python" images for Milk-V Duo series.
  • Added packages:
    • board-util/wlink: Community-developed independent implementation of WCH-Link flashing and debugging tool.
    • source/wch-ch32v103-evt: WCH CH32V103 EVT official code example package.
    • source/wch-ch32v20x-evt: WCH CH32V20x EVT official code example package.
    • source/wch-ch32v307-evt: WCH CH32V30x & CH32V317 EVT official code example package.
    • toolchain/gnu-wch-mrs-toolchain-gcc12-bin: The GCC 12.x toolchain in the official 2.1.0 version of WCH MounRiver Studio (MRS) toolchain. The package is x86_64-only.
    • toolchain/gnu-wch-mrs-toolchain-gcc8-bin: The GCC 8.x toolchain in the official 2.1.0 version of WCH MounRiver Studio (MRS) toolchain. The package is x86_64-only.
  • Updated packages:
    • toolchain/gnu-plct-xthead: Version 3.0.1 of the Xuantie (formerly T-Head) toolchain built by PLCT using official Xuantie sources, with GCC 14.1.1.
  • Entity database updates:
    • Added entity definitions for WCH micro-architectures and CPUs.
    • Fixed CPU information for WCH boards.
  • Plugin system updates:
    • Added initial support for RISC-V 32-bit profiles.
  • Fixed formatting errors in some package declarations.