【译】Rust 2022 影响力简报
“看到一篇短文,对 Rust 语言在 2022 年增长的影响力做了一个很好的总结,所以将它翻译出来供大家参考,不是全文翻译,只是重点摘要。原文:https://deprogrammaticaipsum.com/the-state-of-rust-in-2022/
这篇文章将按计算机生态自底向上来总结。以下应用领域其实还有很多工具作者没有列出来,回头找时间我会再扩展一篇。
操作系统
一方面,Rust 获得了作为Linux 内核第二个官方语言的“爵位”[1] 。另一方面,开发人员选择 Rust 从头开始编写Redox[2]操作系统。
对于用户态程序,很多开发人员正在用 Rust 重写其中很多工具:bat
代替cat
、exa
代替ls
、fd
代替find
,以及更多工具[3] 。
除了重写之外,还有一些创新的工具:例如, Pijul[4]和Jujutsu[5]不仅是源代码版本控制市场中的 Git 克隆,而且还解决了Git 的缺点并从Fossil[6]等其他项目中汲取灵感的新工具。
编程语言
Rust 正稳步成为编译器和运行时构建的新的“C语言”。Artichoke[7]是用 Rust 制作的 Ruby。RustPython[8]是用 Rust 制作的 Python。Deno[9]是使用 Rust 制作的 TypeScript 和 JavaScript。
还有更多用 Rust 构建的语言[10]。甚至有一本书教你如何使用 Rust 和脚本语言创建你的编程语言,[11]你可以嵌入[12]到你的 Rust 应用程序或游戏中。
也有人正在研究Rust 与 Python[13]和许多其他编程语言的互操作性。
GUI
Linux 笔记本电脑制造商 System76 正在开发 COSMIC ,它是一个完全用 Rust 编写并基于gtk-rs的[14]桌面环境[15]。
Tauri[16]项目最近发布了 1.0 版,并将自己定位为 Electron 的跨平台 GUI 应用程序的可靠替代品。但是 Tauri 仍然需要在您的桌面上使用 Web 技术。100% 原生 GUI 应用程序空间怎么样?还有很多工作要做[17],方法相互矛盾,还没有明确的赢家。如今,像 1Password 这样的一些桌面应用程序在 Rust 上运行良好[18]。
Web 全栈开发
前端可以使用Rome[19]来格式化、检查和捆绑 CSS、TypeScript、HTML 和其他更高级的语言。
可以使用Rocket[20]作为 Ruby on Rails 或 Django 或Actix[21]和Hyper[22]的替代品,用于较小的 Web API。许多基准测试[23]表明,基于 Rust 的 Web 框架是当今市场上最快、最高效的框架之一。
云原生
可以使用Krustlet在 Kubernetes 中运行 WebAssembly,也可以在[24]Kata Containers[25]中更快地运行他们的代码,因为它已经用 Rust 重写了[26]。
恶意软件
虽然 Rust 非常适合应用程序,但它也非常适合恶意软件,使其更快、更小,甚至更难检测[27](比如一些勒索软件)。
其他动态
学习 Rust 每天都变得越来越容易。开发者可以通过rustlings[28]学习读写 Rust 代码。如果这还不够,Amos 会在 30 分钟内教你 Rust[29]。Rust Edu 组织[30]在学术界推广它,Typst[31]旨在取代 LaTeX。
Rust newsletter[32]、RiB[33]、Rust GameDev WG[34]和This Week in Rust[35]等时事通讯定期在你的收件箱中直接传播Rust 应用领域的各种创新。RustConf 2022[36] 刚刚举行完毕。Linux 基金会正在教我们如何用 Rust 编写内核模块[37]。
小结
现在很多公司都在使用Rust:除了上面提到的1Password之外,还有Dropbox、Google等等。
然而,在采用Rust的过程中仍有一个实际的障碍:学习曲线很陡,这使得Go、C#、Crystal和Dart在此刻的各种场景中都是值得一试的对手。许多程序员对Rust的借用检查器感到困惑或完全不明白,即使Rust能产生异常高效的代码,公司也对他们的开发人员使用它的生产力持怀疑态度。此时,谷歌认为其C++的继任者 Carbon[38] 会是一个更好的方法。
只有时间才能告诉我们,开发人员是否会习惯于借用检查器,就像他们在过去25年里习惯于垃圾收集、运行时异常、函数式编程和其他许多看似 "陌生 "的概念一样。
同时,我们将耐心地看着我们的行业再次重写所有的轮子,落入同样的陷阱,面对一个新的未知领域。没有银弹,以前没有,以后也不会有。
尽管 Rust 似乎是解决许多问题的绝佳解决方案,但它不会,也永远不会替代我们的大脑和思考能力。
参考资料
第二个官方语言的“爵位”: https://lkml.org/lkml/2021/12/6/461
[2]Redox: https://www.redox-os.org/
[3]更多工具: https://zaiste.net/posts/shell-commands-rust/
[4]例如, Pijul: https://pijul.org/
[5]Jujutsu: https://github.com/martinvonz/jj
[6]Fossil: https://fossil-scm.org/
[7]Artichoke: https://www.artichokeruby.org/
[8]RustPython: https://rustpython.github.io/
[9]Deno: https://deno.land/
[10]更多用 Rust 构建的语言: https://github.com/alilleybrinker/langs-in-rust
[11]创建你的编程语言,: https://createlang.rs/
[12]你可以嵌入: https://www.boringcactus.com/2020/09/16/survey-of-rust-embeddable-scripting-languages.html
[13]Rust 与 Python: https://www.infoworld.com/article/3664124/how-to-use-rust-with-python-and-python-with-rust.html
[14]gtk-rs的: https://gtk-rs.org/
[15]桌面环境: https://blog.edfloreshz.dev/articles/linux/system76/rust-based-desktop-environment/
[16]Tauri: https://tauri.app/
[17]很多工作要做: https://raphlinus.github.io/rust/gui/2022/07/15/next-dozen-guis.html
[18]在 Rust 上运行良好: https://serokell.io/blog/rust-in-production-1password
[19]Rome: https://rome.tools/
[20]Rocket: https://rocket.rs/
[21]Actix: https://actix.rs/
[22]Hyper: https://hyper.rs/
[23]基准测试: https://web-frameworks-benchmark.netlify.app/result?asc=0&l=rust&order_by=level512
[24]Krustlet在 Kubernetes 中运行 WebAssembly,也可以在: https://krustlet.dev/
[25]Kata Containers: https://katacontainers.io/
[26]用 Rust 重写了: https://www.zdnet.com/article/kata-containers-rewritten-in-rust-and-gets-a-major-speed-boost/
[27]甚至更难检测: https://www.zdnet.com/article/this-malware-has-been-rewritten-in-the-rust-programming-language-to-make-it-harder-to-spot/
[28]开发者可以通过rustlings: https://github.com/rust-lang/rustlings
[29]Amos 会在 30 分钟内教你 Rust: https://fasterthanli.me/articles/a-half-hour-to-learn-rust
[30]Rust Edu 组织: https://rust-edu.org/
[31]Typst: https://typst.app/
[32]Rust newsletter: https://discu.eu/weekly/rust/
[33]RiB: https://rustinblockchain.org/newsletters/
[34]Rust GameDev WG: https://gamedev.rs/
[35]This Week in Rust: https://this-week-in-rust.org/
[36]RustConf 2022: https://rustconf.com/
[37]如何用 Rust 编写内核模块: https://linuxfoundation.org/webinars/writing-linux-kernel-modules-in-rust/
[38]Carbon: https://9to5google.com/2022/07/19/carbon-programming-language-google-cpp/