|
|
|
@ -5,80 +5,56 @@ Rust语言周刊精选全世界过去一周的优秀文章、新闻、开源项
|
|
|
|
|
|
|
|
|
|
> RustCn:https://hirust.cn, 公众号: Rust语言中文网
|
|
|
|
|
|
|
|
|
|
# 「Rust 语言周刊」 第 13 期 · 2022-05-22
|
|
|
|
|
|
|
|
|
|
<img src="https://pic1.zhimg.com/80/v2-cd8fc37f15c5547a0853a92a9e06c528_1440w.webp">
|
|
|
|
|
<h5 align="center">题图: 将 Ruby 的编译器移植到 Rust 上</h5>
|
|
|
|
|
|
|
|
|
|
#### 官方新闻
|
|
|
|
|
|
|
|
|
|
1、[Rust 发布 1.61 版本](https://blog.rust-lang.org/2022/05/19/Rust-1.61.0.html)
|
|
|
|
|
|
|
|
|
|
在历次版本更迭中,Rust 的 `fn main` 函数经历了从返回单元类型 `()`,到返回 `Result`,这两个实际上都是通过 `Termination` 特征来返回一个状态码(Exit Status)。
|
|
|
|
|
|
|
|
|
|
但之前该特征并没有稳定,我们无法自定义想要的返回状态码,而新版本中中,该特征最终稳定下来。
|
|
|
|
|
|
|
|
|
|
除此之外还有对常量函数 (const fn) 的进一步支持,意味着我们可以将更多的任务放在编译期去执行了。
|
|
|
|
|
|
|
|
|
|
#### 开源项目
|
|
|
|
|
|
|
|
|
|
1、[BlindAI: 一个基于 Rust 的开源 AI 项目](https://blog.mithrilsecurity.io/introducing-blindai/)
|
|
|
|
|
|
|
|
|
|
谁说 Rust 在机器学习/人工智能方面是纯纯的菜鸟?这不,我们拥有了一个纯 Rust 编写的、现代化的...AI 模型部署工具,它可以把我们创建的 AI 模型方便地部署在远程服务器上,同时对终端用户提供安全的访问接口。
|
|
|
|
|
# 「Rust 语言周刊」 第 14 期 · 2022-05-29
|
|
|
|
|
Rust语言周刊精选全世界过去一周的优秀文章、新闻、开源项目和语言动态。
|
|
|
|
|
|
|
|
|
|
<img src="https://pic2.zhimg.com/80/v2-dafe81318a7f3e25d73b704251fad4c6_1440w.gif" />
|
|
|
|
|
本周刊由 RustCn 社区倾情打造,其中, `[Zh]` 标识的中文资料由 Rust 翻译计划提供,并且原始的 Markdown 文档已[全部开源](https://github.com/rustlang-cn/rustt),欢迎大家阅读和订阅。
|
|
|
|
|
|
|
|
|
|
2、[Fyrox 发布 0.25 版本](https://fyrox.rs/blog/post/feature-highlights-0-25/)
|
|
|
|
|
> RustCn:https://hirust.cn, 公众号: Rust语言中文网
|
|
|
|
|
|
|
|
|
|
对于 Fyrox 大家可能不熟悉,但是提到 rg3d,很多人可能就恍然大悟了。是的, fyrox 它的新名字( 我觉得新名字比老的要好,未来更好推广,但是还是建议大家在项目初期想一个好的名字,不然后面改名的隐形成本实在太高了!)
|
|
|
|
|
<img src="https://pic1.zhimg.com/80/v2-cd8fc37f15c5547a0853a92a9e06c528_1440w.webp">
|
|
|
|
|
<h5 align="center">题图: 将 Ruby 的编译器移植到 Rust 上</h5>
|
|
|
|
|
|
|
|
|
|
在新版本中,主要是引入了静态插件和脚本的支持,其中一个用途就是用来扩展游戏引擎,例如现在的 fyrox 支持在游戏编辑器中运行游戏了,就像很多知名的游戏引擎一样!
|
|
|
|
|
#### Rust 项目
|
|
|
|
|
|
|
|
|
|
<img src="https://pic1.zhimg.com/80/v2-7ba91c93e0c8ebe1e2a7928434173414_1440w.jpeg" />
|
|
|
|
|
1、[IntelliJ 的 Rust 插件发布新版本](https://blog.jetbrains.com/rust/2022/05/19/what-s-new-in-intellij-rust-for-2022-1/)
|
|
|
|
|
|
|
|
|
|
Vscode 的 Rust 插件 `rust-analyzer` 已经相当牛了,但是跟 IntelliJ 依然有一定的差距。告诉大家一个小秘密,ra 之前的的核心作者其实也是 IntelliJ Rust 插件的核心开发,当然,现在 ra 在合并到官方组织后,跟以前又有所不同了。
|
|
|
|
|
|
|
|
|
|
#### 精选文章
|
|
|
|
|
|
|
|
|
|
1、[我们是怎么将 Ruby 编译器移植到 Rust 的](https://shopify.engineering/porting-yjit-ruby-compiler-to-rust)
|
|
|
|
|
|
|
|
|
|
在 [4 月份时](https://baijiahao.baidu.com/s?id=1730684175033094920&wfr=spider&for=pc),一个爆炸性的新闻出现:Ruby 的 YJIT 编译器使用 Rust 完成了移植,并等待合并到上游代码仓库中,但当时并没有给出太多的细节。
|
|
|
|
|
|
|
|
|
|
一个月后的这篇文章中,开发者团队终于解开了神秘的面纱,深入谈了下在移植过程中遇到问题以及收获的经验,值得一读。
|
|
|
|
|
|
|
|
|
|
2、[Rust和供应链](https://blog.logrocket.com/comparing-rust-supply-chain-safety-tools/)
|
|
|
|
|
|
|
|
|
|
嗒哒,你可能被题目所欺骗了,以为本文是写 Rust 和物流供应链的,实际上,这是一篇关于 Rust 依赖链的文章,作者貌似对于外部的一切都充满了不信任感,因此希望能发现 Rust 项目中到底使用了哪些库,以及相关的详细信息。
|
|
|
|
|
1、[为了开发一个操作系统,我学习了 Rust 并写下 10 万行代码](https://www.bunniestudios.com/blog/?p=6375)
|
|
|
|
|
|
|
|
|
|
如果大家读了后,觉得意犹未尽,这里也有一篇[相似的文章](https://insanitybit.github.io/2022/05/10/supply-chain-thoughts)。
|
|
|
|
|
对于作者所在的公司来说,他们希望能清晰地掌控 OS 的每一个细节,虽说 linux 是开源的,但是它实在太大了,而其他的开源系统或多或少页无法满足他们的需求,因此需要重新手撸一个 OS。那么,在这个时间点,对于这种需求,除了 Rust 之外,还有更好的选择吗?显然没有。
|
|
|
|
|
|
|
|
|
|
3、[语言特性真的越多越好吗?](https://www.thecodedmessage.com/posts/2022-05-11-programming-multiparadigm/)
|
|
|
|
|
2、[从零构建一个云数据库:我们为何从 C++ 迁移到 Rust](https://singularity-data.com/blog/building-a-cloud-database-from-scratch-why-we-moved-from-cpp-to-rust/)
|
|
|
|
|
|
|
|
|
|
C++ 程序员经常引以为傲的一点就是 C++ 什么都能做,而且还是多编程范式的。如果你对此套路不熟悉,很容易就被其吸引,然后走上一条不归路。
|
|
|
|
|
就我个人而言,真的很羡慕国外的技术人生存环境,你能想象,国内创业公司在开发 7 个月后删除了所有的 C++ 代码,然后从零开始,使用 Rust 从头开始吗?作者所在的公司就是这样一(yi)股(duo)清(qi)流(pa)。
|
|
|
|
|
|
|
|
|
|
看了本文后,至少这些套路你将了若指掌,以后互喷起来,不要太愉快 :P
|
|
|
|
|
3、[修复 Rust 中的内存泄漏问题](https://onesignal.com/blog/solving-memory-leaks-in-rust/)
|
|
|
|
|
|
|
|
|
|
4、[使用 Rust 扩展 SQLite](https://ricardoanderegg.com/posts/extending-sqlite-with-rust/)
|
|
|
|
|
OneSignal 是一个消息服务公司,在之前将其中的一些核心服务[迁移到了 Rust 上](https://onesignal.com/blog/rust-at-onesignal/),在此过程中,他们遇到并解决了不少问题,其中一个就是内存泄漏。
|
|
|
|
|
|
|
|
|
|
SQLite 支持多种扩展机制,本文将通过扩展的方式,为 SQLite 实现 zstd 压缩。
|
|
|
|
|
这篇文章干货多多,非常值得深入阅读!
|
|
|
|
|
|
|
|
|
|
4、[Rust 中的崩溃处理](https://jake-shadle.github.io/crash-reporting/)
|
|
|
|
|
|
|
|
|
|
5、[深入 Rust 异步编程](https://conradludgate.com/posts/async)
|
|
|
|
|
不知道大家学过 Erlang 没,这门语言不仅是现代化并发编程的引路者,还是崩溃哲学的提倡者:错误不应该被隐藏,而是直接抛出来,任其崩溃,若有需要,自动重启任务协程即可(通过 gen_supervisor 统一管理)。
|
|
|
|
|
|
|
|
|
|
友情提示,阅读本文,首先你需要坚实的基础?其实不是,你需要一杯咖啡、一个躺椅和一盘小点心,因为它真的挺长。。
|
|
|
|
|
当然,这种特立独行的方式并不适合于所有的语言和开发者,因此 Rust 中并没有内置这套崩溃自动处理系统,而是需要我们根据自己的需求来手动处理,这篇文章就介绍了一些不错的崩溃处理方式。
|
|
|
|
|
|
|
|
|
|
6、[Default 和 From](https://elijahcaine.me/rust-default-from/)
|
|
|
|
|
5、[从 BonsaiDb 的性能问题引发的文件同步性能探究](https://bonsaidb.io/blog/durable-writes/)
|
|
|
|
|
|
|
|
|
|
从 Python 到 Rust,作者发现代码变得冗长了不少,他的手已然累了。因此,本文将从工程性的角度出发,谈谈 `Default` 和 `From` 在实战中能发挥出什么威力。
|
|
|
|
|
数据库是非常复杂的领域,作者本来想要同时搞定中上层数据库服务和底层数据存储服务,但是在遇到了一系列问题后,现在不禁怀疑,自己实现底层数据存储服务是否是一个正确的抉择。
|
|
|
|
|
|
|
|
|
|
7、[游戏开发中的音频为何这么难](https://tesselode.github.io/articles/audio-libraries-considered-challenging/)
|
|
|
|
|
6、[优化 Rust 二进制文件的大小](https://kerkour.com/optimize-rust-binary-size)
|
|
|
|
|
|
|
|
|
|
游戏由于 fps 的限制,导致了音视频的开发难度相对其他领域来说会更高一些,作者在编写 [kira](https://github.com/tesselode/kira/) 的过程中,深刻领悟了这一点。
|
|
|
|
|
这篇文章很短,只介绍了优化大小的一些途径( 其实不是很全 ),并没有对此进行深入展开,我个人其实并不想把文章列到周刊中,但是鉴于本期的内容素材并不多,只能向现实屈服了 :(
|
|
|
|
|
|
|
|
|
|
8、[系列] [链接 Rust 依赖包 1](https://blog.pnkfx.org/blog/2022/05/12/linking-rust-crates/)
|
|
|
|
|
7、[使用 Github Actions 来测试和构建你的 Rust 应用](https://kerkour.com/rust-github-actions-ci-cd)
|
|
|
|
|
|
|
|
|
|
说到依赖包,应该没人不知道 `bin` 和 `lib` 类型,前者可以编译成可运行的二进制文件,后者则是常用的依赖库。但是以下这些呢?`bin, lib, dylib, staticlib, cdylib, rlib, and proc-macro`,能够一一说出的同学,请举个爪 =,=
|
|
|
|
|
这篇文章的推荐程度同上,如果大家想要全面了解 Github Actions,可以看看 Rust 语言圣经中的[这篇章节](https://course.rs/test/ci.html)。
|
|
|
|
|
|
|
|
|
|
而文章要做的就是通过系列文章的方式带大家通过示例的方式熟悉这些库类型,本文是第一篇。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -89,6 +65,7 @@ SQLite 支持多种扩展机制,本文将通过扩展的方式,为 SQLite
|
|
|
|
|
|
|
|
|
|
目前所有的周刊都按照 `年/月/日期` 的方式归纳在 [docs](./docs) 目录下,大家可以按需查看。
|
|
|
|
|
|
|
|
|
|
- [第 13 期](./docs/2022/5月/22.md)
|
|
|
|
|
- [第 12 期](./docs/2022/5月/16.md)
|
|
|
|
|
- [第 11 期](./docs/2022/5月/07.md)
|
|
|
|
|
- [第 10 期](./docs/2022/4月/29.md)
|
|
|
|
|