Rust 1.76 通用编程语言的发布已经发布,该语言由 Mozilla 项目创建,但现在由独立的非营利组织 Rust 基金会赞助开发。 该语言专注于内存安全,并提供了实现高作业并行性的方法,同时避免使用垃圾收集器和运行时(运行时减少为标准库的基本初始化和维护)。
Rust 的内存处理方法使开发人员在操作指针时避免错误,并防止由于低级内存处理而出现的问题,例如在内存区域被释放后访问它、取消引用空指针、缓冲区溢出等。 为了分发库、提供构建和管理依赖项,该项目开发了 Cargo 包管理器。 crates.io 存储库支持托管库。
Rust 在编译时通过引用检查、跟踪对象所有权、跟踪对象生命周期(范围)以及评估代码执行期间内存访问的正确性来提供内存安全。 Rust 还提供防止整数溢出的保护,要求在使用前初始化变量,更好地处理标准库中的错误,默认应用不可变引用和变量的概念,并提供强静态类型以最小化逻辑错误。
主要创新:
- 文档中添加了一个单独的部分,描述 ABI 级别的各种参数类型和函数返回类型的兼容性。与以前的版本相比,“char”和“u32”类型的 ABI 级别保证了兼容性,它们具有相同的大小和对齐方式。
- 除了之前可用的“any::type_name::”调用之外()”,返回“T”参数中指定类型的字符串描述,添加了“type_name_of_val(&T)”函数,允许您根据任何未命名引用获取类型信息。 fn get_iter() -> impl 迭代器{ [32, 1, 2].into_iter() } fn main() { 让 iter = get_iter();让 iter_name = std::any::type_name_of_val(&iter);让总和: i3 = iter.sum(); println!("`{iter_name}` 的总和是 {sum}。");输出是: `core::array::iter::IntoIter 的总和` 是 32。
- API 的新部分已移至稳定类别,包括特性的方法和实现已稳定:
- Arc::unwrap_or_clone
- Rc::unwrap_or_clone
- 结果::检查
- 结果::inspect_err
- 选项::检查
- 值的类型名称
- std::hash::{DefaultHasher,RandomState}
- ptr::{from_ref, from_mut}
- ptr::addr_eq
- 第三级支持已针对 {x86_64,i686}-win7-windows-msvc、aarch64-apple-watchos、arm64e-apple-ios 和 arm64e-apple-darwin 平台实现。第三级涉及基本支持,但没有自动化测试、发布官方构建或检查代码是否可以构建。
此外,我们还可以注意到实验性任务调度器 scx_rustland 的演示,它用 Rust 语言编写并在用户空间中执行(任务调度逻辑从内核到用户空间的传输是使用 BPF 的 sched-ext 工具包实现的)。调度程序经过优化,可提高交互式任务相对于 CPU 密集型任务的优先级。例如,在构建内核的同时启动游戏应用程序的测试中,scx_rustland 调度程序允许我们在游戏中实现比使用标准 EEVDF 调度程序时更高的 FPS。
来源: opennet.ru
