Blog
See important news from the RuyiSDK team at any time
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!
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.
- 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!
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!
- 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!
- 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!
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!
-
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
:
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.
- 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!
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!
- 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.
- 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.
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!
- 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.
- 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.
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!
- 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.
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.
RuyiSDK 0.33 is now released. The corresponding package manager version is also 0.33.0.
You can download the RuyiSDK package manager from one of the following locations:
This update mainly consists of the following changes. Happy hacking!
- Migrated the device provisioner's data source to the entity database, to reduce maintenance costs and avoid potential merge conflicts in case of frequent updates.
- Improved device support:
- Added support for the 16GB RAM model of Milk-V Meles, with RevyOS.
- Entity database updates:
- Device entity definition update: device model variants have now been split into a separate entity type
device-variant
.
- Added a new "applicable system for device" informational entity
image-combo
.
- Support for legacy versions of the device provisioner is now deprecated. Please update your RuyiSDK package manager as soon as possible. The support will be removed in RuyiSDK 0.35.
- Added an API for reading news items from the official software repository.
- Added an API for querying RuyiSDK release notes by version tag.
- Extended download statistics coverage to all subdirectories under the current directory structure of the official software repository.
- Improved the build process of service containers.
RuyiSDK 0.32 is now released. The corresponding package manager version is also 0.32.0.
You can download the RuyiSDK package manager from one of the following locations:
This update mainly consists of the following changes. Happy hacking!
- For compliance, all pull requests to RuyiSDK now require a DCO (Developer Certificate of Origin).
- Added contribution guidelines to make it easier for community members to contribute to the project.
- Improved device support:
- Added special flashing strategy support for SpacemiT K1 devices.
- Fixed an issue where the device provisioner failed to call
fastboot
.
- Updated the Buildroot SDK image for Sipeed LicheeRV Nano.
- Updated the RevyOS image version for Sipeed LicheePi 4A and fixed issues.
- Updated the RevyOS image for Milk-V Meles.
- Renamed package
board-image/revyos-sg2042-milkv-pioneer
to board-image/revyos-milkv-pioneer
to comply with current package naming conventions.
- Entity database updates:
- Device entity definitions are now on par with the device provisioner's support range. Added device definitions for vendors including Milk-V, Sipeed, Canaan, StarFive, WCH, etc.
- Optimized ruyisdk.org's statistics page for performance.
- Integrated download counts from GitHub Releases channel into the RuyiSDK package manager download statistics on the official website, making the statistical data more accurate and comprehensive.
- Migrated the mirror synchronization script which resided in the RuyiSDK package manager repository and required manual set-up to server-side.
RuyiSDK 0.31 is now released. The corresponding package manager version is also 0.31.0.
You can download the RuyiSDK package manager from one of the following locations:
This update mainly consists of the following changes. Happy hacking!
- The RuyiSDK device installer now allows you to select a non-default (latest) version when multiple versions of a requested software package are available. This feature can be helpful if your development board requires an older system version.
- Added an experimental mode flag: the environment variable
RUYI_EXPERIMENTAL
, for enabling experimental features for which we do not yet guarantee compatibility.
- Added experimental feature: Entity Database.
- This feature helps RuyiSDK provide useful information related to your devices. For example, you can now use
ruyi list --related-to-entity device:sipeed-lpi4a
to query various software packages applicable to the Sipeed LicheePi 4A.
- Initial support includes four entity types: CPU microarchitecture (such as Xiangshan Nanhu, Xuantie C910, etc.), CPU models (such as Xiangshan Nanhu, Xuantie TH1520, etc.), device models (such as Sipeed LicheePi 4A, etc.), and software packages.
- These features are in preview, and incompatible changes may be made in the future to adapt to requirements, so they are only available when experimental mode is enabled. If you have use cases, please keep your
ruyi
and software repository up to date.
- Engineering changes:
- To avoid releases being affected by temporary outages of physical CI resources, the RISC-V build tasks have also been temporarily migrated to free public runners provided by GitHub Actions.
- Upgraded the Python version used to build the one-file
ruyi
distribution to 3.13.2.
RuyiSDK 0.30 is now released. The corresponding package manager version is also 0.30.0.
You can download the RuyiSDK package manager from one of the following locations:
This update mainly consists of the following changes. Happy hacking!
- Fixed an issue where
ruyi list --category-contains
was not working.
- Fixed an issue where performing
ruyi install
immediately after a fresh installation of ruyi
would cause a crash.
- Repository format updates:
- Added an experimental structured device model description database based on the current device installer configuration data, with initial support for describing the CPU and microarchitecture capabilities of each device model.
- Engineering changes:
- Migrated AArch64 build tasks to free public runners provided by GitHub Actions, to reduce maintenance costs for the RuyiSDK team.
- Fixed the CI open source license check task.