moss:Rust 编写的 Linux 兼容内核

moss 是一个用纯 Rust 和汇编语言开发一个 Linux 兼容的内核,大约 26000 行代码。
架构与内存
- 完整支持 AArch64 架构
- 提供清晰定义的硬件抽象层(HAL),便于移植到其他架构(例如 x86_64、RISC-V)
内存管理
- 完全启用 MMU 并支持内存页表管理
- 支持写时复制(Copy-on-Write, CoW)内存页
- 提供安全的异步函数,用于在内核与用户空间之间拷贝数据
- 支持内核态和用户态的内存缺页异常处理
- 使用 buddy 分配器管理物理地址,并使用
smalloc进行启动阶段的内存分配及内存预留跟踪
异步内核核心
moss 的核心特性之一是在内核上下文中使用 Rust 的 async/await 模型:
- 所有较复杂的系统调用均以
async函数形式编写,可休眠的函数调用前需加.await - 编译器强制禁止在休眠点持有自旋锁(spinlock),从而消除常见的内核死锁问题
进程管理
- 完整的任务管理,包括调度以及通过处理器间中断(IPI)实现的任务迁移
- 当前已实现 49 个 Linux 系统调用,足以运行大多数 BusyBox 命令
- 通过
clone()系统调用提供高级进程/线程派生能力 - 支持向进程和线程投递及触发信号
虚拟文件系统与文件系统驱动
- 提供完全基于异步抽象的虚拟文件系统(VFS)
- 驱动支持包括:
- 内存盘(ramdisk)块设备实现
- FAT32 文件系统驱动(只读)
devtmpfs驱动,用于访问内核字符设备
Github: https://github.com/hexagonal-sun/moss
rapid-rs v0.1.4 发布:零配置、开箱即用的 Web 框架
用 Rust 构建 Web API 不应需要拼凑十多个 crate 并编写数百行样板代码。rapid-rs 为你带来媲美 FastAPI 和 Spring Boot 的开发效率,同时兼具 Rust 的性能与类型安全。
⚡ 特性
- 零配置 —— 数据库、迁移、CORS、日志开箱即用
- 类型安全 —— 路由、验证和序列化均在编译期提供保障
- 自动生成文档 —— 从代码自动生成 Swagger UI 与 OpenAPI 规范的 API 文档
- 内置验证 —— 附带清晰的错误提示的表单验证
- 热重载 —— 通过 rapid dev 实现开发过程中的热重载
- 约定优于配置
- 生产就绪 —— 支持结构化日志、错误处理和健康检查
Github: https://github.com/ashishjsharda/rapid-rs
rootcause: 一个好用的结构化错误报告库

rootcause 是一个好用的结构化的错误报告库。目标是像 anyhow 一样易于使用(特别是 ? 运算符应当开箱即用),同时提供更丰富的结构和内省能力。
亮点
- 上下文及附加信息:错误报告同时携带上下文(类似错误的对象)和附加信息(结构化的信息数据)
- 支持类型参数:当你知道上下文类型时,可以为报告指定类型参数,从而实现类似
thiserror的模式匹配 - 合并多个报告:可将子报告组合成一棵树,同时保留所有结构和信息
- 丰富的遍历 API: 适用于序列化、自定义格式化或构建工具。
- 自定义钩子函数: 控制格式化方式或自动收集数据。
- 可克隆的报告: 在一个线程记录错误的同时,在另一个线程处理它,非常方便。
与其他库的对比
- vs.
anyhow:增加了结构化能力、附件、遍历 API 和类型化报告 - vs.
thiserror:类型安全性略低(有争议),但提供了简易的回溯、附件、钩子和更丰富的格式化功能 - vs.
error-stack:API 设计理念不同,类型化上下文是可选的,并且报告支持克隆
目前最新版本是 v0.8.1,作者计划在未来的 6 个月内升级到 v1.0。 所以近期希望大家可以在真实项目中使用并给出一些反馈意见。
Github: https://github.com/rootcause-rs/rootcause
--
From 日报小组 Yuan YQ
社区学习交流平台订阅:
评论区
写评论还没有评论