我不认为我们会用 Rust 取代 C 语言来开发内核,但可能会用来开发一些驱动程序,也许是整个驱动子系统,...
但是在一些情况下,Rust 没有 C 简单,比如实现个链表试试,这个搞定后再实现个编程语言虚拟机,带垃圾...
C语言因其高效性和灵活性而广泛应用于系统编程、嵌入式系统开发和高性能计算应用。它是一种编译型语言,具有简洁的语法结构,但同时也因缺乏现代语言中的一些安全特性而被认为是较难掌握的。 Rust是一种现代的编程语言,设计初衷是为了提供内存安全而不牺牲性能。由Mozilla研究院开发并于2010年首次发布,Rust迅速在系统...
然而,Rust 程序的优化也很不错,有时候比 C 语言更好,C 语言适合在逐个字节逐个指针的级别上编写最小的代码,而 Rust 具有强大的功能,能够有效地将多个函数甚至整个库组合在一起。 但是,最大的潜力是可以无畏(fearless)地并行化大多数 Rust 代码,即使等价的 C 代码并行化的风险非常高。在这方面,Rust 语言是比 ...
而直接接受一个切片进行读取和写入操作,不仅使得提供 C API 更容易(用 C 的术语来说,Rust 切片解构成对齐的非空指针和一个长度值),而且可以通过观察多个代码单元能放入单个寄存器(ALU 寄存器或 SIMD 寄存器)的情况,实现一次处理多个代码单元,从而实现 ASCII 处理加速。
那时候,我们还没意识到有更好的方法来解决我们的性能问题。就在几周前,我发现有另外一个方案可行采用 Rust 代替 C ++ 来实现原生模块。我发现这是一个很好的选择,这要归功于它提供的安全性和易用性。 在这篇 Rust 教程中,我将手把手教你写一个先进、快速、安全的原生模块。
在传统的 C 和 C++ 开发中,内存管理是一项复杂且容易出错的任务,稍有不慎便会导致严重的安全漏洞,尤其在操作系统内核这样的复杂系统中,任何细微的内存错误都可能带来灾难性的后果。而 Rust 通过严格的编译器检查和所有权机制,可以有效避免这些问题。 于是2022 年底 Linux 6.1 版本的发布,标志着 Rust 正式被引入内核...
通常,C 的循环也比 Rust 的迭代器组合更为简洁(当然 Rust 也允许使用前一种方式,但 linter 并不满意,它会建议你使用迭代器来代替)。类似地,memset()和 memmove()也是功能十分强大的工具。 在大多数情况下,你都可以预见到编译的结果,即对象在内存中的表示方式,以及如何通过不同的方式理解编译后的结果(新版 C...
很多 goto 的用法在 C 语言中是用来清理的,而且由于 RAII/destructors 的存在,Rust 不需要清理。但是,有一个非标准的 goto *addr 扩展可以用于解释器。Rust 不能直接执行(你可以写一个匹配,并希望它能优化),但是另一方面,如果我需要一个解释器,我将尝试使用 Cranelift JIT 来代替。