LWN 文章《如何在内核中用 Rust 编写驱动 2》
作者:Daroc Alden
这篇文章是关于如何在 Linux 内核中用 Rust 编写驱动程序的第二部分。
文章通过对比 Rust 和 C 语言在编写 Asix AX88796B 驱动程序时的语法、类型和 API 的使用,展示了两者之间的差异。
文章详细介绍了 Rust 的模块化、类型系统、宏的使用以及错误处理机制,并通过一个实际的软重置函数示例,展示了 Rust 在内核编程中的优势和特点。
阅读:https://lwn.net/SubscriberLink/1025232/fbb2d90d084368e3/
Reddit:https://www.reddit.com/r/rust/comments/1lnhc47/how_to_write_rust_in_the_linux_kernel_part_2/
Rust:重写 1.0 之前的声明宏解析代码
macro_rules!
的解析器被重写,改用简单的循环代替复杂的 MBE引擎。
这使得解析器更易读、更易扩展,错误信息也更清晰。例如,省略分号时会提示“expected ;”和“unexpected token”,而不是令人困惑的“no rules expected this token in macro call”。
这也将使得改进宏解析成为可能,以处理诸如 RFC 3697 (通过声明宏支持属性宏 #[attr_macro]
)和 3698 (通过声明宏支持 derive 宏 derive(Trait)
) 等新功能。
PR:https://github.com/rust-lang/rust/pull/143070
Reddit:https://www.reddit.com/r/rust/comments/1lnh4us/rewriting_pre10_compiler_code_for_better_macro/
文章《Rust 中的错误处理》
作者:felix-knor
文章讨论了 Rust 中错误处理的现状和问题。
传统的错误处理方式是为每个模块或整个 crate 定义一个错误枚举,这会导致函数返回的错误枚举包含其无法产生的错误变体。
作者提出了一种替代方案,即使用结构体表示错误,并通过宏生成错误集和自动转换实现。这种方法更灵活,但需要手动处理错误集的联合和转换。
作者还提到了一些探索这一范式的库,如 error_set
和 SmartErr
。
阅读:https://felix-knorr.net/posts/2025-06-29-rust-error-handling.html
Reddit:https://www.reddit.com/r/rust/comments/1lnbr0g/on_error_handling_in_rust/
Flecs:发布 v4.1 - ECS 库
Flecs 是一个快速的 C/C++ 实体组件系统(ECS),并支持 Rust 绑定。
新版本在性能上显著提升,如组件获取速度提升 5 倍,缓存查询迭代速度提升 4 倍等。
新增非碎片化组件存储,支持稀疏集设计,优化了内存使用。还改进了 Flecs Script,增加了新功能和性能提升。
此外,引入了查询布隆过滤器,优化了缓存查询的评估速度。
Flecs 4.1 还支持世界本地组件 ID,简化了多世界开发。
根据其作者的测试结果,Flecs 在大多数 基准测试 中都优于 Bevy。
仓库:https://github.com/SanderMertens/flecs
Reddit:https://www.reddit.com/r/rust/comments/1lntbxt/flecs_v41_an_entity_component_system_for_cccrust/
Klirr:自动化发票的程序
Klirr 是一个用 Rust 和 Typst 编写的自动化发票解决方案。
它支持一次性配置公司、客户和项目信息,自动计算工作天数和汇率,生成维护免费的发票。
Klirr 的发票编号基于当前月份,每月自动递增,支持多布局和多语言(目前支持英语和瑞典语)。它还支持添加费用、标记休假月份等功能。
Klirr 使用 RON 格式存储数据,可通过交互式终端界面进行配置,生成的发票可保存为 PDF 文件。
仓库:https://github.com/Sajjon/klirr
Reddit:https://www.reddit.com/r/rust/comments/1lnkpi7/klirr_invoice_automation_tool_written_on_rust/
--
From 日报小组 苦瓜小仔
社区学习交流平台订阅:
评论区
写评论还没有评论