Rust 1.61 编程语言发布

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

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

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

主要创新:

  • 可以从主函数定义您自己的返回代码。 最初,Rust 的 main 函数只能返回类型“()”(unit),除非开发人员显式调用“process::exit(code)”函数,否则它始终指示成功的退出状态。 在 Rust 1.26 中,在主函数中使用不稳定的 Termination 特征,可以返回值“Ok”和“Err”,对应于 C 程序中的 EXIT_SUCCESS 和 EXIT_FAILURE 代码。 在 Rust 1.61 中,Termination 特征已经变得稳定,并且提出了一个单独的 ExitCode 类型来表示特定的返回代码,该类型通过提供预定义常量 SUCCESS 和 FAILURE 以及 From 方法来抽象特定于平台的返回类型返回自定义返回代码。 使用 std::process::ExitCode; fn main() -> ExitCode { if !check_foo() { return ExitCode::from(8); } } 退出代码::成功 }
  • 使用表达式“const fn”定义的函数的附加功能已经稳定,它们不仅可以作为常规函数调用,还可以在任何上下文中代替常量使用。 这些函数是在编译时计算的,而不是在运行时计算的,因此它们受到某些限制,例如只能读取常量的能力。 在新版本中,const函数内部允许对函数指针进行基本操作(允许创建、传递和转换指针,但不允许通过指针调用函数); const 函数的泛型参数的特征边界,例如 T: Copy; 动态可调度特征(dyn Trait); impl Trait 类型用于函数参数和返回值。
  • 现在,std::io 中的流处理 Stdin、Stdout 和 Stderr 在锁定时具有静态生命周期 (“'static”),允许使用“let out = std::io::stdout().lock();”之类的结构。 获取一个句柄并在一个表达式中设置一个锁。
  • API 的新部分已移至稳定类别,包括特性的方法和实现已稳定:
    • 引脚::static_mut
    • 引脚::static_ref
    • Vec::retain_mut
    • VecDeque::retain_mut
    • 为 Cursor<[u8; 写入N]>
    • std::os::unix::net::SocketAddr::from_pathname
    • std::process::ExitCode
    • std::process::终止
    • std::thread::JoinHandle::is_finished
  • 函数中使用了“const”属性,它决定了在任何上下文中使用它而不是常量的可能性:
    • <*const T>::offset 和 <*mut T>::offset
    • <*const T>::wrapping_offset 和 <*mut T>::wrapping_offset
    • <*const T>::add 和 <*mut T>::add
    • <*const T>::sub 和 <*mut T>::sub
    • <*const T>::wrapping_add 和 <*mut T>::wrapping_add
    • <*const T>::wrapping_sub 和 <*mut T>::wrapping_sub
    • <[T]>::as_mut_ptr
    • <[T]>::as_ptr_range
    • <[T]>::as_mut_ptr_range

另外,您可以留意《Rust:重要回顾》一文,总结了在固件中使用的 Xous 微内核操作系统开发过程中编写了 100 万行代码后对 Rust 语言的印象。 缺点包括难以理解的语法、语言的不完整性和持续开发、缺乏可重复的构建、Crates.io 中依赖信任的典型问题以及需要保持一定的纪律来编写安全代码。 超出预期的功能包括用于重构代码的工具和在快速原型制作过程中添加的重新设计“黑客”的工具。

来源: opennet.ru

添加评论