Rust 1.77 编程语言发布

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

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

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

主要创新:

  • 新增了对 C 字符串字面量(c"text") )的支持,这些字符串以空字符结尾存储在内存中,并与 "CStr" 类型关联。对 C 字符串的支持有望简化与使用空字符结尾字符串的编程语言中的层交互的代码编写,并启用必要的编译时检查。const HELLO: &core::ffi::CStr = c"Hello, world!";
  • 使用 `async fn` 表达式声明的异步执行函数现在允许递归,这意味着此类函数现在可以调用自身。`async fn fib(n: u32) -> u32 { match n { 0 | 1 => 1, _ => Box::pin(fib(n-1)).await + Box::pin(fib(n-2)).await } }`
  • `offset_of!` 宏已稳定。它允许您确定结构体、枚举、联合体和元组的字段相对于类型起始位置的字节偏移量。实际上,在没有类型实例的情况下,如果您需要在字段偏移级别进行操作,则此宏非常有用。尤其是在开发驱动程序等底层组件时,`offset_of` 功能是必不可少的。`use std::mem; #[repr(C)] struct FieldStruct { first: u8, second: u16, third: u8 } assert_eq!(mem::offset_of!(FieldStruct, first), 0); assert_eq!(mem::offset_of!(FieldStruct, second), 2); assert_eq!(mem::offset_of!(FieldStruct, third), 4);`
  • 在 Cargo 包管理器中,默认情况下,发布配置文件会启用从调试数据中剥离文件(strip = "debuginfo"),除非在 Cargo 配置文件中显式启用调试模式,即如果 debug 参数 = 0。
  • 默认情况下启用“-Zthir-unsafeck=on”选项,该选项可对 THIR(类型化高级中间表示)中间表示进行不安全检查。
  • 添加了 lint 检查 static_mut_refs,以便在使用对可变静态值的引用时输出警告。
  • 实现了将“From<&[T; N]>”特性应用于“Cow<[T]>”类型的功能。fn foo(data: impl Into >) { /* … */ } fn main() { foo(&[“hello”, “world”]); }
  • 编译器为 x86 系统提供 16 字节 i128 和 u128 类型的对齐方式。
  • API 的新部分已移至稳定类别,包括特性的方法和实现已稳定:
    • array::each_ref
    • array::each_mut
    • 核心::net
    • f32::round_ties_even
    • f64::round_ties_even
    • mem::offset_of!
    • slice::first_chunk
    • slice::first_chunk_mut
    • slice::split_first_chunk
    • slice::split_first_chunk_mut
    • slice::last_chunk
    • slice::last_chunk_mut
    • slice::split_last_chunk
    • slice::split_last_chunk_mut
    • slice::chunk_by
    • slice::chunk_by_mut
    • 边界::地图
    • 文件::创建新文件
    • Mutex::clear_poison
    • RwLock::clear_poison
  • 已对 aarch64-unknown-illumos、hexagon-unknown-none-elf、riscv32imafc-esp-espidf 和 riscv32im-risc0-zkvm-elf 平台实现 3 级支持。3 级支持提供基本功能,但不包含自动化测试、官方构建或构建验证。

来源: opennet.ru

为具有 DDoS 保护、VPS VDS 服务器的站点购买可靠的主机 🔥 购买具备 DDoS 防护的可靠网站托管服务,包括 VPS 和 VDS 服务器 | ProHoster