当前位置:   article > 正文

【Rust日报】2024-02-19 Linux 内核准备升级至 Rust 1.77

【Rust日报】2024-02-19 Linux 内核准备升级至 Rust 1.77

Linux 内核准备升级至 Rust 1.77

Linux 6.8 内核已经升级至 Rust 1.75,而最新的补丁则将内核的 Rust 代码迁移到 Rust 1.76,并准备好迎接即将发布的 Rust 1.77。 Rust 1.77 稳定了内核 Rust 代码使用的单字段 "offset_of" 功能,并添加了一个"--check-cfg" 选项,内核 Rust 代码未来可能会过渡到这个选项。这符合 Rust for Linux 跟踪上游 Rust 版本升级的政策,直到确定了所有使用的功能都被认为是稳定的最低版本为止。预计将在即将到来的 Linux 6.9 内核合并窗口中进行对 Rust 1.77 的升级。

原文链接 https://www.phoronix.com/news/Linux-Kernel-To-Rust-1.77

极小的 Rust 二进制文件

本文探索如何制作一个极小的 x86_64 Linux Rust 二进制文件,并比较其与纯汇编程序的竞争性。

从一个大小为 3.6 MiB 的起点开始,通过优化和调整,逐步减小二进制文件的大小。优化手段包括去除符号、调整编译参数、替换标准库等。通过去除标准库并直接使用 libc,以及自定义 _start 函数,极大地减小了二进制文件的大小。最终通过调整链接器标志和移除不必要的 ELF sections,将二进制文件的大小降至 400 bytes,达到了极小化的目标。

Rust 展现出了出色的系统编程能力,即使在 no_std 环境下也能进行嵌入式编程和其他应用领域。Rust 在性能和体积上的优势使其在实际应用中具有广泛的潜力,甚至可以取代一些汇编编写的程序。

原文链接 https://darkcoding.net/software/a-very-small-rust-binary-indeed/

FuturesUnordered 以及 future的顺序

FuturesUnordered 是 Rust 中用于并发子任务的强大工具,但如果使用不当,会导致死锁。

两种常见的 FuturesUnordered 使用模式:

  • 缓冲流:将工作流表示为 futures 的流,并使用类似 buffered 适配器将其缓冲。

  • 范围任务:将工作表示为“在” FuturesUnordered 上“生成”的任务,使用类似 moro 库的 API。

死锁的条件:

  • 互斥:每个任务都需要独占资源。

  • 等待资源:任务在等待其他资源时持有已分配的资源。

  • 不可抢占:资源不能从持有者手中强制移除。

  • 循环等待:存在任务链,每个任务都请求链中下一个任务持有的资源。

示例死锁:

使用异步生成器和互斥锁。

  1. async gen {
  2.     let mut guard = mutex.lock().await;
  3.     yield x;
  4.     yield y;
  5.     drop(guard);
  6. };
  7. for await elem in iter {
  8.     let mut guard = mutex.lock().await;
  9.     println!("{}", elem);
  10.     drop(guard);
  11. }

预防死锁:

  • 通过显式声明并发性来避免控制流中的隐式共享资源。

  • 优先使用范围任务而不是缓冲流,因为它们使资源依赖关系更清晰。

  • 使用通道时要注意队列大小和循环依赖关系。

  • 使用未缓冲通道测试以捕获潜在死锁。

Rust 的优势:

  • 所有权和借用可以防止死锁和复杂的同步。

  • 范围任务应该集成到运行时中以获得更好的借用支持。

其他注意事项:

  • 文章批评了使用大量任意值作为通道大小的做法,因为它隐藏了潜在的死锁。

  • 它建议使用利用所有权和借用的模式。

总结

FuturesUnordered 是一个强大的工具,但需要谨慎使用以避免死锁。了解死锁的条件以及如何预防它们,并选择合适的模式来实现并发。Rust 的所有权和借用系统可以帮助防止死锁,并使代码更安全、更可靠。

原文链接 https://without.boats/blog/futures-unordered/

Inlyne: 无浏览器 markdown 预览工具

Inlyne 是一款利用 GPU 加速的无浏览器工具,帮助您快速查看 Markdown 文件. 目前 0.4 版本发布.

ecb12b838ce601b232bc180500186d23.png

原文链接 https://github.com/trimental/inlyne/releases/tag/v0.4.0

--

From 日报小组 BobQ, FBI小白

社区学习交流平台订阅:

  • Rustcc论坛: 支持rss

  • 微信公众号:Rust语言中文社区

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/121357?site
推荐阅读
相关标签
  

闽ICP备14008679号