Rust 1.73 编程语言发布

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

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

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

主要创新:

  • 默认程序崩溃处理程序(恐慌)发出的消息格式已重新设计。 “panic!”宏中指定的文本现在显示在不带引号的单独行上,使消息更易于阅读,并在存在嵌套引号或拆分为多行时消除混乱。 fn main() { 让 file = "ferris.txt"; 恐慌!(“哦不!{文件:?}没有找到!”); 有线程“main”因“哦不!”而惊慌失措。 “ferris.txt”未找到!',src/main.rs:3:5 线程“main”在 src/main.rs:3:5 处惊慌失措:哦不! 找不到“ferris.txt”!

    触发“assert_eq”和“assert_ne”宏时显示的消息输出也已重新设计。 fn main() { assert_eq!("🦀", "🐟", "摩天不是鱼"); 有线程“main”因“断言失败:`(左==右)`左:`“🦀”`,右:`“🐟”`:摩天不是鱼'而惊慌失措,src / main.rs: 2 :5 线程“main”在 src/main.rs:2:5 处惊慌:断言 `left == right` 失败:ferris 不是鱼 左:“🦀” 右:“🐟”

  • 根据 RFC 3184,添加了直接操作线程本地 (thread_local) LocalKey 存储键的能力 > 和本地密钥 > 通过使用get()、set()、take()和replace()方法,而不是使用“with(|inner| ...)”闭包,这样就不需要为使用宏“thread_local!”时为新线程指定的默认值线程本地! { 静态事物:细胞 > = Cell::new(Vec::new()); } fn f() { // was THINGS.with(|i| i.set(vec![32, 1, 2])); // 变成 THINGS.set(vec![3, 1, 2]); // ... // 让 v = THINGS.with(|i| i.take()); // 变成了 let v: Vec =东西.take(); }
  • API 的新部分已移至稳定类别,包括特性的方法和实现已稳定:
    • 无符号 {integer}::div_ceil
    • 无符号 {integer}::next_multiple_of
    • 无符号 {integer}::checked_next_multiple_of
    • std::ffi::FromBytesUntilNulError
    • std::os::unix::fs::chown
    • std::os::unix::fs::fchown
    • std::os::unix::fs::lfchown
    • 本地密钥:: >::获取
    • 本地密钥:: >::设置
    • 本地密钥:: >::采取
    • 本地密钥:: >::替换
    • 本地密钥:: >::with_borrow
    • 本地密钥:: >::with_borrow_mut
    • 本地密钥:: >::设置
    • 本地密钥:: >::采取
    • 本地密钥:: >::替换
  • 函数中使用了“const”属性,它决定了在任何上下文中使用它而不是常量的可能性:
    • rc::弱::新
    • 同步::弱::新
    • 非空::as_ref
  • 编译器在“.comment”部分提供版本信息的记录,类似于GCC和Clang。
  • 已为 aarch64-unknown-teeos、csky-unknown-linux-gnuabiv2、riscv64-linux-android、riscv64gc-unknown-hermit、x86_64-unikraft-linux-musl 和 x86_64-unknown-linux 平台实现第三级支持-噢。 第三级涉及基本支持,但没有自动化测试、发布官方构建或检查代码是否可以构建。
  • 对目标平台 wasm32-wasi-preview1-threads 的第二级支持已实现。 第二级支持涉及装配保证。

来源: opennet.ru

添加评论