目录
- 前言
- 一、Rust 的背景
- 二、Rust的特性
- 三、部署开发环境,编写一个简单demo
- 1、在ubuntu 20.04部署环境
- 2、编写demo测试
- 四、如何看待Linux内核引入Rust
前言
自Linux 6.1起,初始的Rust基础设施被添加到Linux内核中。此后为了使内核驱动程序能够用Rust编程语言编写,Linux内核已经合并了许多其他管道和内务管理工作。随着即将到来的Linux 6.8内核周期,第一个Rust网络驱动程序将被引入。去年vivo开发者大会上发布的蓝河操作系统,也使用了Rust语言进行开发。
作为一名软件开发人员,对于新技术总要保持着好奇心和不断进取的精神,过年抽空简单看了看Rust语言,在这里简单总结分享一下!
一、Rust 的背景
中文官方网站:https://rust.p2hp.com/learn/
Rust
语言在2006年
作为 Mozilla
员工 Graydon Hoare
的私人项目出现,而 Mozilla 于 2009 年开始赞助这个项目。第一个有版本号的 Rust 编译器于2012 年 1 月
发布。Rust 1.0
是第一个稳定版本,于 2015年5月15日
发布。
Rust 的设计目标是提供一种内存安全
、并发安全
和高性能
的编程语言,同时保持现代化和灵活性。它结合了系统级编程语言的高效性和高级语言的安全性,使得开发者可以在不牺牲性能的情况下编写更可靠和安全的代码。
Rust 是一门编译语言,因此它的效率可以媲美 C 或 C++ 语言。某种场景下,Rust 语言瞄准的是工业系统的霸者 C++ 语言。
Rust的具体语法和C,C++类似,都是由花括号限定代码块,还有一样的控制流关键字,例如if,else,while,和for。然而也并非所有的C或者C++关键字被实现了。某些Rust函数(比如关键字match用于模式匹配)对于那些精通这些语言的人就没那么熟悉了。尽管与C/C++极其相似,Rust在深层语法上跟元语言家族的语言像是Haskell更接近。基本上一个函数体的每个部分都是表达式,甚至是控制流操作符。例如,那个普通的if表达式也取代了C的三元表达式。一个函数不需要以return表达式结束,在这种情况下函数最后的表达式就是返回值。
Rust可以用来做什么呢?
1、可以使用 Rust 编写操作系统、游戏引擎和许多性能关键型应用程序。
2、可以使用它构建高性能的 Web 应用程序、网络服务,类型安全的数据库对象关系映射(Object
Relational Mapping,ORM)库,还可以将程序编译成 WebAssembly 在 Web 浏览器上运行。
3、Rust 还在为嵌入式平台构建安全性优先的实时应用程序方面获得了相当大的关注,例如 Arm
基于 Cortex-M 的微控制器,目前该领域主要由 C 语言主导。Rust 因其广泛的适用性在多个
领域都表现良好
二、Rust的特性
内存安全
Rust 最引人瞩目的特性之一是其内存安全性。通过独特的所有权系统和借用检查器,Rust 在编译时可以防止诸如空指针解引用、数据竞争和内存泄漏等常见的内存安全问题。这使得开发者编写的代码在运行时更加可靠,避免了许多常见的运行时错误。
并发安全
随着计算机系统变得越来越并发,编写并发安全的代码变得非常重要。Rust 的所有权模型和借用检查器使得并发安全得以得到保障,开发者可以在不担心数据竞争和并发 bug 的情况下编写并发程序。
高性能
Rust 的设计注重性能,并且借助精心设计的系统级特性和编译器优化,Rust 代码能够达到接近 C/C++ 的性能水平。这使得 Rust 成为系统级和性能敏感型应用程序的理想选择,例如操作系统、嵌入式系统和游戏引擎等领域。
现代化
Rust 语言本身也融入了许多现代化的编程特性,如模式匹配、闭包、trait 等,使得代码编写更加简洁、表达力更强。Rust 还拥有出色的包管理工具 Cargo,以及丰富的标准库和活跃的社区支持,为开发者提供了良好的开发环境和资源。
三、部署开发环境,编写一个简单demo
官网教程:https://www.rust-lang.org/learn/get-started
1、在ubuntu 20.04部署环境
参考教程:https://www.jianshu.com/p/cfd56fab0697
apt-get install rustc
apt install cargo
rustc是Rust语言的编译器,cargo是Rust的包管理器。
2、编写demo测试
//rust的源代码文件为.rs文件
fn main(){
println!("hello world!");
}
四、如何看待Linux内核引入Rust
Linux 内核引入 Rust 是一个备受关注的话题,它可能对 Linux 以及 Linux 开发产生一系列影响。以下是一些关于这个问题的观点和看法:
首先讲一下优点:
-
内存安全和并发性
:Rust 的引入可以带来更多的内存安全和并发性保证。由于 Rust 具有严格的所有权模型和借用检查器,开发者可以在内核代码中避免常见的内存错误如空指针解引用和数据竞争。这有助于提高内核的稳定性和安全性。 -
代码维护和可读性
:Rust 引入后,可能提高内核代码的可读性和可维护性。Rust 的语法清晰、表达力强,以及强大的静态类型系统可以帮助开发者编写更加模块化和易于理解的代码。这对于内核的维护者和贡献者来说是一个积极的影响。 -
性能和效率
:Rust 的高性能特性和零成本抽象能力可以对某些内核组件的性能产生积极影响。Rust 提供了对底层硬件和系统的直接访问能力,使得开发者可以编写高效的系统级代码,这对于需要处理大量数据和性能敏感的内核模块来说是一个重要的优势。 -
生态系统和工具链
:Rust 生态系统目前非常活跃,拥有丰富的库和工具。将 Rust 引入内核可能会促进这些工具和生态系统的发展,并为内核开发者提供更多的选择和支持。
再来看看一些缺点:
-
增加Linux开发人员的技能要求
:需要内核开发者拥有Rust语言的开发经验。 -
增加代码复杂度
:Rust中的一些概念和机制可能与C语言不同,需要使用者进行适应和理解。因此,Linux内核使用Rust开发可能会增加代码复杂度和调试难度。 -
影响Linux内核的运行效率
:Rust编写的程序通常比C更慢,因为Rust需要运行时代码来执行一些任务。虽然在一些场景下,Rust的性能可能要好于C,但引入Rust可能会对Linux内核的性能造成一定的影响。
需要注意的是,将 Rust 引入内核不仅仅是技术问题,还涉及到社区和开发者的接受程度,以及与现有 C 代码的兼容性等方面的考虑。此外,在实际实施时还需要解决一些挑战,如与现有基础设施的集成、性能优化等。
总之,尽管引入 Rust 可以带来许多潜在的好处,但它也需要认真考虑和解决相关的问题。Linux 内核引入 Rust 的决定还需要在社区中进行广泛的讨论和审议,以确保所有利益相关者的意见得到充分的考虑。