This Week in Rust #64
阅读:https://this-week-in-rust.org/blog/2025/06/18/this-week-in-rust-604/
嵌入式 Rust 半月刊:The Embedded Rustacean Issue #48
阅读:https://www.theembeddedrustacean.com/p/the-embedded-rustacean-issue-48
LWN 文章《Asterinas: a new Linux-compatible kernel project》
作者:Ronja Koistinen
Asterinas 是一个用 Rust 编写的 Linux-ABI 兼容内核项目,采用“framekernel 架构”,结合了单体和微内核设计的优点。
它将需要 unsafe
的代码封装在库中,其余内核服务使用安全抽象开发,旨在提高系统安全性,同时保留单体内核的简单和高性能共享内存架构。
项目还计划进行形式化验证,与 CertiK 合作使用 Verus 验证内核。
目前 Asterinas 支持 x86 和 RISC-V 架构,支持 206 个 Linux 系统调用,目标是扩展 CPU 架构和硬件支持,提供云环境中的容器宿主操作系统。
阅读:https://lwn.net/SubscriberLink/1022920/5cc7ce0d6aea9fb9/
Reddit:https://www.reddit.com/r/rust/comments/1lfzw9v/lwn_asterinas_a_new_linuxcompatible_kernel_project/
文章《Writing a basic Linux device driver when you know nothing about Linux drivers or USB》
作者:crescentro
本文介绍了作者为 Nanoleaf Pegboard Desk Dock 编写 Linux 驱动的过程。
作者首先尝试通过 USB 捕获和分析官方驱动的通信协议,然后决定基于官方文档和自己的发现编写驱动。
在了解 USB 设备的基本概念后,作者使用 Rust 的 rusb
库编写了一个简单的驱动程序,能够向设备发送数据并接收响应。他还解决了设备因未读取中断而崩溃的问题,通过添加读取中断的代码,使设备能够正常工作。
最后,作者通过多线程实现了设备控制和中断处理的分离,为后续开发奠定了基础。
阅读:https://crescentro.se/posts/writing-drivers/
Reddit:https://www.reddit.com/r/rust/comments/1lgtc7v/writing_a_basic_linux_device_driver_when_you_know/
文章《Migrating off Legacy Tokio at Scale》
作者:Ronny Chan
Okta Workflows 引擎从 Tokio 0.1 迁移到 Tokio 1.0 的过程。
由于早期采用异步 Rust 生态系统,Okta Workflows 在 Tokio 1.0 发布前就已上线,代码难以维护。
迁移过程中,团队采用了兼容层和特性标志,逐步替换代码,避免了全面重写。
通过增加线程堆栈大小和谨慎选择堆分配,解决了 Tokio 1.0 的堆栈溢出问题。
最终,迁移使代码库更易读、更易维护,性能也有所提升。
阅读:https://www.okta.com/blog/2024/11/migrating-off-legacy-tokio-at-scale/
Reddit:https://www.reddit.com/r/rust/comments/1lgb0bo/migrating_off_legacy_tokio_at_scale/
Foxy:异步 HTTP 客户端
Foxy 是一个用 Rust 编写的轻量级异步 HTTP 客户端,专注于性能和易用性。
它基于 tokio
和 hyper
,支持 HTTP/2 和 TLS。Foxy 提供了简洁的 API,支持请求拦截、自动重试和超时等功能,还支持 JSON 和表单数据的自动序列化与反序列化。
它适用于需要高性能 HTTP 请求的 Rust 项目。
仓库:https://github.com/johan-steffens/foxy
Reddit:https://www.reddit.com/r/rust/comments/1lg7ucc/tell_me_what_you_think_about_my_rust_project/
Tako:异步 Web 框架
Tako 是一个用 Rust 编写的轻量级异步 Web 框架,受 Axum 启发但更注重明确性、可组合性和易理解性。
目前支持基本路由、请求提取器、中间件、SSE 和共享状态等功能。
项目尚在早期阶段。
仓库:https://github.com/rust-dd/tako
Reddit:https://www.reddit.com/r/rust/comments/1lgrjrf/tako_yet_another_async_web_framework_in_rust/
讨论:在 macOS 上分析内存问题
在 macOS 上尝试分析内存问题时,作者尝试了多种工具,但都未能成功。
valgrind
的 massif
和 dhat
在 aarch64 上不支持,且尝试添加支持的分支可能会导致系统崩溃。
jemalloc
虽然在 2024 年添加了 macOS 支持,但生成的符号信息无效。
dhat-rs
无法解析生成的 JSON 文件。
Instruments.app
和 leaks
也未能正常工作。
怀念 Linux 上的工具。
Reddit:https://www.reddit.com/r/rust/comments/1lg12fm/trying_to_profiling_heap_on_macos_is_frustrating/
讨论:爱上 Rust🦀 之后该何去何从?
Reddit:https://www.reddit.com/r/rust/comments/1lgdgxy/falling_in_love_with_rust_where_should_i_go_from/
--
From 日报小组 苦瓜小仔
社区学习交流平台订阅:
评论区
写评论还没有评论