Rust语言是什么?微软使用Rust语言取代C++重写Win11内核性能提升!
Windows操作系统,微软,Rust,Windows 11
微软近期在Windows 11内核中加入了基于Rust语言编写的Win32k.sys内核模式驱动文件,这一消息得到Azure云业务首席技术官Mark Russinovich的确认。
目前这一改进已经应用在Windows 11 Insider预览版中。Win32k.sys主要负责处理Windows上的图形设备界面(GUI)和窗口管理。
根据微软的介绍,Rust语言具有很高的内存安全性,对比C++,可以大幅减少不安全的子例程。
此外,Rust代码简洁高效,在某些场景下甚至比C++运行效率更高。值得注意的是,在使用Rust重写之后,Office应用没有出现任何性能损失。

目前,Windows 11 Canary通道最新预览版为Build 25357,Dev通道为Build 23451,发布预览版已迭代到了Build 22621.1776。
Rust在Windows 11内核中的引入和替代部分C++代码,展示了微软在提升操作系统安全性和性能方面的努力。
那什么是rust呢?
Rust语言是一门开源的系统编程语言,有3大特点:运行快,防止段错误,保证线程安全。
Rust作为系统级编程语言,它的基本理念是 “零开销抽象”
运行快
Rust是一种静态类型的编译性语言,类似C++。编译型语言,无须大规模的运行时(runtime)支持,也没有自动内存回收(GC)机制
防止段错误
1、什么叫做段错误?
一个进程在执行的时候,它所占用的内存的虚拟地址空间一般被分割成好几个区域,我们称为“段”,进程中的每个段通过硬件MMU映射到真正的物理空间;在这个映射过程中,我们还可以给不同的段设置不同的访问权限,比如代码段只读不写; 进程在执行过程中,如果违反了这些权限,CPU就会直接尝试一个硬件异常;硬件异常会被操作系统内核处理,一般内存会向对应的进程发送一条信号;如果没有实现自己特殊的信号处理函数,默认这个进程会直接退出;如果操作系统打开了core dump功能,在进程退出时操作系统会把它当时的内存状态,寄存器状态以及各种相关信息保存到一个文件中,供用户以后调试使用
2、什么会引起内存不安全?
访问未定义内存会引起不可知错误
类似空指针、野指针等绝不会在Rust中产生,因为Rust禁用所有裸指针,而且取消了空值,通过引用和借用这一方式替代。
3、Rust不需要手动管理内存:
在Rust之前其他编程语言管理内存的方式有两种
比如Jave和Python的方式无非是使用垃圾回收算法(GC),垃圾回收算法一定会有运行时和垃圾回收时的停顿,不适合系统编程。
C++手工管理内存,手工管理内存可能会出现内存泄漏和悬停指针之类的问题。
Rust通过生命周期和所有权特性,就可以实现内存的自动回收,
空指针:解引用空指针是不安全的,会引起段错误。这块地址空间一般是受保护的。
野指针: 野指针就是未初始化的指针,指针可能会指向受保护的区域
悬浮指针:悬浮指针是指内存空间在被释放了之后继续使用,和野指针一样,会读写不属于这个指针的内存
非法释放: 同一个指针释放两次
缓冲区溢出: 指针访问越界,会读取或者修改临近内存空间的值
执行非法指针: 如果一个函数指针不是准确的指向一个函数地址,那么调用这个函数指针会导致一段随机数据被当中指令来执行,非常危险
使用未初始化内存
数据竞争: 并发时针对同一块内存同时读写,没有同步