[Rust] Rust 官方周报 386 期(2021-04-14)
💥 内容涉及著作权,均归属作者本人。若非作者注明,默认欢迎转载:请注明出处,及相关链接。
Summary: Rust 官方周报 386 期:Rust 核心更新、Rust 社区更新、官方资讯、项目/工具更新、观测/思考文章、实际演练文章、周最佳 crate、Rust 近期活动、Rust 工作招聘,以及 Rust 开发者引语等。第 386 期的技术文章中,用 Rust 开发游戏引擎实践不少;另外,对于开发工具和 IDE 方面,介绍也颇多。
Topics: rust rust-官方周报 this-week-in-rust
Rust 官方周报(中文版)仓库为 github.com/zzy/this-week-in-rust-zh-cn,欢迎您的参与,一起丰富中文网络的 Rust 资源。
大家好,欢迎查阅第 386 期《Rust 周报》!Rust 是一种系统语言,主要追求三个要素:安全性、并发性,以及高性能。本文是其开发进展和社区生态的每周摘要。如果您想提出意见或建议,请在推特联系我们账号 @ThisWeekInRust,或者在 github 向我们发送 PR。想参与吗?我们期待您的贡献。
Rust 社区更新
本周无论文或研究探讨。
官方
- 头脑风暴进行中:Async Rust 的未来熠熠生辉
- [Rust 基金会] 成员介绍:Florian Gilcher(译注:Rust 核心团队,项目主管)
- [Rust 基金会] 成员介绍:侯培新(译注:董事成员,华为开源软件与系统首席架构师)
简讯
- Rust 游戏开发月报 #20 - 2021 年 3 月(译注:游戏很棒,推荐大家去看看,如下笔者随意取了一张图)
项目/工具 更新
- 基于 Cranelift 的 rustc 代码生成后端(rustc_codegen_cranelift)进展报告(2021 年 4 月)
- IntelliJ Rust:2021.1 更新版发布
- IntelliJ Rust 更新日志 #145
- rust-analyzer 更新日志 #72
- Ballista 项目已被捐赠给了 Apache Arrow 项目组(译注:Ballista 项目是 Rust 开发的类似 Spark 的分布式计算平台,笔者已经在使用中。其还支持 Python、C++,以及 Java 等语言,且不用为序列化付出额外开销代价)
观测/思考
- Rust 用于生产环境:MeiliSearch
- Rust 是为专业人士准备的
- Rust 语言中,让异步函数和同步函数匹配,不是什么大问题(译注:原标题使用了
Rust async is colored
,这个colored
源自 JavaScript,比喻 JavaScript 和其它语言中,同步函数和异步函数那些令人痛苦的不匹配难题) - 使用 Rust 进行科学计算:从经验中学习总结
- PlaintDB - 新的里程碑(译注:作者很有信心,计划用 PlaintDB 取代 PostgreSQL 和 Redis)
- 为什么应将 Rust 用于机器人平台?
- nalgebra 0.26 中整合常量泛型(const-generics)的实践(译注:nalgebra 是 Rust 实现的线性代数库)
- [播客] 使用 Rust 进行构建:Tim McNamara 讲解《Rust in Action》 [文字实录]
Rust 演练
- 使用
Ockam
crate,逐步构建端对端(End-to-End)的加密信息传输应用(译注:Ockam
是一个主要用于物联网设备间通信的库,端到端加密、相互认证通信等) easy-cast
库介绍(译注:easy-cast
是一个类型转换方面的辅助库,可以用来替代as i32
,u32::
这类写法。笔者体验了,挺方便)- 为什么 Rust 中的字符串(strings)使用体验不好(hard)
- Rust 技巧:返回多态性类型(译注:即返回泛化类型,泛型)
- 使用 Rust 开发 Neovim 编辑器插件(plugins)
- Rust 中的零开销(zero-overhead)链表(译注:推荐阅读)
- 将 Rust 整合到 Python 中(译注:是上次使用 300 行左右 Rust 代码极致提升 Python 性能的公司,请参阅《使用 Rust 极致提升 Python 性能:图表和绘图提升 24 倍,数据计算提升 10 倍》)
- 使用
Tonic
建立gRPC Protobuf
服务器(译注:Tonic
是基于HTTP/2
的 gRPC 服务实现,关注高性能、互操作性和灵活性。笔者正打算项目中选择一个 gRPC 服务实现库,也看了这个项目,此项目几年没发新版本了……) - 用 Rust 做 Kafka 开发(2)
- Rust lib 错误管理,多枚举方式
- Rust 中的异步数据流(2)——撤销过期请求
- [系列] 可爱的 Warp:使用 Rust 开发 REST API
- [中文] [系列] 基于 Async Rust 构建 GraphQL 服务,使用 tide + async-graphql + mongodb(1)(注:笔者的博文,官方周报同意收录,不是翻译中夹带私货哈)
- [视频] 使用 Rust 开发 Flocking Boids 游戏的实践和比较:Piston vs Tetra vs Amethyst vs Bevy(译注:后面比较的都是游戏引擎,所以推断 Flocking Boids 应该是个游戏名字,如果不对请你指导)
其它
- Rust,并非 Firefox,而是 Mozilla 对业界的最伟大奉献
- 来自 AWS 的人员 Shane Miller将领导新的 Rust 基金会
- [RFC] 将 Rust 引入 Linux 内核的讨论(译注:实际是一个邮件记录,如果有朋友有兴趣翻译,希望可以也发我一份,在公众号发布)
- LLVM 窥探 -
clamp
实现的比较分析 Tokio-uring
设计方案- Google 使用 Rust 开发 Android 底层(low-level Android)
- Linux 内核中的 Rust
周最佳 crate
本周最佳 crate 是 dipa,Rust 数据结构中用于派生(derive)差分/增量编码(delta-encoding)的 crate。
即使缺少提名,但 llogiq(译注:周报编辑人员之一)对自己的选择非常满意。
参与邀请
您一直想为开源项目做贡献,但却不知道从哪里开始吗?每周,我们都会强调一些来自 Rust 社区的任务。您可以挑选,并开始参与!
有些任务可能还有导师,请访问具体任务页面,以了解更多信息。
如果你是 Rust 项目所有人,正在寻求贡献人员,请提交任务到这个页面。
Rust 核心更新
Rust 编译器性能
本周稍显安静。
验测工作是由 @simulacrum 完成的。修正范围:d322385..5258a74
已核准的 RFCs
Rust 的改进遵循 RFC(request for comments)流程。如下是本周核准实现的 RFCs:
新的 RFCs
- 枚举上的
#[derive(Default)]
具有#[default]
属性(attribute) #3107 - 新增:值的宏捕获标识符(value macro capture designator)
近期活动
线上活动
- April 20, Washington, DC, US - 深入探讨 Rust 的接用检查器 - Rust DC
- April 21, Vancouver, BC, CA - Rust 的研讨/Hack/闲逛 之夜 - Vancouver Rust
- April 27, Dallas, TX, US - Last Tuesday - Dallas Rust
北美
亚太
欧洲
如果你正在运作一次 Rust 活动,请将其添加到日历中,以便在此处提及。请向 Rust 社区团队发送电子邮件,以获取访问日历权限。
Rust 招聘信息
Slight
Kraken
通过 @ThisWeekInRust,tweet 信息给我们,以便于我们在此处列出你的招聘信息!
本周引语
每天,我在 [rust is] 中真正看重的是:我可以放心调用其他人的代码,而不产生令人不快的“惊喜”。
async fn verify_signature(token: &Jwt) -> Result<Claims, VerificationError>
代码段中:
- 我知道我的 JWT 令牌(token)不会被更改,仅能被访问(
&
);- 我晓得函数可以异步 I/O(
async
);- 我明白函数失败原因(
Result
);- 我了解它的故障模式(
VerificationError
)。
– Luca Palmieri 发表于 Twitter(译注:Zero to Production in Rust 一书的作者)
谢谢 Nixon Enraght-Moony 的提议!
Rust 周报编辑人员:nellshamrell, llogiq、cdmistman。
谢谢您的阅读!