
大家好。距上一版本发布已逾一年,RustSBI 社区荣幸地带来 0.4.1 版本。
本次更新重点面向在轨卫星、边缘计算等高安全、高可靠场景,在巩固经典的操作系统实验等应用的同时,也为 SBI 固件相关学术研究提供了验证平台。
除 rustsbi crate 本身外,sbi-spec、sbi-rt、sbi-testing 等依赖包也同步发布了新版本,并且 riscv-aia 包已正式面世。
希望大家喜欢这些更新。以下是详细的更新日志。
更新日志
相比 0.4.0 版本,本次更新主要增加了各个 SBI 扩展的细节能力,迁移、升级了依赖包与工具链 edition,并对易用性和完整性做出了有效调整。
请开发者注意:RustSBI 0.5.0 版本将对 PMU 模块的若干函数引入破坏性变更(breaking change)。使用该模块的软件在迁移到未来的 RustSBI 0.5.0 时需提前规划。
新增
- CI:在 GitHub workflows 中增加了
check-changelog 和 check-commit-signatures 检查步骤。
- PMU:为
Pmu trait 补充了缺失的 snapshot_set_shmem 函数,并添加了相应测试用例。
- PMU:为
&T、Option<T> 及 Forward 结构体实现了 snapshot_set_shmem。
- Forward:为
Forward 结构体派生 Copy、Default、PartialEq、Eq 和 Hash。
- PMU:标记
pmu_counter_config_matching、pmu_counter_start、pmu_counter_stop 的签名将在 0.5.0 版本中发生破坏性变更。
- lib:从
sbi-spec crate 中重新导出(re-export)CounterMask 结构体。
更改
- 迁移 crate 至 Rust 2024 edition。
- 升级依赖
riscv 至 0.16.0。
- 完善
system_suspend 函数的文档说明。
- 使用
Option::map_or 替换原有的 map + unwrap_or 模式。
- 修正文档中指向 Prototyper 固件的链接。
- 明确 SBI IPI 和 RFENCE 扩展中各错误码的含义。
- 将文档示例中的
#[naked] 更新为 #[unsafe(naked)]。
修复
此外,本次更新还带来以下依赖包的首次发布或版本更新:
软件包更新
sbi-spec 0.0.9(新版本)
sbi-rt 0.0.4(新版本)
sbi-testing 0.0.3(新版本)
riscv-aia 0.0.0(首次发布)
贡献者与捐助者
本次新版本离不开众多社区成员的贡献,让我们由衷感谢下列贡献者。
- Carlos Lopez
- Chao Liu
- DongQing, Rex Don
- Grassedge, GrassedgeT
- guttatus
- hanbings
- jackfiled
- Jiefeng Li
- JingXuan_Wei, JensenWei007
- Longbing Zheng
- LunaRain_079
- lurenjia1213
- manbo1234
- manchangfengxu
- Mechanicu
- Nelson Boss
- nitrospeeder
- Nowherechan
- Panda Jiang
- Polardist
- polypopopo
- primercoder
- Ricardo Ren
- rmsyn
- Stone Simpson
- wan9fe
- Woshiluo Luo
- Xiangbo Zhang
- xiaobor123
- xuanh08
- Yu Chongbing
- yzs
- Zhenchen Wang, Plucky923
- Zhouqi Jiang, Luo Jia
- Zongyao Chen, Solar1s., chenzongyao200127
- 炽热金刚
RustSBI 0.4.1 版本的开发过程受到了社区热心伙伴的赞助,让我们感谢以下开源赞助者(按赞助次序排序)。

安装方法
随着 RustSBI 0.4.1 的发布,RustSBI Prototyper 项目的正式版也将提上日程。RustSBI Prototyper 是运行在 M-mode 的 SBI 固件。
目前,安装 RustSBI Prototyper 需要从源码编译运行:
$ git clone git@github.com:rustsbi/rustsbi.git
$ cargo prototyper
RustSBI Prototyper 可以在多个 C 或 Rust 引导生态链中直接替换 OpenSBI,例如 U‑Boot 等。
此外,RustSBI 库已发布至 crates.io。若您使用 RustSBI 库开发虚拟化、模拟器等应用,可通过以下方式引入:
[dependencies]
rustsbi = "0.4.1"
结束语
感谢您对 RustSBI 的支持,愿您的每次系统引导都开启全新、美好的一天。
欢迎继续在 GitHub 上关注我们的项目及后续进展:https://github.com/rustsbi/rustsbi
|