发布周刊 17 期

pull/968/head
sunface 2 years ago
parent 07e08e9315
commit d1aeaef5f8

@ -1,84 +1,93 @@
# 「Rust 语言周刊」 第 16 期 · 2022-06-24 # 「Rust 语言周刊」 第 17 期 · 2022-07-15
Rust语言周刊精选全世界过去一周的优秀文章、新闻、开源项目和语言动态。 Rust语言周刊精选全世界过去一周(或者几周)的优秀文章、新闻、开源项目和语言动态。
本周刊由 RustCn 倾情打造,其中, `[Zh]` 标识的中文资料由 Rust 翻译计划提供,并且原始的 Markdown 文档已[全部开源](https://github.com/rustlang-cn/rustt),欢迎大家阅读和订阅。 本周刊由 RustCn 倾情打造,其中, `[Zh]` 标识的中文资料由 Rust 翻译计划提供,并且原始的 Markdown 文档已[全部开源](https://github.com/rustlang-cn/rustt),欢迎大家阅读和订阅。
> RustCnhttps://hirust.cn, 公众号: Rust语言中文网 > RustCnhttps://hirust.cn, 公众号: Rust语言中文网
<img src="https://pica.zhimg.com/80/v2-2826dfca738cdc1795e77d12eb269906_1440w.png">
<h5 align="center">题图: Tauri 发布 1.0 版本</h5>
## 官方新闻 ## 官方新闻
1、[首期 Rust 基金会的赞助名单已经出炉](https://foundation.rust-lang.org/news/2022-06-14-community-grants-program-awards-announcement/) 1、[Zh] [Rust 发布 1.62 版本](https://course.rs/appendix/rust-versions/1.62.html)
按照目前的计划,基金会每年开放两次申请,每次 20 万美元的总额( 估计会逐年增加 ),大致授予[合作伙伴](https://foundation.rust-lang.org/news/2022-06-14-community-grants-program-awards-announcement/#fellowship-awards)和[个人项目](https://foundation.rust-lang.org/news/2022-06-14-community-grants-program-awards-announcement/#individual-project-grant-awards)两个方向 如果大家期待 Rust 像其它语言一样每一个新版本都带来大量新特性那你们可要失望了1.62 的更新内容相当少,甚至不如某些语言一个 minor 版本的更新力度,但**错不在 Rust**,建议大家了解下 Rust 的[版本发布流程](https://course.rs/appendix/rust-version.html),就明白其中的弯弯绕绕了
下次的申请开放大概在 10 月份左右,强烈建议有能力的都去试试,万一申请下来,几千美元也是很香的 :) ## 开源项目
## 精选文章 1、[基于 Rust 的操作系统训练营](https://github.com/LearningOS/rust-based-os-comp2022)
1、[Zh] [用 Rust 从 0 到 1 实现一个最简化的 KV 存储引擎](https://blog.csdn.net/qq_36456827/article/details/125304612) 该训练营有一个配套教程,将带大家从零开始使用 Rust 编写 RISC-V 架构的 类 Unix 内核 。
这种有讲有练的干货真的不多( 大部分人貌似都更喜欢做一些偏软货的东东,包括我自己 :P ),本文不仅内容质量高,而且还随文附送一个相当不错的 DB demo 实现,非常值得阅读和学习! 我自己也做开源,深知这件事会占用多少的时间和精力,甚至还会遭人非议,而我仅仅是写写书,跟作者这种大佬一比,差距就太大了... Respect!
2、[智商提升了一岁的 Rust 编译检查器](https://jackh726.github.io/rust/2022/06/10/nll-stabilization.html) 2、[Tauri 发布 1.0 版本](https://tauri.app/blog/tauri_1_0/)
当你好奇的看到这里时,和我一样,你被作者的标题忽悠了,其实是 Rust 编译检查器在最新版本中会默认开启所有的功能。不过在文章中,还讲到了很多生命周期错误提示的最新变动以及未来的展望,总算没白来了 :D 虽然 Tauri 很有名,但是为防有同学不知道背景,还是简单介绍下:它是一款跨平台的桌面应用开发框架,虽然内核是使用 Rust 开发,但是开发者可以使用自己喜欢的前端框架( `react`, `vue`, `vite` )来构建自己的用户界面,最终编译生成一个可执行的二进制文件,方便在各个不同的操作系统间分发运行。总之,你可以将 Tauri 当作是理念更先进的 Electron.js 。
3、[大佬来找茬系列之教学明星项目 mini-redis](https://smallcultfollowing.com/babysteps/blog/2022/06/13/async-cancellation-a-case-study-of-pub-sub-in-mini-redis/) 言归正传,在历经 1 年多的时间后Tauri 终于发布了 1.0 版本,这也标志着它已经可以在生产环境正式使用,并且目前来看,官方文档还算可以,甚至还提供了[中文文档](https://tauri.app/zh/v1/guides/getting-started/prerequisites),除此之外,我还发现了一个[宝藏教学系列](https://zhuanlan.zhihu.com/p/539708101),值得一读。
一般来说,在社区中推荐一个新手学习项目, [`mini-redis`](https://github.com/tokio-rs/mini-redis) 往往是首选,它拥有高质量且简洁的代码实现、清晰完善的文档以及对异步编程保姆式的引导讲解,总之非常棒。 3、[lettre 发布 0.1.0 版本](https://lettre.rs/post/lettre-0-10/)
但是它没有缺点吗这不Baby steps 大佬出手了,干货满满,强烈推荐阅读! `lettre` 是一个现代化的邮件发送库,它简单易用、安全可靠,但是需要注意,它的目标**不是支持所有的邮件 RFC 标准**,因此在你有特殊需求时,可能会需要自己动手,丰衣足食。
4、[如何让 Rust 项目发生内存泄漏甚至崩溃?](https://fly.io/blog/rust-memory-leak/) 该库目前已被多个项目使用,包括大名鼎鼎的 `crates.io`
别开枪,是友军!事实上,这篇文章讲的是如何修复 Rust 项目的内存泄漏问题,具体的项目是 `fly.io` 公司的代理服务,该代理会将来自世界各地的用户请求路由到最适合的虚拟机中( 虚拟机分布在全世界 21 个地区 )。 4、[workers-rs: 使用 Rust + WebAssembly 实现 Cloudflare 的 Workers](https://github.com/cloudflare/workers-rs)
5、[使用自建的 prelude.rs 来简化 Rust 项目的依赖引入](https://justinwoodring.com/blog/tidy-your-rust-imports-with-prelude/) Cloudflare 已经成为全世界最大的 DNS 服务商,而且它的业务不仅仅是 DNS目前云计算方面也进行的如火如荼。CF 最大的优势不仅仅在于 DNS 的快速和稳定,还在于它提供了多种方式来扩展你的 DNS 使用,例如你可以使用 Rust 来变成它的 worker。
Rust 项目大了后,一个不得不面对的问题就是:该如何处理每个文件中都需要导入的重复依赖,例如: 为了便于有需要的同学进一步学习该如何使用,这里还有一篇[实战文章](https://logankeenan.com/posts/running-a-rust-server-in-a-cloudflare-worker/),值得一看。
```rust
use crate::models::clubs_md::{Club, NewClub, ClubDetails};
use crate::models::users_md::{User, UserDetails, NewUser, Admin};
use crate::models::club_members_md::{MembershipStatus, ClubMember, NewClubMember};
use crate::Db;
```
6、[使用 Rust 来测试 NVDIA 的 GPU 性能](https://simbleau.github.io/blog/gpu-profiling-with-rust/) ## 精选文章
在目前的 CPU、GPU 跑分领域Rust 还是小兵之姿,但将军的梦想还是要有的。这篇文章中,作者将使用 NVDIA 的工具扩展 SDK 来开发基于 Rust 的 GPU 和 CPU 跑分工具,喜欢猎奇的同学不容错过。 1、[过程宏揭秘 II](https://blog.jetbrains.com/rust/2022/07/07/procedural-macros-under-the-hood-part-ii/)
想要了解过程宏是如何编译、怎么跟 IDE 互动的吗?来看看这个系列的文章,作者来自 Intellij Rust 插件开发组,之前还给 RustCon 分享过,干货满满。
## 开源项目 本文是系列文章中的第二篇,第一篇见[这里](https://blog.jetbrains.com/rust/2022/03/18/procedural-macros-under-the-hood-part-i/)。
2、[youtube][有字幕] [AWS 在构建 Rust SDK 方面的实践](https://www.youtube.com/watch?v=N0XMjokwTIM)
如果没有亚马逊这几年对 Rust 的大力(肆)支(鼓)持(吹)Rust 也不会走到今天这个地步。出于敬意,放上这个视频,事实上,里面更多的是对自己产品的宣传 = = 特别是第一部分,大家可以跳着看,一些关于底层的讲解还是值得一看的。
3、[Zh] [在 GCC 13 中,大家可能将看到 Rust 的身影](https://www.oschina.net/news/202630/gcc-rust-approved-by-gcc-steering-committee)
目前来说Rust 的编译器实现是基于 LLVM 的,而我们可能很快将看到基于 GCC 的实现,与 LLVM 不同,新的编译器将能获得 GCC 内部优化通道的所有访问权,同时带来更多的目标平台的支持,以及享受 GCC 众多的插件生态。
该项目已经历时多年(从 Rust 0.9 版本开始),我一度怀疑可能永远都无法看到它的身影,没想到现在突然官宣了,但是项目依然还处于早期阶段,当前的目标是在 GCC 13 中提供测试级别的支持。
1、 [lurk: 使用 Rust 重新实现 strace](https://jakobwaibel.com/2022/06/06/ptrace/) 再加上 Rust 即将在 Linux 5.20 中出现,可以预料, Rust 的未来将更加美好,大家一起期待吧!
目前项目还较为早期,但是关于项目的愿景,作者描述的较为清晰,这种项目一般都是值得期待并能产生结果的。 4、[C++ 大战 Rust 系列:可变性和所有权](https://www.tangramvision.com/blog/c-rust-interior-mutability-moving-and-ownership)
2、[error-stack: 一个全新的 Rust 错误处理库](https://hash.dev/blog/announcing-error-stack) 虽然 Rust 将所有权发扬光大,但是咱不能说 Rust 发明了所有权毕竟众所周知Rust 语言是借鉴大师 :P
该库支持上下文感知和任意用户数据的关联。事实上,这种类型的开源项目往往都来源于一个团队在实际项目中遇到的痛点,因此工程性适用性会非常强。总之,以我个人的经验,不以 star 论英雄,还是看看是 `谁` 开源了 `什么` 项目以及适不适合 `你` 的使用场景,很多低星项目其实是非常优秀和成熟的,只不过没有得到应有的曝光度。 在这篇文章中,作者将介绍 C++ 和 Rust 在实现所有权、可变性方面的不同设计哲学,以及标准库、编译器层面的支持
3、[打遍 playground 无敌手的 Rust Explorer](https://www.rustexplorer.com/b/about) 5、[Rust 错误介绍,比你想要的更多](https://www.shuttle.rs/blog/2022/06/30/error-handling)
这个项目真的非常吸引我,不知道大家对于在线代码运行的期许是什么,对我而言,能够运行各种代码绝对是最大的亮点,而这个项目支持 10000 个三方依赖库(crates.io 上的 top 10000) 文章不错,标题也不错! 虽然你想要的错误处理几乎都可以在 `https://course.rs` 上找到,但是这篇文章依然值得一看
不是 100也不是 1000而是 10000基本上这意味着几乎所有代码片段都可以在这里运行了也意味着我的 `practice.rs` 项目可以进一步扩展Bingo! 6、[Youtube][有字幕] [为何你的 Rust 编译这么慢?](https://www.youtube.com/watch?v=pMiqRM5ooNw)
4、[clap 3.2 发布](https://epage.github.io/blog/2022/06/clap-32-last-call-before-40/) 视频质量自然非常高,从各个方面介绍了该如何提升 Rust 的编译速度,干货满满,强烈推荐。
看起来只是一个小版本,但是它可是 4.0 大版本的预演,因此新增了两种 API 构建方式。 但...我的天,我真的佩服作者,就以 Rust 周刊举例吧,每次周刊基本都要花费我几个小时,那一个将近 3 个小时的干货视频,要准备多久?简直是卷王在世 :)
5、[c2rust 王者归来](https://immunant.com/blog/2022/06/back/) 甚至有人评论到:这个是一个 AMSR 视频...
这个项目对于 Rust 的生态而言太太太重要了要进一步扩大自己的份额C 语言就是绕不过的高山,而重写旧项目在大多数时候显然都是不现实的,因此 `c2rust` 才会有这么高的呼声,只不过之前因为核心作者的原因,项目几乎不怎么活跃了,还好现在 `immunant` 公司接过了大旗。
要我说,这种底层类型的大型开源项目要做得好,还是得背靠大树,例如之前的 [`cc`](https://github.com/rust-lang/cc-rs/issues/663) 项目就是从 `alex` 个人名下转到了 `rust` 官方组织下,最终又焕发了第二春。 7、[Rust中的再借用](https://haibane-tenshi.github.io/rust-reborrowing/)
6、[mold 发布 0.3 版本](https://github.com/rui314/mold) 大家都知道 Rust 中的生命周期很难那你们谈谈对借用的印象难吗我猜大多数人会说不难。其实不然Rust 中的借用并不仅仅是书上介绍的那些,例如**再借用(reborrowing)**,你听说过吗?
mold 是一个用 Rust 写的链接器,它的性能比 LLVM 的 lld 链接器快好几倍,目标是通过降低编译时间来让 Rust 项目的开发闭环周期大幅提速。以下是性能对比图: 8、[我很强,但 Rust 更强](https://blog.polybdenum.com/2022/06/25/an-unfortunate-experience-with-rust.html)
<img src="https://pic1.zhimg.com/80/v2-62f5d64e110fb3c6a9af669ccb1357f7_1440w.png" /> 作者说他对于 Rust 极其有经验,但是就算这样的高手,依然避免不了被 Rust 所教育,你问怎么个教育法?当然是跟编译器搏斗咯。
其实,从我个人而言,非常推荐大家看看这类文章,那些关于 Rust 如何成功的营销文,爽则爽矣,对于技术却无多大帮助。而这种错误实践类的文章,却能帮助我们少走很多弯路!

Loading…
Cancel
Save