Rust 1.89 编程语言现已发布。该语言由 Mozilla 项目创建,目前由独立非营利组织 Rust 基金会支持开发。该语言注重内存安全,并提供了实现高并行度任务执行的工具,同时无需使用垃圾收集器和运行时(运行时简化为标准库的基本初始化和维护)。
Rust 的内存处理方法使开发人员在操作指针时避免错误,并防止由于低级内存处理而出现的问题,例如在内存区域被释放后访问它、取消引用空指针、缓冲区溢出等。 为了分发库、提供构建和管理依赖项,该项目开发了 Cargo 包管理器。 crates.io 存储库支持托管库。
Rust 在编译时通过引用检查、跟踪对象所有权、跟踪对象生命周期(范围)以及评估代码执行期间内存访问的正确性来提供内存安全。 Rust 还提供防止整数溢出的保护,要求在使用前初始化变量,更好地处理标准库中的错误,默认应用不可变引用和变量的概念,并提供强静态类型以最小化逻辑错误。
主要创新:
- 提供了使用“_”符号作为泛型参数的能力,并使用“const”标志根据周围上下文推断这些参数的值。pub fn all_false () -> [布尔; LEN] { [假; _]}
- 添加了新的 Lint 警告“mismatched_lifetime_syntaxes”,以解决使用“生命周期省略”机制(自动确定引用的生命周期,无需手动指定)时函数签名中生命周期定义不明显的问题。该警告会检查函数的输入和输出参数是否属于同一类型组。这些类型的划分基于对显式生命周期规范的支持以及编译器自动推断生命周期的能力(例如,在类型“&'a T”和“ContainsLifetime<'a>”中,生命周期可能显式存在,但编译器无法自动确定生命周期;而在类型“&T”、“&'_ T”和“ContainsLifetime<'_>”中,显式规范和自动推断均允许)。
- x86 系统的“target_feature”属性实现了检查对扩展 sha512、sm3、sm4、kl 和 widekl 指令集以及各个 avx512 功能的支持能力。#[target_feature(enable = "avx512bw")] pub fn cool_simd_code(/* .. */) -> /* … */ { /* … */}
- 确保 doctest(嵌入文档的测试)不仅针对当前目标平台运行,而且针对运行“cargo”包管理器(“cargo test --doc --target other_target”)时指定的其他平台运行。
- 对于为“wasm32-unknown-unknown”目标构建时的“extern“C””函数,实现了 WebAssembly 的标准 C ABI。
- 除了一些关于类型兼容性的警告外,现在允许在外部 C 函数(extern“C”)中使用 i128 和 u128 类型,以前会产生 lint 警告“improper_ctypes_definitions”。
- API 的新部分已移至稳定类别,包括特性的方法和实现已稳定:
- 许多适用于 x86 处理器的编译器内部函数,包括 AVX512、SHA512、SM3 和 SM4 的函数。
- 非零
- 文件::锁定
- 文件::lock_shared
- 文件::try_lock
- 文件::try_lock_shared
- 文件::解锁
- NonNull::from_ref
- NonNull::from_mut
- NonNull::without_provenance
- NonNull::with_exposed_provenance
- NonNull::expose_provenance
- OsString::泄漏
- PathBuf::泄漏
- 结果::展平
- std::os::linux::net::TcpStreamExt::quickack
- std::os::linux::net::TcpStreamExt::set_quickack
“const”符号用在函数中:
- <[T; N]>::as_mut_slice
- <[u8]>::eq_ignore_ascii_case
- 字符串::eq_ignore_ascii_case
- 将目标平台“x86_64-apple-darwin”从第一级支持迁移到第二级支持的过程已经开始(Apple 计划停止对 x86_64 架构的支持)。第一级支持意味着需要生成二进制程序集,进行全面测试,并提供最高级别的平台支持保证——编译器中的每个更改都通过运行完整的测试套件进行验证。第二级支持意味着需要保证程序集的完整性,但不保证其是否能够通过测试套件。
- 对“loongarch32-unknown-none”和“loongarch32-unknown-none-softfloat”平台的第三级支持已实现。第三级支持包含基础支持,但不包含自动化测试、官方版本发布以及代码构建能力检查。
此外,我们还可以重点介绍一些与 Rust 相关的事件和项目:
- Debian 中 Rust 软件包状态报告已发布。报告指出,在 Debian Unstable (Sid) 分支中,主仓库中约 8% 的源软件包通过构建依赖项链接到至少一个“librust-*”软件包。在 Debian 12 中,此类软件包的比例为 4.5%。报告还指出,超过 3 个软件包包含 Rust 代码,并已移至 librust-..-dev 软件包,另有 150 个源软件包提供已编译的可执行文件或 Rust 库。
Debian 中值得关注的软件包包括 sudo-rs、ntpd-rs、uutils、Sequoia、rpgp、hickory (DNS)、Rustls、rav1d 和 fish。APT、QEMU (virtiofsd)、Linux 内核和 Mesa 中已实现可选的 Rust 支持,LibreOffice 也有望支持。debcargo 工具包用于将 crate 软件包转换为 Debian src 软件包。
- 提出了 tmux-rs 项目,开发了 tmux 终端多路复用器(控制台窗口管理器)的克隆,并用 Rust 从 C 重写。
- Collabora 的 Tyr 驱动程序开发者发表了一篇关于内核级 GPU 驱动程序的结构以及使用 Rust 语言开发此类驱动程序的原理的文章。
- 演示了 Rust 中的通用应用程序,能够在 CPU 和各种 GPU 平台上运行:NVIDIA 的 CUDA、支持 Vulkan 的 GPU 的 SPIR-V、Apple 的 Metal、Windows 的 DirectX 12 和浏览器的 WebGPU。
来源: opennet.ru
