一、Rust简介
Rust语言至今已经成为了一门同时追求安全、并发和性能的现代系统级编程语言。
为了打成目标,Rust语言遵循了以下三条设计原则:
-
内存安全
一般来说,一门语言只要保证类型安全,就可以说它是一门安全的语言。简单来说,类型安全是指类型系统可以保证程序的行为是意义明确、不出错的。C/C++语言的类型系统就不是类型安全的,因为他们并没有对无意义的行为进行约束。简单的例子就是数组越界。C/C++并不对其做任何检查,导致发生了语言规范规定之外的行为,也就是未定义行为(Undefined Behavior)
Rust语言如果想保证内存安全,首先要做的就是保证类型安全,其中所有权系统、借用和生命周期起主要作用,详细介绍后面会补充
-
零成本抽象
关于抽象表达能力,Ruby是最具有代表性的语言,但是Ruby的抽象能力完全是靠牺牲性能换来的,而Rust的抽象并不会存在运行时性能开销,这一切都是在编译期完成的。Rust零成本抽象的基石就是泛型和trait,后面会逐步揭开。
-
实用性
评价一门语言的实用性,可以从以下三个方面进行评价:
1.实践性
2.有益性
3.稳定性
这三者对于Rust而言,都做足了准备。
二、Rust如何实现跨平台
重点讲一下Rust如何实现跨平台语言,这一点大家也可以与Java进行对比。
Rust跨平台得益于LLVM,Rust编译器是一个LLVM编译前端,它将代码编译为LLVM IR,然后经过LLVM编译为相应的平台目标。
Rust 源码经过分词和解析,生成 AST (抽象语法树)。 然后把 AST 进一步简化处理为HIR CHigh-level IR),目的是让编译器更方便地做类型检 查。 HIR 会进一步被编译为 MIR(MiddleIR),这是一种中间表示,它在 Rustl.12版本中被引入, 主要用于以下目的。
-
缩短编译时间 。 MIR 可以帮助实现增量编译,当你修改完代码重新编译的时候 , 编译 器只 计 算更改过的部分,从而缩短了编译时间 。
-
缩短执行时间 。 MIR 可以 在 LLVM 编 译之前实现更细粒度的优 化,因为 单纯依赖 LLVM 的优化粒度太粗,而且 Rust无法控制,引入 MIR就增加了更多的优化空间。
-
更精确的类型检查 。 MIR 将帮助实现更灵活的借用检查,从而可以提升 Rust 的使用 体验 。
最终, MIR 会被翻译为 LLVM IR, 然后被 LLVM 的处理编译为能在各个平台上运行的 目标机器码 。
本文介绍了Rust语言,一种追求安全、并发和性能的系统级编程语言。Rust通过所有权系统、借用和生命周期实现内存安全,避免了C/C++中的未定义行为。此外,Rust的零成本抽象保证了编译期的高性能。文章还讨论了Rust的实用性和如何通过LLVM实现跨平台编译,包括MIR在编译和优化中的作用。
1232

被折叠的 条评论
为什么被折叠?



