学习教材
Rust 语言是一种高效、可靠的通用高级语言。其高效不仅限于开发效率,它的执行效率也是令人称赞的,是一种少有的兼顾开发效率和执行效率的语言。
Rust 语言由 Mozilla 开发,最早发布于 2014 年 9 月。Rust 的编译器是在 MIT License 和 Apache License 2.0 双重协议声明下的免费开源软件。
Rust 官方在线工具: https://play.rust-lang.org/。
Rust语言的特点
- 高性能:Rust 速度惊人且内存利用率极高。由于没有运行时和垃圾回收,它能够胜任对性能要求特别高的服务,可以在嵌入式设备上运行,还能轻松和其他语言集成。
- 可靠性:Rust 丰富的类型系统和所有权模型保证了内存安全和线程安全,让您在编译期就能够消除各种各样的错误。
生产力:Rust 拥有出色的文档、友好的编译器和清晰的错误提示信息, 还集成了一流的工具 —— 包管理器和构建工具, 智能地自动补全和类型检验的多编辑器支持, 以及自动格式化代码等等。
Rust的应用
Rust 语言可以用于开发:
传统命令行程序:Rust 编译器可以直接生成目标可执行程序,不需要任何解释程序。
- Web 应用:Rust 可以被编译成 WebAssembly,WebAssembly 是一种 JavaScript 的高效替代品。
- 网络服务器:Rust 用极低的资源消耗做到安全高效,且具备很强的大规模并发处理能力,十分适合开发普通或极端的服务器程序。
- 嵌入式设备:Rust 同时具有JavaScript 一般的高效开发语法和 C 语言的执行效率,支持底层平台的开发。
Rust程序设计语言
Rust教程 | 菜鸟教程
已合并到Linux内核代码
相关新闻
Linus Torvalds:Rust将被合并到Linux 6.1主线
- 2019 年,内核维护者 Greg 表示愿意接受用 Rust 开发 Linux 内核的驱动程序。
- 2020 年,Linus Torvalds 回应了针对 Linux 内核支持 Rust 的个人看法。他没有否定该提议,而是提倡在默认情况下开启该 feature,以确保该 feature 能被充分测试。当然该 feature 最好以自适应的方式实现,如果在系统上检测到 Rust 编译器,则 Kconfig 将启用 Rust 支持,并继续构建任何假定的 Rust 内核代码,以至少查看其是否正确构建。
- 2020 年 LPC (Linux Plumbers Conference) 大会上,内核开发者他们不打算将已有的内核用 Rust 重写,只专注于可以用 Rust 编写的新代码。具体来讲,他们集中讨论了 Linux 内核对 Rust 的支持可能涉及到的三个方面:内核中现有的 API、架构支持,以及 ABI 与内核的兼容性问题。
- 2021 年,AOSP (Android Open Source Project) 现已支持使用 Rust 开发 Android 操作系统(Android 也属于 Linux 发行版)。
- 2021 年,Linus自己对 Linux 内核支持 Rust 的看法,他对此持观望和开放的态度,并表示 Rust 的首要目标应该是驱动程序。
谷歌使用 Rust 开发 Android 主要是为了解决内存安全问题,其工程师认为 Rust 可以利用编译时检查(确保对象的生命周期和所有权)和运行时检查(确保内存访问有效)来保证内存安全,并且 Rust 在实现这种安全性的同时,还提供了与 C 和 C++ 相当的性能。谷歌向 Android 添加新的开发语言并没有涉及到旧代码,主要是用于新的开发 —— 以避免产生新的内存安全错误。这与 Linux 内核支持 Rust 的实现思路基本一致。
此前 Rust 没有完全进入内核的原因主要有两个,其中一个是非标准的 Rust 扩展的处理,另一个更重要的原因是 Rust 编译器还不稳定。Linus 表示自己更关心后面这个原因,因为 Rust 编译器的可靠性和稳定性更重要。
根据 ZDNet 的报道 ,Linus 在邮件采访中回复记者称,除非发生意外,否则对 Rust 的支持将会被合并到 Linux 6.1。同时他提醒目前 “Rust 只在核心基础设施使用”。无论如何,对于 Rust 和 Linux 来说这都是重要的第一步。
用Rust重写Linux内核,这可能吗?
Rust 很香,有机会进入 Linux
某种程度上,Rust 之所以受欢迎,是因为开发人员用 Rust 更容易编写出安全的软件。一直以来,安全性深深困扰着微软和谷歌等公司。比如,微软的研究人员称,该公司每年修复的漏洞中有 70% 与内存安全有关。同样,谷歌调查发现,Chrome 代码库中所有严重的安全漏洞,70% 是内存管理的安全漏洞。
这些安全问题正好可以用 Rust 来解决。AWS 产品经理 Samartha Chandrashekar 表示,“它有助于确保线程安全,并防止与内存相关的错误,例如可能导致安全漏洞的缓冲区溢出。
在 Linux 圈子里,2019 年 Linux 安全峰会揭示,大约三分之二的 Linux 内核漏洞来自内存安全问题。
从理论上讲,Rust 可以使用本质上更安全的应用程序接口(API)完全避免这些漏洞。
那么,关于 Linux 中 Rust 地位,Linux 开发人员 Nelson Elhage 总结道:Linux Rust 的支持者并不是“提议将 Linux 内核用 Rust 重写;他们只是努力想做到让新的代码可以用 Rust 来编写。Rust 支持的三个潜在关注点包括利用内核中的现有 API、架构支持”,以及处理 Rust 和 C 之间的应用程序二进制接口(ABI)兼容性。