Rust的标准库的功能划分 而Rust标准库,很好的利用了操作系统内核提供的API。 Rust标准库是Rust程序进入Linux操作系统内核函数的主要接口,它在内部使用libc(在Windows系统使用其他等效的库)来调用内核提供的系统调用。 从Rust程序中发起系统调用,以实现管理和操作各种系统资源(如图)。 libc(或其变体)为类UNIX操作系统上...
而在 Linux 圈子里,Alex Gaynor 和 Geoffrey Thomas 在 2019 年 Linux 安全峰会上表示,大约三分之二的 Linux 内核漏洞源于内存安全问题。而 Rust 理论上可以通过其本质上更安全的应用程序接口(API)完全避免这些问题。Torvalds 对这一切怎么看?早几年的时候,他属于“观望派”——“我对这个项目感兴趣,但我...
和Rust-for-Linux 保持 API 一致。(Rust-for-Linux 例子:https://ux/linux/blob/d9b2e84c0700782f26c9558a3eaacbe1f78c01e8/samples/rust/rust_chrdev.rs) Rust 提供的内存安全性、零抽象等能力,恰好是内核领域亟需的特性和能力。比如内核态如果出现内存泄漏、野指针,一会造成很大影响、二来也很难调试。在这...
Rust标准库是Rust程序进入Linux操作系统内核函数的主要接口,它在内部使用libc(在Windows系统使用其他等效的库)来调用内核提供的系统调用。 从Rust程序中发起系统调用,以实现管理和操作各种系统资源(如图)。 libc(或其变体)为类UNIX操作系统上的系统调用提供了一个包装器,如Linux内核实现了POSIX标准指定的数百个POSIX AP...
而且在Linux标准接口中的内存分配alloc API也需要为Rust For Linux项目做好准备,像Rust中原生自带的数据类型中如Vec等,都无法通过稳定版本的Linux alloc接口分配内存,从目前非稳定版本的实现来看,实现alloc这些标准接口,很可能会大量引入很多unsafe的Rust代码,这将使Rust的价值大大降低。因此从细节上看Linux还要为Rust的...
接口:https://crates.io/crates/libc Rust-like 接口:https://docs.rs/nix/0.17.0/nix/ ...
Miguel Ojeda首先提到的是内核子系统维护者需要提供的灵活性。两年前,在 Linux 内核首次引入 Rust 支持之前,他就要求过这种灵活性,因为在将 Rust 代码融入内核时,有时需要修改一些核心 API。现在这种灵活性的需求变得尤为重要。 他继续说道,关于内核中使用 Rust 的期望存在明显的分歧。Ojeda 阅读了数千条关于最近事...
“我们来看一下这位的头衔:谷歌 Android 编程语言工程总监,同时也是 Rust 基金会董事会主席。我认为,将 Android 系统全面采用 Rust 语言的进程可能会比 Linux 内核更顺利推进,因为他是负责人,有权解雇那些不按要求进行 Rust 改造的人。” 而在Linux 圈子里,Alex Gaynor 和 Geoffrey Thomas 在 2019 年 Linux 安...
要想对内核开发能有实际价值的话,Rust 如果只是能够生成可以链接到内核的代码,这是不够的,还需要有一种方法让 Rust 能够访问 Linux 内核中在使用的大量 API,目前这些 API 都是在 C 头文件中定义的。Rust 对与 C 代码的互操作有很好的支持,包括既支持使用 C ABI 调用函数,也支持定义与 C 兼容的 ABI 的函...
git clonehttps://github.com/Rust-for-Linux/linux.git 配置内核启用 Rust 支持: Kernel hacking -> Sample kernel code -> Rust samples 构建: LIBCLANG_PATH=/path/to/libclang make -j LLVM=1 bzImage 这里我们使用clang作为默认的内核编译器,使用gcc理论上是可以的,但还处于早期实验阶段。