Rust 1.57 编程语言发布

系统编程语言 Rust 1.57 已发布,该语言由 Mozilla 项目创建,但现在由独立非营利组织 Rust 基金会赞助开发。 该语言专注于内存安全,提供自动内存管理,并提供了无需使用垃圾收集器或运行时即可实现高任务并行性的方法(运行时被简化为标准库的基本初始化和维护)。

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

主要创新:

  • “panic!”宏的使用已经稳定。 在编译期间创建的上下文中,例如“const fn”声明。 此外,除了使用“恐慌!”之外, const 声明允许使用“assert!”宏。 以及其他一些标准库 API。 稳定性尚未涵盖整个格式化基础设施,因此当前形式的“panic!”宏只能与静态字符串 (panic!(“...")) 一起使用,或者在替换 (panic!("{}", a)) 时与单个内插值“&str”一起使用,应仅限于替换“{ }" 没有格式说明符和其他类型。 未来,宏在常量上下文中的适用性将会扩大,但稳定的能力已经足以在编译阶段执行断言检查: const _: () = assert!(std::mem::size_of:: ()==64); const _: () = 断言!(std::mem::size_of:: ()==8);
  • Cargo 包管理器允许使用任意名称的配置文件,不限于“dev”、“release”、“test”和“bench”。 例如,要仅在生成最终产品组件时在链接阶段 (LTO) 启用优化,您可以在 Cargo.toml 中创建“生产”配置文件并向其添加“lto = true”标志。 但是,在定义您自己的配置文件时,您必须指定现有配置文件以从中继承默认设置。 下面的示例创建了一个“生产”配置文件,通过包含“lto = true”标志来补充“发布”配置文件。 配置文件本身是通过使用“--profile production”选项调用 Cargo 来激活的,并且组装工件将被放置在“target/Production”目录中。 [profile.生产]继承=“释放”lto=true
  • Vec、String、HashMap、HashSet 和 VecDeque 类型的 try_reserve 的使用已经稳定,它允许您提前为给定类型的一定数量的元素预留空间,以减少内存分配操作的频率并避免由于内存不足,运行过程中崩溃。
  • 允许在“m!{ .. }.method()”和“m!{ .. }?”等表达式中用大括号指定宏。
  • File::read_to_end 和 read_to_string 函数的执行已得到优化。
  • 对 Unicode 规范的支持已更新至版本 14.0。
  • 扩展了标记为“#[must_use]”的函数数量,以便在忽略返回值时发出警告,这有助于识别由于假设函数将更改值而不是返回新值而导致的错误。
  • 添加了使用 libgccjit 生成代码的实验性后端。
  • API 的新部分已移至稳定类别,包括特性的方法和实现已稳定:
    • [T; N]::as_mut_slice
    • [T; N]::as_slice
    • 集合::TryReserveError
    • HashMap::try_reserve
    • HashSet::try_reserve
    • 字符串::try_reserve
    • 字符串::try_reserve_exact
    • Vec::try_reserve
    • Vec::try_reserve_exact
    • VecDeque::try_reserve
    • VecDeque::try_reserve_exact
    • 迭代器::map_while
    • 迭代::MapWhile
    • proc_macro::is_available
    • 命令::获取程序
    • 命令::get_args
    • 命令::get_envs
    • 命令::get_current_dir
    • 命令参数
    • 命令环境
  • “const”属性决定是否可以在任何上下文中使用它来代替常量,该属性用在函数hint::unreachable_unchecked中。
  • 第三级支持已针对armv6k-nintendo-3ds、armv7-unknown-linux-uclibceabihf、m68k-unknown-linux-gnu、aarch64-kmc-solid_asp3、armv7a-kmc-solid_asp3-eabi和armv7a-kmc-实现solid_asp3-eabihf 平台。 第三级涉及基本支持,但没有自动化测试、发布官方构建或检查代码是否可以构建。

来源: opennet.ru

添加评论