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
本文探索如何制作一个极小的 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 中用于并发子任务的强大工具,但如果使用不当,会导致死锁。
buffered
适配器将其缓冲。moro
库的 API。使用异步生成器和互斥锁。
async gen {
let mut guard = mutex.lock().await;
yield x;
yield y;
drop(guard);
};
for await elem in iter {
let mut guard = mutex.lock().await;
println!("{}", elem);
drop(guard);
}
FuturesUnordered 是一个强大的工具,但需要谨慎使用以避免死锁。了解死锁的条件以及如何预防它们,并选择合适的模式来实现并发。Rust 的所有权和借用系统可以帮助防止死锁,并使代码更安全、更可靠。
原文链接 https://without.boats/blog/futures-unordered/
Inlyne 是一款利用 GPU 加速的无浏览器工具,帮助您快速查看 Markdown 文件. 目前 0.4 版本发布.
原文链接 https://github.com/trimental/inlyne/releases/tag/v0.4.0