This Week in Rust
https://this-week-in-rust.org/blog/2025/11/26/this-week-in-rust-627/
EuroRust 演讲:Ergot 库中的不安全结构
深入探索 ergot 消息传递库中那些不安全的内部结构。从侵入式的链表、手动实现的虚函数表,到类型,James 将讲解如何让这个库即使在最小的设备上也能正常运行。
Ergot 是一个消息传递库,可以在各种不同尺寸的设备上运行,从大型台式机/服务器 PC 到非常小的单核微控制器,让开发者享受一个连贯的设备网络,无论设备的大小或用于连接它们的传输介质如何。 它包含类型安全的套接字 、 寻址和路由 。在最小的 MCU 尺寸配置中,它不需要内存分配器,并且与 no_std 兼容。在较大的 PC 尺寸配置中,为了性能和便利性,可以使用内存分配器。
观看:https://www.youtube.com/watch?v=33l3gNPBpzc
文章《用 Rayon 并行处理图算法》
这是一篇关于在 Rust 链接器 Wild 中利用 Rayon 并行处理图算法的介绍:
- 核心挑战:处理工作量未知的图遍历(如可达性分析),任务需动态发现且涉及共享状态修改,无法直接使用简单的并行迭代。
- 方案对比:
- Scoped Spawning(作用域生成):利用
scope和spawn动态派发任务。优点是代码逻辑清晰、组合性极佳;缺点是闭包会导致少量的堆分配开销。 - Channel + par_bridge:尝试用通道传递任务以减少内存分配。结果发现极难通过借用检查(Borrow Checker),且存在死锁风险,代码结构变得僵化且不可维护。
- Scoped Spawning(作用域生成):利用
- 最终决策:作者决定回退到 Scoped Spawning。结论是:为了微小的性能提升而牺牲代码的可组合性和安全性是不值得的。
阅读:https://davidlattimore.github.io/posts/2025/11/27/graph-algorithms-in-rayon.html
讨论:https://www.reddit.com/r/rust/comments/1p7omoh/thoughts_on_graph_algorithms_in_rayon/
walrus:分布式消息流平台,比 Kafka 快
Walrus 是一个用 Rust 开发的分布式消息流平台,旨在超越 Kafka。
- 极致性能:单节点写入达 120 万次/秒,利用
io_uring优化,基准测试击败 Kafka 和 RocksDB。 - 架构创新:数据与元数据分离,Raft 仅管理元数据,数据写入不经共识算法以消除瓶颈。
- 智能运维:支持自动分段轮替与负载均衡,无需手动配置。
- 严谨验证:使用 TLA+ 形式化验证分布式逻辑。
- 灵活性:可独立部署或作为 Rust 库嵌入使用。
仓库:https://github.com/nubskr/walrus
讨论:https://www.reddit.com/r/rust/comments/1p7mi2m/i_built_a_distributed_message_streaming_platform/
Hurl v7.1.0 更新
Hurl 是基于 Rust 开发的命令行 HTTP 测试工具),在该版本中:
- 自动美化 (核心特性):默认对 JSON 响应进行格式化和语法高亮,无需通过管道传输给
jq即可获得清晰易读的输出。 - 新功能增强:新增了
isObject和isList断言(Predicates),以及utf8Decode/utf8Encode过滤器。 - 体验升级:不仅是 HTTP 客户端,更是强大的 API 测试工具,通过视觉优化进一步提升了终端调试体验。
讨论:https://www.reddit.com/r/rust/comments/1p7309p/hurl_710_the_pretty_edition/
讨论:标准库的文件写入 API 可能会静默地丢失数据
在某些文件系统(尤其是 NFS)上,close 操作可能用于刷新内部缓冲区,并可能返回写入错误。Rust 会默默地丢弃这些错误,导致数据悄无声息地丢失。
这在几年前被报告过 https://github.com/rust-lang/rust/issues/98338。
讨论:https://www.reddit.com/r/rust/comments/1p7by82/standard_library_file_writing_can_lead_to_silent/
--
From 日报小组 苦瓜小仔
社区学习交流平台订阅:
评论区
写评论还没有评论