Rust 1.68 编程语言发布

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

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

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

主要创新:

  • Cargo 包管理器和 crates.io 存储库中已经稳定了对稀疏协议的支持,它定义了一种使用索引的新方法,该索引反映了存储库中现有的所有包的可用版本。 新协议允许您显着提高使用 crates.io 的速度,并通过进一步增加存储库中的包数量来解决扩展问题。

    为了减少下载完整索引带来的延迟,Sparse 不使用 Git 访问索引,而是直接通过 HTTPS 下载必要的索引数据,涵盖特定项目的依赖项。 新的index.crates.io服务用于返回索引数据。 默认情况下,新协议计划在 Rust 1.70 分支中使用,在此之前,要启用它,可以设置环境变量“CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse”或将参数 'protocol = 添加到“[registries.crates” -io]” .cargo/config.toml 文件“稀疏”的部分。

  • 添加了宏“pin!”,它允许从表达式“T”创建 Pin<&mut T> 结构,并对其状态进行本地固定(与 Box::pin 不同,Box::pin 不在堆上分配内存,而是在堆栈级别绑定) 。
  • 建议使用默认的内存分配错误处理程序,在使用标准 alloc 包时使用该处理程序。 仅启用 alloc(不带 std)的应用程序现在将在内存分配失败时调用“panic!”处理程序,可以选择使用“#[panic_handler]”拦截该处理程序。 使用 std 库的程序仍会将错误信息打印到 stderr 并崩溃。
  • API 的新部分已移至稳定类别,包括特性的方法和实现已稳定:
    • {核心,std}::pin::pin!
    • 实现自对于 {f32,f64}
    • std::path::MAIN_SEPARATOR_STR
    • 为 PathBuf 实现 DerefMut
  • VecDeque::new 函数中使用了“const”属性,它决定了在任何上下文中使用它而不是常量的可能性。
  • Android 平台现在至少需要 NDK r25 (API 19),即支持的最低 Android 版本已提升至 4.4 (KitKat)。
  • 已实现对 Sony PlayStation Vita 平台的第三级支持 (armv7-sony-vita-newlibeabihf)。 第三级意味着基本支持,但没有自动化测试、发布官方构建并检查构建代码的能力。

来源: opennet.ru

添加评论