├── .DS_Store ├── .gitignore ├── README.md └── docs ├── 2022 ├── 2月 │ └── 28.md ├── 3月 │ ├── 04.md │ ├── 11.md │ ├── 18.md │ └── 25.md ├── 4月 │ ├── 02.md │ ├── 08.md │ ├── 15.md │ ├── 24.md │ └── 29.md ├── 5月 │ ├── 07.md │ ├── 16.md │ ├── 22.md │ └── 29.md ├── 6月 │ ├── 10.md │ └── 24.md └── 7月 │ └── 15.md ├── .DS_Store ├── assets ├── codes │ └── test.rs └── qpipsrvoa2whguvm9fyo.jpg └── temlate.md /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rustcn-org/rust-weekly/c0097a9b1c915595b0a06162d255a1b6b0e3bd41/.DS_Store -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Rust语言周刊 2 | Rust语言周刊精选全世界过去一周的优秀文章、新闻、开源项目和语言动态。 3 | 4 | 本周刊由 RustCn 倾情打造,其中, `[Zh]` 标识的中文资料由 Rust 翻译计划提供,并且原始的 Markdown 文档已[全部开源](https://github.com/rustlang-cn/rustt),欢迎大家阅读和订阅。 5 | 6 | > RustCn:https://hirust.cn, 公众号: Rust语言中文网 7 | 8 | # 「Rust 语言周刊」 第 17 期 · 2022-07-15 9 | 10 | 11 |
题图: Tauri 发布 1.0 版本
12 | 13 | 14 | ## 官方新闻 15 | 16 | 1、[Zh] [Rust 发布 1.62 版本](https://course.rs/appendix/rust-versions/1.62.html) 17 | 18 | 如果大家期待 Rust 像其它语言一样,每一个新版本都带来大量新特性,那你们可要失望了,1.62 的更新内容相当少,甚至不如某些语言一个 minor 版本的更新力度,但**错不在 Rust**,建议大家了解下 Rust 的[版本发布流程](https://course.rs/appendix/rust-version.html),就明白其中的弯弯绕绕了。 19 | 20 | ## 开源项目 21 | 22 | 1、[基于 Rust 的操作系统训练营](https://github.com/LearningOS/rust-based-os-comp2022) 23 | 24 | 该训练营有一个配套教程,将带大家从零开始使用 Rust 编写 RISC-V 架构的 类 Unix 内核 。 25 | 26 | 我自己也做开源,深知这件事会占用多少的时间和精力,甚至还会遭人非议,而我仅仅是写写书,跟作者这种大佬一比,差距就太大了... Respect! 27 | 28 | 2、[Tauri 发布 1.0 版本](https://tauri.app/blog/tauri_1_0/) 29 | 30 | 虽然 Tauri 很有名,但是为防有同学不知道背景,还是简单介绍下:它是一款跨平台的桌面应用开发框架,虽然内核是使用 Rust 开发,但是开发者可以使用自己喜欢的前端框架( `react`, `vue`, `vite` )来构建自己的用户界面,最终编译生成一个可执行的二进制文件,方便在各个不同的操作系统间分发运行。总之,你可以将 Tauri 当作是理念更先进的 Electron.js 。 31 | 32 | 言归正传,在历经 1 年多的时间后,Tauri 终于发布了 1.0 版本,这也标志着它已经可以在生产环境正式使用,并且目前来看,官方文档还算可以,甚至还提供了[中文文档](https://tauri.app/zh/v1/guides/getting-started/prerequisites),除此之外,我还发现了一个[宝藏教学系列](https://zhuanlan.zhihu.com/p/539708101),值得一读。 33 | 34 | 3、[lettre 发布 0.1.0 版本](https://lettre.rs/post/lettre-0-10/) 35 | 36 | `lettre` 是一个现代化的邮件发送库,它简单易用、安全可靠,但是需要注意,它的目标**不是支持所有的邮件 RFC 标准**,因此在你有特殊需求时,可能会需要自己动手,丰衣足食。 37 | 38 | 该库目前已被多个项目使用,包括大名鼎鼎的 `crates.io`。 39 | 40 | 4、[workers-rs: 使用 Rust + WebAssembly 实现 Cloudflare 的 Workers](https://github.com/cloudflare/workers-rs) 41 | 42 | Cloudflare 已经成为全世界最大的 DNS 服务商,而且它的业务不仅仅是 DNS,目前云计算方面也进行的如火如荼。CF 最大的优势不仅仅在于 DNS 的快速和稳定,还在于它提供了多种方式来扩展你的 DNS 使用,例如你可以使用 Rust 来变成它的 worker。 43 | 44 | 为了便于有需要的同学进一步学习该如何使用,这里还有一篇[实战文章](https://logankeenan.com/posts/running-a-rust-server-in-a-cloudflare-worker/),值得一看。 45 | 46 | 47 | ## 精选文章 48 | 49 | 1、[过程宏揭秘 II](https://blog.jetbrains.com/rust/2022/07/07/procedural-macros-under-the-hood-part-ii/) 50 | 51 | 想要了解过程宏是如何编译、怎么跟 IDE 互动的吗?来看看这个系列的文章,作者来自 Intellij Rust 插件开发组,之前还给 RustCon 分享过,干货满满。 52 | 53 | 本文是系列文章中的第二篇,第一篇见[这里](https://blog.jetbrains.com/rust/2022/03/18/procedural-macros-under-the-hood-part-i/)。 54 | 55 | 56 | 2、[youtube][有字幕] [AWS 在构建 Rust SDK 方面的实践](https://www.youtube.com/watch?v=N0XMjokwTIM) 57 | 58 | 如果没有亚马逊这几年对 Rust 的大力(肆)支(鼓)持(吹),Rust 也不会走到今天这个地步。出于敬意,放上这个视频,事实上,里面更多的是对自己产品的宣传 = , = 特别是第一部分,大家可以跳着看,一些关于底层的讲解还是值得一看的。 59 | 60 | 3、[Zh] [在 GCC 13 中,大家可能将看到 Rust 的身影](https://www.oschina.net/news/202630/gcc-rust-approved-by-gcc-steering-committee) 61 | 62 | 目前来说,Rust 的编译器实现是基于 LLVM 的,而我们可能很快将看到基于 GCC 的实现,与 LLVM 不同,新的编译器将能获得 GCC 内部优化通道的所有访问权,同时带来更多的目标平台的支持,以及享受 GCC 众多的插件生态。 63 | 64 | 该项目已经历时多年(从 Rust 0.9 版本开始),我一度怀疑可能永远都无法看到它的身影,没想到现在突然官宣了,但是项目依然还处于早期阶段,当前的目标是在 GCC 13 中提供测试级别的支持。 65 | 66 | 再加上 Rust 即将在 Linux 5.20 中出现,可以预料, Rust 的未来将更加美好,大家一起期待吧! 67 | 68 | 4、[C++ 大战 Rust 系列:可变性和所有权](https://www.tangramvision.com/blog/c-rust-interior-mutability-moving-and-ownership) 69 | 70 | 虽然 Rust 将所有权发扬光大,但是咱不能说 Rust 发明了所有权,毕竟众所周知:Rust 语言是借鉴大师 :P 71 | 72 | 在这篇文章中,作者将介绍 C++ 和 Rust 在实现所有权、可变性方面的不同设计哲学,以及标准库、编译器层面的支持。 73 | 74 | 5、[Rust 错误介绍,比你想要的更多](https://www.shuttle.rs/blog/2022/06/30/error-handling) 75 | 76 | 文章不错,标题也不错! 虽然你想要的错误处理几乎都可以在 `https://course.rs` 上找到,但是这篇文章依然值得一看。 77 | 78 | 6、[Youtube][有字幕] [为何你的 Rust 编译这么慢?](https://www.youtube.com/watch?v=pMiqRM5ooNw) 79 | 80 | 视频质量自然非常高,从各个方面介绍了该如何提升 Rust 的编译速度,干货满满,强烈推荐。 81 | 82 | 但...我的天,我真的佩服作者,就以 Rust 周刊举例吧,每次周刊基本都要花费我几个小时,那一个将近 3 个小时的干货视频,要准备多久?简直是卷王在世 :) 83 | 84 | 甚至有人评论到:这个是一个 AMSR 视频... 85 | 86 | 87 | 7、[Rust中的再借用](https://haibane-tenshi.github.io/rust-reborrowing/) 88 | 89 | 大家都知道 Rust 中的生命周期很难,那你们谈谈对借用的印象,难吗?我猜,大多数人会说不难。其实不然,Rust 中的借用并不仅仅是书上介绍的那些,例如**再借用(reborrowing)**,你听说过吗? 90 | 91 | 8、[我很强,但 Rust 更强](https://blog.polybdenum.com/2022/06/25/an-unfortunate-experience-with-rust.html) 92 | 93 | 作者说他对于 Rust 极其有经验,但是就算这样的高手,依然避免不了被 Rust 所教育,你问怎么个教育法?当然是跟编译器搏斗咯。 94 | 95 | 其实,从我个人而言,非常推荐大家看看这类文章,那些关于 Rust 如何成功的营销文,爽则爽矣,对于技术却无多大帮助。而这种错误实践类的文章,却能帮助我们少走很多弯路! 96 | 97 | 98 | 99 | 100 | 101 | 102 | ## 往期回顾 103 | 104 | 目前所有的周刊都按照 `年/月/日期` 的方式归纳在 [docs](./docs) 目录下,大家可以按需查看。 105 | 106 | - [第 16 期](./docs/2022/6月/24.md) 107 | - [第 15 期](./docs/2022/6月/10.md) 108 | - [第 14 期](./docs/2022/5月/29.md) 109 | - [第 13 期](./docs/2022/5月/22.md) 110 | - [第 12 期](./docs/2022/5月/16.md) 111 | - [第 11 期](./docs/2022/5月/07.md) 112 | - [第 10 期](./docs/2022/4月/29.md) 113 | - [第 9 期](./docs/2022/4月/24.md) 114 | - [第 8 期](./docs/2022/4月/15.md) 115 | - [第 7 期](./docs/2022/4月/08.md) 116 | - [第 6 期](./docs/2022/4月/02.md) 117 | - [第 5 期](./docs/2022/3月/25.md) 118 | - [第 4 期](./docs/2022/3月/18.md) 119 | - [第 3 期](./docs/2022/3月/11.md) 120 | - [第 2 期](./docs/2022/3月/04.md) 121 | - [第 1 期](./docs/2022/2月/28.md) 122 | 123 | 124 | ## 怀揣劲爆消息或优质内容? 125 | 欢迎提交 `issue` 或 `PR`,我们欢迎一切有价值的内容,并且你提供的每条消息都将标注上你的 github 用户名和链接。 126 | -------------------------------------------------------------------------------- /docs/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rustcn-org/rust-weekly/c0097a9b1c915595b0a06162d255a1b6b0e3bd41/docs/.DS_Store -------------------------------------------------------------------------------- /docs/2022/2月/28.md: -------------------------------------------------------------------------------- 1 | # 「Rust 语言周刊」 第 1 期 · 2022-02-28 2 | 3 | Rust 语言周刊正式创建啦,每一期的内容将分成多个栏目来呈现,例如新闻、技术文章、开源项目、Rust 语言更新等。话不多说,我们来看看创刊号的内容吧( 中文内容会用 🇨🇳 或 Zh 进行标识 )。 4 | 5 | > 第一期准备时间比较仓促,因此我们大量借鉴并翻译了 this-week-in-rust.org 上的内容,但是按照周刊的栏目进行了内容再组织 6 | 7 | > RustCn:https://hirust.cn, 公众号: Rust 语言中文网 8 | 9 | #### Rust 语言更新 10 | 11 | - [🇨🇳 Rust 1.59 正式发布: 内联汇编、解构式赋值和大幅减少 binary 体积](https://zhuanlan.zhihu.com/p/472197977) 12 | - [知名 IDE 插件 rust-analyzer 正式加入 Rust 官方组织](https://blog.rust-lang.org/2022/02/21/rust-analyzer-joins-rust-org.html) 13 | - [Rust 编译器 2022 年的展望](https://blog.rust-lang.org/inside-rust/2022/02/22/compiler-team-ambitions-2022.html) 14 | 15 | #### Rust 新闻 16 | 17 | - [基金会新增一个成员 simplabs](https://foundation.rust-lang.org/posts/2022-02-16-member-spotlight-simplabs/) 18 | - [基金会引入了顶尖人才来作为 Leader](https://foundation.rust-lang.org/news/2022-02-22-news-rust-foundation-attracts-top-talent-to-senior-leadership-roles/) 19 | - [AWS: 以下是我们下重注押宝 Rust 语言的原因](https://www.zdnet.com/article/programming-languages-aws-explains-why-rust-is-so-important/) 20 | 21 | #### 精选文章 22 | 23 | - [🇨🇳 如何理解 Rust 中的不定长类型](https://www.zhihu.com/question/518410226/answer/2361631083) 24 | - [谈谈 pip 和 cargo 的差异](https://blog.williammanley.net/2022/02/23/pip-and-cargo-are-not-the-same.html) 25 | - [我们正在使用 Async Rust 来移植数据库驱动](https://www.scylladb.com/2022/02/22/were-porting-our-database-drivers-to-async-rust/) 26 | - [为何我们不选择 Go、C++ 或 Node.js,而是选择了 Rust](https://symless.com/blog/we-are-choosing-rust-and-heres-why) 27 | - [🇨🇳 Cargo 使用指南系列](https://www.zhihu.com/column/c_1479106985190330369) 28 | - [在 Rust 项目中嵌入 JavaScript 引擎( quickjs )](https://github.com/andrieshiemstra/ScriptExtensionLayerExample) 29 | - [2022 年应该选择哪个 Web 框架](https://kerkour.com/rust-web-framework-2022) 30 | - [用 Rust 开发 Web: 解构](https://paulbutler.org/2022/rust-for-web-devs-destructuring/) 31 | - [使用 Rust 在编译期检查 Tailwind 的类名](https://blog.urth.org/2022/02/21/checking-tailwind-class-names-at-compile-time-with-rust/) 32 | - [为 Solana 构建区块链预言机](https://medium.com/loadsys-solutions/building-a-blockchain-oracle-for-solana-4556529ea841) 33 | - [视频系列] [使用 Rust 写一门编程语言 16](https://www.youtube.com/watch?v=WCMurdux6YM) 34 | - [论文:对 Rust 动态特征分发进行验证](https://www.cs.cornell.edu/~avh/dyn-trait-icse-seip-2022-preprint.pdf) 35 | - [我们需要重新审视下 RFC](https://www.ncameron.org/blog/the-problem-with-rfcs/) 36 | 37 | #### 开源项目 38 | 39 | - [通过练习题和实践学习 Rust](https://github.com/sunface/rust-by-practice) 40 | - [Tokio Metrics 0.1](https://tokio.rs/blog/2022-02-announcing-tokio-metrics) 41 | 42 | * [clap 3.1: 迈向 4.0](https://epage.github.io/blog/2022/02/clap-31-a-step-towards-40/) 43 | * [Zellij 0.25.0: 面向开发、运维的终端工作空间](https://zellij.dev/news/floating-panes-tmux-mode/) 44 | * [Hurl 1.6.0, 使用文本来运行和测试你的 HTTP 请求](https://hurl.dev/blog/2022/02/11/announcing-hurl-1.6.0.html) 45 | -------------------------------------------------------------------------------- /docs/2022/3月/04.md: -------------------------------------------------------------------------------- 1 | # 「Rust 语言周刊」 第 2 期 · 2022-03-04 2 | 3 | 精选全世界过去一周的优秀文章、新闻、开源项目和语言动态( 中文内容会用 🇨🇳 或 Zh 进行标识 )。 4 | 5 | > RustCn:https://hirust.cn, 公众号: Rust 语言中文网 6 | 7 | 8 | 9 | #### Rust 新闻 10 | 11 | - [2022 年的 Rust 编译速度改进计划](https://nnethercote.github.io/2022/02/25/how-to-speed-up-the-rust-compiler-in-2022.html) 12 | 13 | - [rust-analyzer 和过程宏](https://veykril.github.io/posts/ide-proc-macros/) 14 | 15 | #### 精选文章 16 | 17 | - [Rust vs Go: 兄弟就应该在一起](https://thenewstack.io/rust-vs-go-why-theyre-better-together/) 18 | - [用 Rust 达成每小时 1TB 的客户端数据备份速度](https://www.druva.com/blog/achieving-1tb-hr-backup-speed-with-a-core-client-side-data-pipeline-in-rust/) 19 | - [如何绕过 Rust 借用检查规则](https://blog.warp.dev/rules-are-made-to-be-broken/) 20 | - [开启学习 Rust 所需的心智模式](https://kerkour.com/rust-mental-models) 21 | - [通过 Rust 实现无容器化!在 K8S 上运行 WASM 服务](https://developer.okta.com/blog/2022/01/28/webassembly-on-kubernetes-with-rust) 22 | - [如何跟踪现代化的电信网络](https://oxio.com/blog/modern-telecom-network-tracing/) 23 | - [加密库最大的缺陷不是来自于加密学 bug 而是内存安全](https://www.reddit.com/r/rust/comments/t33ddj/the_biggest_source_of_vulnerabilities_in/) 24 | - [关于 unchecked 和 unsafe 的讨论](https://www.reddit.com/r/rust/comments/t3di49/discussion_the_unchecked_keyword/) 25 | - [在 Android 开发中使用 Rust](https://blog.devgenius.io/integrating-rust-with-android-development-ef341c2f9cca) 26 | - [series] [使用 Rust 构建图形化引擎 - Part 2](https://www.polymonster.co.uk/blog/bulding-new-engine-in-rust-2) 27 | - [series] [端到端加密的基石,示例使用 Rust 编写,本文是系列文章中的第三篇](https://kerkour.com/end-to-end-encryption-key-exchange-cryptography-rust) 28 | - [video] [Rust 2022 年的愿景](https://www.youtube.com/watch?v=zYrudh-dsX8) 29 | 30 | #### 开源项目 31 | 32 | - [cargo-zigbuild 作者再出手!轻松实现在其它系统中交叉编译到 Windows](https://github.com/messense/cargo-xwinbuild) 33 | - [Engula 0.3 发布:Rust 写的云原生数据存储服务,可用于数据库、缓存和核心存储引擎](https://www.reddit.com/r/rust/comments/t36ha6/announcing_engula_03/) 34 | - [Wasmer 2.2 发布: 支持 WASI 和 Emscripten 的 WASM 运行时,新版本更快更强,且支持更多的平台,包括苹果 m1 芯片](https://wasmer.io/posts/wasmer-2.2) 35 | - [Codesnipt: 基于 Rust + Flutter, 用于存储、索引和搜索你的代码片段](https://github.com/MichaelProjects/codsnipet) 36 | - [igrep: 在终端中交互式的使用 grep,基于 ripgrep 实现](https://github.com/konradsz/igrep) 37 | - [Actix Web 发布 4.0: 完全兼容 Tokio v1 生态,并且支持 #[tokio::main];API 优化;文档大幅优化等](https://github.com/actix/actix-web/wiki/v4-Announcement) 38 | - [AWS Lambda Rust 运行时发布 0.5.0](https://github.com/awslabs/aws-lambda-rust-runtime/releases/tag/v0.5.0) 39 | 40 | > 本文部分内容借鉴自 [This Week In Rust](https://this-week-in-rust.org/blog/2022/03/02/this-week-in-rust-432/) 41 | -------------------------------------------------------------------------------- /docs/2022/3月/11.md: -------------------------------------------------------------------------------- 1 | # 「Rust 语言周刊」 第 3 期 · 2022-03-11 2 | 3 | 精选过去一周的优秀文章、新闻、开源项目和 Rust 语言动态( 中文内容会用 🇨🇳 或 Zh 进行标识 )。 4 | 5 | 本周刊完全开源(GitHub:[rustlang-cn/rust-weekly](https://github.com/rustlang-cn/rust-weekly)),欢迎大家通过[提交 issue](https://github.com/rustlang-cn/rust-weekly/issues)的方式投稿、推荐或自荐。 6 | 7 | > 目前由于相关中文资源还比较少,因此会以英文资料为主,未来 Rust 语言学习社区(Rust 学社)会对优秀的英文文章进行翻译 8 | 9 | > RustCn:https://hirust.cn, 公众号: Rust 语言中文网 10 | 11 | 12 |
题图: 吐槽 Rust
13 | 14 | #### Rust 新闻 15 | 16 | - [Rust 基金会新增成员:1Password](https://foundation.rust-lang.org/posts/2022-03-08-member-spotlight-1password/) 17 | 18 | #### 精选文章 19 | 20 | - [来自 Rust 真爱粉的吐槽](https://blog.yossarian.net/2022/03/10/Things-I-hate-about-Rust-redux) 21 | - [关于 C/C++ 能做但是 Rust 不能做的讨论](https://www.reddit.com/r/rust/comments/ta2ckk/can_rust_do_every_low_level_stuff_cc_do/) 22 | 23 | - [使用 Rust 进行函数式编程](https://kerkour.com/rust-functional-programming) 24 | 25 | - [Pin projection: 将类型的某几个字段进行固定](https://blog.yoshuawuyts.com/safe-pin-projections-through-view-types/) 26 | 27 | - [对 async 请求进行聚合](https://fasterthanli.me/articles/request-coalescing-in-async-rust) 28 | 29 | - [Fuzzing unsafe: 对 unsafe 代码进行测试](https://medium.com/@adetaylor/fuzzing-unsafe-code-in-a-rust-crate-dcf3ec04d79a) 30 | 31 | - [为 DNS 服务器实现一个 LRU 缓存](https://memo.barrucadu.co.uk/dns-cache.html) 32 | 33 | - [series] [使用 Rust 写一门编程语言 20 & 21](https://www.youtube.com/watch?v=SGy2icp8aTI) 34 | 35 | #### 开源项目 36 | 37 | - [Rust By Practice: 本周登上 GitHub Trending 榜首的 Rust 练习实践项目](https://github.com/sunface/rust-by-practice) 38 | - [cc-rs 的大神作者已无力维护该库,希望能找到新的 maintainer 来接手](https://github.com/alexcrichton/cc-rs/issues/663) 39 | 40 | - [crierion.rs 未来将支持在浏览器中进行 benchmark!](https://www.tweag.io/blog/2022-03-03-criterion-rs/) 41 | 42 | - [Dioxus 发布 0.2.0 版本: 使用类 React 代码构建跨平台 UI](https://dioxuslabs.com/blog/release-020/) 43 | 44 | - [基于 Tantivy 的通用分布式搜索平台 Quicwit 获得 260 万美元投资](https://www.reddit.com/r/rust/comments/tazt21/quickwit_the_distributed_search_engine_built_on/) 45 | 46 | - [一位本科生大神使用 Rust 写了一个 unikernel](https://github.com/StardustOS/stardust-oxide) 47 | -------------------------------------------------------------------------------- /docs/2022/3月/18.md: -------------------------------------------------------------------------------- 1 | # 「Rust 语言周刊」 第 4 期 · 2022-03-18 2 | 3 | 精选过去一周的优秀文章、新闻、开源项目和 Rust 语言动态( 中文内容会用 🇨🇳 或 Zh 进行标识 )。 4 | 5 | 本周刊完全开源(GitHub:[rustlang-cn/rust-weekly](https://github.com/rustlang-cn/rust-weekly)),欢迎大家通过[提交 issue](https://github.com/rustlang-cn/rust-weekly/issues)的方式投稿、推荐或自荐。 6 | 7 | > 目前由于相关中文资源还比较少,因此会以英文资料为主,未来 Rust 语言学习社区(Rust 学社)会对优秀的英文文章进行翻译 8 | 9 | > RustCn:https://hirust.cn, 公众号: Rust 语言中文网 10 | 11 | 12 |
题图: WASM 提取 OCR
13 | 14 | #### 精选文章 15 | 16 | 1、[使用 WASM 提取 OCR 内容](https://hugopeixoto.net/articles/rust-wasm-ocr-experiments.html) 17 | 18 | 如果要将 3000 张图片的内容手动上传到网站上,你会怎么做?总之作者选择了"偷懒"。 19 | 20 | 2、[讨论:一开始使用 Rust 实现但是最后切换到其它语言的项目](https://www.reddit.com/r/rust/comments/td4fci/have_you_ever_started_a_project_in_rust_but/) 21 | 22 | Rust 不是万能的,我们见过了太多从其它语言切到 Rust 的,现在来看看反转后的世界是什么样的。 23 | 24 | 3、[Rustler 的预编译功能简介](https://dashbit.co/blog/rustler-precompiled) 25 | 26 | 众所周知,以往的虚拟机往往都是通过 C 语言实现的,例如大名鼎鼎的 Erlang/Elixir Beam 虚拟机,而 Rustler 就是该虚拟机的 Rust 重写。出于性能和资源占用的原因,Rustler 提供了预编译的功能。 27 | 28 | 4、🇨🇳 [AutoSar 宣布成立汽车软件 Rust 工作组](https://www.zhihu.com/question/522187444/answer/2392992688) 29 | 30 | AutoSar 提供了一个汽车开放系统架构,包括 Classic Platform 和 Adaptive Platform 两种 API 标准,目前有很多大的汽车公司在使用。 31 | 32 | 5、[深入幂等性 - 节选自 Zero To Production In Rust 一书](https://www.lpalmieri.com/posts/idempotency/) 33 | 34 | 为了交付一个高可靠的项目,我们需要了解下何为幂等性、锁、队列和后台任务等。 35 | 36 | #### 开源项目 37 | 38 | 1、[Tantivy 发布 0.17 版本](https://quickwit.io/blog/tantivy-0.17/) 39 | 40 | Tantivy 是功能完全对标 Lucence 的搜索引擎,所属的分布式搜索平台 Quicwit 刚融资了 500 万美金。 41 | 42 | 2、[Arti 发布 0.1.0 版本](https://blog.torproject.org/arti_010_released/) 43 | 44 | Tor 官方使用 Rust 重写了 Tor,原因在于 Rust 能提供更高的安全性,据官方估计,有一半以上的安全性问题通过 Rust 重写后都不再是问题。 45 | 46 | 3、 [xshell](https://github.com/matklad/xshell) 47 | 48 | 提供跨平台的实用库,轻松使用 Rust 写出 `bash` 脚本。 49 | 50 | 4、 [RepliByte](https://github.com/Qovery/replibyte) 51 | 52 | 使用 Rust 写得数据库同步服务,支持云和同步时的敏感数据过滤/混淆。 53 | 54 | 5、[Savage](https://github.com/p-e-w/savage) 55 | 56 | 纯 Rust 实现的计算机代数系统 57 | -------------------------------------------------------------------------------- /docs/2022/3月/25.md: -------------------------------------------------------------------------------- 1 | # 「Rust 语言周刊」 第 5 期 · 2022-03-25 2 | 3 | 精选过去一周的优秀文章、新闻、开源项目和 Rust 语言动态( 中文内容会用 🇨🇳 或 Zh 进行标识 )。 4 | 5 | 本周刊完全开源(GitHub:[rustlang-cn/rust-weekly](https://github.com/rustlang-cn/rust-weekly)),欢迎大家通过[提交 issue](https://github.com/rustlang-cn/rust-weekly/issues)的方式投稿、推荐或自荐。 6 | 7 | > 目前由于相关中文资源还比较少,因此会以英文资料为主,未来 [Rustt](https://rustt.org) 会对优秀的英文文章进行翻译 8 | 9 | > RustCn:https://hirust.cn, 公众号: Rust 语言中文网 10 | 11 | 12 |
题图: Nullshell 自定义完成提示
13 | 14 | #### 开源项目 15 | 16 | 1、 [Rustt 翻译小组正式成立](https://rustt.org) 17 | 18 | 目前已有多个高质量的书籍翻译,包括`手把手带你实现链表`、`Rust异步编程指南`、`Cargo使用指南`、`Tokio官方教程`等。 大家可以访问之前的链接查看详情。 19 | 20 | 2、 [Nullshell 发布 0.60 版本](https://www.nushell.sh) 21 | 22 | Nullshell 是一个现代化、模块化的终端。0.60 版本带来了大量新特性,一起来看看吧。 23 | 24 | 3、 [Skytable 发布 0.7.4 版本](https://blog.skytable.io/skytable-0-7-4-is-here/) 25 | 26 | Skytable 是一个开源 NoSQL 数据库。 27 | 28 | #### 精选文章 29 | 30 | 1、 [Zh] [Rust 移动开发与跨平台模式研究](https://zhuanlan.zhihu.com/p/484269271) 31 | 32 | 作者张汉东是浸淫 Rust 多年的大佬,文章主要聚焦于移动开发的跨平台支持情况。 33 | 34 | 2、 [极简主义者 - Rust](https://kerkour.com/rust-is-minimalist) 35 | 36 | 在今天,Rust 是第一门有能力做好所有事情的编程语言。因此我愿称 Rust 为极简主义者Minimalist 37 | 38 | 3、 [六次顿悟让我学会 Rust](https://apollolabsblog.hashnode.dev/learning-rust-my-6-key-moments) 39 | 40 | 作者坦言,Rust 不好学,但是学起来很有成就感。在学习的过程中,他遇到了 6 个坎,当越过去后,对 Rust 的理解就上到了新的台阶。 41 | 42 | 4、 [我终于明白 Rust 中的 \* 操作符了!](https://micouy.github.io/rust-dereferencing/) 43 | 44 | 作者经常会向 Rust 初学者解释何为引用,但是他发现有一个问题就算以他多年的经验来看,也不好回答:为何我不能直接解引用一个不可变指针,然后访问它拥有的数据。 45 | 46 | 5、 [我们真的需要在语言层面支持自引用吗?](https://robinmoussu.gitlab.io/blog/post/2022-03-16_do_we_really_need_language_support_for_self_references/) 47 | 48 | 自引用在 Rust 中是公认的大山,就算你翻过一次,下次遇到估计还是犯怵,其中最好的解决方案自然是 `unsafe`,在[手把手实现链表](https://course.rs/too-many-lists/unsafe-queue/intro.html)中,对此有过深入的介绍。而文章作者要反其道而行之,试图用 safe 代码来实现自引用。 49 | 50 | 6、 [series] [过程宏背后原理的研究: Part 1](https://blog.jetbrains.com/rust/2022/03/18/procedural-macros-under-the-hood-part-i/) 51 | 52 | 大家如果好奇过程后到底是如何工作的,那么可以看看这个系列文章,作者之一最近刚在 RustCon 做过分享。 53 | 54 | 7、 [Rust 和 C++ 互操作之旅](https://blog.tetrane.com/2022/Rust-Cxx-interop.html) 55 | 56 | 作者的公司以前是 C++ 代码库,现在又有了部分 Rust 代码,且看他如何玩转 C++ <-> Rust 。 57 | 58 | 8、 [架构实验 - 将一个前端项目使用 Rust 和 WASM 实现](https://nutsys.com/blog/architecture-experiment-rust-wasm-1/) 59 | 60 | JS 写起来一时爽,但重构起来 XXX。与其使用 Typescript,作者决定另辟蹊径。 61 | -------------------------------------------------------------------------------- /docs/2022/4月/02.md: -------------------------------------------------------------------------------- 1 | # 「Rust 语言周刊」 第 6 期 · 2022-04-02 2 | 3 | Rust 语言周刊精选全世界过去一周的优秀文章、新闻、开源项目和语言动态。 4 | 5 | 本周刊由 RustCn 社区倾情打造,其中,`[Zh]` 标识的中文资料由 Rust 翻译计划提供,并且原始的 Markdown 文档已[全部开源](https://github.com/rustlang-cn/rustt),欢迎大家阅读和订阅。 6 | 7 | > RustCn:https://hirust.cn, 公众号: Rust 语言中文网 8 | 9 | 10 |
题图: Rust 嵌入式开发
11 | 12 | #### 精选文章 13 | 14 | 1、 [Zh] [敢于要求更多 Rust 2024](https://github.com/studyrs/Rustt/blob/main/Articles/%5B2022-03-28%5D%20Rust%202024:敢于要求更多.md) - 翻译 [YuKun Liu](https://github.com/mrxiaozhuox) 15 | 16 | 未来几年的 Rust 和社区应该怎么发展,可以简单总结为:敢于要求更多。 17 | 18 | 2、[Zh] [Rust 嵌入式开发](https://github.com/studyrs/Rustt/blob/main/Articles/%5B2022-03-26%5D%20Rust%20嵌入式开发.md) - 翻译 [Xiaobin.Liu](https://github.com/lxbwolf) 19 | 20 | 本文展示了一些适用于嵌入式 Rust 的特性,总之, Rust 的高性能、高可靠和生产效率都非常适用于嵌入式系统。 21 | 22 | 3、[dyn\*: 尝试将 dyn 变成定长类型](https://smallcultfollowing.com/babysteps/blog/2022/03/29/dyn-can-we-make-dyn-sized/) 23 | 24 | 三人行必能干翻诸葛亮,这不,作者和两个朋友在一次深入讨论后,突然诞生了这个奇妙的想法,最后还提交给了 Rust Team。作者还认为,一旦成功,那 `dyn Trait` 将更加好用、易用。 25 | 26 | 4、[自修改代码](https://matklad.github.io/2022/03/26/self-modifying-code.html) 27 | 28 | 对于 JIT 类似的动态机器码修改技术,大家应该都比较熟悉了,但是 Rust 中并没有。因此,作者想要通过一个简单的方法来替代宏去生成源代码。 29 | 30 | 5、[异步解构器、异步泛型和完成式期约](https://sabrinajewson.org/blog/async-drop) 31 | 32 | 本文的主要目标是为 Rust 设计一个系统以支持异步解构器( asynchronous destructors )。长文预警! 33 | 34 | 6、[何时不应该使用 Rust](https://kerkour.com/why-not-rust) 35 | 36 | 不出所料,文章内给出了快速原型设计的答案。短文预警! 37 | 38 | 7、[Rust 交叉编译](https://kerkour.com/rust-cross-compilation) 39 | 40 | 黑帽 Rust 作者又出手了,这次为我们带来关于交叉编译的优质内容。 41 | 42 | 8、[小而美的 Rust Docker 镜像](https://azzamsa.com/n/rust-docker/) 43 | 44 | 文章用 Rocket 框架写了一个 demo,然后将其打包成 Docker 镜像,最后的大小仅仅是 `8.38MB`,但... 算了,不剧透了,大家还是自己探索吧。 45 | 46 | 9、[Book] [High Assurance Rust](https://highassurance.rs) 47 | 48 | 由于我自己是开源书作者,因此对开源书有一种特别的偏爱。这本书主要关于如何开发高可靠、安全的软件服务,当然,书中还有一些计算机原理和架构设计的讲解。 49 | 50 | 10、[Video] [Rust for Linux](https://www.youtube.com/watch?v=fVEeqo40IyQ) 51 | 52 | 本视频将讲解目前 Linux 的 kernel 中,Rust 将扮演什么角色以及未来规划。 53 | 54 | #### 开源项目 55 | 56 | 1、[生成你的 GitHub Profile](https://github.com/autarch/autarch) 57 | 58 | 灵感来自于作者在简历中看到别人的炫酷 GitHub 个人首页展示,还写了[一篇文章]((https://blog.urth.org/2022/03/28/yet-another-github-profile-generator/)。 59 | 60 | 2、[fp-bindgen: 为全栈 WASM 插件生成相应的 binding](https://fiberplane.dev/blog/announcing-fp-bindgen/) 61 | 62 | 全栈 WASM 插件是可以同时用在客户端和服务端的插件,而 `fp-bindgen` 让插件的创作变得更加简单,不仅如此,还提供了工具可以让它们在服务器上运行( hosting )。 63 | 64 | 3、[BonsaiDB v0.4.0](https://bonsaidb.io/blog/bonsaidb-v0-4-0/) 65 | 66 | `BonsaiDB` 的目标是打造一个使用者友好的数据库,拥有大量常用的数据结构。但是之前的版本只支持异步 API,这个缺陷在新版本中得到了解决。 67 | -------------------------------------------------------------------------------- /docs/2022/4月/08.md: -------------------------------------------------------------------------------- 1 | # 「Rust 语言周刊」 第 7 期 · 2022-04-08 2 | 3 | Rust 语言周刊精选全世界过去一周的优秀文章、新闻、开源项目和语言动态。 4 | 5 | 本周刊由 RustCn 社区倾情打造,其中,`[Zh]` 标识的中文资料由 Rust 翻译计划提供,并且原始的 Markdown 文档已[全部开源](https://github.com/rustlang-cn/rustt),欢迎大家阅读和订阅。 6 | 7 | > RustCn:https://hirust.cn, 公众号: Rust 语言中文网 8 | 9 | 10 |
题图: 一本生锈的书
11 | 12 | #### Rust 新闻 13 | 14 | 1、[Zh] [Rust 1.60 发布](https://course.rs/appendix/rust-versions/1.60.html) 15 | 16 | 在新版中,我们可以查看 Cargo 构建时的详细耗时了,有助于分析和改善编译时间,还有就是条件编译和依赖引入了新的期待已久的功能。 17 | 18 | 1、[Zh] [Rust 2024 官方路线图公布](https://www.163.com/dy/article/H4CMGAF50511CUMI.html) 19 | 这篇文章从比较宏观的角度讲解了 Rust 2024 的路线图。 20 | 21 | 2、[Zh] [Rust 2024:敢于要求更多](https://github.com/studyrs/Rustt/blob/main/Articles/%5B2022-03-28%5D%20Rust%202024:敢于要求更多.md) 22 | 23 | 本文是从更细节的角度出发讲解 Rust 2024 的路线图,喜欢技术细节的同学不容错过。 24 | 25 | 3、[Rust 基金会激励计划](https://foundation.rust-lang.org/news/2022-03-31-cgp-is-open-announcement/) 26 | 27 | 基金会筹划已久的开源项目激励计划终于开始实施了,里面包含了基金会合作伙伴、开源项目等一系列举措,大家快去申请了! 28 | 29 | #### 开源项目 30 | 31 | 1、[一本生锈的书](https://github.com/studyrs/rusty-book) 32 | 33 | 这本书主要关于如何打造一个 “有锈” 的 Rust 项目。 34 | 35 | 2、[StarfishQL](https://www.sea-ql.org/SeaORM/blog/2022-04-04-introducing-starfish-ql/) 36 | 37 | 一个图数据库和查询引擎,目前主要的目的是绘制和探索 crates.io 上的包依赖网络。 38 | 39 | 3、[Coppers](https://github.com/ThijsRay/coppers) 40 | 41 | 一套测试工具,用于测量 Rust 项目的能耗情况。 42 | 43 | #### 精选文章 44 | 45 | 1、[虚弱之塔: 每个人都应该懂的内存模型](https://gankra.github.io/blah/tower-of-weakenings/) 46 | 47 | 干货作者又出手了,这次为我们带来了内存模型的分析和改进。他甚至基于这种改进修改了 Rust 代码,并且应用在自己的部分项目上,crazy! 48 | 49 | 2、[Rust 的 Mutex 为何这样设计?](https://cliffle.com/blog/rust-mutexes/) 50 | 51 | 已经有不少人抱怨为何 Rust 的 Mutex 跟别的语言不一样,例如它可以持有数据。作者针对这些疑问给出了自己的分析,总之他站队 Rust 的设计。 52 | 53 | 3、[Zh] [在 Rust 中使用 epoll 实现非阻塞 IO](https://github.com/studyrs/Rustt/blob/main/Articles/%5B2022-03-29%5D%20在%20Rust%20中使用%20epoll%20实现基本的非阻塞%20IO.md) 54 | 55 | 本文试图解释清楚 epoll 和非阻塞 IO 背后的原理 56 | 57 | 4、[Zh] [用 Rust 写 Devops 工具](https://github.com/studyrs/Rustt/blob/main/Articles/%5B2022-04-02%5D%20用%20Rust%20写%20DevOps%20工具.md) 58 | 59 | 文章中会介绍几个 Rust 用在 DevOps 领域的案例,以及为什么使用 Rust。其中我们还会介绍一些在 AWS 上基于 Rust 的 DevOps 工具常用的库。 60 | 61 | 5、[Zh] [Rust 背后不是公司](https://github.com/studyrs/Rustt/blob/main/Articles/%5B2022-04-01%5D%20Rust%20背后并不是公司.md) 62 | Rust 大佬带来的对 Rust 组织架构的分析。 63 | 64 | 6、[使用 Rust 改善 Python S3 客户端的性能](https://joshua-robinson.medium.com/improving-python-s3-client-performance-with-rust-e9639359072f) 65 | 66 | Python 是数据科学的主力军语言,但是性能有的时候会成为平静下来。例如现在亚马逊 S3 存储非常火热,如果大家使用 S3 作为数据集的存储,那么 Pyhton 去读取这些数据可能就是一个很大的性能瓶颈。 67 | 68 | 7、[Qiskit 使用 Rust 来获取更好的性能](https://medium.com/qiskit/new-weve-started-using-rust-in-qiskit-for-better-performance-a3676433ca8c) 69 | 70 | Qiskit 是一家从事量子计算的公司,最近他们 在 Python 之外还引入了 Rust 语言,事实证明,这个举措带来了显著的性能提升。 71 | 72 | 8、[ScyllaDB 将数据库驱动使用异步 Rust 重新实现](https://thenewstack.io/why-were-porting-our-database-drivers-to-async-rust/) 73 | 74 | ScyllaDB 是这几年很火的开源分布式 KV 数据库,兼容 Cassandra 的 CQL 协议,性能非常非常高。这不,为了性能和安全性,他们又出手了,这次是使用 Rust 将客户端的驱动进行了重写( 使用 tokio )。 75 | 76 | 9、[在 2022 年使用 axum 和 yew 打造一个全栈 Rust web 服务](https://robert.kra.hn/posts/2022-04-03_rust-web-wasm/) 77 | 78 | 在过去两年,WebAssembly 在 Rust 这里发展的非常快,而且构建和打包也变得更加简单。因此,是时候使用 Rust 写一套前后端服务了。 79 | -------------------------------------------------------------------------------- /docs/2022/4月/15.md: -------------------------------------------------------------------------------- 1 | # 「Rust 语言周刊」 第 8 期 · 2022-04-15 2 | 3 | Rust 语言周刊精选全世界过去一周的优秀文章、新闻、开源项目和语言动态。 4 | 5 | 本周刊由 RustCn 社区倾情打造,其中,`[Zh]` 标识的中文资料由 Rust 翻译计划提供,并且原始的 Markdown 文档已[全部开源](https://github.com/rustlang-cn/rustt),欢迎大家阅读和订阅。 6 | 7 | > RustCn:https://hirust.cn, 公众号: Rust 语言中文网 8 | 9 | 10 |
题图: 开发 DNS 客户端过程中的笑与泪
11 | 12 | #### Rust 新闻 13 | 14 | 1、[Zh] [Rust 1.60 发布](https://course.rs/appendix/rust-versions/1.60.html) 15 | 16 | 在新版中,我们可以查看 Cargo 构建时的详细耗时了,有助于分析和改善编译时间,还有就是条件编译和依赖引入了新的期待已久的功能。 17 | 18 | 2、[rust-analyzer 正式加入官方组织](https://www.reddit.com/r/rust/comments/u2nm0y/rustanalyzer_is_now_official_github_repo_moved_to/) 19 | 20 | 优秀的产品很难被埋没,`rust-analyzer` 就是如此,这不,现在已经正式成为了官方项目,并且很快会替代 `rls` 成为 VSCode 上的默认首选插件,新人有福了。 21 | 22 | #### 精选文章 23 | 24 | 1、[Zh] [Rust 的 unsafe 指针,到底怎么了?](https://github.com/rustlang-cn/Rustt/blob/main/Articles/%5B2022-04-07%5D%20Rust%20的%20unsafe%20指针类型需要大修.md) 25 | 26 | 本文由 `Nomicon` 和 `Too Many Lists` 作者编写,大佬对 Rust 现有的裸指针进行了深入剖析,并给出了相应的解决方案,干货满满! 27 | 28 | 2、[Zh] [理解 Rust 的借用检查器](https://github.com/rustlang-cn/Rustt/blob/main/Articles/%5B2022-04-07%5D%20理解%20Rust%20的借用检查器.md) 29 | 30 | 每当你心潮澎湃想要写一些 Rust 代码时,可能最后都会败给借用检查器。 31 | 32 | 3、[Zh] [使用 Rust 构建自己的区块链平台](https://github.com/rustlang-cn/Rustt/blob/main/Articles/%5B2022-04-07%5D%20使用%20Rust%20和%20Substrate%20构建自己的区块链平台.md) 33 | 34 | 本文将基于著名的 [Substrate](https://substrate.io) 区块链框架来构建一个区块链平台:一个博客后端,用户可以在此提交博客文章、发表评论等。 35 | 36 | 4、[Zh] [由 Java/C#/C/C++ 开发者转为 Rustacean](https://github.com/rustlang-cn/Rustt/blob/main/Articles/%5B2022-04-02%5D%20由%20Java:C%23:C:C%2B%2B%20开发者转为%20Rustacean.md) 37 | 38 | 从题目能看出,作者是一个爱秀肌肉的多面手,对了,他还在写一本生命周期的书,值得期待! 39 | 40 | 5、[开发 DNS 客户端过程中的笑与泪](https://blog.adamchalmers.com/making-a-dns-client/) 41 | 42 | 看看下面这张图,你是否被勾引起开发一个 DNS 客户端的兴趣?反正作者是的。 43 | 44 | 45 | 46 | 6、[生命苦短,我选择与编译检查搏斗?](https://kerkour.com/life-is-short-rust-borrow-checker) 47 | 48 | 本文很短,短到令人震惊,但是确实很好的吐槽了为了对付 Rust 编译检查,我们需要付出的努力。 49 | 50 | 7、[默认值和类型推断:使用表达式来替代类型](https://gankra.github.io/blah/defaults-affect-inference/) 51 | 52 | 你是否注意过 Rust 中的集合类型存在一些奇怪的约束条件?这种奇怪已经存在很久了,甚至在 1.0 版本前就有,本文试图解释下相关的问题并且尝试使用一种新的方法去解决。 53 | 54 | 8、[隐性约束和完美派生](https://smallcultfollowing.com/babysteps/blog/2022/04/12/implied-bounds-and-perfect-derive/) 55 | 56 | 在 Rust 社区中,有两个问题已经被讨论很久了:完美派生以及可扩展的隐性约束,但是最近,Rust 团队在实现它们时遇到了一些问题,一起来看看。 57 | 58 | 9、[系列] [指针很复杂 III](https://www.ralfj.de/blog/2022/04/11/provenance-exposed.html) 59 | 60 | 作者目前的工作需要处理 Rust/MIR 的内存模型,因此会触及到普通开发不太熟悉的领域,系列的文章第一篇见[这里](https://www.ralfj.de/blog/2018/07/24/pointers-and-bytes.html)。 61 | 62 | 10、[使用 Rust 构建爬虫](https://kerkour.com/rust-crawler-associated-types) 63 | 64 | 本文节选自 `Black Hat Rust`,在文中,作者清晰的解释了 `scraper` 和 `crawler` 的区别,以及介绍了 Rust 为何非常适合爬虫的原因。 65 | 66 | #### 开源项目 67 | 68 | 1、[fdb - 基于 Tokio 的 FoundationDB 客户端驱动](https://github.com/fdb-rs/fdb) 69 | 70 | FoundationDB 于数年前被苹果收购,并且服务于生产环境多年,是一个非常可靠、非常非常有特色的分布式数据库。 71 | 72 | 2、[ogma - 用于处理表格化数据的脚本语言](https://github.com/kdr-aus/ogma) 73 | 74 | 75 | -------------------------------------------------------------------------------- /docs/2022/4月/24.md: -------------------------------------------------------------------------------- 1 | # 「Rust 语言周刊」 第 9 期 · 2022-04-24 2 | 3 | Rust 语言周刊精选全世界过去一周的优秀文章、新闻、开源项目和语言动态。 4 | 5 | 本周刊由 RustCn 社区倾情打造,其中,`[Zh]` 标识的中文资料由 Rust 翻译计划提供,并且原始的 Markdown 文档已[全部开源](https://github.com/rustlang-cn/rustt),欢迎大家阅读和订阅。 6 | 7 | > RustCn:https://hirust.cn, 公众号: Rust 语言中文网 8 | 9 | 10 |
题图: MnemOS
11 | 12 | #### 开源项目 13 | 14 | 1、[一个新的小型操作系统: MnemOS](https://jamesmunns.com/blog/mnemos-initial-release/) 15 | 16 | 该操作系统使用 Rust 开发,适用于受限的硬件环境,例如微控制器。但是目前它的状态还比较玩具,大家想要用它来 make money ,还是洗洗睡了吧,用来学习下新的领域倒是很不错,毕竟互联网的未来..懂的都懂。 17 | 18 | 2、[著名 Rust 游戏引擎 Bevy 发布 0.7 版本](https://bevyengine.org/news/bevy-0-7/) 19 | 20 | Bevy 的游戏引擎理念可谓是非常先进,因此得到了一大票忠实的粉丝和贡献者的喜爱,发展也极为迅速,这次的新版本带来了大量的新特性,包括骨骼动画、场景中的无限制点光源、集群渲染、材质压缩、着色器优化、ECS 优化等等。 21 | 22 | 但。。。离生产可用,依然有很长的距离,大家在业余爱好上玩玩即可,毕竟哪个男孩子没有一个游戏梦呢 :P 23 | 24 | 25 | 26 | 3、[systeroid: Rust 版本的 sysctl](https://systeroid.cli.rs) 27 | 28 | `sysctl` 大家应该都很熟悉了,但是再辉煌的英雄也终将老去,而我们的 Rust 替代者 `systeroid` 更快、更强、更安全,值得一试! 29 | 30 | 31 | 32 | #### 精选文章 33 | 34 | 1、[Zh] [用 Rust 加速你的 Python 代码](https://github.com/rustlang-cn/Rustt/blob/main/Articles/%5B2022-04-13%5D%20从python调用rust-使用rust加速你的python代码.md) 35 | 36 | Python 的广袤天空只存在一个限制,那就是性能,以往都是通过 C/C++ 来增强,现在我们还能使用 Rust 来实现。 37 | 38 | 2、[Zh] [异步 Rust: 协作与抢占式调度](https://github.com/rustlang-cn/Rustt/blob/main/Articles/%5B2022-04-12%5D%20异步%20Rust:协作与抢占式调度.md) 39 | 40 | 多线程往往用来并行执行计算密集型任务,但是时代变了,现在,越来越多的程序是 I/O 密集型,此时就需要 `async` 来大展身手了。 41 | 42 | 3、[Zh] [如何用 Rust 实现朴素贝叶斯分类器](https://zhuanlan.zhihu.com/p/501337745) 43 | 44 | 难度高能预警,实力干货满满! 45 | 46 | 4、[Zh] [Ruby 的新 YJIT 编译器已完成,使用 Rust 重新实现](https://zhuanlan.zhihu.com/p/502298810) 47 | 48 | 去年 12 月时,Ruby 开始将 YJIT 代码库从 C99 移植到 Rust 上,这周,负责此项目的开发者表示已经完成新编译器的实现,等待合并。 49 | 50 | 难道说,使用 Rust 重写各个语言的基础层和工具已经成为了新的潮流? 51 | 52 | 5、[危! C/C++ 的嵌入式!](https://apollolabsblog.hashnode.dev/why-you-should-be-worried-about-the-future-of-cc-in-embedded-a-case-for-rust) 53 | 54 | 对于嵌入式环境而言,软件的错误和失败太正常不过了,你问我罪魁祸首是谁?嗯,我不知道 🤪,但是我知道未来的救世主可能会是谁。 55 | 56 | 6、[连续性和包级别的 Where 语句](https://smallcultfollowing.com/babysteps/blog/2022/04/17/coherence-and-crate-level-where-clauses/) 57 | 58 | 大佬的硬核文章又来了。这次带来的是对 Rust 中[孤儿原则](https://course.rs/basic/trait/trait.html#特征定义与实现的位置孤儿规则)的深入分析,曾经大放异彩的它随着时间的逐步推移,却成了包组合的障碍( 通过组合的方式来使用多个包 )。 59 | 60 | 7、[Hack rustc: 为特征实现异步函数](https://blog.theincredibleholk.org/blog/2022/04/18/how-async-functions-in-traits-could-work-in-rustc/) 61 | 62 | 目前 Rust 异步工作组的一个重要工作就是让 `async fn` 能在所有 `fn` 出现的地方使用,当然,最受大家关注的,应该就是在特征中使用异步函数了。本文将从 Rustc 的角度出发,来讲解异步函数该如何在特征中实现。 63 | 64 | 8、[该如何选择合适的整数类型?](https://www.thecodedmessage.com/posts/programming-integers/) 65 | 66 | > i8 - i64, u8 - u64,天,我该如何选择? 67 | 68 | 这个问题在国内外各个论坛屡见不鲜,事实上,要正确的回答它,是想当困难的,而本文就是从实践的角度出发,给出该如何选择的建议。 69 | 70 | 9、[使用 MacOS 下的 MetaAPI 来构建一个全新的终端](https://console.dev/interviews/warp-zach-lloyd/) 71 | 72 | 聪明的同学可能已经想到,使用 Rust 开发的、MacOS 下的新终端?这会不会是刚融资了几千万美元的 Warp ? Bingo,你猜对了,本文正式对 Warp 的独家采访 73 | 74 | 10、[为何 Rust 在嵌入式这么受欢迎?](https://tweedegolf.nl/en/blog/70/we-asked-5-people-why-they-like-embedded-rust) 75 | 76 | 文章采访了 5 位不同的大佬,通过他们的观点,我们可以看出 Rust 为啥在嵌入式领域越来越火了。 77 | 78 | 11、[编译期的求值: Nim, Zig, Rust and C++](https://castillodel.github.io/compile-time-evaluation/) 79 | 80 | 编译期求值,对于计算性能优化来说是非常重要的,本文将从多门语言的角度出发,看看编译期求值到底是个什么东东。 81 | 82 | 12、[在 10 分钟之内构建并部署一个短域名服务](https://www.shuttle.rs/blog/2022/03/13/url-shortener) 83 | 84 | 大佬的世界总是与众不同的,这不,作者发现自己失眠后,出于对睡眠不足的恐惧,决定要挑战下自己... 85 | -------------------------------------------------------------------------------- /docs/2022/4月/29.md: -------------------------------------------------------------------------------- 1 | # 「Rust 语言周刊」 第 10 期 · 2022-04-29 2 | 3 | Rust 语言周刊精选全世界过去一周的优秀文章、新闻、开源项目和语言动态。 4 | 5 | 本周刊由 RustCn 社区倾情打造,其中,`[Zh]` 标识的中文资料由 Rust 翻译计划提供,并且原始的 Markdown 文档已[全部开源](https://github.com/rustlang-cn/rustt),欢迎大家阅读和订阅。 6 | 7 | > RustCn:https://hirust.cn, 公众号: Rust 语言中文网 8 | 9 | 10 |
题图: Robyn
11 | 12 | #### Rust 新闻 13 | 14 | 1、[Rust 库团队的愿景](https://blog.rust-lang.org/inside-rust/2022/04/20/libs-aspirations.html) 15 | 16 | 最近,Rust 语言发布了 [2024 年展望](https://zhuanlan.zhihu.com/p/490221490),编译器团队也发布了 [2022 年 野望](https://blog.rust-lang.org/inside-rust/2022/02/22/compiler-team-ambitions-2022.html),现在库团队也不甘落后,为我们带了了未来的库规划和生态发展愿景。 17 | 18 | #### 开源项目 19 | 20 | 1、[Robyn: 一个全新的 Python Web 框架](https://www.sanskar.me/hello_robyn.html) 21 | 22 | 大家会不会以为自己走错片场了?:D 其实没有,因为这个框架是基于 Rust 运行时实现的,在提供了高性能、高吞吐的同时,又能使用 Python 来愉快地写逻辑代码。 23 | 24 | | | Total Time(seconds) | Slowest(seconds) | Fastest(seconds) | Average(seconds) | Requests/sec | 25 | | -------------------------------- | ------------------- | ---------------- | ---------------- | ---------------- | ------------ | 26 | | Flask(Gunicorn) | 5.5254 | 0.0784 | 0.0028 | 0.0275 | 1809.8082 | 27 | | FastAPI(API) | 4.1314 | 0.0733 | 0.0027 | 0.0206 | 2420.4851 | 28 | | Django(Gunicorn) | 13.5070 | 0.3635 | 0.0249 | 0.0674 | 740.3558 | 29 | | Robyn(1 process and 1 worker) | 1.8324 | 0.0269 | 0.0024 | 0.0091 | 5457.2339 | 30 | | Robyn(5 processes and 5 workers) | 1.5592 | 0.0211 | 0.0017 | 0.0078 | 6413.6480 | 31 | 32 | 2、[Gitoxide: 一个使用 Rust 实现的 Git 命令](https://github.com/Byron/gitoxide/discussions/398) 33 | 34 | 它不仅拥有丰富的仓库信息展示,还能在 1 秒内克隆下来 linux 内核代码,它的作者还是一个生活在西安的外国人,它...名字好难记。 35 | 36 | 3、[czkawka: 从计算机中移除无需的文件](https://github.com/qarmin/czkawka) 37 | 38 | 大家不要问我项目名该怎么读,我也不会。但是这个项目还是挺有用的,可以在你的计算机中找出重复的文件、空目录、相似的图片等等。 39 | 40 | #### 精选文章 41 | 42 | 1、[Zh] [基于 RocksDB 使用 Rust 构建关系型数据库](https://github.com/rustlang-cn/Rustt/blob/main/Articles/%5B2022-04-15%5D%20基于RocksDB使用Rust构建关系型数据库.md) 43 | 44 | 现在很多新的数据库底层都是基于 RocksDB 来实现的,作者的 `rrrdb` 亦是如此,从名称也能看出,这个项目不是一个很正式的关系型数据库,但是不妨碍我们去了解下作者的一些构思和实现。 45 | 46 | 2、[Zh] [使用 Tokio 处理 CPU 密集型任务](https://github.com/rustlang-cn/Rustt/blob/main/Articles/%5B2022-04-20%5D%20使用%20Tokio%20处理%20CPU%20密集型任务.md) 47 | 48 | 众所周知,tokio 是一个异步 IO 库,众所周知知,异步 IO 特别适合网络编程,并不是很适合 CPU 密集的场景,且看作者如何化腐朽为神奇。 49 | 50 | 3、[假设 Rust 目前还是一门相当不完美的语言,我们该怎么改进它?](https://kerkour.com/what-a-better-rust-would-look-like) 51 | 52 | 最近,又双叒叕出了一门新的编程语言:[Hare](https://harelang.org),语法看上去很像 Rust,作者不禁开始思考,人们为啥去创建一门像是 Rust 的新语言,答案可能就藏在文章的标题中。 53 | 54 | 4、[间接所有权、浅借用和自引用数据结构](https://yoyo-code.com/indirect-ownership-and-self-borrow/) 55 | 56 | 什么?有读者震惊了,为啥这几个概念我都没有听说过?不要慌,其实就是一篇讲解自引用数据结构的文章,例如下面这个结构体: 57 | 58 | ```rust 59 | struct ParsedFile { 60 | contents: Vec, 61 | // words中包含的项引用了 `contents` 中的数据 62 | words: Vec<&'self:contents:indirect [u8]> 63 | } 64 | ``` 65 | 66 | 5、[Rust 中的特征和依赖注入](https://jmmv.dev/2022/04/rust-traits-and-dependency-injection.html) 67 | 68 | 在现代化编程中,依赖注入不说是 superstar,至少也是一颗 star,它可以大幅简化模块化编程和代码可测试性的难度。本文将从特征出发,来看看在 Rust 中该如何实现 DI(dependency injection)。 69 | 70 | 6、[Rust 中的原生标识符](https://inspektor.cloud/blog/raw-identifier-in-rust/) 71 | 72 | 不要被标题误导,这篇文章简而言之,就是教大家如果使用 Rust 的预留关键字作为自己的变量或字段名。 73 | 74 | 7、[AsRef 中藏有的魔法](https://swatinem.de/blog/magic-asref/) 75 | 76 | 一般的开发场景中,不太用得到 AsRef,但是如果你和作者一样,从事词法分析相关的开发(或其它类型的数据场景),就值得深入了解下了。 77 | 78 | 8、[在四周内构建一个无服务架构平台](https://www.shuttle.rs/blog/2022/04/22/dev-log-0) 79 | 80 | 假如你发现了一个潜在的商机,想要给投资人证明这一点,时间很紧迫,只有四周,你会怎么办? 81 | -------------------------------------------------------------------------------- /docs/2022/5月/07.md: -------------------------------------------------------------------------------- 1 | # 「Rust 语言周刊」 第 11 期 · 2022-05-07 2 | 3 | Rust 语言周刊精选全世界过去一周的优秀文章、新闻、开源项目和语言动态。 4 | 5 | 本周刊由 RustCn 社区倾情打造,其中,`[Zh]` 标识的中文资料由 Rust 翻译计划提供,并且原始的 Markdown 文档已[全部开源](https://github.com/rustlang-cn/rustt),欢迎大家阅读和订阅。 6 | 7 | > RustCn:https://hirust.cn, 公众号: Rust 语言中文网 8 | 9 | 10 |
题图: 可视化 Rust 数据类型的内存布局
11 | 12 | #### 本期明星 13 | 14 | 1、[Zh] [可视化 Rust 数据类型的内存布局](https://github.com/rustlang-cn/Rustt/blob/main/Articles/%5B2022-05-04%5D%20可视化%20Rust%20各数据类型的内存布局.md) 15 | 16 | 了解 Rust 中每个数据类型的内存布局有助于锻炼我们的编程直觉,可以提前规避一些编译错误和性能问题。 17 | 18 | 原文是以视频形式呈现,译文是由 Rustt 翻译组的明星译者 trdthg (third thing) 倾情翻译,内容巨多、工作量巨大,如果大家喜欢,在[这里](https://github.com/trdthg)给他点个赞吧 :D 19 | 20 | #### 开源项目 21 | 22 | 1、[shuttle: 使用 Cargo 部署你的 Rust 应用](https://www.shuttle.rs) 23 | 24 | 说实话,这个库真的很酷很 rusty,它完成了从源代码到云部署的全过程覆盖,支持通过派生特征的方式去自定义你的部署流程,甚至还提供了短域名服务! 25 | 26 | 哦对了,我特别喜欢 shuttle 的 slogan: 27 | 28 | > **Let's make Rust the next language of cloud-native** 29 | > 30 | > We love you Go, but Rust is just better. 31 | 32 | 你们喜欢不?😆 33 | 34 | 2、[Redox 发布 0.7.0: 一个完全用 Rust 编写,专注于稳定性和安全性的全新微内核操作系统](https://www.redox-os.org/news/release-0.7.0/) 35 | 36 | Redox 不是一个新项目,已开发多年,但仍达不到成熟可用的状态,毕竟操作系统不是一个小工程。 37 | 38 | 不过这次的新版本改动还是挺大的:对硬件扩展的支持、改进的文件系统、重写的引导程序、微内核的更新,甚至它还改进了 rustc 和 reibc(基于 Rust 的 C 库)。 39 | 40 | > 求大佬告知:国内在做操作系统的厂商是否有在跟进这个项目,基于它来做一个国产操作系统,不知道有没有搞头 41 | 42 | 3、[重生之路之 Plotters ](https://github.com/plotters-rs/plotters) 43 | 44 | Plotters 是一个非常棒的纯 Rust 编写的绘图库( charts ),除了支持位图、向量图等传统方式外,还支持 WebAssembly。 45 | 46 | 但..这个库之前很长一段时间内都没怎么维护,而且还是个人项目,其它贡献者只能望洋兴叹,作为一门有志于 GUI、前端领域的语言,这个库还是非常重要的。 47 | 48 | 好在,现在作者宣布了自己已经归来,并重新建立了一个组织用于维护该项目。 49 | 50 | 51 | 52 | #### 精选文章 53 | 54 | 1、[Zh] [Rust 类型系统图灵完备的证明](https://github.com/rustlang-cn/Rustt/blob/main/Articles/%5B2022-05-04%5D%20Rust类型系统图灵完备的证明.md) 55 | 56 | 一门编程语言要进入科研等严肃领域,必须要经过九九之关的检验,其中图灵完备的证明就是其中一环。本文作者通过实现 Smallfuck 的方式(一门已知的图灵完备语言),证明了 Rust 的类型系统是图灵完备的。 57 | 58 | 2、 [Zh] [使用 Rust 和 WebAssembly 在 48 小时内制作游戏](https://github.com/rustlang-cn/Rustt/blob/main/Articles/%5B2022-04-27%5D%20使用%20Rust%20和%20WebAssembly%20在%2048%20小时内制作游戏.md) 59 | 60 | [Ludum Dare] 是一个 48 小时个人游戏开发挑战赛,作者之前已经使用 Unity 参加过几次了,这次,他决定尝试点不一样的。 61 | 62 | 3、[Zh] [半小时快速了解 Rust](https://github.com/rustlang-cn/Rustt/blob/main/Articles/%5B2022-04-28%5D%20半小时快速了解%20Rust.md) 63 | 64 | 21 天?7 天?3 天?都弱爆了好吗!这里,只要半个小时! 65 | 66 | 4、[GAT 的美好未来](https://jackh726.github.io/rust/2022/05/04/a-shiny-future-with-gats.html) 67 | 68 | GAT 是 Generic Associated Types (泛型关联类型) 的简写,大家可以在[这里](https://blog.rust-lang.org/2021/08/03/GATs-stabilization-push.html)对其进行深入了解。 69 | 70 | GAT 计划是在 1 年多之前就开始了,本身计划在去年 10 月稳定化的,但是其中遇到了不少问题,导致了计划的延期,然后就是 12 月、2 月( 这种感觉好熟悉:P )。 71 | 72 | 现在,作者终于可以骄傲的写出这篇文章,来告诉我们 GAT 到底可以用来做什么,质量很高,值得一看! 73 | 74 | > 关于 GAT 还有另一篇文章值得一读:[生命周期 GAT 的更好替代品](https://sabrinajewson.org/blog/the-better-alternative-to-lifetime-gats) 75 | 76 | 5、[C++ & Rust: 泛型和特性化](https://www.tangramvision.com/blog/c-rust-generics-and-specialization) 77 | 78 | 一周一次、喜闻乐见的 C++ Pk Rust 环节又来了,作者所在的公司原本是做 C++ 的,但是在遇到 Rust 后,变心了,甚至还加入了 Rust 基金会,一起来欣赏下他们的一些看法吧。 79 | 80 | 6、[这些年 Rust 编译器帮你捕获的 Bug 们](https://kerkour.com/bugs-rust-compiler-helps-prevent) 81 | 82 | 在过去几十年内,随着程序员水平的越来越高,我们终于证明了自己 —— 没办法写出 Bug Free 的软件。因此,新编程语言的编译器越来越强大,也越来越复杂,Rust 就是其中的翘楚。 83 | 84 | 7、[自引用结构体和其替代品](https://swatinem.de/blog/self-reference-alternatives/) 85 | 86 | 文章讲解了该如何更好的理解和使用自引用结构体,以及在一些场景下,该如何使用其它方式来替代自引用结构题。 87 | -------------------------------------------------------------------------------- /docs/2022/5月/16.md: -------------------------------------------------------------------------------- 1 | # 「Rust 语言周刊」 第 12 期 · 2022-05-16 2 | Rust语言周刊精选全世界过去一周的优秀文章、新闻、开源项目和语言动态。 3 | 4 | 本周刊由 RustCn 社区倾情打造,其中, `[Zh]` 标识的中文资料由 Rust 翻译计划提供,并且原始的 Markdown 文档已[全部开源](https://github.com/rustlang-cn/rustt),欢迎大家阅读和订阅。 5 | 6 | > RustCn:https://hirust.cn, 公众号: Rust语言中文网 7 | 8 | 9 |
题图: Kani - Rust 代码检查工具
10 | 11 | #### 官方新闻 12 | 13 | 1、[cc 正式成为官方库: 将 C/C++ 代码编译成 Rust 代码](https://github.com/rust-lang/cc-rs) 14 | 15 | Rust 的生态环境正在快速发展中,但是就目前而言,我们依然需要经常去调用 C/C++ 代码,此时 cc 就成了必不可少的构建工具( 配合 build.rs )。 16 | 17 | 在之前的某期中,我们有提到该库的作者已经[无力继续维护](https://github.com/rust-lang/cc-rs/issues/663),原因是各种平台兼容的 PR 搞得他焦头烂额,因此希望找一个接盘侠,如果是普通的库就罢了,偏偏是这么重要的库、维护复杂度这么高的库,因此这件事变得异常棘手。 18 | 19 | 好在,在官方的协调和支持下,cc 最终转入了官方组织,并且在多个月后,重写开始合并 PR ! 20 | 21 | #### 开源项目 22 | 23 | 1、[Fornjot 发布 0.6 版本:一个使用 Rust 编写的 CAD 应用](https://www.fornjot.app/blog/fornjot-0.6/) 24 | 25 | 这个世界需要一个新的 CAD,嗯,不是我说的,是作者说的,虽然我对此表示怀疑 :D 26 | 27 | 总之,这个库是一个基于代码扩展的 CAD 应用,但是大家一定不要被 0.6 这个版本号所忽悠,它还很早期!例如它终于在新版本中支持 Z 轴非垂直方向的建模了: 28 | 29 | 30 | 31 | 2、[Kani: 一个全新的 Rust 代码检查工具](https://github.com/model-checking/kani) 32 | 33 | Rust 的编译器这么强大,我们为什么还需要另一个非官方的编译检查工具?岂不是没事找事嘛?其实不然,毕竟,面对 unsafe 代码,传统的编译器依然有些有心无力,即使已经有了 mio。 34 | 35 | 而 kami 可以帮助我们检查代码的内存安全、用户定义的危险断言、panics、算术溢出等非预期行为,而且 kami 可以和我们的测试代码紧密结合,例如下面的一使用示例: 36 | 37 | ```rust 38 | use my_crate::{function_under_test, meets_specification, precondition}; 39 | 40 | #[kani::proof] 41 | fn check_my_property() { 42 | // 创建一个非确定性的输入 43 | let input = kani::any(); 44 | 45 | //根据函数的先决条件来限制它 46 | kani::assume(precondition(input)); 47 | 48 | // 调用需要被验证的函数 49 | let output = function_under_test(input); 50 | 51 | // 检查它是否满足特性需求 52 | assert!(meets_specification(input, output)); 53 | } 54 | ``` 55 | 56 | 3、[RepliByte: 一个开源的数据库同步服务](https://github.com/Qovery/replibyte) 57 | 58 | 作为开发者而言,在测试环境伪造数据用于测试是一件头疼的事,而且还不能反映出真实世界的复杂性,出于自身的这个痛点,作者创建了 RepliByte。 59 | 60 | 它支持 Pg、Mysql、MongoDB 的数据备份和还原,还支持敏感数据替换、数据子集、传输过程中的数据压缩和加密等,最重要的:它是 Rust 写的,每次想起公司那个占用大量资源、基于 Java 的数据库同步中间件,我就... 61 | 62 | ```shell 63 | ### 列出所有备份 64 | $ replibyte -c conf.yaml dump list 65 | 66 | type name size when compressed encrypted 67 | PostgreSQL dump-1647706359405 154MB Yesterday at 03:00 am true true 68 | PostgreSQL dump-1647731334517 152MB 2 days ago at 03:00 am true true 69 | PostgreSQL dump-1647734369306 149MB 3 days ago at 03:00 am true true 70 | ``` 71 | 72 | ```shell 73 | ### 还原最新的备份到本地数据库中 74 | $ replibyte -c conf.yaml dump restore local -v latest -i postgres -p 5432 75 | 76 | ### 还原最新的备份到远程数据库中 77 | $ replibyte -c conf.yaml dump restore remote -v latest 78 | ``` 79 | 80 | 81 | 4、[Stretch: 一个高性能的基于 flexbox 的 UI 布局库](https://github.com/DioxusLabs/stretch) 82 | 83 | 严格来说,该库是一个 fork 项目,之前的项目已经很久不再维护了,现在 [Dioxus]() 扛起了大旗,目标是为跨平台的布局提供一个坚定的基石,尤其是移动端,未来还会提供除了 `flexbox` 外更多的布局方式。 84 | 85 | 项目目前处于初期阶段,主要是 Dioxus 和 BevyEngine 在参与,如果大家感兴趣,可以看看里面的 `good first issue`。 86 | 87 | > 感谢 [Asura](https://github.com/asur4s) 同学提供的[消息源](https://github.com/rustlang-cn/rust-weekly/issues/6) 88 | 89 | 90 | 91 | #### 精选文章 92 | 93 | 1、[Zh] [Rust 与 OpenCV](https://github.com/rustlang-cn/Rustt/blob/main/Articles/%5B2022-05-08%5D%20Rust%20与%20OpenCV.md) 94 | 95 | Rust非常优秀,但是与 C/C++ 等巨头相比,它在社区生态上还只是一头初生牛犊,因此我们经常需要去使用 C/C++ 编写的库。友情提示:在 Rust 中使用 OpenCV 是可行的,但是首先,你可能需要拥有足够的意志力来克服遇到的各种问题,毕竟,这是一条未知之路。 96 | 97 | 2、[编程语言是平台,而不是产品](https://kerkour.com/programming-languages-are-platforms) 98 | 99 | 现代社会,每个大公司都想做一个大而全的产品,这样就可以行成更强的护城河,让竞争对手无路可走,然而这种产品会牺牲稳定性和可靠性。那么问题来了,对于编程语言而言,适合吗? 100 | 101 | 3、[Xilem: 一个 Rust UI 架构](https://raphlinus.github.io/rust/gui/2022/05/07/ui-architecture.html) 102 | 103 | 对于用户界面领域来说,Rust 语言提供了足够的吸引力,原因很简单,它能够同时交付安全性和性能。但是,如何找到一个好的 UI 架构,成为了相当大的挑战。 104 | 105 | 在其它语言适用的架构设计未必能很好的应用在 Rust 上,毕竟 Rust 的一些语言特性,学过的人都懂,一个自引用结构体都能整的人快乐无边 :P 基于此原因,一些人并不看好 Rust 在用户界面的未来,但是作者依然坚定的认为 Rust 就是未来。 106 | 107 | 他之前的尝试( 包括当前的 [Druid](https://github.com/linebender/druid) 架构 !) 都存在或多或少的缺陷,因此在这篇文章中,他提出了一个全新的架构,非常值得一读! 108 | 109 | 4、[使用 Rust 进行有限状态机的建模](https://www.ramnivas.com/blog/2022/05/09/fsm-model-rust) 110 | 111 | 在文章中,作者介绍了如何运用 Rust 的所有权机制和静态编译的特点实现一个有限状态机( FSM )。 112 | 113 | 114 | 5、[算法面试很卷?](https://ada-x64.github.io/over-engineering/) 115 | 116 | 作者在找工作中,现在的大环境意味着算法成了绕不过去的坎。那到底是用更高级的代码卷起来,还是躺平使用简单的实现,文中给出了他的选择。 117 | 118 | 6、[挑战:在 wifi 路由器上运行 Rust](https://blog.dend.ro/building-rust-for-routers/) 119 | 120 | 作者有一个 OpenWrt wifi 路由器,某一天无聊至极,盯着这个老朋友发呆ing,结果突发奇想,嘿,也许我可以在这上面运行个 Rust 项目。`hello world` 显然跟路由器八字不合,那就写一个 DNS 客户端吧。 121 | 122 | 123 | 7、[Rust 中的 O(1) 泛型](https://peterkos.me/rust-const-generics/) 124 | 125 | 众所周知,Rust 的泛型是零开销的,原因在于编译器会把泛型展开为一个个具体的类型,以二进制文件膨胀的代价来换取性能,这个做法没有任何问题。但是如果我们想要更加强大的泛型特性呢?文中针对这一点,给出了一些有价值的观点,值得一看! 126 | 127 | 8、[创业公司是否应该使用 Rust ?](https://www.shuttle.rs/blog/2021/10/08/building-a-startup-with-rust) 128 | 129 | 可以说,每一个优秀的工程师,内心都有这样的梦想:使用技术创业,然后改变世界。就目前来看,Rust 拥有足够的吸引力,那我们是否可以选择 Rust 来作为初创公司的主要语言呢? 130 | 131 | 9、[使用 Rust 实现去中心化的集群管理](https://quickwit.io/blog/chitchat/) 132 | 133 | 大家可能在想,分布式集群?难道不是在前面做一层负载均衡( nginx ),后面的集群就随便搞嘛?其实不是,你说的是无状态的分布式集群,这种集群的状态都存储在 redis、mysql 等数据库中,因此分布式很简单。 134 | 135 | 但是对于有状态的集群来说,分布式就变成了一个相当棘手且有挑战的问题,最基本的:如果让集群中的节点感知到其它节点,在本文中,你能获取到一些灵感和解决方案。 136 | 137 | 138 | -------------------------------------------------------------------------------- /docs/2022/5月/22.md: -------------------------------------------------------------------------------- 1 | # 「Rust 语言周刊」 第 13 期 · 2022-05-22 2 | Rust语言周刊精选全世界过去一周的优秀文章、新闻、开源项目和语言动态。 3 | 4 | 本周刊由 RustCn 社区倾情打造,其中, `[Zh]` 标识的中文资料由 Rust 翻译计划提供,并且原始的 Markdown 文档已[全部开源](https://github.com/rustlang-cn/rustt),欢迎大家阅读和订阅。 5 | 6 | > RustCn:https://hirust.cn, 公众号: Rust语言中文网 7 | 8 | 9 |
题图: 将 Ruby 的编译器移植到 Rust 上
10 | 11 | #### 官方新闻 12 | 13 | 1、[Rust 发布 1.61 版本](https://blog.rust-lang.org/2022/05/19/Rust-1.61.0.html) 14 | 15 | 在历次版本更迭中,Rust 的 `fn main` 函数经历了从返回单元类型 `()`,到返回 `Result`,这两个实际上都是通过 `Termination` 特征来返回一个状态码(Exit Status)。 16 | 17 | 但之前该特征并没有稳定,我们无法自定义想要的返回状态码,而新版本中中,该特征最终稳定下来。 18 | 19 | 除此之外还有对常量函数 (const fn) 的进一步支持,意味着我们可以将更多的任务放在编译期去执行了。 20 | 21 | #### 开源项目 22 | 23 | 1、[BlindAI: 一个基于 Rust 的开源 AI 项目](https://blog.mithrilsecurity.io/introducing-blindai/) 24 | 25 | 谁说 Rust 在机器学习/人工智能方面是纯纯的菜鸟?这不,我们拥有了一个纯 Rust 编写的、现代化的...AI 模型部署工具,它可以把我们创建的 AI 模型方便地部署在远程服务器上,同时对终端用户提供安全的访问接口。 26 | 27 | 28 | 29 | 2、[Fyrox 发布 0.25 版本](https://fyrox.rs/blog/post/feature-highlights-0-25/) 30 | 31 | 对于 Fyrox 大家可能不熟悉,但是提到 rg3d,很多人可能就恍然大悟了。是的, fyrox 它的新名字( 我觉得新名字比老的要好,未来更好推广,但是还是建议大家在项目初期想一个好的名字,不然后面改名的隐形成本实在太高了!) 32 | 33 | 在新版本中,主要是引入了静态插件和脚本的支持,其中一个用途就是用来扩展游戏引擎,例如现在的 fyrox 支持在游戏编辑器中运行游戏了,就像很多知名的游戏引擎一样! 34 | 35 | 36 | 37 | 38 | #### 精选文章 39 | 40 | 1、[我们是怎么将 Ruby 编译器移植到 Rust 的](https://shopify.engineering/porting-yjit-ruby-compiler-to-rust) 41 | 42 | 在 [4 月份时](https://baijiahao.baidu.com/s?id=1730684175033094920&wfr=spider&for=pc),一个爆炸性的新闻出现:Ruby 的 YJIT 编译器使用 Rust 完成了移植,并等待合并到上游代码仓库中,但当时并没有给出太多的细节。 43 | 44 | 一个月后的这篇文章中,开发者团队终于解开了神秘的面纱,深入谈了下在移植过程中遇到问题以及收获的经验,值得一读。 45 | 46 | 2、[Rust和供应链](https://blog.logrocket.com/comparing-rust-supply-chain-safety-tools/) 47 | 48 | 嗒哒,你可能被题目所欺骗了,以为本文是写 Rust 和物流供应链的,实际上,这是一篇关于 Rust 依赖链的文章,作者貌似对于外部的一切都充满了不信任感,因此希望能发现 Rust 项目中到底使用了哪些库,以及相关的详细信息。 49 | 50 | 如果大家读了后,觉得意犹未尽,这里也有一篇[相似的文章](https://insanitybit.github.io/2022/05/10/supply-chain-thoughts)。 51 | 52 | 3、[语言特性真的越多越好吗?](https://www.thecodedmessage.com/posts/2022-05-11-programming-multiparadigm/) 53 | 54 | C++ 程序员经常引以为傲的一点就是 C++ 什么都能做,而且还是多编程范式的。如果你对此套路不熟悉,很容易就被其吸引,然后走上一条不归路。 55 | 56 | 看了本文后,至少这些套路你将了若指掌,以后互喷起来,不要太愉快 :P 57 | 58 | 4、[使用 Rust 扩展 SQLite](https://ricardoanderegg.com/posts/extending-sqlite-with-rust/) 59 | 60 | SQLite 支持多种扩展机制,本文将通过扩展的方式,为 SQLite 实现 zstd 压缩。 61 | 62 | 63 | 5、[深入 Rust 异步编程](https://conradludgate.com/posts/async) 64 | 65 | 友情提示,阅读本文,首先你需要坚实的基础?其实不是,你需要一杯咖啡、一个躺椅和一盘小点心,因为它真的挺长。。 66 | 67 | 6、[Default 和 From](https://elijahcaine.me/rust-default-from/) 68 | 69 | 从 Python 到 Rust,作者发现代码变得冗长了不少,他的手已然累了。因此,本文将从工程性的角度出发,谈谈 `Default` 和 `From` 在实战中能发挥出什么威力。 70 | 71 | 7、[游戏开发中的音频为何这么难](https://tesselode.github.io/articles/audio-libraries-considered-challenging/) 72 | 73 | 游戏由于 fps 的限制,导致了音视频的开发难度相对其他领域来说会更高一些,作者在编写 [kira](https://github.com/tesselode/kira/) 的过程中,深刻领悟了这一点。 74 | 75 | 8、[系列] [链接 Rust 依赖包 1](https://blog.pnkfx.org/blog/2022/05/12/linking-rust-crates/) 76 | 77 | 说到依赖包,应该没人不知道 `bin` 和 `lib` 类型,前者可以编译成可运行的二进制文件,后者则是常用的依赖库。但是以下这些呢?`bin, lib, dylib, staticlib, cdylib, rlib, and proc-macro`,能够一一说出的同学,请举个爪 =,= 78 | 79 | 而文章要做的就是通过系列文章的方式带大家通过示例的方式熟悉这些库类型,本文是第一篇。 -------------------------------------------------------------------------------- /docs/2022/5月/29.md: -------------------------------------------------------------------------------- 1 | # 「Rust 语言周刊」 第 14 期 · 2022-05-29 2 | Rust语言周刊精选全世界过去一周的优秀文章、新闻、开源项目和语言动态。 3 | 4 | 本周刊由 RustCn 社区倾情打造,其中, `[Zh]` 标识的中文资料由 Rust 翻译计划提供,并且原始的 Markdown 文档已[全部开源](https://github.com/rustlang-cn/rustt),欢迎大家阅读和订阅。 5 | 6 | > RustCn:https://hirust.cn, 公众号: Rust语言中文网 7 | 8 | 9 |
题图: IntelliJ 的 Rust 插件发布新版本
10 | 11 | #### Rust 项目 12 | 13 | 1、[IntelliJ 的 Rust 插件发布新版本](https://blog.jetbrains.com/rust/2022/05/19/what-s-new-in-intellij-rust-for-2022-1/) 14 | 15 | Vscode 的 Rust 插件 `rust-analyzer` 已经相当牛了,但是跟 IntelliJ 依然有一定的差距。告诉大家一个小秘密,ra 之前的的核心作者其实也是 IntelliJ Rust 插件的核心开发,当然,现在 ra 在合并到官方组织后,跟以前又有所不同了。 16 | 17 | #### 精选文章 18 | 19 | 1、[为了开发一个操作系统,我学习了 Rust 并写下 10 万行代码](https://www.bunniestudios.com/blog/?p=6375) 20 | 21 | 对于作者所在的公司来说,他们希望能清晰地掌控 OS 的每一个细节,虽说 linux 是开源的,但是它实在太大了,而其他的开源系统或多或少页无法满足他们的需求,因此需要重新手撸一个 OS。那么,在这个时间点,对于这种需求,除了 Rust 之外,还有更好的选择吗?显然没有。 22 | 23 | 2、[从零构建一个云数据库:我们为何从 C++ 迁移到 Rust](https://singularity-data.com/blog/building-a-cloud-database-from-scratch-why-we-moved-from-cpp-to-rust/) 24 | 25 | 就我个人而言,真的很羡慕国外的技术人生存环境,你能想象,国内创业公司在开发 7 个月后删除了所有的 C++ 代码,然后从零开始,使用 Rust 从头开始吗?作者所在的公司就是这样一(yi)股(duo)清(qi)流(pa)。 26 | 27 | 3、[修复 Rust 中的内存泄漏问题](https://onesignal.com/blog/solving-memory-leaks-in-rust/) 28 | 29 | OneSignal 是一个消息服务公司,在之前将其中的一些核心服务[迁移到了 Rust 上](https://onesignal.com/blog/rust-at-onesignal/),在此过程中,他们遇到并解决了不少问题,其中一个就是内存泄漏。 30 | 31 | 这篇文章干货多多,非常值得深入阅读! 32 | 33 | 4、[Rust 中的崩溃处理](https://jake-shadle.github.io/crash-reporting/) 34 | 35 | 不知道大家学过 Erlang 没,这门语言不仅是现代化并发编程的引路者,还是崩溃哲学的提倡者:错误不应该被隐藏,而是直接抛出来,任其崩溃,若有需要,自动重启任务协程即可(通过 gen_supervisor 统一管理)。 36 | 37 | 当然,这种特立独行的方式并不适合于所有的语言和开发者,因此 Rust 中并没有内置这套崩溃自动处理系统,而是需要我们根据自己的需求来手动处理,这篇文章就介绍了一些不错的崩溃处理方式。 38 | 39 | 5、[从 BonsaiDb 的性能问题引发的文件同步性能探究](https://bonsaidb.io/blog/durable-writes/) 40 | 41 | 数据库是非常复杂的领域,作者本来想要同时搞定中上层数据库服务和底层数据存储服务,但是在遇到了一系列问题后,现在不禁怀疑,自己实现底层数据存储服务是否是一个正确的抉择。 42 | 43 | 6、[优化 Rust 二进制文件的大小](https://kerkour.com/optimize-rust-binary-size) 44 | 45 | 这篇文章很短,只介绍了优化大小的一些途径( 其实不是很全 ),并没有对此进行深入展开,我个人其实并不想把文章列到周刊中,但是鉴于本期的内容素材并不多,只能向现实屈服了 :( 46 | 47 | 7、[使用 Github Actions 来测试和构建你的 Rust 应用](https://kerkour.com/rust-github-actions-ci-cd) 48 | 49 | 这篇文章的推荐程度同上,如果大家想要全面了解 Github Actions,可以看看 Rust 语言圣经中的[这篇章节](https://course.rs/test/ci.html)。 50 | 51 | -------------------------------------------------------------------------------- /docs/2022/6月/10.md: -------------------------------------------------------------------------------- 1 | # 「Rust 语言周刊」 第 15 期 · 2022-06-10 2 | Rust语言周刊精选全世界过去一周的优秀文章、新闻、开源项目和语言动态。 3 | 4 | 本周刊由 RustCn 倾情打造,其中, `[Zh]` 标识的中文资料由 Rust 翻译计划提供,并且原始的 Markdown 文档已[全部开源](https://github.com/rustlang-cn/rustt),欢迎大家阅读和订阅。 5 | 6 | > RustCn:https://hirust.cn, 公众号: Rust语言中文网 7 | 8 | 9 |
题图: Rust 好难啊
10 | 11 | 12 | ## 精选文章 13 | 14 | 1、[简单的 Rust 面试问题](https://flakm.github.io/posts/rust_interview_questions/) 15 | 16 | 当年(2015)我搜索 Go 语言工作时有多绝望,你现在搜索 Rust 工作就有多绝望,再优秀的语言,要在行业里流行开来,总需要时间的沉淀,不管如何,Rust 现在正在走在一条正确的快行道上。 17 | 18 | 因此,无论是面试官还是面试者,提前储备一些 Rust 的面试题,都是不错的选择。 19 | 20 | 2、[来自强类型的诅咒](https://fasterthanli.me/articles/the-curse-of-strong-typing) 21 | 22 | 我骑着马儿,穿过了雪山,来到了草原,遇到了美丽的...错误?!大家写 Rust 有没有这种感觉,从题目可以看出,作者是绝对有这种感觉的,特别是在他的 Boss 宣称:从今以后,我们的一切都要使用 Rust 后... 23 | 24 | 3、[测量 Rust 中的堆内存分配](https://flakm.github.io/posts/heap_allocation/) 25 | 26 | 如果问程序员,为何要节省内存,他会说这是技术的体现;如果问老板,为何要节省内存,他会说这是因为穷。总是,在节省硬件成本这件事上,大家的目标出奇的一致。那么现在的问题就是:该如何衡量应用的内存使用情况? 27 | 28 | 4、[Arc 和 Mutex](https://itsallaboutthebit.com/arc-mutex/) 29 | 30 | 这篇文章讲解了一个很有趣的点:`Arc` 为何要求其包裹的类型实现 `Sync` 特征,值得一看! 31 | 32 | 5、[使用 Github Actions 让 Rust 构建提速 30 倍](https://ectobit.com/blog/speed-up-github-actions-rust-pipelines/) 33 | 34 | Rust 什么都好,就是编译太慢了,特别是你同时写 Go 和 Rust 时,那种对比体验更是明显。原因在于,在编译过程中,为了安全性和性能 Rust 会检查很多很多东西,何况 Rust 提供的语言特性也远比 Go 要更加丰富。 35 | 36 | 当然,这个过程是可以提速的,例如在 `Cargo.toml` 中设置编译优化选项,再比如本文中的构建缓存。 37 | 38 | 39 | 6、[Rust 好难啊](https://hirrolot.github.io/posts/rust-is-hard-or-the-misery-of-mainstream-programming.html) 40 | 41 | Rust 之所以给很多人难学的印象,很重要的一点就在于:某些其它语言很轻松就能处理的问题,在 Rust 中,你需要兼具美貌、智慧与勇气,才能搞定。 42 | 43 | 大家可能以为这篇文章是一个新手写的,其实不然,作者已经浸淫 Rust 数年,还在某次大会上分享过 Rust,但是他依然会遇到一些意料之外的棘手错误,一起来看看吧。 44 | 45 | 7、[爆发和挑战并存](https://thestack.technology/rust-language-explosive-growth-challenges-rust-governance/) 46 | 47 | 在过去 24 个月中,Rust 开发者的数量增加了 3 倍,可以说从 Rust 基金会成立后,Rust 一直在爆发式增长,但是其所面临的挑战也越来越大。 48 | 49 | 8、[使用 Rust 来爬取网页](https://www.scrapingbee.com/blog/web-scraping-rust/) 50 | 51 | 想从某些网站获取信息,一般有两个途径:首先就是调用网站提供的 API,这也是最安全、最合法的方式(特别是国内!),例如 Github 就提供了异常丰富的 API;其次,就是使用爬虫来爬取到网页后,再对内容进行解析,以提取出有用的信息。 52 | 53 | 9、[Video][使用 Rust 来编写 WGPU 程序](https://www.youtube.com/playlist?list=PL_UrKDEhALdJS0VrLPn7dqC5A4W1vCAUT) 54 | 55 | -------------------------------------------------------------------------------- /docs/2022/6月/24.md: -------------------------------------------------------------------------------- 1 | # 「Rust 语言周刊」 第 16 期 · 2022-06-24 2 | Rust语言周刊精选全世界过去一周的优秀文章、新闻、开源项目和语言动态。 3 | 4 | 本周刊由 RustCn 倾情打造,其中, `[Zh]` 标识的中文资料由 Rust 翻译计划提供,并且原始的 Markdown 文档已[全部开源](https://github.com/rustlang-cn/rustt),欢迎大家阅读和订阅。 5 | 6 | > RustCn:https://hirust.cn, 公众号: Rust语言中文网 7 | 8 | 9 | ## 官方新闻 10 | 11 | 1、[首期 Rust 基金会的赞助名单已经出炉](https://foundation.rust-lang.org/news/2022-06-14-community-grants-program-awards-announcement/) 12 | 13 | 按照目前的计划,基金会每年开放两次申请,每次 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)两个方向。 14 | 15 | 下次的申请开放大概在 10 月份左右,强烈建议有能力的都去试试,万一申请下来,几千美元也是很香的 :) 16 | 17 | ## 精选文章 18 | 19 | 1、[Zh] [用 Rust 从 0 到 1 实现一个最简化的 KV 存储引擎](https://blog.csdn.net/qq_36456827/article/details/125304612) 20 | 21 | 这种有讲有练的干货真的不多( 大部分人貌似都更喜欢做一些偏软货的东东,包括我自己 :P ),本文不仅内容质量高,而且还随文附送一个相当不错的 DB demo 实现,非常值得阅读和学习! 22 | 23 | 2、[智商提升了一岁的 Rust 编译检查器](https://jackh726.github.io/rust/2022/06/10/nll-stabilization.html) 24 | 25 | 当你好奇的看到这里时,和我一样,你被作者的标题忽悠了,其实是 Rust 编译检查器在最新版本中会默认开启所有的功能。不过在文章中,还讲到了很多生命周期错误提示的最新变动以及未来的展望,总算没白来了 :D 26 | 27 | 3、[大佬来找茬系列之教学明星项目 mini-redis](https://smallcultfollowing.com/babysteps/blog/2022/06/13/async-cancellation-a-case-study-of-pub-sub-in-mini-redis/) 28 | 29 | 一般来说,在社区中推荐一个新手学习项目, [`mini-redis`](https://github.com/tokio-rs/mini-redis) 往往是首选,它拥有高质量且简洁的代码实现、清晰完善的文档以及对异步编程保姆式的引导讲解,总之非常棒。 30 | 31 | 但是它没有缺点吗?这不,Baby steps 大佬出手了,干货满满,强烈推荐阅读! 32 | 33 | 4、[如何让 Rust 项目发生内存泄漏甚至崩溃?](https://fly.io/blog/rust-memory-leak/) 34 | 35 | 别开枪,是友军!事实上,这篇文章讲的是如何修复 Rust 项目的内存泄漏问题,具体的项目是 `fly.io` 公司的代理服务,该代理会将来自世界各地的用户请求路由到最适合的虚拟机中( 虚拟机分布在全世界 21 个地区 )。 36 | 37 | 5、[使用自建的 prelude.rs 来简化 Rust 项目的依赖引入](https://justinwoodring.com/blog/tidy-your-rust-imports-with-prelude/) 38 | 39 | Rust 项目大了后,一个不得不面对的问题就是:该如何处理每个文件中都需要导入的重复依赖,例如: 40 | 41 | ```rust 42 | use crate::models::clubs_md::{Club, NewClub, ClubDetails}; 43 | use crate::models::users_md::{User, UserDetails, NewUser, Admin}; 44 | use crate::models::club_members_md::{MembershipStatus, ClubMember, NewClubMember}; 45 | use crate::Db; 46 | ``` 47 | 48 | 6、[使用 Rust 来测试 NVDIA 的 GPU 性能](https://simbleau.github.io/blog/gpu-profiling-with-rust/) 49 | 50 | 在目前的 CPU、GPU 跑分领域,Rust 还是小兵之姿,但将军的梦想还是要有的。这篇文章中,作者将使用 NVDIA 的工具扩展 SDK 来开发基于 Rust 的 GPU 和 CPU 跑分工具,喜欢猎奇的同学不容错过。 51 | 52 | 53 | ## 开源项目 54 | 55 | 1、 [lurk: 使用 Rust 重新实现 strace](https://jakobwaibel.com/2022/06/06/ptrace/) 56 | 57 | 目前项目还较为早期,但是关于项目的愿景,作者描述的较为清晰,这种项目一般都是值得期待并能产生结果的。 58 | 59 | 2、[error-stack: 一个全新的 Rust 错误处理库](https://hash.dev/blog/announcing-error-stack) 60 | 61 | 该库支持上下文感知和任意用户数据的关联。事实上,这种类型的开源项目往往都来源于一个团队在实际项目中遇到的痛点,因此工程性适用性会非常强。总之,以我个人的经验,不以 star 论英雄,还是看看是 `谁` 开源了 `什么` 项目以及适不适合 `你` 的使用场景,很多低星项目其实是非常优秀和成熟的,只不过没有得到应有的曝光度。 62 | 63 | 3、[打遍 playground 无敌手的 Rust Explorer](https://www.rustexplorer.com/b/about) 64 | 65 | 这个项目真的非常吸引我,不知道大家对于在线代码运行的期许是什么,对我而言,能够运行各种代码绝对是最大的亮点,而这个项目支持 10000 个三方依赖库(crates.io 上的 top 10000)。 66 | 67 | 不是 100,也不是 1000,而是 10000,基本上这意味着几乎所有代码片段都可以在这里运行了,也意味着我的 `practice.rs` 项目可以进一步扩展,Bingo! 68 | 69 | 4、[clap 3.2 发布](https://epage.github.io/blog/2022/06/clap-32-last-call-before-40/) 70 | 71 | 看起来只是一个小版本,但是它可是 4.0 大版本的预演,因此新增了两种 API 构建方式。 72 | 73 | 5、[c2rust 王者归来](https://immunant.com/blog/2022/06/back/) 74 | 75 | 这个项目对于 Rust 的生态而言太太太重要了,要进一步扩大自己的份额,C 语言就是绕不过的高山,而重写旧项目在大多数时候显然都是不现实的,因此 `c2rust` 才会有这么高的呼声,只不过之前因为核心作者的原因,项目几乎不怎么活跃了,还好现在 `immunant` 公司接过了大旗。 76 | 77 | 要我说,这种底层类型的大型开源项目要做得好,还是得背靠大树,例如之前的 [`cc`](https://github.com/rust-lang/cc-rs/issues/663) 项目就是从 `alex` 个人名下转到了 `rust` 官方组织下,最终又焕发了第二春。 78 | 79 | 6、[mold 发布 0.3 版本](https://github.com/rui314/mold) 80 | 81 | mold 是一个用 Rust 写的链接器,它的性能比 LLVM 的 lld 链接器快好几倍,目标是通过降低编译时间来让 Rust 项目的开发闭环周期大幅提速。以下是性能对比图: 82 | 83 | 84 | 85 | -------------------------------------------------------------------------------- /docs/2022/7月/15.md: -------------------------------------------------------------------------------- 1 | # 「Rust 语言周刊」 第 17 期 · 2022-07-15 2 | Rust语言周刊精选全世界过去一周(或者几周)的优秀文章、新闻、开源项目和语言动态。 3 | 4 | 本周刊由 RustCn 倾情打造,其中, `[Zh]` 标识的中文资料由 Rust 翻译计划提供,并且原始的 Markdown 文档已[全部开源](https://github.com/rustlang-cn/rustt),欢迎大家阅读和订阅。 5 | 6 | > RustCn:https://hirust.cn, 公众号: Rust语言中文网 7 | 8 | 9 |
题图: Tauri 发布 1.0 版本
10 | 11 | 12 | ## 官方新闻 13 | 14 | 1、[Zh] [Rust 发布 1.62 版本](https://course.rs/appendix/rust-versions/1.62.html) 15 | 16 | 如果大家期待 Rust 像其它语言一样,每一个新版本都带来大量新特性,那你们可要失望了,1.62 的更新内容相当少,甚至不如某些语言一个 minor 版本的更新力度,但**错不在 Rust**,建议大家了解下 Rust 的[版本发布流程](https://course.rs/appendix/rust-version.html),就明白其中的弯弯绕绕了。 17 | 18 | ## 开源项目 19 | 20 | 1、[基于 Rust 的操作系统训练营](https://github.com/LearningOS/rust-based-os-comp2022) 21 | 22 | 该训练营有一个配套教程,将带大家从零开始使用 Rust 编写 RISC-V 架构的 类 Unix 内核 。 23 | 24 | 我自己也做开源,深知这件事会占用多少的时间和精力,甚至还会遭人非议,而我仅仅是写写书,跟作者这种大佬一比,差距就太大了... Respect! 25 | 26 | 2、[Tauri 发布 1.0 版本](https://tauri.app/blog/tauri_1_0/) 27 | 28 | 虽然 Tauri 很有名,但是为防有同学不知道背景,还是简单介绍下:它是一款跨平台的桌面应用开发框架,虽然内核是使用 Rust 开发,但是开发者可以使用自己喜欢的前端框架( `react`, `vue`, `vite` )来构建自己的用户界面,最终编译生成一个可执行的二进制文件,方便在各个不同的操作系统间分发运行。总之,你可以将 Tauri 当作是理念更先进的 Electron.js 。 29 | 30 | 言归正传,在历经 1 年多的时间后,Tauri 终于发布了 1.0 版本,这也标志着它已经可以在生产环境正式使用,并且目前来看,官方文档还算可以,甚至还提供了[中文文档](https://tauri.app/zh/v1/guides/getting-started/prerequisites),除此之外,我还发现了一个[宝藏教学系列](https://zhuanlan.zhihu.com/p/539708101),值得一读。 31 | 32 | 3、[lettre 发布 0.1.0 版本](https://lettre.rs/post/lettre-0-10/) 33 | 34 | `lettre` 是一个现代化的邮件发送库,它简单易用、安全可靠,但是需要注意,它的目标**不是支持所有的邮件 RFC 标准**,因此在你有特殊需求时,可能会需要自己动手,丰衣足食。 35 | 36 | 该库目前已被多个项目使用,包括大名鼎鼎的 `crates.io`。 37 | 38 | 4、[workers-rs: 使用 Rust + WebAssembly 实现 Cloudflare 的 Workers](https://github.com/cloudflare/workers-rs) 39 | 40 | Cloudflare 已经成为全世界最大的 DNS 服务商,而且它的业务不仅仅是 DNS,目前云计算方面也进行的如火如荼。CF 最大的优势不仅仅在于 DNS 的快速和稳定,还在于它提供了多种方式来扩展你的 DNS 使用,例如你可以使用 Rust 来变成它的 worker。 41 | 42 | 为了便于有需要的同学进一步学习该如何使用,这里还有一篇[实战文章](https://logankeenan.com/posts/running-a-rust-server-in-a-cloudflare-worker/),值得一看。 43 | 44 | 45 | ## 精选文章 46 | 47 | 1、[过程宏揭秘 II](https://blog.jetbrains.com/rust/2022/07/07/procedural-macros-under-the-hood-part-ii/) 48 | 49 | 想要了解过程宏是如何编译、怎么跟 IDE 互动的吗?来看看这个系列的文章,作者来自 Intellij Rust 插件开发组,之前还给 RustCon 分享过,干货满满。 50 | 51 | 本文是系列文章中的第二篇,第一篇见[这里](https://blog.jetbrains.com/rust/2022/03/18/procedural-macros-under-the-hood-part-i/)。 52 | 53 | 54 | 2、[youtube][有字幕] [AWS 在构建 Rust SDK 方面的实践](https://www.youtube.com/watch?v=N0XMjokwTIM) 55 | 56 | 如果没有亚马逊这几年对 Rust 的大力(肆)支(鼓)持(吹),Rust 也不会走到今天这个地步。出于敬意,放上这个视频,事实上,里面更多的是对自己产品的宣传 = , = 特别是第一部分,大家可以跳着看,一些关于底层的讲解还是值得一看的。 57 | 58 | 3、[Zh] [在 GCC 13 中,大家可能将看到 Rust 的身影](https://www.oschina.net/news/202630/gcc-rust-approved-by-gcc-steering-committee) 59 | 60 | 目前来说,Rust 的编译器实现是基于 LLVM 的,而我们可能很快将看到基于 GCC 的实现,与 LLVM 不同,新的编译器将能获得 GCC 内部优化通道的所有访问权,同时带来更多的目标平台的支持,以及享受 GCC 众多的插件生态。 61 | 62 | 该项目已经历时多年(从 Rust 0.9 版本开始),我一度怀疑可能永远都无法看到它的身影,没想到现在突然官宣了,但是项目依然还处于早期阶段,当前的目标是在 GCC 13 中提供测试级别的支持。 63 | 64 | 再加上 Rust 即将在 Linux 5.20 中出现,可以预料, Rust 的未来将更加美好,大家一起期待吧! 65 | 66 | 4、[C++ 大战 Rust 系列:可变性和所有权](https://www.tangramvision.com/blog/c-rust-interior-mutability-moving-and-ownership) 67 | 68 | 虽然 Rust 将所有权发扬光大,但是咱不能说 Rust 发明了所有权,毕竟众所周知:Rust 语言是借鉴大师 :P 69 | 70 | 在这篇文章中,作者将介绍 C++ 和 Rust 在实现所有权、可变性方面的不同设计哲学,以及标准库、编译器层面的支持。 71 | 72 | 5、[Rust 错误介绍,比你想要的更多](https://www.shuttle.rs/blog/2022/06/30/error-handling) 73 | 74 | 文章不错,标题也不错! 虽然你想要的错误处理几乎都可以在 `https://course.rs` 上找到,但是这篇文章依然值得一看。 75 | 76 | 6、[Youtube][有字幕] [为何你的 Rust 编译这么慢?](https://www.youtube.com/watch?v=pMiqRM5ooNw) 77 | 78 | 视频质量自然非常高,从各个方面介绍了该如何提升 Rust 的编译速度,干货满满,强烈推荐。 79 | 80 | 但...我的天,我真的佩服作者,就以 Rust 周刊举例吧,每次周刊基本都要花费我几个小时,那一个将近 3 个小时的干货视频,要准备多久?简直是卷王在世 :) 81 | 82 | 甚至有人评论到:这个是一个 AMSR 视频... 83 | 84 | 85 | 7、[Rust中的再借用](https://haibane-tenshi.github.io/rust-reborrowing/) 86 | 87 | 大家都知道 Rust 中的生命周期很难,那你们谈谈对借用的印象,难吗?我猜,大多数人会说不难。其实不然,Rust 中的借用并不仅仅是书上介绍的那些,例如**再借用(reborrowing)**,你听说过吗? 88 | 89 | 8、[我很强,但 Rust 更强](https://blog.polybdenum.com/2022/06/25/an-unfortunate-experience-with-rust.html) 90 | 91 | 作者说他对于 Rust 极其有经验,但是就算这样的高手,依然避免不了被 Rust 所教育,你问怎么个教育法?当然是跟编译器搏斗咯。 92 | 93 | 其实,从我个人而言,非常推荐大家看看这类文章,那些关于 Rust 如何成功的营销文,爽则爽矣,对于技术却无多大帮助。而这种错误实践类的文章,却能帮助我们少走很多弯路! 94 | -------------------------------------------------------------------------------- /docs/assets/codes/test.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | println!("hello, world"); 3 | } 4 | -------------------------------------------------------------------------------- /docs/assets/qpipsrvoa2whguvm9fyo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rustcn-org/rust-weekly/c0097a9b1c915595b0a06162d255a1b6b0e3bd41/docs/assets/qpipsrvoa2whguvm9fyo.jpg -------------------------------------------------------------------------------- /docs/temlate.md: -------------------------------------------------------------------------------- 1 | ## 「Rust 语言周刊」 第 4 期 · 2022-03-18 2 | Rust语言周刊精选全世界过去一周的优秀文章、新闻、开源项目和语言动态。 3 | 4 | 本周刊由 RustCn 倾情打造,其中, `[Zh]` 标识的中文资料由 Rust 翻译计划提供,并且原始的 Markdown 文档已[全部开源](https://github.com/rustlang-cn/rustt),欢迎大家阅读和订阅。 5 | 6 | > RustCn:https://hirust.cn, 公众号: Rust语言中文网 7 | 8 | 9 |
题图: 一本生锈的书
10 | 11 | #### Rust语言更新 12 | 13 | #### Rust新闻 14 | 15 | #### 精选文章 16 | 17 | #### 开源项目 18 | --------------------------------------------------------------------------------