Rust 1.65 编程语言发布

Rust 1.65 通用编程语言的发布已经发布,该语言由 Mozilla 项目创建,但现在由独立的非营利组织 Rust 基金会赞助开发。 该语言专注于内存安全,并提供了实现高作业并行性的方法,同时避免使用垃圾收集器和运行时(运行时减少为标准库的基本初始化和维护)。

Rust 的内存处理方法使开发人员在操作指针时避免错误,并防止由于低级内存处理而出现的问题,例如在内存区域被释放后访问它、取消引用空指针、缓冲区溢出等。 为了分发库、提供构建和管理依赖项,该项目开发了 Cargo 包管理器。 crates.io 存储库支持托管库。

Rust 在编译时通过引用检查、跟踪对象所有权、跟踪对象生命周期(范围)以及评估代码执行期间内存访问的正确性来提供内存安全。 Rust 还提供防止整数溢出的保护,要求在使用前初始化变量,更好地处理标准库中的错误,默认应用不可变引用和变量的概念,并提供强静态类型以最小化逻辑错误。

主要创新:

  • 添加了对泛型关联类型(GAT,泛型关联类型)的支持,这使得创建与其他类型关联的类型别名成为可能,并允许您将类型构造函数与特征关联起来。特征 Foo { 类型 Bar; }
  • 已实现“let ... else”表达式,允许您直接在“let”表达式内部检查模式匹配条件,并在模式不匹配时执行任意代码。 let Ok(count) = u64::from_str(count_str) else { panic!("无法解析整数:'{count_str}'"); };
  • 允许使用break语句提前退出命名块,使用块名称(标签)来标识要终止的块。让结果 = ‘块:{ do_thing(); if condition_not_met() { Break '块 1; do_next_thing(); if condition_not_met() { Break '块 2; do_last_thing(); 3};
  • 对于 Linux,增加了单独保存调试信息 (split-debuginfo) 的功能,以前仅适用于 macOS 平台。当指定“-Csplit-debuginfo=unpacked”选项时,DWARF 格式的 debuginfo 数据将保存到多个带有“.dwo”扩展名的单独目标文件中。指定“-Csplit-debuginfo=packed”将创建一个“.dwp”格式的单个包,其中包含项目的所有 debuginfo 数据。要将 debuginfo 直接集成到 ELF 对象的 .debug_* 部分,可以使用“-Csplit-debuginfo=off”选项。
  • API 的新部分已移至稳定类别,包括特性的方法和实现已稳定:
    • std::backtrace::Backtrace
    • 绑定::as_ref
    • std::io::read_to_string
    • ::cast_mut
    • ::cast_const
  • “const”属性决定了在任何上下文中使用它而不是常量的可能性,用在函数 ::offset_from 和 ::offset_from 中
  • 作为将 LSP(语言服务器协议)协议实现转移到 rust-analyzer 的最后阶段的一部分,Rust 语言服务器(RLS)的过时实现被替换为存根服务器,该存根服务器会发出警告并建议切换到使用锈分析仪。
  • 编译过程中,启用了对MIR中间代码内联部署的支持,这使得典型crate包的编译速度提高了3-10%。
  • 为了加速计划构建,Cargo 包管理器提供了对队列中等待执行的作业进行排序。

此外,您还可以注意到有关沃尔沃使用 Rust 语言开发汽车信息系统组件的采访。没有计划用 Rust 重写现有的和经过测试的代码,但对于新代码,Rust 是以较低成本提高质量的首选选项之一。汽车协会 AUTOSAR(汽车开放系统架构)和 SAE(汽车工程师学会)也成立了与 Rust 语言使用相关的工作组。

此外,Google 工程副总裁 David Kleidermacher 谈到了将 Android 平台中用于管理加密密钥的代码翻译成 Rust,以及在堆栈中实现 DNS over HTTPS 协议时使用 Rust适用于 UWB 芯片(超宽带)以及与 Tensor G2 芯片相关的虚拟化框架(Android 虚拟化框架)。用 Rust 重写的新蓝牙和 Wi-Fi 堆栈也正在为 Android 开发。总体策略是逐步加强安全性,首先将最脆弱和最重要的软件组件转换为 Rust,然后扩展到其他相关子系统。去年,Rust 语言被列入允许开发 Android 平台的语言列表。

来源: opennet.ru

添加评论